Skip to content

Conversation

@Netsbump
Copy link
Owner

…structure

BREAKING CHANGE: Complete refactoring of workout data model

  • Replace WorkoutElement sets/reps/rest with flexible block-based configuration
  • Remove Exercise.description, Complex.description, ExerciseComplex.reps
  • Remove Workout.title (workouts are now templates, dates in TrainingSession)
  • Add WorkoutElement.commentary and tempo for coach-specific instructions
  • Update workout elements to use exerciseId/complexId discriminated unions
  • Implement BlockConfig with intensity management (percentage/RPE) per block
  • Support variable reps per exercise within complex movements
  • Update all schemas, use cases, mappers, seeders and integration tests
  • Add 26 realistic exercises and 7 complex movements to seeders
  • Create example workouts based on real weightlifting programming

This provides greater flexibility for complex workout programming with
multiple set/rep schemes and intensity variations within a single element.

…structure

  BREAKING CHANGE: Complete refactoring of workout data model

  - Replace WorkoutElement sets/reps/rest with flexible block-based configuration
  - Remove Exercise.description, Complex.description, ExerciseComplex.reps
  - Remove Workout.title (workouts are now templates, dates in TrainingSession)
  - Add WorkoutElement.commentary and tempo for coach-specific instructions
  - Update workout elements to use exerciseId/complexId discriminated unions
  - Implement BlockConfig with intensity management (percentage/RPE) per block
  - Support variable reps per exercise within complex movements
  - Update all schemas, use cases, mappers, seeders and integration tests
  - Add 26 realistic exercises and 7 complex movements to seeders
  - Create example workouts based on real weightlifting programming

  This provides greater flexibility for complex workout programming with
  multiple set/rep schemes and intensity variations within a single element.
  - Remove deprecated fields from entities (description from Complex/Exercise, title from Workout, reps from ExerciseComplex)
  - Migrate WorkoutElement from flat structure (sets/reps/rest) to block-based programming with JSONB blocks
  - Update all display components to calculate totals from blocks (workout-card, workout-detail, workout-editor)
  - Transform workout update payload to use exerciseId/complexId instead of full exercise/complex objects
  - Migrate mobile components (TrainingScreen, TrainingDetailScreen) to use blocks
  - Update planning components to display block-based workouts
  - Remove unused form fields (description inputs, reps fields)
- Fix linting errors (useLiteralKeys, noUselessElse, noExplicitAny, noArrayIndexKey)
- Add missing intensity property in workout seeder blocks
- Complete workout seeder with all missing workouts from documentation:
- Update frontend components to use block-based workout model
- Replace array index keys with unique identifiers (block.order, exerciseId)
- Remove unnecessary else clauses and explicit any types
- Update workout schema and related components

All workouts from workout-programming-model.md are now properly seeded.
- Refactor workout element display to single-column full-width layout with vertical scrolling
- Add conditional display for optional fields (commentary, tempo, rest) with add/remove buttons
- Apply consistent styling: rounded-full buttons, distinct background colors for exercise/complex cards
- Set white background for all input and select fields
- Display full exercise names in complex titles instead of abbreviations
- Replace "+" symbols with Lucide Plus icons between reps in complex blocks
- Add i18n support for all workout element labels, buttons, and messages
- Update tab styling with colored borders and backgrounds when selected
- Fix integration test by adding required intensity field in block configuration
@Netsbump Netsbump merged commit abd5d49 into develop Nov 22, 2025
3 checks passed
@Netsbump Netsbump deleted the feat/workout-element-model branch November 22, 2025 17:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants