Commit Graph

15 Commits

Author SHA1 Message Date
clawd 345cbed6d2 04-06: Plan persistence improvements and implement draft persistence
- Created 04-06-PLAN.md outlining persistence improvements phases
- Phase 04-06-01: Draft persistence via localStorage
  - Added useDraftWorkout hook for auto-saving/loading drafts
  - Integrated hook into WorkoutEditPage
  - Added draft recovery prompt UI
  - Drafts cleared after successful save
- Phase 04-06-02: Save error handling & retry (scaffolding)
  - Added error state and syncStatus tracking
  - Added handleRetry() for failed saves
  - Error banner with retry button
- Phase 04-06-03: Sync status UI (scaffolding)
  - Added visual feedback for save progress
  - Status indicators: saving, saved, error
  - Disabled UI during save to prevent conflicts
- Created comprehensive styles for new UI components

Status: 04-06-01 complete and integrated. Ready for testing.
2026-03-02 00:51:11 +01:00
clawd baf85fdcbf feat(phase-4): Backend API for custom workouts
- Add custom_workouts and custom_workout_exercises tables (schema)
- New endpoints:
  - GET /api/exercises - List all exercises for picker
  - POST /api/custom-workouts - Fork program workout
  - GET /api/custom-workouts - List user's custom workouts
  - GET /api/custom-workouts/:id - Get workout with exercises
  - PUT /api/custom-workouts/:id - Update workout exercises
  - DELETE /api/custom-workouts/:id - Delete custom workout
- Updated endpoints for source_type support:
  - GET /api/logs - Filter by source_type and custom_workout_id
  - POST /api/logs - Save with source_type and custom_workout_id
  - DELETE /api/logs - Support custom workout log deletion
- Adds Phase 4 planning overview

Completes: 04-01-schema-migration, 04-02-backend-api
Next: 04-03-frontend-workout-edit
2026-03-01 03:36:53 +01:00
clawd f6b1379a73 03-03: Workout Experience Polish - enhanced exercise cards, progress badges, rest timer, KLART button, warmup styling 2026-02-28 23:47:36 +01:00
clawd 8301803a6f design: WorkoutPage Hevy-style redesign + AlternativeModal + backend API
- Add GET /api/exercises/:id/alternatives endpoint
- Add GET /api/exercises/:id/last-workout endpoint
- New AlternativeModal component for swapping exercises
- WorkoutPage: single-tap logging, +/- buttons, rest timer
- Updated Icons with new workout icons
- Polish: card shadows, borders, micro-interactions
- Tasks directory for project management
2026-02-28 21:25:23 +01:00
clawd 3493ffdf44 docs: add phase 3 design polish planning, update progress 2026-02-26 23:53:22 +01:00
clawd 03c76cb316 docs(phase-02): complete phase execution 2026-02-21 18:49:36 +01:00
clawd 3808ef531b docs(02-02): complete DELETE logs endpoint plan — summary and state update
- 02-02-SUMMARY.md: backend DELETE endpoint + frontend deleteLog wiring
- STATE.md: phase 2 marked complete, decisions added, position advanced to phase 3 ready
2026-02-21 18:46:26 +01:00
clawd f09eb66fb4 docs(02-01): complete flexible sets plan 01 — summary and state update
- 02-01-SUMMARY.md: dynamic setList refactor, add-set modal, delete-set with last-set guard
- STATE.md: advance to phase 2 plan 2, record decisions, update metrics and session

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 18:43:18 +01:00
clawd 14cda2322e docs(phase-02): research flexible sets phase
Researched:
- Dropset conventions: 20-25% weight reduction per step (HIGH confidence, strength training literature)
- React array management: Use filter() for immutable removals (HIGH confidence, official React docs)
- Mobile delete UX: Combine inline icons + optional swipe, 48px touch targets (HIGH confidence, WCAG + NN/G)
- Lightweight modal: Plain CSS overlay pattern without component library (MEDIUM confidence, verified with community)
- Backend set numbering: Recommend frontend renumbering before save to handle gaps (MEDIUM confidence, needs verification)

Key deliverables:
- Standard Stack: React 18 + plain CSS (no new dependencies)
- Architecture Patterns: Dynamic array management, lightweight modal, inline delete with optional confirmation
- Don't Hand-Roll: Array mutations (use filter), modal dialog (CSS is simpler than library), set calculations
- Common Pitfalls: Set numbering gaps, missing reps defaults, arbitrary weight reductions, last-set deletion
- Code Examples: Add/remove sets, dropset calculations, delete patterns with renumbering

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 18:01:42 +01:00
clawd 1f960dd0d2 docs(02): capture phase context 2026-02-21 17:55:32 +01:00
clawd cb6f41ce3c docs(01-02): complete stepper integration plan — summary and state update
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 08:22:48 +01:00
clawd d37336eebd docs(01-03): complete touch target audit plan
- 01-03-SUMMARY.md: audit confirmed all 44px targets already in place from 01-01
- STATE.md: advanced to plan 3/3, updated metrics and decisions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-16 08:06:00 +01:00
clawd e940103d70 docs(01-input-ux-01): complete stepper input components plan
- SUMMARY.md: documents StepperInput, WeightInput, RepsInput creation
- STATE.md: advanced to plan 1/3, added component decisions
2026-02-16 08:05:11 +01:00
clawd f23a4902e6 docs(01-input-ux): create phase plan 2026-02-16 06:38:05 +01:00
clawd 055dc93c89 docs(01-input-ux): research mobile input UX patterns
Comprehensive research on implementing Phase 1: Input UX for fitness app.
Documents standard stack (React 18 + CSS custom properties), architecture
patterns (stepper components with 44px touch targets, validation), common
pitfalls (iOS auto-zoom, negative values), and verified code examples.

Key findings:
- Mobile touch target minimum 44px (iOS HIG, Material Design, WCAG 2.1)
- iOS auto-zoom prevented with font-size >= 16px on inputs
- Negative value validation in onChange handlers (not just HTML min attr)
- Custom stepper buttons recommended over native browser spinners
- Plain React state sufficient for Phase 1 (no form libraries needed)
- Weight input: 2.5kg steps; Reps input: 1 rep steps
- Includes reusable StepperInput component, WeightInput, RepsInput

All patterns verified against official docs (MDN, Apple HIG, Material Design,
WCAG 2.1) and industry best practices (NN/G, Chakra UI, Material Design).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 06:34:21 +01:00