Skip to content

chore(ci): SHA-pin third-party actions, group the vite toolchain - #56

Merged
jfrench9 merged 1 commit into
mainfrom
chore/ci-dependency-posture
Sep 1, 2026
Merged

jfrench9 merged 1 commit into
mainfrom
chore/ci-dependency-posture

Conversation

@jfrench9

@jfrench9 jfrench9 commented Sep 1, 2026

Copy link
Copy Markdown
Member

Brings this repo in line with the CI dependency posture the three frontend apps and the two client repos landed today. This repo was already in the better shape of the group — its dependabot.yml covers npm — so this is the narrower half of the change.

Changes

Two third-party actions pinned by commit SHAanthropics/claude-code-action and softprops/action-gh-release, using the SHAs already running across the frontends. GitHub-owned actions stay on tags, matching the apps' convention rather than the backend's pin-everything approach.

New vite-toolchain group, listed first so it wins over npm-development. This is the substantive part. This repo carries vitest, @vitest/coverage-v8 and @vitejs/plugin-react, which are peer-locked to each other and to vite — and it's still on @vitejs/plugin-react ^4 while all three apps have moved to ^6 + vite ^8. When that move happens here it has to arrive as one PR: plugin-react 6 requires vite ^8, and the two offered separately deadlock each other. The apps spent a PR untangling exactly that after it arrived disguised as "bump a dev plugin from 4.7.0 to 6.1.1".

New @types/node major ignore, anchored to engines >=22.0.0. As the library all three frontends consume, this has to keep compiling for the oldest Node it claims to support — newer types would let code referencing Node 24+ APIs typecheck clean here and still break a consumer on Node 22.

Removed a stale comment. The github-actions section cited "(setup-uv v9)" as its example of an unwanted major, but no workflow in this repo uses setup-uv — the example described nothing real.

Not changed

@vitejs/plugin-react stays on ^4 and vite stays transitive. Moving this repo to vite 8 is a dependency decision, not a posture one; the group is what makes that decision takeable as a single reviewable PR when you want it.

Verification

Changes are YAML-only. prettier --check passes on the edited files, which matters here because CI runs npm run format:check over .yml.

Two changes, both bringing this repo in line with the posture the three
frontend apps and the two client repos landed today.

Pins anthropics/claude-code-action and softprops/action-gh-release by commit
SHA, using the SHAs already running across the frontends. GitHub-owned actions
(actions/checkout, actions/setup-node) stay on tags, matching the apps'
convention rather than the backend's pin-everything approach.

Adds a vite-toolchain group, listed first so it wins over npm-development.
This repo carries vitest, @vitest/coverage-v8 and @vitejs/plugin-react, which
are peer-locked to each other and to vite — and it is still on plugin-react ^4
while the apps have moved to ^6 + vite ^8. When that move happens here it has
to arrive as one PR: plugin-react 6 requires vite ^8, and the two offered
separately deadlock each other. The apps spent a PR untangling exactly that.

Also adds an @types/node major ignore, anchored to engines >=22.0.0. As a
library consumed by all three frontends this has to keep compiling for the
oldest Node it claims to support; newer types would let code referencing
Node 24+ APIs typecheck clean here and still break a consumer on Node 22.

Drops the stale "(setup-uv v9)" example from the github-actions comment — no
workflow in this repo uses setup-uv, so the example described nothing real.
@jfrench9
jfrench9 merged commit 58658b6 into main Sep 1, 2026
6 checks passed
@jfrench9
jfrench9 deleted the chore/ci-dependency-posture branch September 1, 2026 18:12
jfrench9 added a commit that referenced this pull request Sep 1, 2026
…ependency

Completes the vite-toolchain alignment: all three apps and both client repos
moved to @vitejs/plugin-react ^6 with vite ^8 today, and core was the last
repo still on plugin-react ^4.

Dependabot offered this as #54 (plugin-react 4.7.0 -> 6.1.1) hours before the
vite-toolchain group landed in #56, so it arrived ungrouped — a one-line
package.json change whose real content was a bundler swap, since plugin-react 6
peers vite ^8. #54 was closed in favour of doing it deliberately.

vite is added as a direct devDependency rather than left transitive. That
matters more here than in the apps: package-lock.json is gitignored in this
repo, so without a direct entry the vite version would be recorded nowhere at
all — no lockfile, no package.json line, nothing to review or pin. Now a future
bundler major arrives titled what it is.

One mismatch worth knowing about, deliberately not "fixed": core declares
engines >=22.0.0, while plugin-react 6 and vite 8 want ^20.19.0 || >=22.12.0.
That gap only affects contributors on Node 22.0-22.11, who will see an
EBADENGINE warning (npm does not enforce engines unless engine-strict is set).
It does not affect consumers, because devDependencies are not installed by
them — so raising the published engines range to satisfy a dev tool would
narrow a consumer-facing promise for no consumer-facing reason. CI is
unaffected: node-version '22' resolves to the latest 22.x, well past 22.12.

Verified with the full gate on vite 8: format:check, lint, typecheck, test
(43 files, 492 passed / 16 skipped) and build all pass.
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.

1 participant