Skip to content

feat(chat): sidenav composition + Cmd+K history search palette#253

Merged
blove merged 12 commits into
mainfrom
claude/chat-sidenav-impl
May 11, 2026
Merged

feat(chat): sidenav composition + Cmd+K history search palette#253
blove merged 12 commits into
mainfrom
claude/chat-sidenav-impl

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 11, 2026

Summary

Implements Phase 1 (sidenav shell + threads) and Phase 2 (history search palette) of the larger sidenav decomposition. Hard-replaces chat-thread-drawer with a more capable chat-sidenav composition; adds a modal chat-history-search-palette primitive driven by Cmd/Ctrl+K.

Spec: docs/superpowers/specs/2026-05-11-chat-sidenav-and-history-search-design.md
Plan: docs/superpowers/plans/2026-05-11-chat-sidenav-and-history-search.md

New primitives / compositions

  • ChatSidenavComponent — three responsive modes ('expanded' | 'collapsed' | 'drawer'), built-in new-chat + search buttons, built-in threads section, named projection slots ([sidenavHeader], [sidenavPrimary], [sidenavSections], [sidenavAccount]). Cmd/Ctrl+K listener (suppressed in inputs) emits (searchOpened). Drawer mode: scrim, focus trap via aside, Esc closes.
  • ChatHistorySearchPaletteComponent — fixed-position modal with loading / hint / empty / results states. Two-way [(open)] and [(query)]; consumer-supplied results. ArrowDown/Up + Enter for selection; Esc + scrim click to close. ARIA combobox + listbox + activedescendant pattern.

Public API additions

  • ChatSidenavComponent, type ChatSidenavMode
  • ChatHistorySearchPaletteComponent, type ThreadMatch
  • Re-export Thread type from the threads list

Breaking changes

  • Removed: ChatThreadDrawerComponent, type ChatThreadDrawerMode. Replaced by ChatSidenavComponent with mode="drawer". examples-chat-angular migrated in this PR.

Deferred (explicit non-goals)

Archive semantics, per-row overflow menu (archive/delete/share/rename), server-side / content search, projects, library, GPTs, apps, agents, group chats, workspace switching, Temporary Chats — all later phases.

Test plan

  • nx run chat:test — 10 sidenav + 14 palette unit tests pass (plus existing suite)
  • nx run chat:build — clean
  • nx run chat:lint — clean
  • nx run examples-chat-angular:build — clean
  • API docs regenerated (apps/website/content/docs/chat/api/api-docs.json)
  • Manual browser verification deferred: dev server (nx serve examples-chat-angular) trips a preexisting TS2322 error in libs/chat/src/lib/markdown/markdown-children.component.ts:51 (RenderViewEntry vs Type<unknown>) that is unrelated to this branch and blocks nx serve rebuilds. Production-mode AOT build succeeds. Unit tests exercise all interaction surfaces (DOM queries + keyboard events).

🤖 Generated with Claude Code

blove and others added 12 commits May 11, 2026 16:16
Sidenav composition with expanded/collapsed/drawer modes plus a modal
history-search palette driven by Cmd/Ctrl+K. Hard-replaces
chat-thread-drawer. Defers archive, projects, library, GPTs, apps,
agents, group chats, and workspace switching to later phases.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Ten tasks across Phase 1 (sidenav composition + drawer hard-replace +
examples migration) and Phase 2 (search palette + Cmd+K + example
wiring + docs regen + manual verification).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e filter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 11, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cacheplane Ready Ready Preview, Comment May 11, 2026 11:56pm

Request Review

@blove blove merged commit a94971e into main May 11, 2026
14 checks passed
blove added a commit that referenced this pull request May 12, 2026
…rk (#271)

Brings the canonical smoke checklist current with 29 PRs that landed
between Phase 7 (#239) and today without checklist updates. Specifically:

Updated sections:
- chat-debug devtools — replaced bottom-drawer model with floating
  launcher + status pill + switch (PRs #249, #251)
- Control palette — palette v2 (status pill, shadcn-styled panel, PR #244)
- Generative UI / A2UI surfaces — single-bubble invariant (PR #255),
  parent-emits-envelopes architecture (PR #259), wrapped-content +
  tool_calls coexistence (PR #255), envelope reorder
- Server-side wire format — tool_calls preserved on the final AI
- Replaced 'Multi-thread' section with 'Sidenav (thread management)'
  reflecting the permanent semantic <nav> + Active/Archived sections
  (PR #253) and removing the old palette-toggled drawer model

Added sections:
- Cmd+K history search — palette open/search/select/close, archived
  result subtitle, keyboard navigation (PR #253)
- Per-row thread actions — kebab menu order per state (active, pinned,
  archived), rename + pin/unpin + archive/unarchive + delete flows
  (PRs #258, #260, #267)
- Thread titles — first-user-message derivation, idempotent writes,
  manual rename precedence (PR #242)
- Progressive A2UI streaming — per-component fallback transition
  observable during streaming window (PRs #252, #261, #262, #268, #269)
- Inline checkpoint markers — render between messages during multi-step
  runs (PR #243)
- Responsive sidenav — viewport breakpoints, auto-collapse behavior (PR #240)

Total: ~58 new check items across 6 new sections, plus rewrites to 5
existing sections. Original 333-line checklist → 391 lines / 237 check
items.
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.

1 participant