Skip to content

feat: searchable case picker + Command-K session palette (COD-151/153/157/192)#146

Open
aakhter wants to merge 10 commits into
Ark0N:masterfrom
aakhter:cod-163-command-palette
Open

feat: searchable case picker + Command-K session palette (COD-151/153/157/192)#146
aakhter wants to merge 10 commits into
Ark0N:masterfrom
aakhter:cod-163-command-palette

Conversation

@aakhter

@aakhter aakhter commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • COD-151: Searchable case picker — replaces the bare <select> for quick-start with a filterable input + dropdown, so users can type to find a case by name across a large list
  • COD-153: Command-K session palette — Ctrl+K (or Cmd+K) opens a floating palette that lets you switch between live sessions, start a new one, or open a case picker, without leaving the keyboard
  • COD-157: Shortcut palette label refinements — cleaner, more consistent binding labels in the help/shortcut overlay
  • COD-192: "Browse all sessions" escape hatch in the command palette — falls back to the full session list modal when the inline results are insufficient

Includes a shortcut settings UI (App Settings → Shortcuts tab) required by COD-157 test coverage: a list of all bindings with capture-to-rebind and per-shortcut enable/disable. No CSS for .shortcut-setting-row / .shortcut-capture-btn was added here — styling is left for a follow-up.

Conflicts resolved

Cherry-picks off origin/master diverged in the hot frontend files. Resolved:

File Conflict
app.js Escape handler + DEFAULT_SHORTCUTS block
index.html Help modal, command palette modal, session manager modal, shortcut grid
panels-ui.js Large block with Away Digest duplicate; kept only new palette sections
session-ui.js loadQuickStartCases() vs getCasePickerOptions() refactor
styles.css Empty HEAD vs full palette CSS
settings-ui.js closeAllPanels() additions
README.md Shortcuts table, API table, architecture numbers
test/run-mode-ui.test.ts HEAD Codex tests + new palette describe blocks
test/help-modal-shortcuts.test.ts Modify/delete — kept cherry-pick version
test/shortcut-registry-overlay.test.ts Modify/delete — kept + implemented required APIs

Test plan

  • tsc --noEmit — clean
  • npm test -- test/command-palette-ui.test.ts test/run-mode-ui.test.ts test/keyboard-shortcuts.test.ts test/help-modal-shortcuts.test.ts test/shortcut-registry-overlay.test.ts — 34/34 pass
  • npm run build — clean
  • Ctrl+K opens palette; typing filters sessions; Enter switches; Escape dismisses
  • Case picker search in quick-start dropdown filters by name
  • "Browse all sessions" item falls back to session list modal

🤖 Generated with Claude Code

johoja12 and others added 10 commits July 9, 2026 11:01
Pins a "Browse all sessions…" item at the bottom of the command palette
list (after "New session"). Activating it closes the palette and opens
the Session Manager modal, bridging the gap between the fast in-memory
switcher and the full server-side history browser.

The item gets a distinct visual treatment (≡ icon, muted title/icon
color, 4px top gap) so it reads as a secondary action separate from the
primary session rows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mote-case shell

- app.js: getShortcutRegistry()/matchesShortcutEvent()/showShortcutOverlay()/
  renderShortcutOverlay()/closeShortcutOverlay() (needed for DEFAULT_SHORTCUTS
  action dispatch + shortcut-registry-overlay tests)
- settings-ui.js: renderShortcutSettingsList()/startShortcutCapture()/
  onShortcutCaptureKeydown()/resetShortcutOverride()/toggleShortcutEnabled()
  (Settings → Shortcuts tab, needed for shortcut-registry-overlay tests)
- index.html: Shortcuts modal tab + shortcut overlay modal; remove Ctrl+Enter
  hint text (help-modal-shortcuts test asserts absence)
- session-ui.js: remote-case detection in runShell() (caseName vs workingDir);
  saveLastUsedCase after deleting selected case
- test/command-palette-ui.test.ts: expect browse-sessions item (COD-192 adds it)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants