- 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.
- 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