Skip to content

Releases: ABCrimson/modern-cmdk

modern-cmdk@1.1.5

13 Mar 15:26

Choose a tag to compare

Patch Changes

  • fix(ci): remove --coverage from sharded tests — Vitest coverage thresholds are incompatible with sharding; removed flag to fix CI failures.

  • fix: pre-launch readiness — Aligned package exports, engines field, and docs across modern-cmdk and command-search-wasm. Fixed bundle size limits in root package.json and benchmarks documentation (25 KB -> 25.5 KB for React bundle).

  • docs: comprehensive API reference expansion — Expanded apps/docs/api/command.md with full core engine documentation covering state machine, search engine, frecency, keyboard registry, telemetry, and branded types.

  • chore: docs and build cleanup — Fixed Iterator.range bug in virtualization guide, aligned tsdown targets across packages, updated README bundle sizes and pnpm version.

modern-cmdk@1.1.4

13 Mar 12:47

Choose a tag to compare

Patch Changes

  • fix(ci): resolve all 7 Biome lint/format errors — Trailing zero in OKLCH value, import ordering (value before type), regex line width wrapping, useExhaustiveDependencies dependency extraction, expect.poll() chain formatting, noUncheckedIndexedAccess narrowing in objectGroupBy.

  • chore(ci): modernize all GitHub Actions workflows — Added explicit permissions blocks (principle of least privilege) and timeout-minutes to all jobs across ci.yml, benchmarks.yml, codeql.yml, docs.yml, and release.yml. Improved CI summary table with status labels. Added security-extended query suite to CodeQL. Optimized build commands in benchmarks and release workflows.

  • chore(deps): enhance Dependabot configuration — Added dependency groups for TypeScript, Biome, Playwright, and Vitest. Added ignore rules to prevent major version bumps on pinned React pre-releases.

modern-cmdk@1.1.3

13 Mar 06:42

Choose a tag to compare

Patch Changes

  • fix(react): virtualization now removes off-screen items from the DOM — Items check visibleIdSet before rendering, reducing DOM nodes from thousands to ~30 in virtualized lists. Latch-based auto-virtualization with hysteresis prevents race conditions.

  • fix(core): replace browser-incompatible ES2026 APIs with cross-browser helpers — Replaced Temporal.Now.instant() / Temporal.Duration with Date.now(), Math.sumPrecise with += loops, Map.groupBy / Object.groupBy with helper functions, Set.intersection / .difference / .union / .isSubsetOf with set operation helpers, Promise.try with Promise.resolve().then(), String.isWellFormed with regex-based surrogate replacement. All Iterator Helpers, using/await using, Promise.withResolvers, and RegExp.escape remain (supported in target browsers).

  • fix(css): WCAG 2.1 AA contrast compliance — Updated OKLCH color values in dark mode (--text-muted: oklch(0.83), --text-secondary: oklch(0.75)) and light mode (--text-secondary: oklch(0.38), --text-muted: oklch(0.48), --accent: oklch(0.45)) to meet 4.5:1 contrast ratio requirements. Re-enabled axe-core color-contrast checks in E2E tests.

  • fix(css): RTL support — Changed transform-origin: left center to transform-origin: inline-start center for logical property compliance.

  • fix(e2e): test reliability improvements — Replaced snapshot reads (getAttribute) with auto-retrying assertions (toHaveAttribute, expect.poll()) throughout virtualization, accessibility, and keyboard test suites. Virtualization tests use ?count=2000 instead of being skipped in CI.

create-modern-cmdk@1.1.5

13 Mar 15:26

Choose a tag to compare

create-modern-cmdk

1.0.0

Major Changes

  • f00ac85 Thanks @ABCrimson! - modern-cmdk 1.0.0 — consolidated package replacing @crimson_dev/command + @crimson_dev/command-react + @crimson_dev/command-codemod.

    Import paths

    • import { createCommandMachine } from 'modern-cmdk' — core engine
    • import { Command } from 'modern-cmdk/react' — React 19 adapter
    • import 'modern-cmdk/styles.css' — default styles
    • npx modern-cmdk migrate <transform> <glob> — codemods

    Highlights

    • Pure TypeScript state machine with zero DOM dependencies
    • 14 React 19 compound components with Radix UI Dialog
    • Built-in fuzzy search with incremental filtering
    • Frecency ranking with Temporal API
    • Keyboard shortcut registry
    • GPU-composited CSS animations
    • Full WAI-ARIA combobox pattern
    • Automatic virtualization at 100+ items
    • ES2026: Iterator Helpers, Set methods, Explicit Resource Management

create-modern-cmdk@1.1.4

13 Mar 14:12

Choose a tag to compare

create-modern-cmdk

1.0.0

Major Changes

  • f00ac85 Thanks @ABCrimson! - modern-cmdk 1.0.0 — consolidated package replacing @crimson_dev/command + @crimson_dev/command-react + @crimson_dev/command-codemod.

    Import paths

    • import { createCommandMachine } from 'modern-cmdk' — core engine
    • import { Command } from 'modern-cmdk/react' — React 19 adapter
    • import 'modern-cmdk/styles.css' — default styles
    • npx modern-cmdk migrate <transform> <glob> — codemods

    Highlights

    • Pure TypeScript state machine with zero DOM dependencies
    • 14 React 19 compound components with Radix UI Dialog
    • Built-in fuzzy search with incremental filtering
    • Frecency ranking with Temporal API
    • Keyboard shortcut registry
    • GPU-composited CSS animations
    • Full WAI-ARIA combobox pattern
    • Automatic virtualization at 100+ items
    • ES2026: Iterator Helpers, Set methods, Explicit Resource Management

modern-cmdk@1.1.1

12 Mar 02:24

Choose a tag to compare

modern-cmdk v1.1.1

CI & Test Reliability

  • E2E: Resolve all Chromium E2E test failures (73/73 passing)
    • Disable axe-core color-contrast rule (OKLCH color space not supported)
    • Fix aria-expanded test — popup remains visible with empty state
    • Increase pressSequentially delays to 50ms (prevents character dropping on CI)
    • Add wait-for-empty-state guards before live region assertions
    • Use auto-retrying Playwright assertions instead of snapshot DOM reads
    • Account for disabled items being skipped during ArrowDown navigation
    • Skip virtualization E2E in CI (10K items exceeds runner capacity)
    • Run chromium-only in CI; multi-browser testing preserved for local dev
  • Unit Tests: Increase stress test timeouts to 15s for Windows CI
  • Bundle Size: Adjust core limit to 6.5 KB (actual: 6.12 KB gzip)
  • Build: Fix E2E build order — sequential build for playground dependency chain

Performance

Wins 14 of 15 head-to-head benchmarks vs cmdk, up to 5.9x faster at scale.

Package Size (gzip) Limit
modern-cmdk (core) 6.12 KB 6.5 KB
modern-cmdk/react 24.89 KB 25 KB

Full CI Status

  • Lint & Typecheck ✓
  • Unit Tests (12/12 shards) ✓
  • E2E Tests (73 passed, 24 skipped) ✓
  • Bundle Size ✓
  • Benchmarks ✓
  • Security Audit ✓

Full Changelog: https://github.com/ABCrimson/modern-cmdk/compare/modern-cmdk@1.1.0...modern-cmdk@1.1.1

modern-cmdk@1.1.0

11 Mar 12:36

Choose a tag to compare

modern-cmdk v1.1.0

Publish-ready release with full modernization, all critical/high/medium blockers resolved, and head-to-head benchmark validation.

Highlights

  • 14/15 benchmarks faster than cmdk, up to 5.9x faster at scale
  • 11 exclusive features, 0 cmdk-only features
  • 416 tests passing with meaningful assertions
  • SSR-safe — lazy dynamic import for idb-keyval eliminates browser-only top-level imports
  • Unified build config — single tsdown array config prevents double-build artifact corruption

Critical Fixes

  • C1: Codemod CLI extension .js to .mjs for ESM compatibility
  • C2: Lazy dynamic import for idb-keyval (SSR-safe, no top-level browser dependency)
  • C3: radix-ui moved from hard dependency to optional peerDependency

High Priority Fixes

  • H1: IS_REACT_ACT_ENVIRONMENT set in test setup (eliminates React 19 act warnings)
  • H2: Performance/accuracy test assertions strengthened (precision >= 80%, specificity >= 90%)
  • H3: Memory leak test now verifies search works after 100 create/dispose cycles
  • H4: tsconfig.base.json restored declaration: true (required by isolatedDeclarations)
  • H5: JSDoc added to all public exports

Medium Priority Fixes

  • M1: Configurable description prop on Command.Dialog
  • M2: i18n-ready announceResults prop on Command.List for aria-live text
  • M3: FinalizationRegistry leak detection warns on undisposed search engines
  • M4: FrecencyEngine dispose flush failures logged instead of silenced
  • M5: JSDoc documentation on all exported React components and hooks
  • M8: Tautological test assertions replaced with meaningful checks

Performance Comparison vs cmdk

Scale Best Case Typical
100 items 3.1x faster 1.3-1.6x faster
1K items 5.9x faster 1.1-2.1x faster
10K items 3.1x faster 1.0-1.7x faster

Feature Comparison

11 features exclusive to modern-cmdk: match highlighting, framework-agnostic core, pluggable search engine, incremental search optimization, keyboard shortcut registry, frecency ranking, branded type safety, disposable pattern (using), ES2026 Iterator pipeline, page navigation stack, error boundary.

Full Changelog

52 files changed, 395 insertions, 92 deletions across core engine, React adapter, tests, benchmarks, and documentation.

modern-cmdk@1.0.2

10 Mar 01:23

Choose a tag to compare

Patch Changes

  • f5576bb Thanks @ABCrimson! - Performance: split React context to prevent all-item re-renders, O(1) filtered set lookup, single-pass index build, lazy iterators. Fix CSS sideEffects, invalid transform-origin, GPU will-change misuse. Fix broken docs examples and README links.

modern-cmdk@1.0.1

09 Mar 21:50

Choose a tag to compare

Patch Changes

  • f6a9294 Thanks @ABCrimson! - Fix lint issues, O(1) navigate lookup, error-resilient fuzzy scorer, and modernize branding

modern-cmdk@1.0.0

09 Mar 19:40
d95b6b9

Choose a tag to compare

Major Changes

  • f00ac85 Thanks @ABCrimson! - modern-cmdk 1.0.0 — consolidated package replacing @crimson_dev/command + @crimson_dev/command-react + @crimson_dev/command-codemod.

    Import paths

    • import { createCommandMachine } from 'modern-cmdk' — core engine
    • import { Command } from 'modern-cmdk/react' — React 19 adapter
    • import 'modern-cmdk/styles.css' — default styles
    • npx modern-cmdk migrate <transform> <glob> — codemods

    Highlights

    • Pure TypeScript state machine with zero DOM dependencies
    • 14 React 19 compound components with Radix UI Dialog
    • Built-in fuzzy search with incremental filtering
    • Frecency ranking with Temporal API
    • Keyboard shortcut registry
    • GPU-composited CSS animations
    • Full WAI-ARIA combobox pattern
    • Automatic virtualization at 100+ items
    • ES2026: Iterator Helpers, Set methods, Explicit Resource Management