Repository navigation
[0.3.1] — 2026-10-12
OpenCode joins Claude Code, Codex and Pi as a fully supported harness:
passive capture, /wrap, transcript import and task binding, all
observed live on OpenCode 1.19.0. The same testing found capture gaps
that affected every harness: chained and quiet commits, gh pr calls,
and retrievals through Claude Code's plugin route.
Upgrade notes
- OpenCode users: run
weave install --harness opencode, then
weave hooks install --harness opencode --scope user. Dispatch
opencode runwith stdin from/dev/null, or it hangs. - Claude Code and Codex users on the settings-file hook route: rerun
weave hooks installto pick up the new PostToolUse matcher. The old
entry is rewritten in place. The plugin route needs nothing.
Added
- OpenCode at Pi parity (E3) (#195):
shims/opencode/maps
OpenCode's plugin hooks onto the canonical events. It synthesises
SessionStart, injects context through the system-prompt transform, and
mapschat.message,tool.execute.afterandsession.idle. Its
shell.envhook exportsOPENCODE_SESSION_IDandTHINKWEAVE_HARNESS,
soweave session-idand/wrapresolve the live session. Worker-free
commands link into~/.config/opencode/commands/(/wrap,/brief, …).
Every mapped event was observed firing on OpenCode 1.19.0. Install with
weave install --harness opencodeand
weave hooks install --harness opencode --scope user. weave import opencodereads OpenCode's SQLite store (read-only),
andopencode_digestreads a bound worker session for task closes.weave install --harness opencodehides the Codexthinkweave-*
skill projections throughpermission.skillinopencode.json.
OpenCode scans~/.claude/skillsrecursively, so aweave dev-link
checkout exposed them beside/wrap. A rule you set yourself is kept.
Fixed
weave_createacceptsconcepts/proposed_conceptsas top-level
arguments. They were dropped silently before. The reply now reports the
concepts that landed, warns when a note has none, and names ignored
arguments.- MCP dispatch decodes JSON-encoded strings where a tool's schema wants
an array or object. Some models sendconcepts="[\"a\"]". - The PostToolUse hook dropped every chained commit
(git add … && git commit …) on every harness: the significance gate
read only the first segment. - A commit made with
git commit -qor-F -lost its hash, because
the parser reads the[branch hash]line those flags suppress. The
parser also recordedgit push's[new branch]line as the commit
message. The hook now falls back to HEAD when HEAD is under two minutes
old. - Mutating
gh prcalls (create, merge, close, …) are captured. The
session note gainspull_requestswith the action, number and URL. - Retrieval logging missed every call through Claude Code's plugin route
(mcp__plugin_thinkweave_thinkweave__…). The PostToolUse matcher
covers both names, and a reinstall rewrites the old matcher in place.