Repository navigation
chore: align the toolchain on pnpm 12, TypeScript 7, Biome 2.6 and Vitest 5 - #26
Conversation
Pin pnpm 12.16.1 and gitleaks 8.30.1 in mise.toml with a min_version, lock Node 24.22.2, and declare pnpm through devEngines instead of packageManager. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
Bump the dev toolchain: TypeScript 7.0.2, Biome 2.6.4, Vitest 5.0.5 with its browser packages, Playwright 1.64.1, vitest-browser-react 2.3.0, tsdown 0.23.4, oxlint 1.90.0, oxfmt 0.75.0, oxlint-tsgolint 7.0.2005, lefthook 2.2.2 and the current @rrlab/* packages. Biome 2.6 formats Markdown and YAML, so biome.json skips the files other tools write (the changesets, CHANGELOG.md, the Pullfrog workflow and mise's lock sidecars), and brand/README.md takes its table formatting. vitest is pinned to 5.0.5, the exact version its browser packages peer on. The rebuilt dist/ differs from 2.0.2's in comments and in the declaration file's layout only, so it ships as a patch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
lefthook.yml extends the base.yml that @rrlab/cli ships, which adds gitleaks on the staged changes to the Biome fixes and the type check, and a shared-hooks job fails a commit when that file is missing from node_modules. The pre-push tests stay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
Every workflow but Pullfrog's sets up mise 2026.10.19 through mise-action v5.2.3, pinned by SHA, and Workflow audit runs zizmor 1.31.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
A secrets job runs gitleaks, pinned through mise, over the pull request's commits beside the checks, and the required Test check now reports both, so it fails when either does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
The workflow drops its contents: read grant to `permissions: {}` and gives
it to the audit job instead, the shape CI, Release and Dependency audit use.
The job's token keeps the same permission.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
mise 2026.10.19 kept mise.lock in lockfile format 0 and warned on each run that it is outdated. `mise lock --upgrade` rewrites it in format 3, which records the request each version resolves from; the locked versions, platforms and checksums stay the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
🦋 Changeset detectedLatest commit: 4ed3755 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Reviewed the toolchain alignment on 900d564: pnpm 12, TypeScript 7, Biome 2.6, Vitest 5, shared git hooks, and the CI secret-scan gate. Library source is untouched.
- Runtime pins — mise 2026.10.19 locks Node 24.22.2, pnpm 12.16.1 and gitleaks 8.30.1, with checksums in
mise.lock. - Package manager contract —
packageManageris replaced bydevEngines.packageManager(pnpm^12.16.1,onFail: error). CI still installs the mise pin. - Dev dependencies — TypeScript 7.0.2, Biome 2.6.4, Vitest 5.0.5 pinned exactly (matching
@vitest/browser*), and@rrlab/cli1.7.0 with its plugins. - Git hooks —
lefthook.ymlextends@rrlab/cli'sbase.yml(Biome, typecheck, gitleaks) and fails the commit if that file is missing. Pre-push still runs the tests. - CI gate —
checksandsecretsrun in parallel. The requiredTestjob passes only when both succeed. Workflows use hash-pinned mise-action v5.2.3 and zizmor 1.31.1, with permissions granted per job. - Formatter scope — Biome skips lockfiles, changesets, the changelog and generated
pullfrog.yml.brand/README.mdis only a table reflow. - Release note — a patch changeset for declaration and comment layout. The API is unchanged.
grok-4.7 | 𝕏
Corepack installs the newest release that a devEngines range allows. The exact version keeps it on the pnpm that mise pins and that wrote the lockfile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Reviewed the commit since 900d564. The package-manager gate now requires the same pnpm the toolchain already installs.
- Exact pnpm pin —
devEngines.packageManager.versionand the lockfile specifier are12.16.1, matchingmise.toml, instead of^12.16.1.onFailstayserror.
grok-4.7 | 𝕏

Summary
This moves theme-toggle to the toolchain the other Lab repos share: pnpm 12, TypeScript 7, Biome 2.6, Vitest 5 and
@rrlab/cli1.7.0. Its git hooks now come from@rrlab/cli, and gitleaks scans each commit and each pull request.Exceptions
None.
Calls made here
^:@vitest/browserand@vitest/browser-playwright5.0.5 require exactly vitest 5.0.5, and^5.0.5resolved 5.1.0.checksjob,secretsis the scan the other Lab repos run, andTestneeds both withif: always(), so a failed scan fails the required check instead of skipping it. Triggers are unchanged (pull requests only).biome.jsonskips.mise/locks,.changeset/*.md,CHANGELOG.mdandpullfrog.yml, and uses the installed Biome's schema.brand/README.mdtook Biome's table alignment.@variablelab/theme-toggle.rr pack's output changed with tsdown 0.23 and TypeScript 7: the bundle's comments and the declarations' layout differ, and the API doesn't.release.yml'screate-github-app-tokenpin;workflow-audit.yml's triggers; vite 8.1.0's advisories, tracked in Dependency audit found known vulnerabilities #25.Evidence
Before:
mainruns pnpm 10, TypeScript 6 and Vitest 4, and its hooks have no secret scan.After: checked on this branch:
pnpm rr checkpnpm testrr packdist/initial.js,dist/index.mjsand the declarations with TypeScript 7.0.2mise installtwice, thenpnpm installgit statusempty; lefthook wrotepre-commitandpre-pushghp_tokenleaks found: 1, HEAD unchanged; a harmless commit then passes all four jobsMerge Danger
Door: two-way
Reverting the squash restores
main.Blast Radius: contributors, CI and the next release
npminside the repo stops withEBADDEVENGINES, asdevEnginesintends.@variablelab/theme-togglebuilt by tsdown 0.23 and TypeScript 7.🤖 Generated with Claude Code
https://claude.ai/code/session_01J1Ak7btEZVEoTBDd6NBH9g