Purpose
Complete the project-scoped bus API by adding forProject(id) to both BusClient and BusTui.
What's missing
forService and forSession exist but forProject was planned and marked done without being implemented.
Changes
BusClient.forProject(id) + ScopedBusClient.forProject(id) — prefix-based, same mechanics as forSession
BusTui.forProject(id) + ScopedBusTui.forProject(id) — same
Channels: brain/{projectId}/status (project-level) vs brain/{sessionId}/status (session-level).
Used by four-opencode-brain to publish startup/ingest status to a project-scoped channel so all sessions in the project receive it via useProjectBus.
Purpose
Complete the project-scoped bus API by adding
forProject(id)to bothBusClientandBusTui.What's missing
forServiceandforSessionexist butforProjectwas planned and marked done without being implemented.Changes
BusClient.forProject(id)+ScopedBusClient.forProject(id)— prefix-based, same mechanics asforSessionBusTui.forProject(id)+ScopedBusTui.forProject(id)— sameChannels:
brain/{projectId}/status(project-level) vsbrain/{sessionId}/status(session-level).Used by four-opencode-brain to publish startup/ingest status to a project-scoped channel so all sessions in the project receive it via
useProjectBus.