Skip to content

v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Sep 08:29
· 32 commits to main since this release
v1.1.0
6b6e893
OpenCode-Mesh Logo

OpenCode-Mesh v1.1.0

Released September 21, 2026


What's Changed

Added

  • CLI grew a gc verb with --json output, per-verb --help on every verb, multiword send text, --json flags on peers and send, snapshot restore on uninstall, and a purge fallback that reports its method (gate: E2E suite spawning the real binary plus codecov/patch green)
  • Keychain reads gained a non-blocking path with Linux secret-tool fallback sharing the existing TTL cache, wired into the enumerate probe (gate: fallback tests failing before, green after)
  • Enumerate probes cap response bodies at 1MB, hashing over-cap bodies empty while small bodies fingerprint byte-identical (gate: over-cap and completion tests failing before, green after)
  • Install docs lead with the platform path (plugin entry plus skill by name) with the custom installer kept as a documented alternate (gate: skills CLI discovery verified live against this repo)

Fixed

  • Fix fresh installs writing invalid JSON on empty plugin configs by taking a no-leading-comma branch on blank object bodies (gate: matrix test asserting JSON.parse over three empty shapes)
  • Fix corrupt registry wipes by refusing writes on present-but-unparseable stores with STORAGE_CORRUPT, leaving entries intact (gate: garbage-seed test asserting survival plus the throw)
  • Fix GC deleting concurrent joins by snapshotting candidates read-only and re-validating inside the single writer (gate: mid-sweep join repro asserting survival)
  • Fix per-sweep trashing of live state by gating deletion behind legacy-directory detection, leaving live outbox and token paths alone (gate: live-plus-legacy seed test)
  • Fix transient direct failures dropping by routing 429, 5xx, and network faults to the claim leg; 404 misses keep PEER_NOT_FOUND with didYouMean, 401 keeps UNAUTHORIZED, and direct 429 now queues instead of surfacing (gate: two-leg test with typo target plus stubbed 500 and 429)
  • Fix broadcast dropping its tail by removing the mid-fanout 413 rethrow and reporting every peer in the failed list (gate: three-peer fan-out with middle failure)
  • Fix sandboxed roots sharing the live lock by threading an optional root through withRegistryLock from every writer (gate: two-root test asserting per-root lock files)
  • Fix forged direct senders by re-attesting the sender against the live registry on the direct leg, marking unknown senders quarantined (gate: unknown-agent send asserting the marker)
  • Fix status-only sessions reading as attached by conferring attached from the ps oracle alone (gate: ps-plus-status feed asserting only ps ids attach)
  • Fix empty status views clearing markers by treating null and empty maps as no-evidence past grace (gate: marker held across an empty view)
  • Fix permission faults misclassified as contention by narrowing isLockContention and the lock loop to EEXIST only, so EACCES throws loud instead of degrading register to busy: true (gate: injected EACCES asserting the loud throw)
  • Fix delivered rows re-claimable in the take window by adding the delivered_at IS NULL exclusion as defense-in-depth (gate: deliver-then-claim asserting zero rows)
  • Fix leading lookalike markers passing quarantine by tagging at any position when enabled (gate: index-zero feed asserting the tag)
  • Fix peers display mutating the registry by removing the persist from the read path, output byte-identical (gate: dead-id list asserting byte-identical registry)
  • Fix full-disk misses on the Node driver by also mapping numeric errcode 13 to STORAGE_FULL, proven against real full disks on both drivers with no permission shape colliding (gate: exact Node error-shape replay)
  • Fix unknown commands exiting 1 by printing usage and exiting 2 under the usage contract (gate: E2E spawn asserting code plus stderr)
  • Replace the dependency-review deny list with the allow list for MIT, Apache-2.0, ISC, BSD-3-Clause, MPL-2.0 (gate: CI green)

Removed

  • Drop the broadcast mutant probe and registry retention probe: both read repo source and asserted on text, banned under the vitest rules, with behavior already owned by gate and prune tests (gate: full suite green minus two plus a repo-wide source-read sweep)

📖 41 Commits since v1.0.1
Commit Description Author
6b6e893 chore: cut 1.1.0 release prep Division 7
202baae docs: correct 22 inaccuracies since 1.0.1 Division 7
bfcddcb docs: changelog entries for all changes since 1.0.1 Division 7
06c62bd docs: platform install primary, custom installer alternate Division 7
c1617c2 docs: platform install primary, custom installer alternate Division 7
1b327ef test: drop redundant keychain fork-count assert Division 7
2aaa0c8 test: drop source-scraping probes, behavior tests own the pins Division 7
cbc3d94 fix: unknown command exits 2 with usage Division 7
a2f6928 fix: map node driver errcode 13 to STORAGE_FULL Division 7
42e3e1e fix: contention helper reads EEXIST only, EACCES throws loud Division 7
095f977 test: cover keychain async success and bare-variant legs Division 7
9af24a8 fix: async keychain read with secret-tool fallback Division 7
959f294 test: cover enumerate stream completion and small-body legs Division 7
0592705 fix: bound enumerate response body to 1MB Division 7
09faf23 test: cover purge tiers and empty snapshot lookup Division 7
fa000bf test: cover snapshot lookup paths Division 7
849cc7d test: cover restore without snapshots Division 7
1492c51 feat(cli): snapshot restore plus purge fallback Division 7
fa5f7be chore: stamp build version Division 7
3d2cc7b feat(cli): flags, multiword send, per-verb help Division 7
6f01446 docs: update docs to link agent skill Division 7
463e8a7 feat(cli): add gc verb with json output Division 7
39dba56 fix(peers): display never mutates the registry Division 7
3a9bdd9 ci: replace deprecated deny-licenses with allow-licenses Division 7
13b842b fix(quarantine): tag lookalikes at any position Division 7
088364c fix(outbox): exclude delivered rows in claim take Division 7
32f16b4 fix(lock): permission denial fails fast, not contention Division 7
8f5cf51 fix(attach): empty views keep markers for lack of evidence Division 7
3b58fc8 fix(attach): attach from ps only, never status Division 7
8bdef0e docs: restructure install instructions Division 7
8d86206 fix(send): attest direct senders, quarantine the rest Division 7
74740f0 fix(lock): scope registry locks per mesh root Division 7
9cc9a23 docs: edit opencode v2 support message Division 7
b59ea5c fix(send): report full failed tail on broadcast Division 7
7713d51 fix(send): queue transient direct failures, misses stay loud Division 7
4878c4f fix(gc): trash only legacy directories, keep files Division 7
b23b4c0 test(matrix): retain rationale-only inline comments Division 7
090e30d fix(gc): prune on live data so concurrent joins survive Division 7
55257bd docs: note v1 compatibility window plus stamp build version Division 7
7fcbae9 fix(registry): refuse writes on corrupt store with STORAGE_CORRUPT Division 7
8e985ff fix(install): write valid JSON for empty plugin config Division 7

View Complete Changelog →