The agent-ergonomics release: every item shipped here came out of using VibeFrame for real — the six-item friction backlog from live-agent dogfooding (2026-08-23), plus defect fixes from a full hands-on QA/UAT field test (2026-08-27). Nothing speculative.
Added
vibe_linkaction: "unbind"— remove exactly one step or component binding (no index check; removing dead bindings is the point). An unbind + bind pair in one call replaces a stale binding without re-declaring the whole capability.- Callback symbols (TS/TSX/JS) — registration-style handlers index as bindable symbols with deterministic names: commander actions (
command(status).action), route handlers (get(/api/meta)), tool registrations (registerTool(vibe_link)). CLI and server glue no longer forcesdeclared-onlyfile bindings. Only multiline anonymous callbacks on method calls with a string-literal anchor qualify; iteration/continuation glue never synthesizes a symbol. SQLite index schema is now v2 — existing indexes rebuild automatically on first contact. vibe_validate(andPOST /api/validate) returns the standing open findings — compact, severity-ranked, capped at 10 — alongside counts and deltas. No second query needed to see what is still wrong.- CI-gate coverage —
vibeframe validateexit codes (0 clean / 1 on open error findings, in both offline and daemon modes) are locked in by the dogfood suite; the CLI reference documents the one-line CI recipe.
Fixed
vibe_linkrejects unbindable file targets upfront with guidance — unindexable files (docs/config), globs matching nothing, and non-repo-relative paths return a note plus path candidates and write nothing, instead of landing and erroring later asbroken-binding. Just-written files are indexed on demand before judging, so a correct link never bounces on the watcher race.vibe_decideis idempotent — an identical retry returns the existing decision instead of minting a duplicate ADR; a same-slug conflict is refused with guidance to passsupersedesor pick a new slug.vibe_taskfinish warns when error findings remain open — finishing over a failing CI gate never looks clean.vibeframe validategates on authored-model parse errors in daemon mode too, matching offline behavior.vibe_linksymbol candidates are similarity-ranked (edit distance) — a typo's nearest neighbor comes first.- Two component-glob binds in one call no longer overwrite each other; YAML lists grown from empty write block style, never flow.
Install
npm i -D vibe-frame-cli # command: vibeframeRegistry-free: the attached tarballs install directly (npm i -D ./vibe-frame-cli-0.2.0.tgz after installing its five vibe-frame-* dependency tarballs). All six packages are published with npm provenance attestations via trusted publishing.
Full details in CHANGELOG.md.