Skip to content

feat: seamless attach to hub sessions — status chips, question inbox, passive notifications (#1785) - #1789

Merged
aarontrowbridge merged 12 commits into
live-test/stack-e2efrom
amico/issue-1785-seamless-attach
Oct 15, 2026
Merged

aarontrowbridge merged 12 commits into
live-test/stack-e2efrom
amico/issue-1785-seamless-attach

Conversation

@aarontrowbridge

@aarontrowbridge aarontrowbridge commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Closes #1785.

The UX layer over the fleet's existing foundations (P4 hub-client posture, P2 shared runtime rows, merged streams with replay + dead-men).

Slices — all merged into this branch and director-gated:

Integration gates on this tree (director-run): app suite 1680 pass / 24 fail with the failure set byte-identical to the standing lane baseline (19 lane drift-class + 5 main-inherited — pre-existing, reproduced on clean parents); extension suite green; drift gate PASS (968 files).

Stays DRAFT until the end-to-end headless probe gate (fresh client, question from an unopened session answered from the inbox, turn resumes; notification on question.asked) — which requires a deploy decision on the live plane (HITL: Aaron's; lockstep + route-containment gates apply per the 2026-10-13 skew incident).

Base: the union lane, which carries all three foundations (#1784, #1762, the streams work).

…m in server-sdk.test.ts (#1786 note)

The #1784 (P4) overlay edit spliced the postEventStreamUrlAssert describe
into the middle of the dead-man wiring describe's last test, dropping its
closing }) and the describe's }). The file failed to parse: the whole suite
was dead (0 of its 35 tests ran) and tsgo -b died on TS1005 before any
type-check could run. Repair only — all 35 tests pass once parseable; the
known baseline failure set is unchanged by the repair (measured, see the
slice return).
… layout wiring (#1786)

The badge is a canonical titlebar control (persisted pre-#1786 layouts fall
back to the new default and gain it); the panel is the VaultPanel-shaped
global drawer; NewLayout wires the per-window controller to the shared
ServerSession store + the hub SDK and tears it down on server switches.
…#1786)

tsgo flags the flight's own finally comparing the promise before its
initializer completes (TS2454); the holder is assigned after creation and
read only in the finally (which runs after the first await).
@coderabbitai

coderabbitai Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

S3 of #1785 (seamless attach): the extension host's existing sseClient
stream finally tells a human. A FollowedSessionWatcher observes the
one /event connection every posture opens (a new observe-only onEvent
sink on OpencodeEventClient — contained, never mutating the stream) and
raises VS Code notifications on followed sessions.

- Follow = a live chat tab showing the session (opened or pinned),
  derived live from ChatPanel's registry — no new follow-management UI.
- question.asked notifies with the session name + question header while
  the panel is unfocused; activating it reveals the tab (View).
- session.status busy→idle raises a finished notification past the 30s
  flash window; a reconnect replay's compressed bracket stays silent.
- Dedupe keys on the question REQUEST id (across reconnect gap replay);
  statuses honor the #1636 seq locally like the app's #1637 guard.
- No notification while the focused panel shows the session (you're
  already there); unfollowed sessions pass silently.
@aarontrowbridge
aarontrowbridge merged commit fa7e33c into live-test/stack-e2e Oct 15, 2026
10 of 12 checks passed
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