Skip to content

v0.2.0

Choose a tag to compare

@saucam saucam released this 06 Jul 03:06
· 185 commits to main since this release
84a6446

codeoid v0.2.0 — the package family release

codeoid is no longer one npm package: the wire protocol and the client core now ship standalone — @codeoid/protocol and @codeoid/core — one source of truth shared by the daemon, the web UI, and the mobile client that's next. On top of that: a hardened wire protocol, two security fixes, and a substantial performance pass.

Highlights

  • @codeoid/protocol — typed client↔daemon contract (messages, scopes, published input limits) with optional runtime-validation schemas (@codeoid/protocol/schemas) (#101, #102, #105)
  • @codeoid/core — framework-agnostic client core: reconnecting WebSocket transport, transcript store semantics, resume cursors, display helpers — build a codeoid frontend without re-implementing the hard parts (#115)
  • Long tasks no longer get killed — the 300s stall watchdog paused during tool execution and pending approvals, so multi-minute research/exploration runs survive (#104)
  • Cheap reconnects — incremental resume replays only what changed since your cursor, not the whole scrollback (#103)
  • One prompt, one bill — send idempotency dedupes ambiguous-delivery retries (#103)

Security

  • Untrusted model/tool output sanitized before dangerous sinks (terminal output, markdown link/image URLs) (#91)
  • Cross-tenant memory disclosure fixed — workspace ids are now tenant-scoped (#93)

Protocol & reliability

  • Typed auth handshake with bidirectional capability negotiation (#102)
  • All inbound frames schema-validated; oversized prompts rejected as a token-bill safety net (#102)
  • Large-session scrollback replays chunked + drain-paced — no more backpressure lockouts on attach (#84, #100)
  • Client core hardening: auth-handshake deadline, connect-join semantics, duplicate-request-id guard, subscriber-fault isolation (#115)

Performance

  • Daemon event loop unblocked on status flips, workspace probes, and fs.list (#95) · transcripts bounded with rotation + tail-load (#96)
  • Memory recall: vector cache appended not cleared (#94); clustering single-flight with yielding k-means (#97)
  • Web streaming: no full markdown re-parse per delta (#98); O(1) reducer lookups (#99)

Models

  • Live model catalog persisted across restarts, provider-agnostic — no more stale hardcoded picker (#78, #79)

Full changelog: v0.1.3...v0.2.0 · Detailed entries in CHANGELOG.md

What's Changed

  • fix: refresh stale fallback model catalog to current Claude models by @saucam in #78
  • feat: persist the live model catalog so restarts serve current models by @saucam in #79
  • fix: sanitize untrusted terminal output and markdown link/image URLs by @saucam in #91
  • fix: tenant-scope memory workspace ids so co-located accounts can't cross-read by @saucam in #93
  • fix: append to the vector cache on embed instead of clearing it by @saucam in #94
  • fix: stop blocking the daemon event loop on status flips, workspace-id probes, and fs.list by @saucam in #95
  • fix: bound transcript growth and resume cost — rotation, streaming tail load, output cap by @saucam in #96
  • fix: share clustering per workspace — single-flight, lean hydration, yielding k-means by @saucam in #97
  • fix: stop re-parsing the whole markdown message on every streaming delta by @saucam in #98
  • fix: O(1) positional lookup in the web streaming reducers by @saucam in #99
  • fix: chunk large scrollback replays to avoid WS backpressure lockout (#84) by @saucam in #100
  • feat: extract @codeoid/protocol workspace package (P0) by @saucam in #101
  • feat: typed auth handshake, capability negotiation, inbound validation (protocol P0, 1/2) by @saucam in #102
  • fix: stall watchdog no longer kills long-running tools by @saucam in #104
  • feat: seq-based incremental resume + send idempotency (protocol P0, 2/2) by @saucam in #103
  • feat: web consumes @codeoid/protocol — retire the hand-maintained mirror by @saucam in #105
  • feat: extract @codeoid/core — framework-agnostic client core (P0, final) by @saucam in #115
  • chore: release v0.2.0 by @saucam in #116
  • fix: complete the 0.2.0 changelog — security, performance, model catalog by @saucam in #117

Full Changelog: v0.1.3...v0.2.0