[OCaml] High Intensity Training Online
docs rename ENHANCEMENTS.org to REQUESTS.org
Shift the log vocabulary from enhancements to requests, which better fits problem reports and change requests. Update the file title to match. Rename preserves history (git mv).
Changed files
ENHANCEMENTS.org
@@ -1,402 +0,0 @@
1
Removed:
#+TITLE: Hito Enhancements log
2
Removed:
#+AUTHOR: Marius Peter
3
Removed:
#+STARTUP: content
4
Removed:
#+TODO: TODO IN-PROGRESS TESTING TESTED BLOCKED | CANCELLED DONE
5
Removed:
6
Removed:
* Dispatch
7
Removed:
8
Removed:
** DONE Show feedback author and contribution count
9
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:24]
10
Removed:
11
Removed:
feedback should display username that submitted it, alongside their total number of feedback contributions.
12
Removed:
13
Removed:
Clarification:
14
Removed:
- Users should see real usernames.
15
Removed:
- Rank the feedback list by upvotes.
16
Removed:
- Let users upvote feedback submitted by other users they think is valuable.
17
Removed:
18
Removed:
- result :: commit=98e5fb5 tests=215 pass
19
Removed:
20
Removed:
** CANCELLED Keep the routine as a table
21
Removed:
CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24]
22
Removed:
:PROPERTIES:
23
Removed:
:ID: 6b126d4c-6058-4b7a-8c67-640ce6160ba7
24
Removed:
:END:
25
Removed:
26
Removed:
- note :: Duplicate. The routine already renders as an HTML table (commit 4e4acac, "Replace routine accordions with an HTML table"). No new work.
27
Removed:
routine must absolutely be a table.
28
Removed:
29
Removed:
Clarification:
30
Removed:
- This is a duplicate request.
31
Removed:
32
Removed:
** DONE Use POST-redirect-GET for all forms
33
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
34
Removed:
35
Removed:
Ensure proper POST redirect GET patter for all forms
36
Removed:
37
Removed:
Clarification:
38
Removed:
- Apply this to feedback, application feedback, and workout forms.
39
Removed:
- Preserve success and error messages for toast display on the redirected page.
40
Removed:
41
Removed:
- result :: commit=41a44ff tests=215 pass
42
Removed:
43
Removed:
** DONE Standardize shared CRUD patterns
44
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
45
Removed:
46
Removed:
Rationalize shared CRUD pattern for domain objects, user data, and app feedback
47
Removed:
48
Removed:
- result :: commit=ea594ba tests=215 pass
49
Removed:
50
Removed:
** DONE Use worse-same-better subjective feedback
51
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
52
Removed:
53
Removed:
Subjective Feedback evidence should be collected against the following pattern: Worse, Same, Better [than usual]
54
Removed:
55
Removed:
Clarification:
56
Removed:
- Ask, "How are you feeling?"
57
Removed:
- Collect Worse, Same, and Better through inline button groups.
58
Removed:
- Apply this to sleep, appetite, readiness, motivation, and perceived difficulty.
59
Removed:
- This probably has an impact on core data types as well.
60
Removed:
61
Removed:
- result :: commit=f09fd5d tests=215 pass
62
Removed:
63
Removed:
** DONE Make Write feedback the primary action
64
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
65
Removed:
66
Removed:
"Write feedback" should be the single Primary action on the app-feedback page. Secondary actions are CRUD operations on previous feedback items.
67
Removed:
68
Removed:
Clarification:
69
Removed:
- Secondary CRUD actions are editing and removing the user’s feedback items.
70
Removed:
- Show the primary action once.
71
Removed:
72
Removed:
- result :: commit=43da59d tests=215 pass
73
Removed:
74
Removed:
** TODO Import Hevy CSV from profile
75
Removed:
SCHEDULED: [2026-09-05 Sat 21:25]
76
Removed:
:PROPERTIES:
77
Removed:
:ID: 2559dd31-18e1-4f62-8d16-92f96d782203
78
Removed:
:END:
79
Removed:
80
Removed:
- note :: Deferred by the request clarification. Left open under Dispatch; not implemented this session.
81
Removed:
On profile page, user should be able to import Hevy CSV
82
Removed:
83
Removed:
Clarification:
84
Removed:
- Defer this feedback feature.
85
Removed:
86
Removed:
** CANCELLED Fix workout cancellation flow
87
Removed:
CLOSED: [2026-09-05 Sat 21:58] SCHEDULED: [2026-09-05 Sat 21:25]
88
Removed:
89
Removed:
workout cancellation flow still has bug
90
Removed:
91
Removed:
- 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).
92
Removed:
** CANCELLED Emphasize the secondary color
93
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
94
Removed:
95
Removed:
oxblood color is still too dominant; secondary color needs to be more emphasized
96
Removed:
97
Removed:
Clarification:
98
Removed:
- Use brass for secondary buttons, such as cancellation.
99
Removed:
100
Removed:
- note :: Already implemented by the existing brass secondary-button styling; no new work was required.
101
Removed:
102
Removed:
** CANCELLED Use progressive subjective feedback buttons
103
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
104
Removed:
105
Removed:
subjective feedback affordances should be more progressive. not dropdowns, but button groups containing three buttons each for below, usual, and above.
106
Removed:
107
Removed:
- note :: Duplicate of the completed Worse/Same/Better inline controls proposal (commit f09fd5d).
108
Removed:
109
Removed:
** DONE Store database timestamps as ISO 8601
110
Removed:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
111
Removed:
112
Removed:
database timestamps should be stored as ISO8601 strings
113
Removed:
114
Removed:
Clarification:
115
Removed:
- Store timestamps in UTC Zulu time.
116
Removed:
- Use the ISO 8601 format.
117
Removed:
- Do not migrate existing data.
118
Removed:
- Existing data can be dropped safely.
119
Removed:
120
Removed:
- result :: commit=79bbbd7 tests=215 pass; migration 5 drops affected legacy evidence
121
Removed:
** TODO Give each prescribed exercise its own routine sub-row
122
Removed:
SCHEDULED: [2026-09-05 Sat 23:10]
123
Removed:
- Each prescribed exercise should exist in a separate sub-row.
124
Removed:
- Stimuli count column should not exist.
125
Removed:
- Each prescribed exercise should have specific sub-columns for exercise name, rep count.
126
Removed:
* Core domain
127
Removed:
128
Removed:
* Navigation
129
Removed:
130
Removed:
** DONE Use one desktop-to-mobile breakpoint
131
Removed:
132
Removed:
Desktop has top navigation. Mobile has an identical bottom navigation.
133
Removed:
134
Removed:
** DONE Use three always-available navigation actions
135
Removed:
136
Removed:
Use `Home`, `Routine` when the user is not logging (changing to `Current Workout` while logging), and `<username>` for the workout log. Keep all three actions available in both modes.
137
Removed:
138
Removed:
** DONE Simplify the top bar brand
139
Removed:
140
Removed:
Replace the top bar brand with `hito` in Work Sans, without a subtitle.
141
Removed:
142
Removed:
** DONE Remove the mobile hamburger menu
143
Removed:
144
Removed:
Do not show a hamburger menu on mobile.
145
Removed:
146
Removed:
** DONE Increase the masthead brand size
147
Removed:
148
Removed:
Make the masthead brand name appear much larger.
149
Removed:
150
Removed:
** DONE Hide sign-out on mobile
151
Removed:
152
Removed:
Do not show the sign-out button on mobile.
153
Removed:
154
Removed:
** DONE Remove thick black bars from mobile bottom navigation
155
Removed:
156
Removed:
Remove the thick black bars visible in the mobile bottom navigation.
157
Removed:
158
Removed:
** DONE Fix active bottom-navigation state for current workout and logbook
159
Removed:
160
Removed:
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.
161
Removed:
162
Removed:
** DONE Increase bottom-navigation button text size
163
Removed:
164
Removed:
Increase the bottom-navigation button text font size to better support WCAG-aligned readability.
165
Removed:
166
Removed:
** DONE Animate page transitions
167
Removed:
168
Removed:
Animate page transitions between Home, Current Workout, and Logbook.
169
Removed:
170
Removed:
** DONE Standardize Logbook navigation and add a mobile profile button
171
Removed:
172
Removed:
Always label the logbook tab `Logbook`. Add a dedicated profile button for the user name in the mobile top navigation bar.
173
Removed:
174
Removed:
** DONE Return the middle navigation tab to Routine after cancellation
175
Removed:
176
Removed:
After cancelling workout logging, change the middle navigation tab from Current Workout back to Routine.
177
Removed:
- result :: model=kiro-cli commit=ea1f211 tests=pass
178
Removed:
179
Removed:
* Workout logging
180
Removed:
181
Removed:
** DONE Add placeholders to load and reps fields
182
Removed:
183
Removed:
Add placeholder values to the load and reps fields on the workout logging page.
184
Removed:
185
Removed:
** DONE Remove the redundant fieldset legend
186
Removed:
187
Removed:
Remove the redundant fieldset legend from workout logging.
188
Removed:
189
Removed:
** DONE Show an in-progress workout card on Home
190
Removed:
191
Removed:
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.
192
Removed:
193
Removed:
** DONE Make workout cancellation unconditional
194
Removed:
195
Removed:
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.
196
Removed:
197
Removed:
** DONE Add a sticky workout timer bar
198
Removed:
199
Removed:
When logging a workout, show a sticky bar at the top of the screen with a workout timer.
200
Removed:
201
Removed:
** DONE Replace the exercise button group with a dropdown
202
Removed:
203
Removed:
Use a dropdown menu to select the exercise instead of the exercise button group.
204
Removed:
205
Removed:
** DONE Remove the boulder top border from exercise logging cards
206
Removed:
207
Removed:
Do not show a boulder top fieldset border on the exercise logging fieldset card.
208
Removed:
209
Removed:
** DONE Confirm workout cancellation in a modal
210
Removed:
211
Removed:
Show a modal menu that confirms workout logging cancellation before cancelling.
212
Removed:
213
Removed:
** DONE Make workout logging fields compact on mobile
214
Removed:
215
Removed:
Use a grid layout so the exercise name, load input, and reps input appear on one row on mobile.
216
Removed:
217
Removed:
** DONE Preserve and navigate after modal workout cancellation
218
Removed:
219
Removed:
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.
220
Removed:
221
Removed:
** DONE Use shared load and reps column headings
222
Removed:
223
Removed:
In exercise logging fieldsets, show Load and Reps as column headings instead of repeating them above every input in a multi-exercise group.
224
Removed:
225
Removed:
** DONE Hide exercise-selector submit buttons in SPA mode
226
Removed:
227
Removed:
When JavaScript progressive enhancement is active, do not show the submit button for exercise selection.
228
Removed:
229
Removed:
** DONE Fix workout cancellation persistence
230
Removed:
231
Removed:
Cancelling workout logging currently redirects without actually cancelling the workout. Make the cancellation operation take effect.
232
Removed:
- result :: model=kiro-cli commit=5aaa11f tests=pass
233
Removed:
234
Removed:
** DONE Make the entire logging fieldset a responsive grid
235
Removed:
236
Removed:
Use one responsive grid for the entire workout logging fieldset instead of separate exercise-field layouts.
237
Removed:
- result :: model=kiro-cli commit=6b62f25 tests=pass
238
Removed:
239
Removed:
** DONE Update the workout elapsed timer live
240
Removed:
241
Removed:
Ensure the elapsed duration timer in the Current Workout view updates continuously while logging.
242
Removed:
- result :: model=kiro-cli commit=f9cfb69 tests=pass
243
Removed:
244
Removed:
** DONE Fix the workout cancel button
245
Removed:
246
Removed:
[2026-09-05 Sat 17:23]
247
Removed:
Fix the workout cancel button bug. We are cancelling a workout does not properly cancel the workout and redirect to the home page
248
Removed:
249
Removed:
** DONE Hide the exercise choice label
250
Removed:
251
Removed:
[2026-09-05 Sat 17:26]
252
Removed:
Make the exercise choice label invisible in the current workout logging page
253
Removed:
254
Removed:
** DONE Remove spurious Page updated mention
255
Removed:
CLOSED: [2026-09-05 Sat 21:57] SCHEDULED: [2026-09-05 Sat 21:25]
256
Removed:
257
Removed:
Spurious "Page updated" mention in workout logging screen
258
Removed:
259
Removed:
- result :: model=kiro-cli commit=dab53ca tests=pass
260
Removed:
** DONE Fix workout log exercise selection
261
Removed:
CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24]
262
Removed:
:PROPERTIES:
263
Removed:
:ID: 45453231-7ac9-444c-96c2-af387a34bb0c
264
Removed:
:END:
265
Removed:
266
Removed:
- result :: model=kiro-cli commit=61bf45c tests=pass
267
Removed:
Broken workout log editing: exercise selection button.
268
Removed:
269
Removed:
Clarification:
270
Removed:
- This concerns editing a previously logged workout on mobile.
271
Removed:
- The user must be able to select and switch the exercise correctly.
272
Removed:
273
Removed:
** DONE Confirm workout override with a modal
274
Removed:
CLOSED: [2026-09-05 Sat 22:23] SCHEDULED: [2026-09-05 Sat 21:25]
275
Removed:
:PROPERTIES:
276
Removed:
:ID: b9d05a7f-c8f9-4fb6-878f-a9d1f89ed45d
277
Removed:
:END:
278
Removed:
279
Removed:
- result :: model=kiro-cli commit=7c9f701 tests=pass
280
Removed:
Implement a modal confirmation when beginning a workout under override
281
Removed:
282
Removed:
Clarification:
283
Removed:
- The override condition is training before full rest has completed.
284
Removed:
- Show a confirmation modal menu before starting the workout.
285
Removed:
286
Removed:
** DONE Show early workout notice as a toast
287
Removed:
CLOSED: [2026-09-05 Sat 22:26] SCHEDULED: [2026-09-05 Sat 21:25]
288
Removed:
:PROPERTIES:
289
Removed:
:ID: 8052f6e1-7281-4a57-a615-504476ca6c16
290
Removed:
:END:
291
Removed:
292
Removed:
- result :: model=kiro-cli commit=9702a02 tests=pass
293
Removed:
"begin before recovery finished" should be a toast message rather than a component in the main content.
294
Removed:
295
Removed:
Clarification:
296
Removed:
- The toast is informational only because the modal already confirms the override.
297
Removed:
- Display it for 3 seconds, or for the duration recommended by WCAG.
298
Removed:
299
Removed:
* Logbook and feedback
300
Removed:
301
Removed:
** DONE Replace history with a logbook endpoint
302
Removed:
303
Removed:
Replace the history endpoint with a logbook endpoint that shows all recorded evidence for the user.
304
Removed:
305
Removed:
** DONE Allow spontaneous logbook feedback
306
Removed:
307
Removed:
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.
308
Removed:
309
Removed:
** DONE Gate logbook feedback form behind a button
310
Removed:
311
Removed:
The feedback form under the logbook tab should be accessed via a dedicated button not displayed outright in the logbook page
312
Removed:
- result :: model=kiro-cli commit=6cc9062 tests=pass
313
Removed:
314
Removed:
** DONE Add authenticated app feedback
315
Removed:
316
Removed:
[2026-09-05 Sat 17:45]
317
Removed:
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
318
Removed:
319
Removed:
* Routine display
320
Removed:
321
Removed:
** DONE Add animations to routine accordions
322
Removed:
323
Removed:
Add animations to the routine accordions.
324
Removed:
325
Removed:
** DONE Style workout accordions with CSS
326
Removed:
327
Removed:
Style the workout accordions with CSS.
328
Removed:
329
Removed:
** DONE Replace routine accordions with an HTML table
330
Removed:
331
Removed:
Replace the routine accordion interface with a basic HTML table.
332
Removed:
- result :: model=kiro-cli commit=4e4acac tests=pass
333
Removed:
334
Removed:
* Styling and theme
335
Removed:
336
Removed:
** DONE Remove all doctrine-note elements
337
Removed:
338
Removed:
** DONE Use brass for secondary buttons
339
Removed:
340
Removed:
Use a secondary brass color for secondary buttons.
341
Removed:
342
Removed:
** DONE Style exercise names as headings
343
Removed:
344
Removed:
In the exercise fieldset, style the exercise name as a black Work Sans heading.
345
Removed:
346
Removed:
** DONE Limit Courier Prime Mono usage
347
Removed:
348
Removed:
Use Courier Prime Mono only for numerical inputs and outputs, and eventually for tabular data.
349
Removed:
350
Removed:
** DONE Harmonize UI corner radii
351
Removed:
352
Removed:
Use uniformly rounded corners for all buttons, cards, and other UI elements.
353
Removed:
354
Removed:
** DONE Harmonize keyboard-focus halo styling
355
Removed:
356
Removed:
Change the WCAG keyboard-navigation focus halo color so it follows the general UI theme and is less visually obtrusive.
357
Removed:
358
Removed:
** DONE Style the cancellation modal to match the UI
359
Removed:
360
Removed:
Style the modal cancellation menu so it matches the overall UI aesthetic.
361
Removed:
362
Removed:
** DONE Style form dropdowns to match the UI
363
Removed:
364
Removed:
Style form dropdown menus so they match the overall UI aesthetic.
365
Removed:
366
Removed:
* Account and profile
367
Removed:
368
Removed:
** DONE Add a dedicated profile page
369
Removed:
370
Removed:
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.
371
Removed:
- result :: model=kiro-cli commit=430a6ea tests=pass
372
Removed:
373
Removed:
* Errors
374
Removed:
375
Removed:
** DONE Add custom error pages
376
Removed:
CLOSED: [2026-09-05 Sat 22:20] SCHEDULED: [2026-09-05 Sat 21:25]
377
Removed:
:PROPERTIES:
378
Removed:
:ID: 965d5284-a593-43ca-b8e4-202b093e6502
379
Removed:
:END:
380
Removed:
381
Removed:
- result :: model=kiro-cli commit=34ab578 tests=pass
382
Removed:
Need custom 404 etc. pages
383
Removed:
384
Removed:
Clarification:
385
Removed:
- Add the most common 400 and 500 error pages.
386
Removed:
- Do not expose specific information from the server.
387
Removed:
- Keep the desktop top navigation affordance.
388
Removed:
- Keep the mobile bottom navigation affordance.
389
Removed:
390
Removed:
* Miscellaneous
391
Removed:
392
Removed:
# Local Variables:
393
Removed:
# org-log-done: time
394
Removed:
# End:
395
Removed:
** DONE Capture each prompt as its own request
396
Removed:
CLOSED: [2026-09-05 Sat 22:01] SCHEDULED: [2026-09-05 Sat 21:31]
397
Removed:
:PROPERTIES:
398
Removed:
:ID: cfdca5b4-80d3-448f-bf54-a365dd36a578
399
Removed:
:END:
400
Removed:
401
Removed:
- result :: model=kiro-cli commit=d5553a2 tests=pass
402
Removed:
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.
REQUESTS.org
@@ -0,0 +1,445 @@
1
Added:
#+TITLE: Hito Requests log
2
Added:
#+AUTHOR: Marius Peter
3
Added:
#+STARTUP: content
4
Added:
#+TODO: TODO IN-PROGRESS TESTING TESTED BLOCKED | CANCELLED DONE
5
Added:
6
Added:
* Dispatch
7
Added:
8
Added:
** DONE Show feedback author and contribution count
9
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:24]
10
Added:
11
Added:
feedback should display username that submitted it, alongside their total number of feedback contributions.
12
Added:
13
Added:
Clarification:
14
Added:
- Users should see real usernames.
15
Added:
- Rank the feedback list by upvotes.
16
Added:
- Let users upvote feedback submitted by other users they think is valuable.
17
Added:
18
Added:
- result :: commit=98e5fb5 tests=215 pass
19
Added:
20
Added:
** CANCELLED Keep the routine as a table
21
Added:
CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24]
22
Added:
:PROPERTIES:
23
Added:
:ID: 6b126d4c-6058-4b7a-8c67-640ce6160ba7
24
Added:
:END:
25
Added:
26
Added:
- note :: Duplicate. The routine already renders as an HTML table (commit 4e4acac, "Replace routine accordions with an HTML table"). No new work.
27
Added:
routine must absolutely be a table.
28
Added:
29
Added:
Clarification:
30
Added:
- This is a duplicate request.
31
Added:
32
Added:
** DONE Use POST-redirect-GET for all forms
33
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
34
Added:
35
Added:
Ensure proper POST redirect GET patter for all forms
36
Added:
37
Added:
Clarification:
38
Added:
- Apply this to feedback, application feedback, and workout forms.
39
Added:
- Preserve success and error messages for toast display on the redirected page.
40
Added:
41
Added:
- result :: commit=41a44ff tests=215 pass
42
Added:
43
Added:
** DONE Standardize shared CRUD patterns
44
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
45
Added:
46
Added:
Rationalize shared CRUD pattern for domain objects, user data, and app feedback
47
Added:
48
Added:
- result :: commit=ea594ba tests=215 pass
49
Added:
50
Added:
** DONE Use worse-same-better subjective feedback
51
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
52
Added:
53
Added:
Subjective Feedback evidence should be collected against the following pattern: Worse, Same, Better [than usual]
54
Added:
55
Added:
Clarification:
56
Added:
- Ask, "How are you feeling?"
57
Added:
- Collect Worse, Same, and Better through inline button groups.
58
Added:
- Apply this to sleep, appetite, readiness, motivation, and perceived difficulty.
59
Added:
- This probably has an impact on core data types as well.
60
Added:
61
Added:
- result :: commit=f09fd5d tests=215 pass
62
Added:
63
Added:
** DONE Make Write feedback the primary action
64
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
65
Added:
66
Added:
"Write feedback" should be the single Primary action on the app-feedback page. Secondary actions are CRUD operations on previous feedback items.
67
Added:
68
Added:
Clarification:
69
Added:
- Secondary CRUD actions are editing and removing the user’s feedback items.
70
Added:
- Show the primary action once.
71
Added:
72
Added:
- result :: commit=43da59d tests=215 pass
73
Added:
74
Added:
** TODO Import Hevy CSV from profile
75
Added:
SCHEDULED: [2026-09-05 Sat 21:25]
76
Added:
:PROPERTIES:
77
Added:
:ID: 2559dd31-18e1-4f62-8d16-92f96d782203
78
Added:
:END:
79
Added:
80
Added:
- note :: Deferred by the request clarification. Left open under Dispatch; not implemented this session.
81
Added:
On profile page, user should be able to import Hevy CSV
82
Added:
83
Added:
Clarification:
84
Added:
- Defer this feedback feature.
85
Added:
86
Added:
** CANCELLED Fix workout cancellation flow
87
Added:
CLOSED: [2026-09-05 Sat 21:58] SCHEDULED: [2026-09-05 Sat 21:25]
88
Added:
89
Added:
workout cancellation flow still has bug
90
Added:
91
Added:
- 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).
92
Added:
** CANCELLED Emphasize the secondary color
93
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
94
Added:
95
Added:
oxblood color is still too dominant; secondary color needs to be more emphasized
96
Added:
97
Added:
Clarification:
98
Added:
- Use brass for secondary buttons, such as cancellation.
99
Added:
100
Added:
- note :: Already implemented by the existing brass secondary-button styling; no new work was required.
101
Added:
102
Added:
** CANCELLED Use progressive subjective feedback buttons
103
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
104
Added:
105
Added:
subjective feedback affordances should be more progressive. not dropdowns, but button groups containing three buttons each for below, usual, and above.
106
Added:
107
Added:
- note :: Duplicate of the completed Worse/Same/Better inline controls proposal (commit f09fd5d).
108
Added:
109
Added:
** DONE Store database timestamps as ISO 8601
110
Added:
CLOSED: [2026-09-05 Sat 22:54] SCHEDULED: [2026-09-05 Sat 21:25]
111
Added:
112
Added:
database timestamps should be stored as ISO8601 strings
113
Added:
114
Added:
Clarification:
115
Added:
- Store timestamps in UTC Zulu time.
116
Added:
- Use the ISO 8601 format.
117
Added:
- Do not migrate existing data.
118
Added:
- Existing data can be dropped safely.
119
Added:
120
Added:
- result :: commit=79bbbd7 tests=215 pass; migration 5 drops affected legacy evidence
121
Added:
** TODO Give each prescribed exercise its own routine sub-row
122
Added:
SCHEDULED: [2026-09-05 Sat 23:10]
123
Added:
- Each prescribed exercise should exist in a separate sub-row.
124
Added:
- Stimuli count column should not exist.
125
Added:
- Each prescribed exercise should have specific sub-columns for exercise name, rep count.
126
Added:
127
Added:
128
Added:
** TODO Define five-point subjective feedback scores
129
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
130
Added:
Source: application feedback (VPS, trainee t1, sequence 1, submitted 2026-09-05T22:13:05Z)
131
Added:
132
Added:
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.
133
Added:
134
Added:
** TODO Preserve partial subjective feedback
135
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
136
Added:
Source: application feedback (VPS, trainee t1, sequence 1, submitted 2026-09-05T22:13:05Z)
137
Added:
138
Added:
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.
139
Added:
140
Added:
** TODO Verify POST redirect GET for forms
141
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
142
Added:
Source: application feedback (VPS, trainee t1, sequence 2, submitted 2026-09-05T22:14:58Z)
143
Added:
144
Added:
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.
145
Added:
146
Added:
** TODO Standardize the global corner radius
147
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
148
Added:
Source: application feedback (VPS, trainee t1, sequence 3, submitted 2026-09-05T22:15:29Z)
149
Added:
150
Added:
Use one global border radius in relative units so that it scales across components.
151
Added:
152
Added:
** TODO Format page titles with an em dash
153
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
154
Added:
Source: application feedback (VPS, trainee t1, sequence 4, submitted 2026-09-05T22:16:53Z)
155
Added:
156
Added:
Use a literal em dash in page titles, such as Hito — Home.
157
Added:
158
Added:
** TODO Add profile dropdown actions
159
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
160
Added:
Source: application feedback (VPS, trainee t1, sequence 5, submitted 2026-09-05T22:18:25Z)
161
Added:
162
Added:
Make the profile control a drop-down with Profile, Settings, and Sign out actions.
163
Added:
164
Added:
** TODO Animate modals with reduced-motion support
165
Added:
SCHEDULED: [2026-09-06 Sun 13:09]
166
Added:
Source: application feedback (VPS, trainee t1, sequence 6, submitted 2026-09-06T08:37:36Z)
167
Added:
168
Added:
Apply a short, smooth modal animation to every modal. Disable modal animation when the user prefers reduced motion.
169
Added:
* Core domain
170
Added:
171
Added:
* Navigation
172
Added:
173
Added:
** DONE Use one desktop-to-mobile breakpoint
174
Added:
175
Added:
Desktop has top navigation. Mobile has an identical bottom navigation.
176
Added:
177
Added:
** DONE Use three always-available navigation actions
178
Added:
179
Added:
Use `Home`, `Routine` when the user is not logging (changing to `Current Workout` while logging), and `<username>` for the workout log. Keep all three actions available in both modes.
180
Added:
181
Added:
** DONE Simplify the top bar brand
182
Added:
183
Added:
Replace the top bar brand with `hito` in Work Sans, without a subtitle.
184
Added:
185
Added:
** DONE Remove the mobile hamburger menu
186
Added:
187
Added:
Do not show a hamburger menu on mobile.
188
Added:
189
Added:
** DONE Increase the masthead brand size
190
Added:
191
Added:
Make the masthead brand name appear much larger.
192
Added:
193
Added:
** DONE Hide sign-out on mobile
194
Added:
195
Added:
Do not show the sign-out button on mobile.
196
Added:
197
Added:
** DONE Remove thick black bars from mobile bottom navigation
198
Added:
199
Added:
Remove the thick black bars visible in the mobile bottom navigation.
200
Added:
201
Added:
** DONE Fix active bottom-navigation state for current workout and logbook
202
Added:
203
Added:
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.
204
Added:
205
Added:
** DONE Increase bottom-navigation button text size
206
Added:
207
Added:
Increase the bottom-navigation button text font size to better support WCAG-aligned readability.
208
Added:
209
Added:
** DONE Animate page transitions
210
Added:
211
Added:
Animate page transitions between Home, Current Workout, and Logbook.
212
Added:
213
Added:
** DONE Standardize Logbook navigation and add a mobile profile button
214
Added:
215
Added:
Always label the logbook tab `Logbook`. Add a dedicated profile button for the user name in the mobile top navigation bar.
216
Added:
217
Added:
** DONE Return the middle navigation tab to Routine after cancellation
218
Added:
219
Added:
After cancelling workout logging, change the middle navigation tab from Current Workout back to Routine.
220
Added:
- result :: model=kiro-cli commit=ea1f211 tests=pass
221
Added:
222
Added:
* Workout logging
223
Added:
224
Added:
** DONE Add placeholders to load and reps fields
225
Added:
226
Added:
Add placeholder values to the load and reps fields on the workout logging page.
227
Added:
228
Added:
** DONE Remove the redundant fieldset legend
229
Added:
230
Added:
Remove the redundant fieldset legend from workout logging.
231
Added:
232
Added:
** DONE Show an in-progress workout card on Home
233
Added:
234
Added:
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.
235
Added:
236
Added:
** DONE Make workout cancellation unconditional
237
Added:
238
Added:
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.
239
Added:
240
Added:
** DONE Add a sticky workout timer bar
241
Added:
242
Added:
When logging a workout, show a sticky bar at the top of the screen with a workout timer.
243
Added:
244
Added:
** DONE Replace the exercise button group with a dropdown
245
Added:
246
Added:
Use a dropdown menu to select the exercise instead of the exercise button group.
247
Added:
248
Added:
** DONE Remove the boulder top border from exercise logging cards
249
Added:
250
Added:
Do not show a boulder top fieldset border on the exercise logging fieldset card.
251
Added:
252
Added:
** DONE Confirm workout cancellation in a modal
253
Added:
254
Added:
Show a modal menu that confirms workout logging cancellation before cancelling.
255
Added:
256
Added:
** DONE Make workout logging fields compact on mobile
257
Added:
258
Added:
Use a grid layout so the exercise name, load input, and reps input appear on one row on mobile.
259
Added:
260
Added:
** DONE Preserve and navigate after modal workout cancellation
261
Added:
262
Added:
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.
263
Added:
264
Added:
** DONE Use shared load and reps column headings
265
Added:
266
Added:
In exercise logging fieldsets, show Load and Reps as column headings instead of repeating them above every input in a multi-exercise group.
267
Added:
268
Added:
** DONE Hide exercise-selector submit buttons in SPA mode
269
Added:
270
Added:
When JavaScript progressive enhancement is active, do not show the submit button for exercise selection.
271
Added:
272
Added:
** DONE Fix workout cancellation persistence
273
Added:
274
Added:
Cancelling workout logging currently redirects without actually cancelling the workout. Make the cancellation operation take effect.
275
Added:
- result :: model=kiro-cli commit=5aaa11f tests=pass
276
Added:
277
Added:
** DONE Make the entire logging fieldset a responsive grid
278
Added:
279
Added:
Use one responsive grid for the entire workout logging fieldset instead of separate exercise-field layouts.
280
Added:
- result :: model=kiro-cli commit=6b62f25 tests=pass
281
Added:
282
Added:
** DONE Update the workout elapsed timer live
283
Added:
284
Added:
Ensure the elapsed duration timer in the Current Workout view updates continuously while logging.
285
Added:
- result :: model=kiro-cli commit=f9cfb69 tests=pass
286
Added:
287
Added:
** DONE Fix the workout cancel button
288
Added:
289
Added:
[2026-09-05 Sat 17:23]
290
Added:
Fix the workout cancel button bug. We are cancelling a workout does not properly cancel the workout and redirect to the home page
291
Added:
292
Added:
** DONE Hide the exercise choice label
293
Added:
294
Added:
[2026-09-05 Sat 17:26]
295
Added:
Make the exercise choice label invisible in the current workout logging page
296
Added:
297
Added:
** DONE Remove spurious Page updated mention
298
Added:
CLOSED: [2026-09-05 Sat 21:57] SCHEDULED: [2026-09-05 Sat 21:25]
299
Added:
300
Added:
Spurious "Page updated" mention in workout logging screen
301
Added:
302
Added:
- result :: model=kiro-cli commit=dab53ca tests=pass
303
Added:
** DONE Fix workout log exercise selection
304
Added:
CLOSED: [2026-09-05 Sat 22:02] SCHEDULED: [2026-09-05 Sat 21:24]
305
Added:
:PROPERTIES:
306
Added:
:ID: 45453231-7ac9-444c-96c2-af387a34bb0c
307
Added:
:END:
308
Added:
309
Added:
- result :: model=kiro-cli commit=61bf45c tests=pass
310
Added:
Broken workout log editing: exercise selection button.
311
Added:
312
Added:
Clarification:
313
Added:
- This concerns editing a previously logged workout on mobile.
314
Added:
- The user must be able to select and switch the exercise correctly.
315
Added:
316
Added:
** DONE Confirm workout override with a modal
317
Added:
CLOSED: [2026-09-05 Sat 22:23] SCHEDULED: [2026-09-05 Sat 21:25]
318
Added:
:PROPERTIES:
319
Added:
:ID: b9d05a7f-c8f9-4fb6-878f-a9d1f89ed45d
320
Added:
:END:
321
Added:
322
Added:
- result :: model=kiro-cli commit=7c9f701 tests=pass
323
Added:
Implement a modal confirmation when beginning a workout under override
324
Added:
325
Added:
Clarification:
326
Added:
- The override condition is training before full rest has completed.
327
Added:
- Show a confirmation modal menu before starting the workout.
328
Added:
329
Added:
** DONE Show early workout notice as a toast
330
Added:
CLOSED: [2026-09-05 Sat 22:26] SCHEDULED: [2026-09-05 Sat 21:25]
331
Added:
:PROPERTIES:
332
Added:
:ID: 8052f6e1-7281-4a57-a615-504476ca6c16
333
Added:
:END:
334
Added:
335
Added:
- result :: model=kiro-cli commit=9702a02 tests=pass
336
Added:
"begin before recovery finished" should be a toast message rather than a component in the main content.
337
Added:
338
Added:
Clarification:
339
Added:
- The toast is informational only because the modal already confirms the override.
340
Added:
- Display it for 3 seconds, or for the duration recommended by WCAG.
341
Added:
342
Added:
* Logbook and feedback
343
Added:
344
Added:
** DONE Replace history with a logbook endpoint
345
Added:
346
Added:
Replace the history endpoint with a logbook endpoint that shows all recorded evidence for the user.
347
Added:
348
Added:
** DONE Allow spontaneous logbook feedback
349
Added:
350
Added:
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.
351
Added:
352
Added:
** DONE Gate logbook feedback form behind a button
353
Added:
354
Added:
The feedback form under the logbook tab should be accessed via a dedicated button not displayed outright in the logbook page
355
Added:
- result :: model=kiro-cli commit=6cc9062 tests=pass
356
Added:
357
Added:
** DONE Add authenticated app feedback
358
Added:
359
Added:
[2026-09-05 Sat 17:45]
360
Added:
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
361
Added:
362
Added:
* Routine display
363
Added:
364
Added:
** DONE Add animations to routine accordions
365
Added:
366
Added:
Add animations to the routine accordions.
367
Added:
368
Added:
** DONE Style workout accordions with CSS
369
Added:
370
Added:
Style the workout accordions with CSS.
371
Added:
372
Added:
** DONE Replace routine accordions with an HTML table
373
Added:
374
Added:
Replace the routine accordion interface with a basic HTML table.
375
Added:
- result :: model=kiro-cli commit=4e4acac tests=pass
376
Added:
377
Added:
* Styling and theme
378
Added:
379
Added:
** DONE Remove all doctrine-note elements
380
Added:
381
Added:
** DONE Use brass for secondary buttons
382
Added:
383
Added:
Use a secondary brass color for secondary buttons.
384
Added:
385
Added:
** DONE Style exercise names as headings
386
Added:
387
Added:
In the exercise fieldset, style the exercise name as a black Work Sans heading.
388
Added:
389
Added:
** DONE Limit Courier Prime Mono usage
390
Added:
391
Added:
Use Courier Prime Mono only for numerical inputs and outputs, and eventually for tabular data.
392
Added:
393
Added:
** DONE Harmonize UI corner radii
394
Added:
395
Added:
Use uniformly rounded corners for all buttons, cards, and other UI elements.
396
Added:
397
Added:
** DONE Harmonize keyboard-focus halo styling
398
Added:
399
Added:
Change the WCAG keyboard-navigation focus halo color so it follows the general UI theme and is less visually obtrusive.
400
Added:
401
Added:
** DONE Style the cancellation modal to match the UI
402
Added:
403
Added:
Style the modal cancellation menu so it matches the overall UI aesthetic.
404
Added:
405
Added:
** DONE Style form dropdowns to match the UI
406
Added:
407
Added:
Style form dropdown menus so they match the overall UI aesthetic.
408
Added:
409
Added:
* Account and profile
410
Added:
411
Added:
** DONE Add a dedicated profile page
412
Added:
413
Added:
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.
414
Added:
- result :: model=kiro-cli commit=430a6ea tests=pass
415
Added:
416
Added:
* Errors
417
Added:
418
Added:
** DONE Add custom error pages
419
Added:
CLOSED: [2026-09-05 Sat 22:20] SCHEDULED: [2026-09-05 Sat 21:25]
420
Added:
:PROPERTIES:
421
Added:
:ID: 965d5284-a593-43ca-b8e4-202b093e6502
422
Added:
:END:
423
Added:
424
Added:
- result :: model=kiro-cli commit=34ab578 tests=pass
425
Added:
Need custom 404 etc. pages
426
Added:
427
Added:
Clarification:
428
Added:
- Add the most common 400 and 500 error pages.
429
Added:
- Do not expose specific information from the server.
430
Added:
- Keep the desktop top navigation affordance.
431
Added:
- Keep the mobile bottom navigation affordance.
432
Added:
433
Added:
* Miscellaneous
434
Added:
435
Added:
# Local Variables:
436
Added:
# org-log-done: time
437
Added:
# End:
438
Added:
** DONE Capture each prompt as its own request
439
Added:
CLOSED: [2026-09-05 Sat 22:01] SCHEDULED: [2026-09-05 Sat 21:31]
440
Added:
:PROPERTIES:
441
Added:
:ID: cfdca5b4-80d3-448f-bf54-a365dd36a578
442
Added:
:END:
443
Added:
444
Added:
- result :: model=kiro-cli commit=d5553a2 tests=pass
445
Added:
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.