Skip to content

chore(deps): update web + api deps, pin the jinja2 starlette 1.x now needs - #41

Merged
chiliec merged 1 commit into
masterfrom
chore/deps-update-2026-08
Aug 14, 2026
Merged

chiliec merged 1 commit into
masterfrom
chore/deps-update-2026-08

Conversation

@chiliec

@chiliec chiliec commented Aug 14, 2026

Copy link
Copy Markdown
Member

What

Routine dependency refresh across web/ and api/, plus one latent boot failure it uncovered.

Web — next + eslint-config-next 16.3.0, @sentry/nextjs 10.70.0, react/react-dom 19.2.8, shiki 4.4.3, tailwind + @tailwindcss/postcss 4.3.3, vitest 4.1.10, @types/* to current.

API — fastapi 0.141.1, pydantic 2.13.4, pymongo 4.17.0, python-dotenv 1.2.2, sentry-sdk 2.68.0.

The jinja2 pin is not cosmetic

fastapi 0.141 pulls starlette 1.6, which raises ImportError from starlette.templating at module scope when jinja2 is missing. fastapi_cache.coder imports that module unconditionally, and main.py imports fastapi_cache — so the API container would have failed to boot on deploy. jinja2 had only ever reached us transitively and the new graph dropped it. Now pinned explicitly, with a comment saying why, since nothing in our own code references it.

Caught by the test suite, not by the deploy.

pnpm-workspace.yaml

  • pnpm 11 doesn't honour name@version entries in minimumReleaseAgeExclude, which is why every @viz-cx/* publish has been tripping the supply-chain cooldown and needing a fresh pin. A glob covers them permanently — they're our own packages from the ts-core repo, so the cooldown was never the point.
  • @sentry/cli build script marked false. It only fetches the source-map upload binary, which requires SENTRY_AUTH_TOKEN; nothing in deploy.web.yml or the Dockerfile sets one. This also clears the ERR_PNPM_IGNORED_BUILDS failure that had been forcing a npm_config_verify_deps_before_run=false bypass on every pnpm build / pnpm test.

Held back

Three majors, each deserving its own pass rather than a drive-by before a deploy: eslint 10 (known to crash eslint-config-next), typescript 7, starlette 1.6 as a direct web-side dep.

Verification

  • web: 116 tests pass, tsc --noEmit clean, production build succeeds
  • api: 92 tests pass, ruff check clean (CI gate is ruff + pytest)

…needs

Web: next/eslint-config-next 16.3.0, @sentry/nextjs 10.70.0, react(-dom)
19.2.8, shiki 4.4.3, tailwind 4.3.3, vitest 4.1.10, @types/* current.
Held back three majors for their own pass: eslint 10 (crashes
eslint-config-next), typescript 7, starlette 1.6 on the web side.

API: fastapi 0.141.1, pydantic 2.13.4, pymongo 4.17.0, python-dotenv
1.2.2, sentry-sdk 2.68.0.

fastapi 0.141 pulls starlette 1.6, which raises from starlette.templating
at module scope when jinja2 is absent. fastapi-cache2 imports that module
unconditionally and main.py imports fastapi_cache, so the container would
have failed to boot. jinja2 had only ever been a transitive arrival; it is
now pinned explicitly.

pnpm-workspace.yaml: pnpm 11 does not honour name@version entries in
minimumReleaseAgeExclude, so our own @viz-cx/* releases tripped the
supply-chain cooldown on every publish. A glob covers them for good.
@sentry/cli's build script is marked off — it only fetches the source-map
upload binary, which needs SENTRY_AUTH_TOKEN, and nothing sets one.

Verified: web 116 tests + tsc + production build; api 92 tests + ruff.
@chiliec
chiliec merged commit 647ace1 into master Aug 14, 2026
1 check passed
@chiliec
chiliec deleted the chore/deps-update-2026-08 branch August 14, 2026 02:38
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