2.4 KiB
2.4 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 08-command-palette-settings-group | Separate Cmd+K Settings section | completed | 8 |
|
plan.md | ../../specs/ui/requirements/settings-discovery.md |
Task 08: Separate Cmd+K Settings section
Root cause
CommandsListContent ranks typed matches correctly but renders every command inside one hardcoded
Commands group. Search-only catalog entries therefore lose their Settings information hierarchy
once they become visible.
Acceptance
- Regular typed matches remain under Commands.
- Search-only settings matches render under their existing localized Settings group.
- A group is omitted when it has no matching results.
- Ranking, secondary context, selection, and exact-target navigation remain unchanged.
Verification
cd apps && pnpm --filter @kandev/web test -- --run components/command-panel-content-search.test.tsxcd apps/web && pnpm e2e:run --host tests/command-panel.spec.ts --grep "settings discovery"
Files
apps/web/components/command-panel-footer.tsxapps/web/components/command-panel-content-search.test.tsxapps/web/e2e/tests/command-panel.spec.ts
Mobile parity
The command list renderer is shared by desktop and phone. This change adds no viewport branch, touch target, overlay, navigation, or scroll-owner behavior; the existing shared component contract is sufficient for this presentation-only hierarchy correction.
Parallelism
Sequential; the regression and implementation modify the same command-list contract.
Results
- RED: 2 focused component assertions failed because Settings results rendered under Commands.
- RED E2E: the fresh production build exposed
Commandsas the sole typed-result heading. - GREEN: regular matches render under localized Commands while search-only matches retain their localized group; empty groups are omitted and ranked order is preserved within each group.
- Focused component tests passed (14/14), and the fresh-build browser test passed (1/1).
- Typecheck, focused ESLint, i18n checks, the new-code i18n ratchet, and
git diff --checkpassed. - The isolated local and Tailscale Settings URLs returned HTTP 200 and served the updated module;
the main Kandev process on
:9998remained untouched. - No separate mobile E2E was needed because the same command-list component renders at every viewport and no touch, overlay, navigation, or scrolling behavior changed.