deps: consolidate the open dependency PRs into one toolchain upgrade - #489
Merged
Merged
Conversation
Bumps alpine from 3.20 to 3.24. --- updated-dependencies: - dependency-name: alpine dependency-version: '3.24' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps node from 22-alpine to 26-alpine. --- updated-dependencies: - dependency-name: node dependency-version: 26-alpine dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps nginxinc/nginx-unprivileged from 1.27-alpine to 1.31-alpine. --- updated-dependencies: - dependency-name: nginxinc/nginx-unprivileged dependency-version: 1.31-alpine dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the actions group with 14 updates in the / directory: | Package | From | To | | --- | --- | --- | | [actions/checkout](https://github.com/actions/checkout) | `4` | `7` | | [actions/setup-node](https://github.com/actions/setup-node) | `4` | `7` | | [actions/setup-java](https://github.com/actions/setup-java) | `4` | `6` | | [android-actions/setup-android](https://github.com/android-actions/setup-android) | `3` | `4` | | [actions/cache](https://github.com/actions/cache) | `4` | `6` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4` | `7` | | [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2` | `3` | | [actions/setup-go](https://github.com/actions/setup-go) | `5` | `7` | | [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3` | `4` | | [docker/build-push-action](https://github.com/docker/build-push-action) | `5` | `7` | | [docker/login-action](https://github.com/docker/login-action) | `3` | `4` | | [docker/metadata-action](https://github.com/docker/metadata-action) | `5` | `6` | | [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` | | [actions/dependency-review-action](https://github.com/actions/dependency-review-action) | `4` | `5` | Updates `actions/checkout` from 4 to 7 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v7) Updates `actions/setup-node` from 4 to 7 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@v4...v7) Updates `actions/setup-java` from 4 to 6 - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@v4...v6) Updates `android-actions/setup-android` from 3 to 4 - [Release notes](https://github.com/android-actions/setup-android/releases) - [Commits](android-actions/setup-android@v3...v4) Updates `actions/cache` from 4 to 6 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v4...v6) Updates `actions/upload-artifact` from 4 to 7 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4...v7) Updates `softprops/action-gh-release` from 2 to 3 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](softprops/action-gh-release@v2...v3) Updates `actions/setup-go` from 5 to 7 - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](actions/setup-go@v5...v7) Updates `docker/setup-buildx-action` from 3 to 4 - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](docker/setup-buildx-action@v3...v4) Updates `docker/build-push-action` from 5 to 7 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](docker/build-push-action@v5...v7) Updates `docker/login-action` from 3 to 4 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](docker/login-action@v3...v4) Updates `docker/metadata-action` from 5 to 6 - [Release notes](https://github.com/docker/metadata-action/releases) - [Commits](docker/metadata-action@v5...v6) Updates `github/codeql-action` from 3 to 4 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@v3...v4) Updates `actions/dependency-review-action` from 4 to 5 - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](actions/dependency-review-action@v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/dependency-review-action dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/setup-go dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/setup-java dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/setup-node dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: android-actions/setup-android dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/build-push-action dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/login-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/metadata-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/setup-buildx-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: github/codeql-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: softprops/action-gh-release dependency-version: '3' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] <support@github.com>
…3 updates Bumps the go-minor-patch group with 3 updates in the /backend directory: [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis), [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) and [github.com/stretchr/testify](https://github.com/stretchr/testify). Updates `github.com/alicebob/miniredis/v2` from 2.38.0 to 2.39.0 - [Release notes](https://github.com/alicebob/miniredis/releases) - [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md) - [Commits](alicebob/miniredis@v2.38.0...v2.39.0) Updates `github.com/go-chi/chi/v5` from 5.3.1 to 5.3.2 - [Release notes](https://github.com/go-chi/chi/releases) - [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md) - [Commits](go-chi/chi@v5.3.1...v5.3.2) Updates `github.com/stretchr/testify` from 1.11.1 to 1.12.1 - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](stretchr/testify@v1.11.1...v1.12.1) --- updated-dependencies: - dependency-name: github.com/alicebob/miniredis/v2 dependency-version: 2.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/go-chi/chi/v5 dependency-version: 5.3.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-minor-patch - dependency-name: github.com/stretchr/testify dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the golang-x group in /backend with 1 update: [golang.org/x/crypto](https://github.com/golang/crypto). Updates `golang.org/x/crypto` from 0.55.0 to 0.56.0 - [Commits](golang/crypto@v0.55.0...v0.56.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.56.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-x ... Signed-off-by: dependabot[bot] <support@github.com>
…lang-x-6e77fb2019' into claude/pr-consolidation-fixes-jfmb7o # Conflicts: # backend/go.mod
…-3.24' into claude/pr-consolidation-fixes-jfmb7o
…inc/nginx-unprivileged-1.31-alpine' into claude/pr-consolidation-fixes-jfmb7o
…26-alpine' into claude/pr-consolidation-fixes-jfmb7o
…s-ad3d4cf4ac' into claude/pr-consolidation-fixes-jfmb7o
The golang-x bump raised the go directive to 1.26.0, which the 1.25-alpine builder cannot compile; the frontend build image moved to node:26-alpine while every workflow still installed Node 20 (EOL since April 2026), so the tree CI tested was not the tree the image shipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
…nd testing-library Consolidates dependabot PRs #448 and #450 plus the compatible half of #472 and #488. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Consolidates dependabot PR #447. React 19 also requires react-leaflet 5 (react-leaflet 4 pins react ^18), and its useRef typings now return RefObject<T | null>, so the two hooks that accept a ref widen their parameter types and EventScorecard uses ReactElement rather than the global JSX namespace React 19 removed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Consolidates the compatible half of dependabot #488 (Tailwind is held back, see the PR description) and #472. Vitest 5 requires Vite 6 or newer, so the two land together. jsdom 30 makes window.location a live Location setter that coerces its argument to a URL string, so the two suites that swapped it with Object.assign now redefine the property instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Consolidates dependabot PR #452. lucide-react 1.x drops every brand icon, so the Facebook share button gets an inline mark alongside the X one already drawn there. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Consolidates dependabot PRs #446 and #451. ESLint 10 needs eslint-plugin-react-hooks 7 (5 and 6 both cap at ESLint 9), which folds the React Compiler diagnostics into its recommended set; those are switched off with a note, so the gate enforces what it enforced before rather than demanding ~70 behavioural refactors inside a dependency bump. react-refresh 0.5 counts every export in the route manifest, which is exempted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Dependabot #446 proposed TypeScript 7; no typescript-eslint release supports it yet (8.70 still pins typescript <6.1.0), so taking 7 would mean an unsupported parser or --legacy-peer-deps. TypeScript 6 is the highest version inside that range. It no longer auto-includes @types/node, so the suites that read fixtures off disk need it declared: an explicit devDependency and a types entry, rather than the transitive copy they were resolving before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Consolidates dependabot PRs #442 and #444. ESLint 10 removed .eslintrc support, so the suite moves to a flat config; TypeScript 6 rather than the proposed 7 for the same typescript-eslint reason as the frontend, and its deprecation of baseUrl is dropped (paths resolve from the tsconfig directory without it). The three findings the newer rules surfaced are fixed rather than silenced. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
jnnngs
marked this pull request as ready for review
September 8, 2026 11:21
This was referenced Sep 8, 2026
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.
What and why
Sixteen Dependabot PRs were open against
main, several of which could not landon their own: Vitest 5 needs Vite 6+, ESLint 10 needs a react-hooks plugin that
does not exist below v7, and the Go and Node bumps left the Dockerfiles building
against toolchains older than the manifests now require. This branch takes all
sixteen together, resolves the interlocks, and fixes what the newer versions
broke, so there is one thing to review and one lockfile to regenerate.
Landed here — #486, #487 (Go), #485 (Actions), #438, #441, #471 (base images),
#442, #444 (e2e), #446, #447, #448, #450, #451, #452, #472 and the compatible
half of #488. They should auto-close when this merges.
Held back deliberately, both from #488 and #446:
shadow-sm,rounded-sm,ring,outline-none— and there are 191 uses ofthose across the app, so the upgrade is a silent visual change everywhere
rather than a version bump. It needs its own PR with someone actually looking
at the pages. Tailwind moves to 3.4.19 here instead.
typescript <6.1.0), so taking it means an unsupported parser or--legacy-peer-deps. TypeScript 6 is the highest version inside that range andis what landed, in both
frontend/ande2e/.Fixes the upgrades themselves required:
backend/Dockerfilestill built ongolang:1.25-alpine,which cannot compile a
go 1.26.0directive, and every workflow installedNode 20 (EOL since April 2026) while the frontend image moved to
node:26-alpine— so CI was testing a tree the image did not build. Both arealigned, and the Go directive is pinned to
1.26.8rather than1.26.0,following the note in
backend/go.modabout the directive being the stdlibfloor.
^18). ItsuseReftypings now returnRefObject<T | null>, so the two hooks that take aref widened their parameters, and
EventScorecardusesReactElementin placeof the global
JSXnamespace React 19 removed.window.locationa liveLocationsetter that coerces itsargument to a URL string, so the two suites that swapped it with
Object.assignnow redefine the property. That was 14 failing tests.Compiler diagnostics into its recommended set — ~70 findings, each a
behavioural refactor. Those six rules are switched off with a note naming them
as follow-up work;
rules-of-hooksandexhaustive-depsstay on, so the gateenforces exactly what it enforced before (verified against a probe file).
react-refresh 0.5 flags all 85 exports of the route manifest, which is exempted
per-file.
inline mark next to the X one already drawn there.
@types/node, which the suites readingfixtures off disk relied on transitively; it is now an explicit devDependency
with a
typesentry..eslintrcsupport entirely, so that suite moves toa flat config, and
baseUrlis dropped (deprecated in TS 6;pathsresolvesfrom the tsconfig directory without it). The three findings the newer rules
surfaced are fixed, not silenced.
npm auditonfrontend/goes from 8 findings to 2 — the runtime half(
--omit=dev, the hard gate) is clean, and what remains is the@capacitor/cli→
taradvisory already written up inSECURITY.md.e2e/is clean.How you tested it
Everything below ran from a wiped
node_modulesand a regenerated lockfile(
npm ci), so the tree is the one a container build resolves:backend:make migrate-lint,make lint,make test(-race),make build— all pass on Go 1.26.8.
govulncheck ./...reports no vulnerabilities.frontend:npm run check,npm run lint,npm test(59 files, 364 tests,all passing),
npm run build.e2e:npm run typecheck,npm run lint./demos/navigationdenylist and still precaches no
.webm, since vite-plugin-pwa went 0.20 → 1.3.golang:1.26-alpine,alpine:3.24,node:26-alpine,nginx-unprivileged:1.31-alpine). The imagebuilds themselves are CI's docker job — there is no daemon in this environment.
rules-of-hooksandexhaustive-depsstill fire under the newESLint config by linting a deliberately broken component.
Not run: the Playwright suite (needs a live stack) and any on-device mobile
build.
Checklist
cd backend && make lint && make testpassescd frontend && npm run check && npm run lint && npm test && npm run buildpassesmake devfirst) — DB-backed tests skip silently withoutDB_HOSTIf it applies
new Vite and a new React, and neither was run on a device or emulator here.
Worth a real install before this ships.
Notes for reviewers
are a judgement call rather than a fact. Both are one-line reverts to take
anyway if you would rather.
react-hooks/*compiler rules are the other judgement call.The findings are real — 47
set-state-in-effectand 19refs— and worthworking through, but not inside a dependency bump.
frontend/eslint.config.jslists them so the follow-up has a starting point.
docs,CLAUDE.md,README.mdandCHANGELOG.mdare updated for the newversions.
if you would rather sit on the current LTS, changing it is one value in the
Dockerfile and five in the workflows.
🤖 Generated with Claude Code
https://claude.ai/code/session_016Pji5g7ypeYALnrrcauLYK
Generated by Claude Code