Merged
Conversation
Bumps the root-dependencies group with 1 update: [lint-staged](https://github.com/lint-staged/lint-staged). Updates `lint-staged` from 16.3.3 to 16.4.0 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](lint-staged/lint-staged@v16.3.3...v16.4.0) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 16.4.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: root-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the client-dependencies group in /client with 1 update: [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react). Updates `@vitejs/plugin-react` from 5.1.4 to 5.2.0 - [Release notes](https://github.com/vitejs/vite-plugin-react/releases) - [Changelog](https://github.com/vitejs/vite-plugin-react/blob/plugin-react@5.2.0/packages/plugin-react/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.2.0/packages/plugin-react) --- updated-dependencies: - dependency-name: "@vitejs/plugin-react" dependency-version: 5.2.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: client-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the server-dependencies group in /server with 2 updates: [pyjwt](https://github.com/jpadilla/pyjwt) and [ruff](https://github.com/astral-sh/ruff). Updates `pyjwt` from 2.11.0 to 2.12.1 - [Release notes](https://github.com/jpadilla/pyjwt/releases) - [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst) - [Commits](jpadilla/pyjwt@2.11.0...2.12.1) Updates `ruff` from 0.15.5 to 0.15.6 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.5...0.15.6) --- updated-dependencies: - dependency-name: pyjwt dependency-version: 2.12.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: server-dependencies - dependency-name: ruff dependency-version: 0.15.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: server-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
…root-dependencies-ea50e8be12 Bump lint-staged from 16.3.3 to 16.4.0 in the root-dependencies group
…ver-dependencies-cb6512cf48 Bump the server-dependencies group in /server with 2 updates
…/stage/client-dependencies-407d757ee9 Bump @vitejs/plugin-react from 5.1.4 to 5.2.0 in /client in the client-dependencies group
merge dev into stage
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR merges “stage” into “main”, bringing in the exercises CRUD UI/flow, updated muscle-group seed data, and various client UI/data-table improvements alongside dependency and infra tweaks.
Changes:
- Add an Exercises page with a data-table UI, create/edit/delete dialogs, and related UI utilities (tooltips, truncation, column view labels).
- Reseed muscle groups via Alembic migration, update server-side exercise serialization ordering, and adjust tests accordingly.
- Introduce shadcn UI override conventions (notably
Button) and update tooling/dependencies (ruff/pyjwt, lint-staged, vite plugin), plus localactsupport.
Reviewed changes
Copilot reviewed 60 out of 63 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| server/uv.lock | Bumps Python deps (pyjwt, ruff) in lockfile. |
| server/makefile | Adds an alembic downgrade -1 make target. |
| server/app/tests/services/muscle_group/test_get_muscle_groups_ordered_by_name.py | Updates assertions to match reseeded muscle-group data/order. |
| server/app/tests/services/muscle_group/test_get_muscle_groups_by_ids.py | Updates muscle-group ID expectations (now hard-coded). |
| server/app/tests/services/exercise/utilities.py | Adds clear_exercises helper for test isolation. |
| server/app/tests/services/exercise/test_to_exercise_public.py | Adds test ensuring muscle groups are sorted in API output. |
| server/app/tests/services/exercise/test_get_exercises_with_muscle_groups.py | Uses clear_exercises to avoid interference from existing rows. |
| server/app/tests/services/exercise/test_get_exercises.py | Uses clear_exercises to avoid interference from existing rows. |
| server/app/tests/services/exercise/test_delete_exercise.py | Verifies cascade deletion of ExerciseMuscleGroup rows. |
| server/app/tests/api/exercises/test_update_exercise.py | Adjusts muscle-group name used in update test. |
| server/app/services/exercise.py | Sorts muscle groups by name in _to_exercise_public. |
| server/app/models/database/exercise_muscle_group.py | Adds exercise relationship/back-population. |
| server/app/models/database/exercise.py | Configures relationship cascade/back_populates/passive deletes. |
| server/app/migrations/versions/2026_03_16_0438-3fd5430b243e_reseed_muscle_groups.py | New migration reseeding muscle groups and remapping exercise links. |
| package.json | Bumps root dev dependency lint-staged. |
| package-lock.json | Updates root lockfile for lint-staged and transitive deps. |
| config/infra/docker-compose.yml | Makes some env vars optional depending on backend; adds comments. |
| config/infra/docker-compose.override.yml | Removes local override env settings (expects .env/compose env). |
| client/src/pages/ResetPassword.tsx | Switches to override Button import. |
| client/src/pages/RequestAccess.tsx | Switches to override Button import. |
| client/src/pages/Register.tsx | Switches to override Button import. |
| client/src/pages/Login.tsx | Switches to override Button import. |
| client/src/pages/ForgotPassword.tsx | Switches to override Button import. |
| client/src/pages/Exercises.tsx | New Exercises page fetching exercises + muscle groups. |
| client/src/pages/Admin.tsx | Renames loading state vars to isLoading*. |
| client/src/models/session.ts | Renames loading to isLoading in session context type. |
| client/src/models/data-table.ts | Makes row-action label optional. |
| client/src/main.tsx | Wraps app with TooltipProvider. |
| client/src/lib/text.ts | Adds identifier formatting helpers (capitalizeWords, formatIdentifier). |
| client/src/lib/styles.ts | Removes unused background/hover style constants. |
| client/src/layout/AppLayout.tsx | Adds Exercises nav link; renames Feedback component; switches to override Button. |
| client/src/components/ui/tooltip.tsx | Adds tooltip component wrapper. |
| client/src/components/ui/overrides/button.tsx | Adds app-level Button override supporting success + destructive tweaks. |
| client/src/components/ui/dropdown-menu.tsx | Updates destructive SVG styling selector. |
| client/src/components/ui/button.tsx | Tweaks button variant class ordering and sizing classes. |
| client/src/components/ui/badge.tsx | Tweaks badge variant class ordering. |
| client/src/components/exercises/ExercisesTable.tsx | New exercises data-table with filters and row actions. |
| client/src/components/exercises/ExerciseFormDialog.tsx | New create/edit dialog with muscle-group selection. |
| client/src/components/data-table/README.md | Documents meta.viewLabel and meta.filterOnly. |
| client/src/components/data-table/DataTableViewOptions.tsx | Adds column label formatting and filterOnly support. |
| client/src/components/data-table/DataTableTruncatedCell.tsx | New truncated-cell component with tooltip on overflow. |
| client/src/components/data-table/DataTableToolbar.tsx | Improves search handling; uses override Button; icon spacing tweak. |
| client/src/components/data-table/DataTableRowActions.tsx | Uses override Button; icon spacing tweak. |
| client/src/components/data-table/DataTablePagination.tsx | Uses override Button. |
| client/src/components/data-table/DataTableInlineRowActions.tsx | Uses override Button. |
| client/src/components/data-table/DataTableFacetedFilter.tsx | Uses override Button. |
| client/src/components/data-table/DataTableColumnHeader.tsx | Uses override Button. |
| client/src/components/data-table/DataTable.tsx | Adds initial column visibility and edge padding options. |
| client/src/components/UsersTable.tsx | Removes select-column usage. |
| client/src/components/ModeToggle.tsx | Uses override Button. |
| client/src/components/Loading.tsx | Uses override Button. |
| client/src/components/FeedbackFormDialog.tsx | Renames component; improves labels/ids; uses success button variant. |
| client/src/components/AccessRequestsTable.tsx | Removes select-column; refactors confirm dialog; uses override Button variants. |
| client/src/auth/SessionProvider.tsx | Renames session loading state to isLoading. |
| client/src/auth/RequireGuest.tsx | Renames session loading usage to isLoading. |
| client/src/auth/RequireAuth.tsx | Renames session loading usage to isLoading. |
| client/src/AppRoutes.tsx | Adds /exercises route. |
| client/package.json | Updates update-components script; bumps @vitejs/plugin-react. |
| client/package-lock.json | Updates lockfile for plugin bump and transitive deps. |
| client/eslint.config.js | Enforces using @/components/ui/overrides/button over generated button. |
| README.md | Adds project title, act usage notes, DB/shadcn conventions. |
| PROJECT_OVERVIEW.md | Notes current feature status (exercise flow implemented). |
| .actrc | Adds config for local act workflow runs. |
Files not reviewed (1)
- client/package-lock.json: Language not supported
Comments suppressed due to low confidence (2)
server/app/tests/services/muscle_group/test_get_muscle_groups_by_ids.py:19
- This test also assumes muscle group ID
1exists. After reseeding or if the PK sequence differs,1may not exist and the test can fail for reasons unrelated toget_muscle_groups_by_ids. Consider deriving an existing ID via a name lookup or inserting a known test record first.
client/src/models/data-table.ts:46 labelwas made optional, but bothDataTableRowActionsandDataTableInlineRowActionsrenderitem.labelas visible text. Allowinglabelto be omitted makes it easy to introduce icon-only actions with no accessible name and blank menu/button content. Either keeplabelrequired, or update the rendering code to require anaria-label/fallback label whenlabelis absent.
server/app/migrations/versions/2026_03_16_0438-3fd5430b243e_reseed_muscle_groups.py
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.