chore(deps): update JS packages to latest and realign the smpy scaffolds - #324
Merged
Merged
Conversation
Bump every npm dependency to its latest compatible release across the
root workspace, host/client_app, packages/{i18n,ui} and all module
packages:
- @base-ui/react 1.7.0 -> 1.8.0
- @biomejs/biome 2.5.7 -> 2.5.12 (and biome.json $schema to match)
- @hookform/resolvers 5.7.1 -> 5.9.1
- @testing-library/jest-dom 7.0.0 -> 7.0.1
- @testing-library/react 16.3.2 -> 16.3.3
- @types/node 26.1.2 -> 26.5.0
- @types/react-dom 19.2.4 -> 19.2.7
- @vitejs/plugin-react 6.0.5 -> 6.1.1
- autoprefixer 10.5.4 -> 10.5.5
- i18next 26.3.6 -> 26.4.2
- input-otp 1.4.2 -> 1.5.0
- lucide-react 1.28.0 -> 1.43.0
- postcss 8.5.25 -> 8.5.28
- react-hook-form 7.84.0 -> 7.87.0
- react-i18next 17.0.11 -> 17.0.13
- react-resizable-panels 4.12.2 -> 4.12.4
- rollup-plugin-visualizer 7.0.1 -> 7.1.1
- sonner 2.0.7 -> 2.0.8
- vite 8.2.0 -> 8.2.2
- vitest 4.1.10 -> 5.0.0 (major; full suite passes unchanged)
- zod 4.4.3 -> 4.5.4
- docs: vue 3.5.40 -> 3.5.42
Also refresh the `smpy new` scaffold templates, which had drifted well
behind the framework they scaffold against: @types/node ^22 -> ^26.5.0,
@vitejs/plugin-react ^5 -> ^6.1.1, typescript ^5.7.0 -> ^7.0.2 and
vite ^6.0.0 -> ^8.2.2, so a freshly scaffolded app builds on the same
toolchain as the packages it consumes.
@inertiajs/react is deliberately held at 2.3.27. Inertia v3 needs client
changes we could make (array-form layout assignments in ~21 pages, the
`invalid` -> `httpException` event rename, `<title inertia>` ->
`data-inertia`), but the server side has no path: fastapi-inertia 1.1.0
is the latest release and still implements the v2 protocol, so moving
the client alone would mean forking the adapter. Tracked separately.
Verified: make lint, make doctor, 2973 Python tests, 463 JS tests, and
a production client build all pass.
Claude-Session: https://claude.ai/code/session_01CwgTb8hULSfHoW2DrFrQAW
The `smpy new` / `smpy create-module` scaffolds had drifted behind the framework they scaffold against, and two of them emitted projects that could not build at all. Version drift: - flat-mode npm pins in app_project.py: @vitejs/plugin-react ^5 -> ^6.1.1 (^5 does not support the vite ^8 pinned alongside it), typescript ^5.6.0 -> ^7.0.2, vite ^8.0.0 -> ^8.2.2 - standalone module template: typescript ^5.7.0 -> ^7.0.2 - scaffolded module CI/publish workflows: actions/checkout v4 -> v7, astral-sh/setup-uv v3 -> v9.0.0, actions/setup-node v4 -> v7, and node 22 -> 24, matching this repo's own pr.yml / release.yml - scaffolded Dockerfiles: nodesource setup_22.x -> setup_24.x, matching the repo's own Dockerfile Two scaffolds were broken before this change: - `smpy new --flat` produced an app that failed `vite build` with "Could not resolve '@tailwindcss/vite'". Flat mode emits no npm workspaces, so client_app/package.json is never installed and the root manifest is the only one npm reads — but it carried just the framework pins, omitting @tailwindcss/vite, tailwindcss and the @types packages client_app needs. The root dict now covers them. - `smpy create-module --standalone` produced a module that failed its own CI `npm run typecheck` with TS2688 for 'node' and 'vite/client'. The shared base.json declares types ["vite/client", "node"] but the scaffold depended on neither vite nor @types/node. Both added. Both bugs predate this change and are version-independent — they are missing packages, not incompatible ones. Regression tests cover each: the flat root manifest must be a superset of client_app's deps, and the standalone module must ship a provider for every entry in base.json's `types`. Verified by scaffolding all three shapes end to end: flat app installs + builds, workspace app passes `tsc && vite build` under TypeScript 7, and a standalone module typechecks clean. Plus make lint, make doctor, 2975 Python tests and 463 JS tests. Claude-Session: https://claude.ai/code/session_01CwgTb8hULSfHoW2DrFrQAW
- Regenerate docs/package-lock.json after the vue ^3.5.40 -> ^3.5.42 bump. docs/ carries its own lockfile and is not in the root npm workspaces array, so the workspace-wide npm install never touched it and `npm ci` in docs/ failed with "lock file's vue@3.5.40 does not satisfy vue@3.5.42". No workflow builds docs/ today, so repo CI stayed green and never caught it. Verified: npm ci --dry-run in docs/ fails before this change and succeeds after. - Fix the now-stale "Node 22" comment above the nodesource setup_24.x line in both scaffold Dockerfile templates. Claude-Session: https://claude.ai/code/session_01CwgTb8hULSfHoW2DrFrQAW
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Deploying simple-module-python with
|
| Latest commit: |
4e62fa2
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://ffd5fb99.simple-module-python.pages.dev |
| Branch Preview URL: | https://worktree-js-deps-update.simple-module-python.pages.dev |
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.
Summary
host/client_app,packages/{i18n,ui}and every module package — includingvitest4 → 5 (major),lucide-react1.28 → 1.43,zod4.4.3 → 4.5.4, andvite8.2.2. Alsobiome.json's$schemapin anddocs'vue.smpy new/smpy create-modulescaffolds with the toolchain they scaffold against: flat mode paired@vitejs/plugin-react ^5withvite ^8(incompatible), and the scaffolded CI/Dockerfiles trailed this repo's own pins by several majors (checkoutv4→v7,setup-uvv3→v9,setup-nodev4→v7, node 22→24).@inertiajs/reactis deliberately held at 2.3.27. The v3 client migration is tractable, butfastapi-inertia1.1.0 is the newest release and still implements the v2 protocol, so moving the client alone would mean forking the adapter.test_sm_new_flat_pins_inertia_react_to_v2already enforces the pin.Bugs fixed
smpy new --flatproduced an app that could not build.vite buildfailed withCould not resolve '@tailwindcss/vite'. Flat mode emits no npm workspaces, soclient_app/package.jsonis never installed and the root manifest is the only one npm reads — but it carried just the framework pins, omitting tailwind and the@typespackages.smpy create-module --standalonefailed its own CI on the first run.npm run typecheckhit TS2688 fornodeandvite/client: the sharedbase.jsondeclares thosetypes, but the scaffold depended on neithervitenor@types/node.docs/package-lock.jsonwas left stale after thevuebump.docs/carries its own lockfile outside the root workspaces array, so the workspace-wide install never touched it —npm cithere failed withlock file's vue@3.5.40 does not satisfy vue@3.5.42. No workflow buildsdocs/, so repo CI stayed green and never caught it.Verification
tsc && vite buildunder TypeScript 7, standalone module typechecks cleanQA Report
Test plan
npm ciindocs/and confirms it succeedssmpy new --flatand confirmsvite buildsucceeds