Bleeding-edge evergreen upgrade -> v1.2.0 - #40
Merged
Conversation
…ct canary, radix 1.6, Rust edition 2024) Move every dependency and tool to the newest available release (incl. pre-releases per the evergreen policy) and migrate the codebase to the new APIs. All gates green: full build, typecheck (TypeScript 7 native), Biome 2.5.1 lint, 416 unit (Vitest 5), 97 Chromium E2E (Playwright 1.62), bundle size, docs build, wasm-pack (edition 2024 + wasm-bindgen 0.2.126), and benchmarks. Runtime / tooling: - Node engines >=26.4.0, pnpm 11.9.0, TypeScript 7.0.1-rc, Biome 2.5.1 - React 19.3 canary (20260626) + react-dom (same hash), radix-ui 1.6.0 - Vite 8.1.0, Vitest 5.0.0-beta.5, Playwright 1.62.0-alpha, tsdown 0.22.3 - VitePress 2.0.0-alpha.17 + shiki 4.3.0 (+ explicit vue 3.5.29 for linkVue) Migrations forced by the new versions: - pnpm 11.9: overrides + allowBuilds moved to pnpm-workspace.yaml - Vitest 5: bench fixture API (with required .run()), it.sequential -> it, oxc transform - radix 1.6: dialog overlay dismissal now needs a full click + deferred-listener flush - Rust crate: edition 2021 -> 2024, wasm-bindgen 0.2.100 -> 0.2.126, wasm-opt feature flags; cross-platform WASM build guard (node existsSync instead of POSIX [ -f ]) - CI: checkout v7, pnpm/action-setup v6, codeql v4, pages v5, Node 26.4, ubuntu-26.04 Hardening from the deep review: - size-limit react budget now measures own code (peers externalized): 10.18 kB / 12 kB - scaffold template made installable (react ^19.2.0); scaffold tsconfig ESNext (was ES2026) - changesets/action kept on stable v1 (prerelease in the publish path is risky) - benchmarks.md sizes refreshed; stale version header comments corrected Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump modern-cmdk and create-modern-cmdk to 1.2.0 and correct every version
reference, bundle-size figure, and API example across all user-facing docs to
match the upgraded code (audited against source).
- Version: modern-cmdk + create-modern-cmdk 1.1.5 -> 1.2.0; CHANGELOG entries added (root + per package)
- README / npm pages: tool versions, Node >=26.4.0, own-code bundle sizes (React ~10.2 KB / 12 KB limit), TypeScript 7
- API reference fixes verified against source: FrecencyEngine({ storage, namespace }) + getBonus(); KeyboardShortcutRegistry.register(shortcut, id, handler) + getConflicts(); ParsedShortcut shape (raw/normalized, no `mod`); formatShortcut(parsed); createSearchEngine(options)
- Guides / examples / CONTRIBUTING / ARCHITECTURE: Node 26.4, pnpm 11.9, TS 7, Biome 2.5.1, Vite 8.1, Vitest 5, Playwright 1.62, radix 1.6, idb-keyval 6.2.5, happy-dom 20.10.6, VitePress alpha.17
- Left historical artifacts unchanged on purpose: the dated design spec, docs/plans/*, and prior CHANGELOG release entries
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
wasm-bindgen-generated pkg/*.d.ts (noExplicitAny + formatting) and the cargo target/ dir are build artifacts that must not be linted. A fresh CI checkout lints the tracked pkg/ d.ts and failed; excluding them in biome.json makes local and CI consistent. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…kage) Biome lints the committed pkg/*.d.ts on a fresh CI checkout (wasm-bindgen's generated noExplicitAny + formatting), and biome's includes-glob exclusion does not take effect on Linux CI. modern-cmdk-search-wasm is private and pkg/ is regenerated by wasm-pack, so the generated output is now gitignored + untracked. CI build skips WASM gracefully when pkg/ is absent. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Bleeding-edge evergreen upgrade of the entire monorepo, released as v1.2.0. Every dependency and tool moves to its newest available release (including pre-releases, per the evergreen policy), the codebase is migrated to the new APIs, and all user-facing documentation is corrected to 100% accuracy against the upgraded code.
No public API or behavior changes — this is a toolchain/dependency refresh. The one consumer-facing change is the raised minimum Node version (
engines.node >= 26.4.0), which is why this is aminor(1.1.5 → 1.2.0) rather than a patch.What changed
Runtime / tooling
6.0.1-rc→7.0.1-rc(native Go compiler)19.3canary (Jun 26 build) + react-dom (same hash); radix-ui1.4.4-rc→1.6.08GA (8.1.0), Vitest4.1→5.0.0-beta.5, Playwright1.59→1.62.0-alpha2.4.6→2.5.1, tsdown0.22.3, pnpm11.9.0, VitePress2.0.0-alpha.17engines.node >= 26.4.0; CI on Node26.4.0/ubuntu-26.042021→2024, wasm-bindgen0.2.100→0.2.126, wasm-pack0.15Migrations the new versions required
overrides+allowBuildsmoved topnpm-workspace.yaml.run()),it.sequential→it, oxc transformwasm-optfeature-flag config (cached binaryen couldn't validate the new bulk-memory output)node existsSyncinstead of POSIX[ -f ], which failed on Windows)pnpm exec(bare binaries weren't on the hook shell's PATH)Verification — all gates green
tsc --noEmit(TS 7, all packages)cargo check+wasm-pack)Deep review
A multi-agent review of the diff (each finding adversarially verified) caught a real regression I had introduced: Vitest 5's
bench()is a factory — without.run()all 41 benchmarks "passed" in ~2 ms measuring nothing. Fixed and verified. Also hardened: thesize-limitReact budget now externalizes thereact/react-dom/radix-uipeers and measures the adapter's own code (~10.2 kB, stable across peer bumps), and the scaffold tsconfig (ES2026/ES2025are invalid TS targets →ESNext).Documentation accuracy pass
A 10-agent audit cross-checked every doc against source. 52 corrections applied across the README, npm pages, the 33-page VitePress site, CONTRIBUTING/ARCHITECTURE, and CHANGELOGs — version references, bundle-size figures, test counts, and 15 verified API-example bugs (
FrecencyEngineconstructor,getBonus,KeyboardShortcutRegistry.register/getConflicts,ParsedShortcutshape,formatShortcut,createSearchEngine).Left unchanged on purpose (historical artifacts, clearly dated):
cmdk-complete-rewrite-specification-v2.md(the March 2026 design spec, which even predates themodern-cmdkrename),docs/plans/*, and prior CHANGELOG release entries.Deliberate decisions (flagging for review)
@v1(not thev2-nextprerelease) — it sits in the npm-publish path; v1 supports every input used.^19.2.0(not^19.3.0, which has no installable stable) so generated projects actuallynpm install.engines.node >= 26.4.0is aggressive for a browser library (it's a build-env constraint). Per the evergreen directive. Easy to relax if you'd rather broaden compatibility.Release
Targeting v1.2.0. Per the agreed plan, the git tag + GitHub Release will be created on
mainafter this merges (npm publish via the existing release CI /NPM_TOKEN).🤖 Generated with Claude Code