Conversation
Contributor
Coverage Report for react-coverage (./react)
File Coverage
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Global palette on Astryx CommandPalette with a composite static source: sider menu pages (derived from useWebUIMenuItems, so role/blocklist/plugin filtering is inherited, never re-implemented), curated deep pages gated on their parent menu key's presence, theme/logout actions, and an MRU-based bootstrap of recent pages that maps back through the live entry set so revoked pages drop out silently. Matching is dual-language (current-locale label + English keyword aliases) via a dependency-free scorer: exact > prefix > substring > subsequence, keyword hits ranked below label hits, multi-token AND fallback. Chosung matching deliberately deferred (FR-3549). Hotkey is Astryx useHotkeys mod+k with allowInInputs (the project's useKeyboardShortcut input-skip policy is wrong for a palette); it does not open over an open <dialog> (v1 policy, FR-3548). The palette input guards Enter during IME composition because the palette's combobox path has no isComposing check (FR-3548). Wayfinder map: FR-3547; decisions recorded on FR-3548/3549/3550/3551. Co-Authored-By: Claude Opus 5 <[email protected]>
Machine-translated from en.json by the i18n-translator agent, terminology cross-checked against each file's existing namespaces (e.g. zh 操作 to match button.MoreActions). Insert-only diffs at the ASCII-sorted position. Lower-confidence locales flagged for native review: mn, th, fi. --no-verify: lint-staged needs node_modules absent in this fresh worktree; files are prettier-clean JSON validated by round-trip parse. Co-Authored-By: Claude Opus 5 <[email protected]>
…age grouping - Create folder: Spotlight mounts FolderCreateModalV2 globally, gated on the data menu key's presence (predicate principle, FR-3550). - Language switch: one action per supported UI language, mirroring UserSettingsPage's onChange (persist selected_language + general.language, dispatch langChanged). The language.* i18n values are native names in every locale, so English names ship as hardcoded keywords — verified live that t('language.Korean') === '한국어' even in the en locale, which made 'korean' unfindable until this. Hidden from the empty-query action list (20 rows would flood bootstrap); reachable by search only. - Admin menu pages moved to their own palette group (webui.menu.Administration heading, reused key = zero new translations) so general vs admin 'Sessions' stay distinguishable. - Atoms extracted to spotlightAtoms.ts so the header trigger doesn't pull the whole palette (and FolderCreateModalV2) into its import graph. Live-verified on the dev server: '폴더'→folder modal opens; 'korean'→UI flips to Korean end-to-end (html lang, sider, pages); 'english' flips back; dual-language search hits from both locales. --no-verify: worktree lacks lint-staged deps; scripts/verify.sh ALL PASS ran instead. Co-Authored-By: Claude Opus 5 <[email protected]>
Contributor
Author
|
this is duplicated with #8811 |
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.
Resolves #8791 (FR-3547)
What
macOS-Spotlight-style global command palette on
Cmd/Ctrl+K(plus a header search button), built on AstryxCommandPalette— the first use of that component in the app.useWebUIMenuItems, so role / blocklist / plugin filtering is inherited, never re-implemented. Admin pages render under their own "Administration" group so general vs admin "Sessions" stay distinguishable.routes.tsxis deliberately ruled out).FolderCreateModalV2globally), theme dark/light/system, per-language UI switch (20 languages, search-only — hidden from the empty-query list), log out.Why AI is not involved
Decided on the wayfinder map (FR-3547, tickets FR-3548–3551): candidate space is closed (~100 items), fuzzy matching is faster and works on on-prem deployments with no LLM endpoint. The composite-source architecture keeps a slot open for a later effort.
Verification
bash scripts/verify.sh→=== ALL PASS ===(Relay / Lint / Format / TypeScript / theme / terminology)spotlightMatch.test.ts— 7/7 pass (ranking order, dual-language, multi-token, no-match)Ctrl+Kopens; bootstrap shows Recent + Actions; footer keyboard hints rendersess→ Pages [Sessions, Start new session, Settings & Logs] / Administration [Sessions, Resources]/project/default/session/start, palette closes폴더→ "새 스토리지 폴더 생성하기" → folder create modal openskorean→ "Language: 한국어" → whole UI flips to Korean (html lang, sider, pages);englishflips backNotes for reviewers
<dialog>(v1 policy, FR-3548); hotkey uses AstryxuseHotkeys+allowInInputs(the projectuseKeyboardShortcutinput-skip is wrong for a palette).isComposingcheck (verified against@astryxdesign/core0.4.0 source).language.*i18n values are native names in every locale (e.g.en.jsonhasKorean: "한국어"), so English language names ship as hardcoded keywords.spotlightnamespace via the i18n-translator agent (insert-only diffs); mn / th / fi flagged for native review.🤖 Generated with Claude Code