Skip to content

refactor(palette): upgrade Chakra UI to 3.38 and build the command palette on Command - #10247

Open
joshistoast wants to merge 5 commits into
mainfrom
feat/migrate-cmd-palette
Open

joshistoast wants to merge 5 commits into
mainfrom
feat/migrate-cmd-palette

Conversation

@joshistoast

@joshistoast joshistoast commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Upgrades Chakra UI to 3.38 (Ark UI 5.40, Zag 1.47) and rebuilds the command palette on Chakra's new Command primitives. The palette looks and behaves as before; before/after screenshots are pixel-identical.

  • Palette: input, list, items and footer use Command parts, and Chakra's combobox owns highlight, arrow keys, Enter, hover and the ARIA wiring. Our search, providers, scopes, stages, date tokens, recents and the virtualized list are unchanged. The platform Dialog shell stays, since Command.Dialog bypasses modal presence and the menu-teardown guard. Click runs the primary action and Mod+Enter the secondary, as before. Chakra's Command code loads in its own lazy chunk.
  • Upgrade fixes: number input steppers had grown taller than their fields; comboboxes announced results in English through Zag's new live region (now translated); the local Zag useTrack patch is removed because 1.47 includes the fix; a scroll area override that 3.38 covers is removed.
  • Behavior deltas: typing scrolls the results back to the top; Shift/Ctrl+Arrow select text instead of moving the highlight; IME composition no longer triggers palette keys.

QA Instructions

  • pnpm check:release (Node 22.14): lint, types, architecture, 13,232 unit and 4,677 browser tests, fixtures, build and browser performance gates, project-file journeys, accessibility (including workbench-keep-alive-state), three-engine smoke. All pass. One run had a single load failure in GalleryBoardMenu.browser.test.tsx ("leaves Retry in place but disabled as the dialog closes"); it passes 5/5 in isolation on both 3.37 and 3.38.
  • Browser (mock backend, Chromium/Linux): open the palette with Ctrl+K; type, arrow (including wrap from the top), hover, enter a scope with Enter, pop it with Backspace, close with Escape. Number inputs (Iterations, Opacity, Mask blur) match main.
  • Not checked by hand: macOS (⌘ keys, Home/End caret, VoiceOver), Firefox, WebKit.

Review

Resolved: number input stepper height, untranslated combobox announcements, Ctrl/⌘+click briefly running the secondary action, Command code in the startup chunk, tests updated for Zag 1.47 (menu selection modifiers, presence unmounting exits whose animation is paused, a preview video stand-in racing real media loading).

Remaining: on Apple platforms Zag also announces the highlighted option in its own live region, so VoiceOver may hear it twice.

Bytes: the startup Chakra chunk grows 19 KB (751,079 → 770,322) from the upgrade itself; only byte figures were re-recorded, and timings, request counts and owner sets are unchanged.

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Meaningful regression coverage added / updated where needed; obsolete tests/code removed
  • Persisted-state and API changes include required migrations / compatibility validation
  • Relevant performance/efficiency opportunities considered; material claims have evidence
  • Material review findings resolved and relevant checks rerun
  • Documentation added / updated (if applicable)
  • Updated What's New copy (if doing a release after this PR)

Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

Pulls Ark UI 5.40 and Zag 1.47, which reconciles controlled values on Activity reconnect upstream, so the local Zag patch is removed.
Tests follow Zag 1.47: menu selections carry modifiers, exits unmount unless their animation runs, and the preview video stand-in no longer races real media loading.
Chakra 3.38 sizes the stepper from the root's stock input height; pin it to the field again. Drop the scroll area override that 3.38 now covers per axis.
Zag 1.47 adds a results live region with English text; the platform combobox now passes translated strings.
Input, list, items and footer use Chakra's Command parts and combobox for highlight, keyboard and selection; search, scopes, stages and virtualization are unchanged.
Command code loads in its own lazy chunk instead of the startup Chakra chunk.
The startup Chakra chunk grows 19 KB with the upgrade; timings, request counts and owner sets are unchanged.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

7.0.0 frontend PRs that change frontend files frontend-deps PRs that change frontend dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants