Enhance exercise filtering and tracking features#18
Conversation
…r enhanced exercise filtering
…erciseFilters interface for improved type safety
…ion and filtering
…rcise filtering functionality
…ces for enhanced exercise tracking
…equipment filter verification
…e in Pilates and Yoga files for consistency
…or accurate element targeting
…, and equipment for improved styling consistency
…ts for improved accuracy
…les across multiple test files
…seFilter component
There was a problem hiding this comment.
Pull Request Overview
This PR enhances exercise filtering and tracking by updating exercise data, adding a dedicated ExerciseFilter component, and refining workout generation and dependency configurations for better performance.
- Updated muscle and joint enum naming in bodyweight exercise data
- Removed legacy equipment data and tests and replaced them with new equipment modules
- Added migration support for completed exercises and enhanced e2e tests for filtering features
Reviewed Changes
Copilot reviewed 32 out of 37 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| app/src/lib/exercise_data/bodyweight.ts | Updated import paths and switched to uppercase enum keys for muscles and joints |
| app/src/lib/equipment*.ts | Replaced legacy equipment modules with new, type-safe implementations and tests |
| app/src/lib/database.test.ts | Added migration tests for converting V1 completed exercises to V2 |
| app/src/lib/components/ExerciseFilter.svelte.test.ts | Introduced comprehensive tests for the new ExerciseFilter component |
| playwright.config.ts & e2e tests | Updated configuration and e2e tests to align with new filtering and UI changes |
| .github/copilot-instructions.md | Updated instructions to reflect Svelte 5 runes syntax usage |
Files not reviewed (5)
- app/package.json: Language not supported
- app/pnpm-lock.yaml: Language not supported
- app/src/app.css: Language not supported
- app/src/lib/components/ExerciseFilter.svelte: Language not supported
- app/src/lib/components/WorkoutItem.svelte: Language not supported
Comments suppressed due to low confidence (3)
app/src/lib/components/ExerciseFilter.svelte.test.ts:105
- Consider expanding tests for equipment filters to cover all available equipment options rather than only a subset, ensuring comprehensive UI coverage.
const filterInput = container.querySelector(`#equipment-filter-${Equipment.DUMBBELLS}`);
.github/copilot-instructions.md:7
- Ensure all documentation and example code snippets are updated to consistently use Svelte 5 runes syntax to avoid confusion for new contributors.
This project uses Svelte 5. Use the Svelte 5 runes syntax instead of the older `$:` syntax.
app/src/lib/database.test.ts:205
- [nitpick] Avoid using type casting in migration tests; consider refining the migration function's type definitions so that tests can pass a properly typed V2 exercise directly.
const result = migrateExerciseV1ToV2(exerciseV2 as unknown as CompletedExerciseV1);
|
Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here. PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
|
Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here. PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||||
Closes #17
User description
Introduce new filtering capabilities for exercises, including a dedicated ExerciseFilter component and improved type safety with the ExerciseFilters interface. Update workout generation logic and enhance styling consistency across components. Additionally, update dependencies and streamline configurations for better performance.
PR Type
Enhancement, Tests, Documentation, Configuration changes, Dependencies, Formatting
Description
Introduced new filtering capabilities for exercises with the
ExerciseFiltercomponent and enhanced type safety using theExerciseFiltersinterface.Standardized enums for muscles, joints, and equipment across exercise data files for consistency.
Added extensive unit and end-to-end tests for filtering functionality, workout generation, and exercise library.
Created new modules for
Muscles,Equipment, andJointswith enums, registries, and helper functions.Updated dependencies, including
@playwright/testanddaisyui, and locked versions for consistency.Integrated
ExerciseFilterinto workout generation and exercise library pages, improving UI and dynamic filtering.Updated Playwright configuration for improved testing performance and reliability.
Enhanced badge styling consistency across components.
Updated documentation to reflect changes and removed outdated instructions.
Changes walkthrough 📝
15 files
yoga.ts
Standardized muscle and joint enums in yoga exercise data.app/src/lib/exercise_data/yoga.ts
MusclesandJoints.dumbbells.ts
Standardized muscle and equipment enums in dumbbell exercise data.app/src/lib/exercise_data/dumbbells.ts
MusclesandEquipment.bodyweight.ts
Standardized muscle and joint enums in bodyweight exercise data.app/src/lib/exercise_data/bodyweight.ts
MusclesandJoints.pilates.ts
Standardized muscle enums in Pilates exercise data.app/src/lib/exercise_data/pilates.ts
Muscles.machines.ts
Standardized muscle and equipment enums in machine exercise data.app/src/lib/exercise_data/machines.ts
MusclesandEquipment.equipment.ts
Added equipment enum and registry with helper functions.app/src/lib/equipment.ts
Equipmentenum andequipmentRegistryfor managing equipmentmetadata.
kettlebell.ts
Standardized muscle and equipment enums in kettlebell exercise data.app/src/lib/exercise_data/kettlebell.ts
MusclesandEquipment.muscles.ts
Added muscles enum and registry with helper functions.app/src/lib/muscles.ts
Musclesenum andmusclesRegistryfor managing musclemetadata.
types.ts
Updated type definitions and added ExerciseFilters interface.app/src/lib/types.ts
MusclesandEquipmentmodules.ExerciseFiltersinterface for filtering exercises.calisthenics.ts
Update muscle references in calisthenics exercises.app/src/lib/exercise_data/calisthenics.ts
Musclesenum references to use uppercase constants.joints.ts
Add joints module with enums and utilities.app/src/lib/joints.ts
Jointsenum andJointDetailsinterface.jointsRegistryand helper functions for joint details.jointsListfor convenience.exercises.ts
Add filtering and random selection for exercises.app/src/lib/exercises.ts
filterExercisesfunction to filter exercises by muscles andequipment.
getFilteredRandomExercisesfor generating random filteredworkouts.
+page.svelte
Add exercise filtering to workout generation page.app/src/routes/workout/+page.svelte
ExerciseFiltercomponent for workout generation.criteria.
$statesyntax.ExerciseFilter.svelte
Add ExerciseFilter component for dynamic filtering.app/src/lib/components/ExerciseFilter.svelte
ExerciseFiltercomponent for filtering exercises by musclesand equipment.
+page.svelte
Add filtering functionality to exercise library page.app/src/routes/exercises/+page.svelte
ExerciseFiltercomponent for filtering exercises.9 files
ExerciseFilter.svelte.test.ts
Added unit tests for ExerciseFilter component functionality.app/src/lib/components/ExerciseFilter.svelte.test.ts
ExerciseFiltercomponent.application.
workout-generator.test.ts
Added E2E tests for workout generator with filters.app/e2e/workout-generator.test.ts
equipment filters.
exercises.test.ts
Added unit tests for exercise filtering and randomization.app/src/lib/exercises.test.ts
exercises.test.ts
Added E2E tests for exercise library filtering.app/e2e/exercises.test.ts
equipment.test.ts
Add unit tests for equipment module functionality.app/src/lib/equipment.test.ts
equipmentmodule.getEquipmentDetails,getEquipmentDetailsForTypes, andequipmentListfunctions.Equipmentenum contains expected values.types.test.ts
Update and expand tests for types module.app/src/lib/types.test.ts
MusclesandEquipment.metricsproperty inExerciseDetails.WorkoutandWorkoutItemtypes.muscles.test.ts
Add unit tests for muscles module functionality.app/src/lib/muscles.test.ts
musclesmodule.getMuscleDetails,getMuscleDetailsForTypes, andmusclesListfunctions.
Musclesenum contains expected values.database.test.ts
Add migration tests for database module.app/src/lib/database.test.ts
migrateExerciseV1ToV2function.correctly.
joints.test.ts
Add unit tests for joints module functionality.app/src/lib/joints.test.ts
jointsmodule.getJointDetails,getJointDetailsForTypes, andjointsListfunctions.
Jointsenum contains expected values.2 files
app.css
Integrated daisyui plugin into Tailwind CSS configuration.app/src/app.css
daisyuiplugin to Tailwind CSS configuration.playwright.config.ts
Update Playwright configuration for server and timeout.app/playwright.config.ts
pnpmcommands.2 files
pnpm-lock.yaml
Update dependencies and lock file.app/pnpm-lock.yaml
@playwright/testand addeddaisyui.package.json
Update package.json with new dependencies.app/package.json
@playwright/testto version 1.51.0.daisyuidependency for enhanced UI components.1 files
WorkoutItem.svelte
Update badge styling in WorkoutItem component.app/src/lib/components/WorkoutItem.svelte
1 files
copilot-instructions.md
Update Copilot instructions for Svelte 5..github/copilot-instructions.md
7 files