Skip to content

Session experience parity: make real Claude threads feel alive (spec + checklist) #262

Description

@flazouh

Master tracking issue for the post-migration session experience. The engine round trip works (real replies, persistence, restart survival) but the THREAD EXPERIENCE is not at parity with the Tauri app. Owner-reported on 2026-08-26: no connection indicator, duplicated message rows, no streaming animation, tool calls invisible.

Spec (target behavior)

A real Claude session in the Electrobun app must:

  1. Show CONNECTION state in the panel header: connecting -> connected -> (error w/ retry) as the adapter session opens; indicator visible within 2s of opening a thread.
  2. Render each user message EXACTLY ONCE, immediately on send (optimistic), reconciled seamlessly when the canonical row lands (no flicker, no double).
  3. Stream assistant text incrementally as TokenAppended events arrive (sub-second cadence), with the streaming affordances (working spark on the session row + shimmer/cursor in the transcript) active during awaiting_model/streaming and cleared on turn completion.
  4. Render tool calls as they happen: tool-call rows with title/status (in_progress -> completed/failed) interleaved at the right transcript position, matching the tracer/fixture experience already proven in the scaffold (Send a message in a real session and see the reply stream #241 evidence).
  5. Surface approvals (permission requests) as actionable rows; approve/deny flows through to the adapter (bridge respondToPermission).

Checklist

  • QA characterization with per-layer evidence (in flight)
  • Connection indicator wired to the orchestration/adapter readiness (ticket after QA)
  • Duplicate-row reconciliation (optimistic vs canonical dedupe) (ticket after QA)
  • Token streaming into the live transcript + streaming affordances (ticket after QA)
  • Tool-call rows end to end: adapter facts -> events -> projections -> transcript mapper (known gap: transcript-viewport-rows-from-entries.ts deliberately omits tool/operation rows; projector lacks operations/turn-detail carriage — see orchestration-canonical-bridge.ts header)
  • Approvals actionable in the real UI
  • Re-QA the full matrix on one build after fixes

Known constraints

  • Single-worktree workflow: fixes land sequentially in the main checkout (owner directive 2026-08-26).
  • Another session actively develops on the same branch (color field, zoom, submit-intent) — coordinate, never ship its uncommitted work.
  • Terminal drawer wiring is paused on branch fix/terminal-drawer-wiring pending owner decision.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions