Skip to content

the session view must survive transient SSE loss — keep the rendered state, show a reconnecting badge #1203

Description

@aarontrowbridge

Important

Problem — When the SSE stream drops (tunnel blips on a long-path fleet connection), the app tears the session view down: the user's whole session disappears for the reconnect window (reported live 2026-09-15: 'sessions are still going blank in between tab switches and messages'). The honest-liveness machinery (#638) is right that thinking must be backed by a live stream — but the remedy for a lost stream should be a visible staleness badge over the LAST RENDERED STATE, not an unmounted session.
Approach — On stream loss: keep the last rendered timeline/composer mounted, dim it (or overlay a reconnecting indicator), and re-render in place when the stream re-establishes. Degrade input honestly (a send during the gap queues or refuses with the reason). The #638 staleness state machine already detects the loss — this changes only the RENDER response.

Acceptance Criteria

  • An SSE drop does not unmount the session view: the last rendered messages remain visible, with a reconnecting/stale indicator.
  • On reconnect the view re-renders in place without a full app reboot (no sprite re-fetch, no session-list refetch on the reconnect path).
  • A send during the gap refuses or queues with an honest reason — never silently lost, never a fake success.
  • The Honest liveness: the SSE staleness state machine (thinking must be backed by a live stream) — L1 #638 staleness tests extend to pin the new render response (the state machine's transitions unchanged).

Activity

  1. added a commit that references this issue on Sep 16, 2026
  2. added a commit that references this issue on Sep 16, 2026
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

    afkImplementable without human interaction

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions