mirror of
https://github.com/stablyai/orca.git
synced 2026-09-28 16:02:45 +00:00
Main's two half-migration filters are gone, so a locally hosted structured session's row now reaches both renderer windows over `agentStatus:set` and comes back on the `agentStatus:getSnapshot` replay pull. Removing the send guard is also what first gives the dashboard popout structured sessions at all. Removing them was not enough on its own. A structured pane key resolves to nothing in the renderer's terminal-tab routing index — an `agent-session` tab lives in `unifiedTabsByWorktree` — so the applicator held every published row as `pending` forever, with every test still green. The new routing module resolves a structured row against that tab, and requires one: deliberately narrower than `worktree ps`, because it is what the sidebar already showed, and because a terminal tab in chat view mode is backed by a structured session too and already has its own row. `structuredHost: 'owned'` maps back to `structuredHostOwned` so the freshness bypass still fires; `terminalResumeEligible: false` is kept so no sleeping record offers to relaunch a chat as a TUI; `allowOlderTimestamp` is dropped because main stamps a forward-only `receivedAt`. The row's name is read from the session tab rather than put on the wire. The bridge stops projecting for a local target only. A remote host writes into ITS store and nothing mirrors structured rows down, so it stays that session's writer. Its unmount teardown stays for both lanes: the host's close drops its row through `dropStatusEntry`, which emits no renderer clear. Command Code output seeds, parked-pane seeds and the pty-exit removal are NOT deleted, against the plan. Main emits Command Code working/done as side-effect FACTS the renderer turns into the write, gated on renderer-only pane ownership state; nothing puts them in the hook store. The done-settle window stays with them. The doc records both, with the mechanism.