Skip to content

feat(examples-chat): Phase 7 — multi-thread support#239

Merged
blove merged 2 commits into
mainfrom
claude/examples-chat-phase-7-multi-thread
May 10, 2026
Merged

feat(examples-chat): Phase 7 — multi-thread support#239
blove merged 2 commits into
mainfrom
claude/examples-chat-phase-7-multi-thread

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 10, 2026

Summary

  • Adds a threads panel (left-side drawer) toggled via a new "Threads on/off" button in the control palette
  • Panel state persists across page reloads via PalettePersistence (threads key)
  • ThreadsService (new @Injectable({ providedIn: 'root' })) fetches threads from POST /threads/search and creates new ones via POST /threads; silently no-ops when the backend is down
  • Clicking a thread in <chat-thread-list> switches the agent's threadId signal and writes to persistence so the chat reloads that thread's server-side history
  • "+ New thread" button (via ChatThreadListComponent's built-in showNewThreadButton + newThreadRequested) calls ThreadsService.create() and switches to the new thread, landing in welcome state
  • Active thread is persisted across reload — the agent reconnects on mount and history reappears
  • Threads list refreshes automatically whenever threadIdSignal changes (via effect)
  • Smoke checklist ## Multi-thread section populated with 10 checks

Implementation notes

  • Thread type from @ngaf/chat is { id: string; [key: string]: unknown } — the service maps thread_idid and derives a title from metadata or a truncated ID prefix
  • threadIdSignal changed from private to protected (Angular template binding requirement)
  • ChatThreadListComponent already ships showNewThreadButton input and newThreadRequested output, so no separate button markup was needed in the shell template

Test plan

  • npx nx run-many -t test,lint,build -p examples-chat-angular passes (verified: 9/9 tests, lint clean, build clean)
  • Panel toggle opens/closes the left drawer
  • Threads list populates when backend is running
  • "+ New thread" creates a thread and resets to welcome state
  • Clicking a thread reloads its history
  • Active thread survives reload

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 10, 2026

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

Project Deployment Actions Updated (UTC)
cacheplane Ready Ready Preview, Comment May 10, 2026 8:59pm

Request Review

Both palette toggles (Timeline + Threads) coexist; both panels mount
on different sides of the viewport (timeline right, threads left).
@blove blove merged commit 608189d into main May 10, 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