Skip to content

Bleeding-edge evergreen upgrade -> v1.2.0 - #40

Merged
ABCrimson merged 5 commits into
mainfrom
chore/bleeding-edge-evergreen-upgrade
Jun 29, 2026
Merged

Bleeding-edge evergreen upgrade -> v1.2.0#40
ABCrimson merged 5 commits into
mainfrom
chore/bleeding-edge-evergreen-upgrade

Conversation

@ABCrimson

Copy link
Copy Markdown
Owner

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 a minor (1.1.5 → 1.2.0) rather than a patch.

What changed

Runtime / tooling

  • TypeScript 6.0.1-rc7.0.1-rc (native Go compiler)
  • React 19.3 canary (Jun 26 build) + react-dom (same hash); radix-ui 1.4.4-rc1.6.0
  • Vite 8 GA (8.1.0), Vitest 4.15.0.0-beta.5, Playwright 1.591.62.0-alpha
  • Biome 2.4.62.5.1, tsdown 0.22.3, pnpm 11.9.0, VitePress 2.0.0-alpha.17
  • engines.node >= 26.4.0; CI on Node 26.4.0 / ubuntu-26.04
  • Rust/WASM crate: edition 20212024, wasm-bindgen 0.2.1000.2.126, wasm-pack 0.15

Migrations the new versions required

  • pnpm 11.9: overrides + allowBuilds moved to pnpm-workspace.yaml
  • Vitest 5: benchmark fixture API (with required .run()), it.sequentialit, oxc transform
  • radix 1.6: dialog now dismisses on a full outside click (unit tests updated; root-caused via a throwaway probe)
  • Rust: wasm-opt feature-flag config (cached binaryen couldn't validate the new bulk-memory output)
  • Cross-platform WASM build guard (node existsSync instead of POSIX [ -f ], which failed on Windows)
  • CI action majors: checkout v7, pnpm/action-setup v6, codeql v4, pages v5
  • lefthook hooks routed through pnpm exec (bare binaries weren't on the hook shell's PATH)

Verification — all gates green

Gate Result
tsc --noEmit (TS 7, all packages)
Biome 2.5.1 lint
Unit (Vitest 5) 416 passed
E2E (Playwright 1.62, Chromium) 97 passed
Full build (7 packages)
Bundle size ✅ core 6.28/6.5 kB · react 10.18/12 kB
Docs build (VitePress α17)
Rust crate (cargo check + wasm-pack)
Benchmarks (Vitest 5 fixture) ✅ 22 benches, real measurement

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: the size-limit React budget now externalizes the react/react-dom/radix-ui peers and measures the adapter's own code (~10.2 kB, stable across peer bumps), and the scaffold tsconfig (ES2026/ES2025 are 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 (FrecencyEngine constructor, getBonus, KeyboardShortcutRegistry.register/getConflicts, ParsedShortcut shape, formatShortcut, createSearchEngine).

Left unchanged on purpose (historical artifacts, clearly dated): cmdk-complete-rewrite-specification-v2.md (the March 2026 design spec, which even predates the modern-cmdk rename), docs/plans/*, and prior CHANGELOG release entries.

Deliberate decisions (flagging for review)

  • changesets/action kept on stable @v1 (not the v2-next prerelease) — it sits in the npm-publish path; v1 supports every input used.
  • Scaffold template uses react ^19.2.0 (not ^19.3.0, which has no installable stable) so generated projects actually npm install.
  • engines.node >= 26.4.0 is 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 main after this merges (npm publish via the existing release CI / NPM_TOKEN).

🤖 Generated with Claude Code

ABCrimson and others added 5 commits June 28, 2026 04:52
…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>
@ABCrimson
ABCrimson merged commit bd772ce into main Jun 29, 2026
21 checks passed
@ABCrimson
ABCrimson deleted the chore/bleeding-edge-evergreen-upgrade branch June 29, 2026 06:21
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