Skip to content

[Feature] Redesign command palette default view and content IA #501

@Astro-Han

Description

@Astro-Han

Context

Slice 09 polished the command palette chrome: 52px ghost header, L32-compliant rows, and fixed 480 height to stop result-count jump. What remains is the content layer: when no filter is applied, the palette only shows about 5 default commands and the lower 60% of the modal sits empty.

What needs work

  • Default view: only about 5 commands listed when nothing typed. Lots of empty area below.
  • Information architecture: file picker, command palette, and session search are all the same surface today (dialog-select-file.tsx); the result is a flat list with mixed item types and no visual rhythm.
  • Missing high-value entries: recent sessions, recent files, recent commands, and suggested actions are absent from the default view.
  • No grouping cues until the user starts typing.

Priority triage

P1.

The command palette is an app-wide navigation and recall surface. For everyday users, the empty default state makes high-value actions such as reopening recent sessions, finding recent files, and repeating common commands feel undiscoverable. This is not only visual polish; it affects whether users can move through the product quickly after opening PawWork.

Decisions needed before implementation

  • Default-view groups: which categories, such as Recent, Suggested, Commands, Sessions, Files, or Pinned, and how many rows per group.
  • Sort and recency rules: last touched, last opened, or frecency.
  • Whether to keep one fused entry surface or split palette, file picker, and session jump behavior.
  • Optional footer hints. This was considered and rejected once for slice-09; revisit only if the content design needs more affordance.

Out of scope for this issue

  • Chrome: header height, divider, item radius, fixed body height. Already shipped in slice-09.
  • New keyboard shortcuts beyond Cmd+K.
  • Replacing the full sidebar or session list.

Files likely touched

  • packages/app/src/components/dialog-select-file.tsx - current single-surface implementation.
  • packages/ui/src/components/command-palette.css - chrome lives here; layout and spacing tweaks may follow content decisions.
  • packages/app/src/i18n/{en,zh}.ts - new strings for groups and empty states.

Verification

  • Add or update user-path E2E coverage for opening the palette with no query and seeing useful grouped default entries.
  • Verify keyboard navigation, Enter selection, Escape close, and filtering still work.
  • Manually verify the palette in Electron via bun run dev:desktop because this is a visible app flow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priorityappApplication behavior and product flowsenhancementNew feature or requestuiDesign system and user interface

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions