Problem
The brain plugin TUI receives status updates from the shared brain/status bus channel without filtering by session ID. When multiple opencode sessions run in parallel (e.g. via separate terminal tabs/instances), each TUI sees status updates from ALL server instances — not just its own.
Root Cause
In src/status.ts, the write() function publishes payloads to the bus channel without including the session ID. The TUI subscriber in src/tui.tsx processes every message it sees, regardless of which session/server produced it.
The per-session channel brain/${sessionId} was added as a fix (commit 5a0625c) for pre-session ingest, but brain/status is still subscribed unfiltered.
Fix
src/status.ts — include sessionId in the published payload (when known)
src/tui.tsx — filter brain/status subscription by sessionId when both sides have it
Acceptance
- Two concurrent opencode sessions show independent status (no bleed)
- Single session still works (no regression)
Problem
The brain plugin TUI receives status updates from the shared
brain/statusbus channel without filtering by session ID. When multiple opencode sessions run in parallel (e.g. via separate terminal tabs/instances), each TUI sees status updates from ALL server instances — not just its own.Root Cause
In
src/status.ts, thewrite()function publishes payloads to the bus channel without including the session ID. The TUI subscriber insrc/tui.tsxprocesses every message it sees, regardless of which session/server produced it.The per-session channel
brain/${sessionId}was added as a fix (commit 5a0625c) for pre-session ingest, butbrain/statusis still subscribed unfiltered.Fix
src/status.ts— includesessionIdin the published payload (when known)src/tui.tsx— filterbrain/statussubscription bysessionIdwhen both sides have itAcceptance