f9dedee997fd52095261347a82aca28d875db9fa
Three read-only surveys — the Claude sidecar as the reference, the OpenCode sidecar as it stands, and every officer/frontend branch on harness. No code changed. The headline is not a missing feature. OpenCode sessions never appear in the chat list at all: the list filters on `metadata.officer.cwd`, and the only writer of that tag has zero callers, because sessions are created by `opencode run --dir` rather than the API that would tag them. Resuming one is worse — the model is dropped between the resolver and the chat hook, so a `ses_…` id reaches `claude --resume`. That is wrong-harness dispatch, not degradation. Eight such defects are catalogued before any parity work. Everything else hangs off one decision: OpenCode turns are a one-shot subprocess with `stdin: 'ignore'`, while Claude turns live inside a persistent streaming session. Token streaming, mid-turn injection, background tasks, live-session enumeration and reattach-by-id are all downstream of that, and the serve that could support them is already running and used only for CRUD. The doc refuses to plan past that fork until someone establishes why the serve-based turn path was replaced. Four buckets rather than one list: broken now, Claude-has-it, neither-has-it, and what OpenCode has that Claude does not — the last because it is what disappears in a project framed as catching up. Thinking is out of scope for both harnesses by decision, and the selector is hidden rather than implemented: it renders today and does nothing on either path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
42 MiB
Languages
TypeScript
90.9%
Shell
4.7%
JavaScript
4.1%
CSS
0.2%
HTML
0.1%