5.2 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | must_haves | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01-input-ux | 03 | execute | 1 |
|
true |
|
Purpose: Users on mobile can tap every button and input without missing. iOS auto-zoom does not trigger on any input in the app. Output: App.css updated with min-height and font-size fixes for non-stepper elements.
<execution_context> @/home/intense/.claude/get-shit-done/workflows/execute-plan.md @/home/intense/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @frontend/src/App.css @frontend/src/index.css Task 1: Audit touch targets and fix all violations in App.css frontend/src/App.css Read App.css in full. Identify all rules that style buttons and inputs. For each, check whether height or min-height is explicitly set to at least 44px.Elements that need fixing (based on current code review):
-
.back-btn— currently haspadding: 0.5remonly. Add:min-height: 44px; -
.warmup-item— currentlypadding: 0.75rem. The item needs to be at least 44px tall. Add:min-height: 44px; -
.warmup-done-btn— currentlypadding: 1rem. Add:min-height: 44px; -
.finish-workout-btn— currentlypadding: 1.25rem. Add:min-height: 44px; -
.complete-btn— alreadywidth: 44px; height: 44px;. No change needed. Verify it is not overridden in any mobile media query. -
.start-btnand.start-workout-btn— currentlypadding: 1rem. Addmin-height: 44px;to both (or the shared rule if they share one). -
.tab-btn— currentlypadding: 0.75rem. Addmin-height: 44px;. -
.calendar-nav— currentlywidth: 32px; height: 32px;. This is below 44px. Update to:width: 44px; height: 44px; -
.edit-btn— currentlypadding: 0.5rem 0.75rem;. Addmin-height: 44px;. -
.cancel-btnand.save-btn— currentlypadding: 0.75rem. Addmin-height: 44px;.
Font-size audit — all <input> elements must have font-size >= 16px:
- In
.auth-card input(index.css line 96) the font-size is1rem. 1rem = 16px by default, but it depends on root font-size. To be safe, add a rule in App.css:Place this near the top of App.css in the first section, or append it at the end before the stepper block (if Plan 01 runs in parallel, this is fine — the stepper CSS block already has font-size: 16px on .stepper-input)./* Ensure all inputs have font-size >= 16px to prevent iOS auto-zoom */ input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="tel"], select, textarea { font-size: 16px; }
Approach:
- Edit each rule in-place by adding the missing property inside the existing rule block.
- Do NOT create new duplicate rule blocks — find the existing selector and add inside it.
- For the global input font-size rule, append it as a new block at the end.
After editing, confirm no interactive element visible on WorkoutPage or Dashboard is below 44px in height.
- grep -n "min-height: 44px" frontend/src/App.css (should appear multiple times)
- grep -n "font-size: 16px" frontend/src/App.css (should appear for global input rule + stepper)
- cd /workspace/gravl/frontend && npm run build 2>&1 | tail -10
- All listed interactive elements have explicit min-height: 44px (or height: 44px for circle buttons)
- .calendar-nav updated from 32px to 44px
- Global input font-size: 16px rule added
- Build passes
<success_criteria>
- Every interactive element in App.css has min-height >= 44px (or explicit height >= 44px)
- All input types have font-size: 16px preventing iOS auto-zoom
- .calendar-nav is 44x44px
- Build passes </success_criteria>