chore(deps): update dependencies across the monorepo - #7
Merged
Conversation
Bump every external dependency in every package.json to its latest release, plus the toolchain pins that travel with them. Root: biome 2.4.13 -> 2.5.11, commitlint 20.x -> 21.x, @types/bun 1.3.13 -> 1.4.0, turbo 2.9.6 -> 2.10.12, catalog zod 4.3.6 -> 4.5.4, bun 1.3.13 -> 1.4.0 (packageManager and .bun-version). Examples: ink 5.2.1 -> 7.1.1 with react 18 -> 19 (ink 7 requires react >= 19.2), @clack/prompts 0.9.1 -> 1.7.0, vitest 4.1.5 -> 4.1.11. Follow-on fixes the bumps required: - biome 2.5 deprecates `linter.rules.recommended` in favour of `preset`, applied via `biome migrate`. - biome 2.5's nursery `useAwaitThenable` cannot see through the `void | Promise<void>` hook union behind an optional object property and false-positives on every await in the core testing helpers, suppressed at file level. - @clack/prompts 1.x passes `string | undefined` to `validate`. - ink 7 imports `react-devtools-core` from a lazily imported devtools module; Bun inlines that module without `splitting`, hoisting the optional import to the top level and breaking every run of the pomo example. TypeScript stays on 5.9.3. Both 6.0 and 7.0 drop the automatic `node_modules/@types` inclusion this repo relies on, so every package fails to find `@types/bun` and `@types/node`. Moving to either needs explicit `types` configuration and is left to its own change.
`bun install` only resolves specs that changed, so 28 transitive packages stayed pinned at their old lockfile entries even though their ranges allowed newer releases. `bun update` moves them, including vite 7.3.2 -> 8.2.2 under vitest, @types/node 25.5.0 -> 26.4.0 under bun-types, rollup 4.60.2 -> 4.63.1, es-toolkit 1.46.0 -> 1.52.0 and ws 8.20.0 -> 8.21.3 under ink. GitHub Actions were a major behind: actions/checkout v6 -> v7 and actions/cache v5 -> v6. oven-sh/setup-bun@v2 is already current.
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.
Bumps every external dependency in every
package.jsonto its latest release, refreshes stale transitives in the lockfile, and updates the toolchain and CI pins that travel with them.Direct dependencies
@biomejs/biome@commitlint/cli@commitlint/config-conventional@commitlint/format@commitlint/types@types/bunturbozod(catalog)bun(packageManager+.bun-version)ink(pomo)react(pomo)@types/react(pomo)@clack/prompts(scaffold)vitest(with-vitest)ink7 requiresreact >= 19.2, so react moves with it.bun outdated --filter '*'now reports nothing outstanding except the deliberately-held TypeScript.Transitive dependencies
bun installonly re-resolves specs that changed, so 28 transitives stayed pinned at their old lockfile entries despite their ranges allowing newer releases.bun updatemoves them — notablyvite7.3.2 → 8.2.2 under vitest,@types/node25.5.0 → 26.4.0 under bun-types,rollup4.60.2 → 4.63.1,es-toolkit1.46.0 → 1.52.0 andws8.20.0 → 8.21.3 under ink.CI actions
actions/checkoutv6 → v7 andactions/cachev5 → v6.oven-sh/setup-bun@v2is already current.Follow-on fixes the bumps required
linter.rules.recommendedin favour ofpreset. Applied viabiome migrate, then reindented to the repo's 2-space style.useAwaitThenablefalse positive. biome 2.5.x can't see through thevoid | Promise<void>hook union behind an optional object property, so it flags everyawaitinpackages/core/src/testing/run-command.tsas awaiting a non-Promise. Dropping those awaits would stop async hooks being sequenced, so the rule is suppressed at file level with an explanation. Regression landed between 2.5.0 and 2.5.5; direct function-typed params are unaffected, only object properties.@clack/prompts1.xvalidatesignature. Now receivesstring | undefined, so the scaffold example guards for empty input.react-devtools-corepeer. Withoutsplitting, Bun inlines that module and hoists the import to the top level, so every run of the pomo example fails withCannot find package 'react-devtools-core'. Enablingsplitting: truepreserves ink's lazy loading.TypeScript stays on 5.9.3
typescript@7.0.2is the currentlatest, and6.0.3is also out, but both drop the automaticnode_modules/@typesinclusion this repo relies on. Under either, every package fails withCannot find name 'Bun'/Cannot find name 'process'/Cannot find namespace 'NodeJS'; passing--types bunexplicitly makes it pass, confirming resolution works but auto-inclusion no longer does.Moving to TS 6 or 7 needs explicit
typesconfiguration across the workspace (and, for@parshjs/codegen, revalidating the compiler-API usage inextractor.ts). That's its own change, not a dependency bump.packages/codegen/pkg/package.jsonkeepstypescript: ^5.9.3for the same reason.Verification
bun check:types— 16/16 tasks passbun run test— 6/6 tasks pass (core, env, files, codegen, with-vitest)bun run build— 12/12 tasks passbun check:codestyle— cleanbun install --frozen-lockfile— clean, as CI runs itbun check:commit-message— accepts valid headers, rejects invalid onesNote
bun check:codestylewas verified with!**/.claudeinbiome.jsontemporarily scoped to!.claude. This branch was developed in a git worktree under.claude/worktrees/, and that glob matches the worktree's ancestor path, so biome ignores the entire tree and reports "No files were processed". Pre-existing behaviour, reproduces identically on biome 2.4.13, and does not affect CI, which checks out at the repo root.