Tracking follow-ups surfaced during the chat-mode v1 implementation on branch session-1-07ce2e (design: docs/plans/2026-04-22-chat-mode-design.md, plan: docs/plans/2026-04-22-chat-mode-plan.md).
Blockers for full e2e coverage
Deferred UX / error handling
Pre-existing svelte-check errors
Not introduced by this work but worth clearing to keep the suite clean:
Quality polish (non-blocking)
Architecture follow-ups
Tracking follow-ups surfaced during the chat-mode v1 implementation on branch
session-1-07ce2e(design:docs/plans/2026-04-22-chat-mode-design.md, plan:docs/plans/2026-04-22-chat-mode-plan.md).Blockers for full e2e coverage
read_daemon_tokenon the Axum test server (src-tauri/src/bin/server.rs). The browser-mode Playwright harness uses this server; without a/api/read_daemon_tokenroute, the daemon-reachable test ine2e/specs/chat-mode.spec.tscannot pass and is currently markedtest.fixme. Removing thefixmeand extending the spec with a "+ New chat" + streaming-reply scenario is the payoff.Deferred UX / error handling
src/lib/daemon/errors.ts/ChatView/ChatInput). Today 401 shows a toast; the design doc calls for re-reading~/.the-controller/daemon.tokenand retrying the request once before giving up.HotkeyManager.getVisibleItems' chat branch intentionally excludes the "+ New chat" rows from j/k navigation. Enter on a walked "+ New chat" row should openNewChatDialog.HotkeyHelp. The mode label already switches to "Chat"; a full section (send / interrupt / navigate) requires registering chat-specific commands in the keymap (src/lib/commands.ts+ wherevergetHelpSectionslives). Today users only see the global shortcuts in chat mode.Pre-existing svelte-check errors
Not introduced by this work but worth clearing to keep the suite clean:
src/lib/IssuesModal.svelte:297—MouseEventHandlertype mismatch (pre-existing onmain).src/lib/daemon/client.test.ts:26— two tuple-index errors (const [url, init] = fetchMock.mock.calls[0]). Introduced by Task 6 of the chat plan. Doesn't fail tests; just svelte-check noise.Quality polish (non-blocking)
ToolApprovalBlockcurrentlytry/finallys the send — errors are silently swallowed. A toast viaclassifyError+showToastwould match howChatInputhandles failures." "still gets sent.loadSessions. Today it only initializesemptyTranscript()for new sessions; sessions removed on the daemon don't have their transcripts GC'd.Transcript.svelteonce transcripts grow large. Plain scroll for v1 per the design doc.Architecture follow-ups
fixmetest — once/api/read_daemon_tokenis exposed, un-fixme ine2e/specs/chat-mode.spec.tsand tune the 1500ms daemon-readiness sleep (likely flaky on slow hardware).