#+TITLE: Hito action items #+AUTHOR: Marius Peter #+STARTUP: content #+TODO: TODO IN-PROGRESS TESTING TESTED BLOCKED | CANCELLED DONE #+TAGS: [ Kind : feat fix refactor chore docs ] #+TAGS: [ Scope : core app web ui ] #+TAGS: [ Impact : minor major ] #+TAGS: [ Misc : doctrine ] * DONE Add a time graph of feedback elements to the logbook :feat:ui: CLOSED: [2026-09-06 Sun 14:23] SCHEDULED: [2026-09-06 Sun 13:43] :PROPERTIES: :ID: b7813f9d-931a-4993-ae08-ff1c661b9775 :END: The logbook page should present a time graph of various feedback elements over time. - result :: model=kiro-cli commit=71580da tests=246 pass * DONE Fix elapsed duration timer on workout logging page :fix:ui: CLOSED: [2026-09-06 Sun 13:58] SCHEDULED: [2026-09-06 Sun 13:42] :PROPERTIES: :ID: 8fcbf31c-92d4-4b9b-ab6f-b5e723f70312 :END: Fix the elapsed duration timer in the current workout logging page. - result :: model=kiro-cli commit=dbe2dda tests=241 pass; root cause js_of_ocaml 31-bit int overflow on epoch values, fixed with float arithmetic * DONE Move username and password editing into a modal :refactor:ui: CLOSED: [2026-09-06 Sun 14:30] SCHEDULED: [2026-09-06 Sun 13:39] :PROPERTIES: :ID: a68fba78-f707-4f57-b757-2ba1214d9876 :END: On the profile page, username and password should not have dedicated input fields. We should only see username, then the value for the user's username, then the change username button affordance, not the input field. Editing username and password should pop open a modal menu. - result :: model=kiro-cli commit=d38fd43 tests=247 pass * DONE Remove the black line after the masthead :refactor:ui:minor: CLOSED: [2026-09-06 Sun 13:52] SCHEDULED: [2026-09-06 Sun 13:32] :PROPERTIES: :ID: fc45fee8-a8c9-4d8b-8403-5d3219926c63 :END: Remove the black line after the masthead - result :: model=kiro-cli commit=d6b3b97 tests=241 pass * BLOCKED Add profile dropdown actions :feat:app: SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: db8901b3-f932-4c88-8d0d-7ddadfb97f32 :END: Source: application feedback (VPS, trainee t1, sequence 5, submitted 2026-09-05T22:18:25Z) Make the profile control a drop-down with Profile, Settings, and Sign out actions. - blocked :: No Settings page or /settings route exists; /profile already holds account settings (username, password). Awaiting decision: (1) point both Profile and Settings at /profile, (2) drop Settings for Profile + Sign out only, or (3) create a new /settings page (scope TBD). * DONE Define five-point subjective feedback scores :feat:core: CLOSED: [2026-09-06 Sun 14:07] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 2b46d3fb-9cfc-43f3-958c-b348d1b7d58a :END: Source: application feedback (VPS, trainee t1, sequence 1, submitted 2026-09-05T22:13:05Z) Use exactly the scores 1 through 5 for subjective feedback. Score 1 means very poor. Score 5 means very good. Update the core domain as a consequence. - result :: model=kiro-cli commit=3051af0 tests=243 pass; level now Very_poor..Very_good (1..5); migration 6 drops legacy feedback * DONE Preserve partial subjective feedback :feat:core: CLOSED: [2026-09-06 Sun 14:19] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 50a8e1a2-d6a4-4aa9-8852-65afc15517ce :END: Source: application feedback (VPS, trainee t1, sequence 1, submitted 2026-09-05T22:13:05Z) Make Back and Skip preserve partial answers. Make Close cancel the feedback flow. Make Skip ignore the feedback event. Allow subjective feedback to be logged as a partial list. - result :: model=kiro-cli commit=6fde451 tests=245 pass * DONE Format page titles with an em dash :feat:ui:minor: CLOSED: [2026-09-06 Sun 13:51] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 9800d7b7-552e-4ed1-9e96-587400ee9f7b :END: Source: application feedback (VPS, trainee t1, sequence 4, submitted 2026-09-05T22:16:53Z) Use a literal em dash in page titles, such as Hito — Home. - result :: model=kiro-cli commit=5e4236c tests=241 pass * DONE Standardize the global corner radius :refactor:ui:minor: CLOSED: [2026-09-06 Sun 13:53] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 357455c5-a6a3-4dec-ad6b-5be098a11013 :END: Source: application feedback (VPS, trainee t1, sequence 3, submitted 2026-09-05T22:15:29Z) Use one global border radius in relative units so that it scales across components. - result :: model=kiro-cli commit=a45027e tests=241 pass * DONE Animate modals with reduced-motion support :feat:ui: CLOSED: [2026-09-06 Sun 13:54] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 30266d78-2731-4306-a748-02e479d97867 :END: Source: application feedback (VPS, trainee t1, sequence 6, submitted 2026-09-06T08:37:36Z) Apply a short, smooth modal animation to every modal. Disable modal animation when the user prefers reduced motion. - result :: model=kiro-cli commit=4b8df35 tests=241 pass * DONE Verify POST redirect GET for forms :feat:app: CLOSED: [2026-09-06 Sun 14:25] SCHEDULED: [2026-09-06 Sun 13:09] :PROPERTIES: :ID: 106b5917-48d9-423e-9ce9-11dc4c230603 :END: Source: application feedback (VPS, trainee t1, sequence 2, submitted 2026-09-05T22:14:58Z) Redirect each form submission to the page that originated the form flow when practical. Decide whether a result type should persist success and error messages across the redirect. - result :: model=kiro-cli commit=0637e57 tests=247 pass; audit found all state-changing POSTs already redirect; decision: flash/query for success, inline 400 re-render for field validation * DONE Give each prescribed exercise its own routine sub-row :feat:web: CLOSED: [2026-09-06 Sun 14:01] SCHEDULED: [2026-09-05 Sat 23:10] :PROPERTIES: :ID: be3140eb-47d5-4391-9f05-7b8c3cd294f1 :END: - Each prescribed exercise should exist in a separate sub-row. - Stimuli count column should not exist. - Each prescribed exercise should have specific sub-columns for exercise name, rep count. - result :: model=kiro-cli commit=28caa63 tests=241 pass * DONE Capture each prompt as its own request :chore:web: CLOSED: [2026-09-05 Sat 22:01] SCHEDULED: [2026-09-05 Sat 21:31] :PROPERTIES: :ID: cfdca5b4-80d3-448f-bf54-a365dd36a578 :END: - result :: model=kiro-cli commit=d5553a2 tests=pass Edit the stream-of-thought SKILL so each individual prompt in a session becomes its own feature request, not the whole session as one request. * DONE Use POST-redirect-GET for all forms :feat:app: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 3A2316B3-F9C1-41F2-B0FC-E1F6958BC9D5 :END: Ensure proper POST redirect GET patter for all forms Clarification: - Apply this to feedback, application feedback, and workout forms. - Preserve success and error messages for toast display on the redirected page. - result :: commit=41a44ff tests=215 pass * DONE Standardize shared CRUD patterns :refactor:app: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: D214DE90-88B9-4ADD-AB2F-4AF7B7E87EF7 :END: Rationalize shared CRUD pattern for domain objects, user data, and app feedback - result :: commit=ea594ba tests=215 pass * DONE Use worse-same-better subjective feedback :feat:core: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 484FE4E8-73F1-4789-AF8D-FC07087DEC5E :END: Subjective Feedback evidence should be collected against the following pattern: Worse, Same, Better [than usual] Clarification: - Ask, "How are you feeling?" - Collect Worse, Same, and Better through inline button groups. - Apply this to sleep, appetite, readiness, motivation, and perceived difficulty. - This probably has an impact on core data types as well. - result :: commit=f09fd5d tests=215 pass * DONE Make Write feedback the primary action :feat:app: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 84E85E7A-A1DF-4F2E-913C-9A1C6F441DDB :END: "Write feedback" should be the single Primary action on the app-feedback page. Secondary actions are CRUD operations on previous feedback items. Clarification: - Secondary CRUD actions are editing and removing the user’s feedback items. - Show the primary action once. - result :: commit=43da59d tests=215 pass * BLOCKED Import Hevy CSV from profile :feat:app: SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 2559dd31-18e1-4f62-8d16-92f96d782203 :END: - note :: Deferred by the request clarification. Left open under Dispatch; not implemented this session. On profile page, user should be able to import Hevy CSV Clarification: - Defer this feedback feature. * CANCELLED Fix workout cancellation flow :fix:app: CLOSED: [2026-09-05 Sat 21:58] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 2B914C9E-DF02-420C-8D5A-D0503552C88F :END: workout cancellation flow still has bug - note :: No remaining defect. Prior commits 7d9ee9e, 5aaa11f, and test ea1f211 fixed cancellation: CSRF-guarded discard, no stale record, 303 redirect to Home. test_web.ml cancellation cases pass (203 tests green). * CANCELLED Emphasize the secondary color :feat:ui: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: C1CCF7A7-FA07-43C5-82BA-54E9B8C3B54B :END: oxblood color is still too dominant; secondary color needs to be more emphasized Clarification: - Use brass for secondary buttons, such as cancellation. - note :: Already implemented by the existing brass secondary-button styling; no new work was required. * CANCELLED Use progressive subjective feedback buttons :feat:ui: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: F59C1B0A-C238-4059-91D1-42DB5CC17CBF :END: subjective feedback affordances should be more progressive. not dropdowns, but button groups containing three buttons each for below, usual, and above. - note :: Duplicate of the completed Worse/Same/Better inline controls proposal (commit f09fd5d). * DONE Store database timestamps as ISO 8601 :feat:core: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 950BD105-C680-4D58-914F-0FAFA0ECBA63 :END: database timestamps should be stored as ISO8601 strings Clarification: - Store timestamps in UTC Zulu time. - Use the ISO 8601 format. - Do not migrate existing data. - Existing data can be dropped safely. - result :: commit=79bbbd7 tests=215 pass; migration 5 drops affected legacy evidence * DONE Remove spurious Page updated mention :fix:ui:minor: CLOSED: [2026-09-05 Sat 21:57] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: C8FD4798-94A4-42C6-8D86-03A4A58DF703 :END: Spurious "Page updated" mention in workout logging screen - result :: model=kiro-cli commit=dab53ca tests=pass * DONE Confirm workout override with a modal :feat:ui: CLOSED: [2026-09-05 Sat 22:23] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: b9d05a7f-c8f9-4fb6-878f-a9d1f89ed45d :END: - result :: model=kiro-cli commit=7c9f701 tests=pass Implement a modal confirmation when beginning a workout under override Clarification: - The override condition is training before full rest has completed. - Show a confirmation modal menu before starting the workout. * DONE Show early workout notice as a toast :feat:ui:doctrine: CLOSED: [2026-09-05 Sat 22:26] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 8052f6e1-7281-4a57-a615-504476ca6c16 :END: - result :: model=kiro-cli commit=9702a02 tests=pass "begin before recovery finished" should be a toast message rather than a component in the main content. Clarification: - The toast is informational only because the modal already confirms the override. - Display it for 3 seconds, or for the duration recommended by WCAG. * DONE Add custom error pages :feat:app: CLOSED: [2026-09-05 Sat 22:20] SCHEDULED: [2026-09-05 Sat 21:25] :PROPERTIES: :ID: 965d5284-a593-43ca-b8e4-202b093e6502 :END: - result :: model=kiro-cli commit=34ab578 tests=pass Need custom 404 etc. pages Clarification: - Add the most common 400 and 500 error pages. - Do not expose specific information from the server. - Keep the desktop top navigation affordance. - Keep the mobile bottom navigation affordance. * DONE Show feedback author and contribution count :feat:web: CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:24] :PROPERTIES: :ID: 428E433E-5F01-44CF-B642-FC1DD80BF087 :END: feedback should display username that submitted it, alongside their total number of feedback contributions. Clarification: - Users should see real usernames. - Rank the feedback list by upvotes. - Let users upvote feedback submitted by other users they think is valuable. - result :: commit=98e5fb5 tests=215 pass * CANCELLED Keep the routine as a table :feat:ui: CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24] :PROPERTIES: :ID: 6b126d4c-6058-4b7a-8c67-640ce6160ba7 :END: - note :: Duplicate. The routine already renders as an HTML table (commit 4e4acac, "Replace routine accordions with an HTML table"). No new work. routine must absolutely be a table. Clarification: - This is a duplicate request. * DONE Fix workout log exercise selection :fix:ui: CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24] :PROPERTIES: :ID: 45453231-7ac9-444c-96c2-af387a34bb0c :END: - result :: model=kiro-cli commit=61bf45c tests=pass Broken workout log editing: exercise selection button. Clarification: - This concerns editing a previously logged workout on mobile. - The user must be able to select and switch the exercise correctly. * DONE Use one desktop-to-mobile breakpoint :feat:ui: :PROPERTIES: :ID: 948EABAC-9D59-4101-8901-E37DE0D9DFF1 :END: Desktop has top navigation. Mobile has an identical bottom navigation. * DONE Use three always-available navigation actions :feat:ui: :PROPERTIES: :ID: FE8559B5-190D-4C5C-9A1E-CE5FA826C094 :END: Use `Home`, `Routine` when the user is not logging (changing to `Current Workout` while logging), and `` for the workout log. Keep all three actions available in both modes. * DONE Simplify the top bar brand :refactor:ui: :PROPERTIES: :ID: DB0BC418-C81C-4AB9-87BC-1B475747A04D :END: Replace the top bar brand with `hito` in Work Sans, without a subtitle. * DONE Remove the mobile hamburger menu :refactor:ui:minor: :PROPERTIES: :ID: C32BAF01-548E-4CBD-BBD0-00ECEDEE97CB :END: Do not show a hamburger menu on mobile. * DONE Increase the masthead brand size :feat:ui:minor: :PROPERTIES: :ID: 8D6BC6B9-F248-4714-BA93-9C27532DF490 :END: Make the masthead brand name appear much larger. * DONE Hide sign-out on mobile :feat:ui:minor: :PROPERTIES: :ID: 2265C4FA-071E-4BFA-A038-3CD3CB3656EA :END: Do not show the sign-out button on mobile. * DONE Remove thick black bars from mobile bottom navigation :refactor:ui:minor: :PROPERTIES: :ID: F2D41A95-58A6-461A-A5DF-AC862FCD877A :END: Remove the thick black bars visible in the mobile bottom navigation. * DONE Fix active bottom-navigation state for current workout and logbook :fix:ui: :PROPERTIES: :ID: 35E2CC6C-B489-4CBC-B214-DC8D1626E559 :END: When a current workout is open, selecting the logbook tab marks both Current Workout and Logbook as active in the bottom navigation. Ensure only the selected page is highlighted. * DONE Increase bottom-navigation button text size :feat:ui:minor: :PROPERTIES: :ID: 06F564D7-A177-4F3D-9F17-80B35C1A4C25 :END: Increase the bottom-navigation button text font size to better support WCAG-aligned readability. * DONE Animate page transitions :feat:ui: :PROPERTIES: :ID: 41C03F68-9DD2-4B79-B1A7-8EE450599B9B :END: Animate page transitions between Home, Current Workout, and Logbook. * DONE Standardize Logbook navigation and add a mobile profile button :refactor:ui: :PROPERTIES: :ID: D52C18B2-2F97-4A70-8F0D-6CBD261F20F2 :END: Always label the logbook tab `Logbook`. Add a dedicated profile button for the user name in the mobile top navigation bar. * DONE Return the middle navigation tab to Routine after cancellation :feat:ui: :PROPERTIES: :ID: 31F886F8-D3A3-464D-8785-4548B9B50C11 :END: After cancelling workout logging, change the middle navigation tab from Current Workout back to Routine. - result :: model=kiro-cli commit=ea1f211 tests=pass * DONE Add placeholders to load and reps fields :feat:ui:minor: :PROPERTIES: :ID: 61A936E9-A4F6-4FA1-8282-27231E82ED61 :END: Add placeholder values to the load and reps fields on the workout logging page. * DONE Remove the redundant fieldset legend :refactor:ui:minor: :PROPERTIES: :ID: 7BC3EF05-5208-4CD9-9BD3-113F063E8D07 :END: Remove the redundant fieldset legend from workout logging. * DONE Show an in-progress workout card on Home :feat:ui: :PROPERTIES: :ID: 9C1865CB-70F2-41FA-917E-369C5CAD7031 :END: When the user is logging a current workout, show a Home card that indicates the workout is in progress and links to the Current Workout tab. * DONE Make workout cancellation unconditional :feat:app: :PROPERTIES: :ID: E86AC9DF-E909-42F4-9D52-8DEEFCC70B5F :END: When cancelling a workout, always leave the current workout view without showing an invalid-form response. Save the workout log as-is for later editing, then redirect the user to Home. * DONE Add a sticky workout timer bar :feat:ui: :PROPERTIES: :ID: C6B85644-E352-4442-A49B-C3582BD89670 :END: When logging a workout, show a sticky bar at the top of the screen with a workout timer. * DONE Replace the exercise button group with a dropdown :refactor:ui: :PROPERTIES: :ID: EAF4A9D5-1EC3-48B0-975C-58939C5A86ED :END: Use a dropdown menu to select the exercise instead of the exercise button group. * DONE Remove the boulder top border from exercise logging cards :refactor:ui:minor: :PROPERTIES: :ID: 40B2A19E-16FC-481E-BC3A-B0D9C4D41AF0 :END: Do not show a boulder top fieldset border on the exercise logging fieldset card. * DONE Confirm workout cancellation in a modal :feat:ui: :PROPERTIES: :ID: ABD736DF-FC08-42C2-832A-783A12C8CEF8 :END: Show a modal menu that confirms workout logging cancellation before cancelling. * DONE Make workout logging fields compact on mobile :feat:ui: :PROPERTIES: :ID: 9C5050C3-4016-4580-9019-09F2C929E7FD :END: Use a grid layout so the exercise name, load input, and reps input appear on one row on mobile. * DONE Preserve and navigate after modal workout cancellation :feat:ui: :PROPERTIES: :ID: 8B43EF3E-ECEA-4309-B45E-E887704E3683 :END: When cancellation is confirmed, return the Current Workout tab to the Routine tab, save the workout as a partial logbook entry, and keep it editable later. * DONE Use shared load and reps column headings :feat:web: :PROPERTIES: :ID: EA7B46E1-9E11-46B2-9986-061CFCA047B1 :END: In exercise logging fieldsets, show Load and Reps as column headings instead of repeating them above every input in a multi-exercise group. * DONE Hide exercise-selector submit buttons in SPA mode :feat:ui:minor: :PROPERTIES: :ID: 5EB7AFE6-A3F3-459A-AC43-509C8E335C7D :END: When JavaScript progressive enhancement is active, do not show the submit button for exercise selection. * DONE Fix workout cancellation persistence :fix:app: :PROPERTIES: :ID: 148045D9-31FD-4324-893E-BD5A18126EB7 :END: Cancelling workout logging currently redirects without actually cancelling the workout. Make the cancellation operation take effect. - result :: model=kiro-cli commit=5aaa11f tests=pass * DONE Make the entire logging fieldset a responsive grid :feat:ui: :PROPERTIES: :ID: B8E23595-5400-4B1E-A263-4EA0AE928D48 :END: Use one responsive grid for the entire workout logging fieldset instead of separate exercise-field layouts. - result :: model=kiro-cli commit=6b62f25 tests=pass * DONE Update the workout elapsed timer live :feat:ui: :PROPERTIES: :ID: DD858602-CC01-433B-BE33-E59CABE79060 :END: Ensure the elapsed duration timer in the Current Workout view updates continuously while logging. - result :: model=kiro-cli commit=f9cfb69 tests=pass * DONE Fix the workout cancel button :fix:app: :PROPERTIES: :ID: 4A3D0AD4-57FE-49D4-A47D-E8D57CA07EFB :END: [2026-09-05 Sat 17:23] Fix the workout cancel button bug. We are cancelling a workout does not properly cancel the workout and redirect to the home page * DONE Hide the exercise choice label :feat:ui:minor: :PROPERTIES: :ID: 3474D6D1-9D7A-4BB0-ABC3-CA9BDFF994D8 :END: [2026-09-05 Sat 17:26] Make the exercise choice label invisible in the current workout logging page * DONE Replace history with a logbook endpoint :refactor:app: :PROPERTIES: :ID: 34A2E9B5-79E6-4026-93CC-A13E099F0FFA :END: Replace the history endpoint with a logbook endpoint that shows all recorded evidence for the user. * DONE Allow spontaneous logbook feedback :feat:web: :PROPERTIES: :ID: E6C5DEA7-F9F6-47AA-9BE0-0337A2C3FCAE :END: Allow users to submit subjective feedback at any time from the Logbook. Suggest this feedback flow at the end of each workout, while keeping it available independently. * DONE Gate logbook feedback form behind a button :feat:app: :PROPERTIES: :ID: 7E5113F3-B4CC-4258-9CA8-B4D4F8E5695A :END: The feedback form under the logbook tab should be accessed via a dedicated button not displayed outright in the logbook page - result :: model=kiro-cli commit=6cc9062 tests=pass * DONE Add authenticated app feedback :feat:app: :PROPERTIES: :ID: D69A809A-C005-4FAE-A83A-D31EC73FDC11 :END: [2026-09-05 Sat 17:45] Next to the profile button in the top header, add an app feedback button which will insert app-specific feedback written by the user to an appropriate SQLite table on the server. On the user app feedback screen, the user should be able to type freeform feedback on the application in one tab and in a second tab view the list of feedback submitted * DONE Add animations to routine accordions :feat:ui: :PROPERTIES: :ID: 1159365E-8A37-46BF-9471-081C36951FFE :END: Add animations to the routine accordions. * DONE Style workout accordions with CSS :feat:ui: :PROPERTIES: :ID: AA62E903-0B38-492A-A7F3-1D33B1341F8B :END: Style the workout accordions with CSS. * DONE Replace routine accordions with an HTML table :refactor:ui: :PROPERTIES: :ID: 1FB93D06-7F39-48DF-9446-30262FEB9EDD :END: Replace the routine accordion interface with a basic HTML table. - result :: model=kiro-cli commit=4e4acac tests=pass * DONE Remove all doctrine-note elements :refactor:web:minor:doctrine: :PROPERTIES: :ID: 5C899949-BF43-4DFC-A2ED-ABB610F33E3E :END: * DONE Use brass for secondary buttons :feat:ui: :PROPERTIES: :ID: 58F4069E-C63B-4F88-B61E-9D32A2C7E931 :END: Use a secondary brass color for secondary buttons. * DONE Style exercise names as headings :feat:ui: :PROPERTIES: :ID: D1D1A24B-5C5A-4087-AFCE-FA2CA5E91D13 :END: In the exercise fieldset, style the exercise name as a black Work Sans heading. * DONE Limit Courier Prime Mono usage :feat:web: :PROPERTIES: :ID: F16278C5-7676-4674-91E5-1BDBB55F3050 :END: Use Courier Prime Mono only for numerical inputs and outputs, and eventually for tabular data. * DONE Harmonize UI corner radii :refactor:ui: :PROPERTIES: :ID: 2F91D541-E1FD-4970-9928-8699EFE6F9A2 :END: Use uniformly rounded corners for all buttons, cards, and other UI elements. * DONE Harmonize keyboard-focus halo styling :refactor:ui: :PROPERTIES: :ID: 26B135E8-3496-4445-A882-20BAEF45670C :END: Change the WCAG keyboard-navigation focus halo color so it follows the general UI theme and is less visually obtrusive. * DONE Style the cancellation modal to match the UI :feat:ui: :PROPERTIES: :ID: 71E0C5B7-0181-4F98-B9F1-868635E2FB02 :END: Style the modal cancellation menu so it matches the overall UI aesthetic. * DONE Style form dropdowns to match the UI :feat:ui: :PROPERTIES: :ID: FA54EA36-BDDE-427F-B236-11BA6DB4C531 :END: Style form dropdown menus so they match the overall UI aesthetic. * DONE Add a dedicated profile page :feat:ui: :PROPERTIES: :ID: 280116A7-6B34-496B-B19B-77D41FB6CBC5 :END: Make the top-bar profile button open a dedicated profile page instead of the Logbook. Allow users to change their username and update their password. - result :: model=kiro-cli commit=430a6ea tests=pass # Local Variables: # org-log-done: time # End: