Repository navigation
Releases
版本与发布流程:主仓库 .github/workflows/release.yml(v<version> tag 触发)+ packaging/npm/README.md。所有 GitHub Releases 是发布物的权威来源;本页保留各版本 release notes 的镜像。
发版规则(2026-10-13 起,#88):发版时机和版本号由 Haisu 决定并执行;PR 不改任何版本号;agent 只做到开 PR,只有在某一次发版被逐次明确授权时才能操作。下文 v0.3.5 记录的 "release-per-merge / 每个 PR 自带版本 bump"(PR #78)是当时的流程,已被取代,原文保留。
当前状态(2026-10-16):npm latest 与最新 tag 为 v0.3.8;三包 0.3.8 均已在 registry,latest 指向 0.3.8;npm 平台包里的二进制与 GitHub Release tarball 逐字节一致;macOS arm64 / Intel 冒烟测试由 release workflow 执行(viva --version → 0.3.8)。v0.3.7(2026-10-14)已发布,但本页没有补写它的条目,以 GitHub Release 为准。
上一次状态(2026-10-07,原文保留):npm latest 与最新 tag 为
v0.3.6;三包 0.3.6 均已在 registry,tarball 传播完成,隔离 prefix 干净安装验收通过(viva --version→ 0.3.6,arm64 平台包正确解析)。版本号 0.3.1 跳过未发布(npm/GitHub 均无 0.3.1,准备内容随 v0.3.2 发布,见下)。Release notes 的 canonical 位置是本页——自 2026-10-06 起不再在 repodocs/releases/维护。
v0.3.8(2026-10-16 · GitHub Release)
Provenance — Haisu 2026-10-16 在 #156 对应任务上逐次授权本次发版并点名 0.3.8。封板 PR #168(merge
8ecabe1),独立 QA 通过后由 Haisu 合并;v0.3.8tag 打在合并提交上,main CI 与 release workflow 均通过。能力对照表:主仓库docs/validation/0.3.8-herdr-capability-matrix.md。
-
herdr 对齐的键位和模式(PR #137、#148、#160):默认
keys.*与 herdr 0.9.3--default-config逐条一致,prefix 为ctrl+b;有 terminal / prefix / navigate 模式,另有 copy 和 resize;支持 Kitty keyboard 和 OSC 52。旧 workbench 单键(o p d f D h、单独的q、Ctrl+方向键、Ctrl+])已经删除;detach 改为prefix+q。 - server 持有 scene / tab / pane 树(PR #138):多个客户端共享同一棵树;同一个 tab 上后一次尺寸改动生效,不同 tab 互不影响;侧边栏宽度和正在看的 tab 留在各自客户端。
-
agent 徽章与 integration resume(PR #147):受控报告优先于屏幕识别;
viva integration install为 claude、codex 等写 hook,保存 resume 指针。 -
本地插件(PR #158):
viva plugin install|uninstall|list,只接受本地目录。 -
多机器(PR #159):
viva machine …和viva --machine <id>,通过 SSH 聚合多台机器。 - server 重启恢复(PR #164):server 进程退出后再启动,恢复布局、cwd 和焦点;有效 resume 才拉起 agent,否则在原目录开 shell;不复活旧进程。
- 同期合入的其他改动:原生记忆 FTS / HRR(PR #132、#135、#166)、团队技能版本与回滚(PR #161)、成员技能集(PR #162)、并发首次打开的 WAL 修复(PR #129)。
- resize 模式在默认配置下没有键能用;现在用
h/j/k/l或方向键,调整包含当前 pane 的那一层分隔。 - 每开一个新 tab 都提示
tree update failed;现在先把新 tab 存到 server,再发分屏。 - server 被杀后
viva拒绝启动;现在会启动新 server 并认领残留的 socket。 - 改名框把
Ctrl+U当成字母输入;Ctrl+方向键还会移动列表选中行。
- Claude Code 和 Codex 的屏幕规则:识别、working、blocked 已用真实屏幕核对;done 和 idle 在真实屏幕上没有固定句子,规则已清空,读数保持 unknown。其他 13 个 CLI 的屏幕规则没有核对,状态以受控报告为准。
- 多机器没有在真实 SSH 主机上走查;本次没有在 macOS 上手动走查(release workflow 在 macOS 上做了冒烟测试)。
- 排除项:插件市场和 herdr.dev、远端 manifest 热更新、Linux logind、Windows、复制 herdr 源码、用屏幕状态关闭任务、第二套命名 session。
v0.3.6(2026-10-06 · GitHub Release)
Provenance — tag 与 GitHub Release 由发布会话于 2026-10-06 20:32 UTC 创建;Wiki 条目为 2026-10-07 追补(该会话未写本页),依据 PR #82/#83 的 diff 与提交说明。
- Workbench: a moved drag must not arm the double-click reset (PR #82) — every divider grab armed the double-click detector, so grab → nudge → release → re-grab within 500 ms at the same cell reset the split to 50/50 instead of dragging (reads exactly as "the divider won't move"). A drag that actually moved the layout now disarms the double-click on release.
-
CI: rustc 1.99 clippy deprecation (PR #83) — the GitHub runner fleet moved to rustc 1.99.0, which deprecates
AtomicUsize::fetch_update(renamedtry_update; the new name is only stable since 1.95, so the rename would break older local toolchains). The call site intui/workbench/polling.rsnow uses an explicitcompare_exchangeCAS loop: identical satisfied-or-refuse semantics for the 64 KiB input-queue byte budget, compiles on every Rust version, MSRV stays 1.85.
- #82 is a view-layer interaction fix (client pane tree + persisted workbench layout); Viva data, terminals and execution state untouched. #83 is a like-for-like CAS rewrite with no semantic change.
- Local
channel = "stable"toolchains resolved different rustc versions than CI during the fleet rollover (1.95/1.98 vs 1.99), which is why local clippy stayed green while CI failed; the fix deliberately targets the portable intersection.
v0.3.5(2026-10-06 · GitHub Release)
Provenance — tag 与 GitHub Release 于 2026-10-06 18:32 UTC 创建;Wiki 条目为 2026-10-07 追补,依据 PR #78/#79/#80。
-
Terminal scene views, resilient server client, byte-boundary-safe live handoff (PR #80) — terminal scenes render real PTY output with edge-triggered polling; the server client reconnects before the idle timeout instead of going silent; live handoff now carries unfinished escape/UTF-8 byte sequences split across a transfer in a new
pending_hexmanifest field and replays them at the new host (previously lost or rendered as literal text). - Process: one-step release flow (PR #78, charter) — release-per-merge with no batching: each delivery PR carries its own version bump, merges are the release trigger, and docs-only merges consume no version and ride the next release's notes (this entry is the first ride-along).
-
Process: docs-only fast path for local checks (PR #79, charter) — docs-only diffs validate locally with
git diff --check+git status --shortand delegate the rest to required CI.
- The binary content of 0.3.5 is PR #80; #78/#79 are charter text only and consume no version number.
v0.3.4(2026-10-06 · GitHub Release)
-
Workbench mouse interaction (herdr parity, PR #73) — the interaction layer behind the 0.3.3 static visuals:
- Pane dividers are draggable: grab a divider (±1-cell tolerance), drag to resize; the divider follows the pointer without jumping (grab offset), clamps into the never-zero 10–90% band, lights up while dragging, and a double-click resets the split to 50/50. A drag is cancelled instead of resizing the wrong split if the pane topology changes under it.
- Click a pane to focus it; clicking away from a terminal releases keyboard-forwarding mode so typed keys never keep flowing to the previously focused terminal.
- The sidebar's right edge is draggable (18–36 columns, herdr's bounds) and double-click resets it to 26; the chosen width persists in the saved workbench layout (older layouts keep the default).
- Layout hit model as pure functions in
tui/layout.rs(splits/set_ratio_at_path/ratio_for_divider), asserted cell-for-cell against the drawn chrome.
- The workbench run loop discarded every mouse event while mouse capture was enabled — the terminal delivered them and viva threw them away, stealing even the terminal's native text selection. Mouse events are now routed into the app; scroll wheels and other buttons are not wired yet.
- View-layer only: drags mutate the client pane tree and the persisted workbench layout row; Viva data, terminals and execution state are untouched.
- Mouse events are consumed by the shell, not forwarded into terminal panes (children with mouse reporting keep working; forwarding, wheel scrolling, in-terminal text selection and sidebar row click-select are the next interaction slices).
v0.3.3(2026-10-06 · GitHub Release)
Provenance — 2026-10-06 从 repo
docs/releases/v0.3.3.md(PR #71 随附)迁入本页,原文未删改。
-
viva updatecompletes the upgrade by itself: after installing, a running resident server is restarted through the S3 live handoff — the freshly installed entry point takes over as the host and its terminals survive. No more manualviva server-restartafter every upgrade; reconnect the TUI when the output asks for it. - With no server running, the update says so and the next
vivastart simply uses the new version. A socket nobody answers is left untouched with an honest note — the next start claims it with a recovery record, as before. - A failed handover never fails the install (which already succeeded): the old generation keeps serving and the output names
viva server-restartas the retry. - New flag
--no-restartrestores the old split (install now, restart explicitly later).
- The restart step reuses the existing grant-gated handoff protocol; the update command itself remains user-only (member/worker contexts are still rejected) and never opens VIVA_HOME data or touches member/task/history records.
- The resumed host is spawned detached (own process group, output in
server.log), exactly likeviva server-restartspawns it today; the only difference is the entry point: the freshly installed wrapper or binary instead of the updating process's old executable. - npm upload acceptance or a green workflow alone is still not proof of a usable release — verify
viva --versionafter installing.
v0.3.2(2026-10-06 · GitHub Release)
Provenance — 由 repo 内
docs/releases/v0.3.1.md(PR #67 的发布准备)与 v0.3.2 GitHub Release 说明合并而成。版本号 0.3.1 跳过未发布:0.3.1 的准备内容随 v0.3.2 一起发布(tag 载有 crate 0.3.2;npm 无 0.3.1)。
0.3.1 was prepared in PR #67 but was not published to npm; the release shipped as v0.3.2. Includes the changes merged into main after v0.3.0:
- Workbench chrome: a herdr-style workbench with a sidebar, command palette, shared pane borders, and a client-version indicator in the status bar (PR #61).
- Canonical documentation moved to this Wiki (PR #68) — documentation-only, no binary change.
- Pane resizing now checks the minimum size of the pane being kept, and surfaces rollback failures instead of hiding them.
- Workbench QA fixes improve viewport handling, diff overlays, and split guards.
- PTY setup: retain the controlling-terminal fd through fork/exec, report
TIOCSCTTYfailures, use atomic CLOEXEC fd duplication and RAII cleanup (PR #70).
The Rust package, lockfile, GitHub release tag, npm wrapper, and macOS platform packages are versioned together. The existing tag-triggered release workflow publishes the platform packages before the wrapper; no old release tag or package was overwritten.
v0.3.0(2026-10-04 · GitHub Release)
Migrated from
docs/releases/v0.3.0.md@ 871a00a。
The V15 workbench-deepening series, grown from a day of real herdr use (V15-Workbench-Deepening), plus the QA-hardening fixes it went through.
-
File browser (V15-1):
fin the workbench opens a worktree's file inventory (porcelain statuses, changed files first).Enterviews a modified file as a diff against the worktree's recorded base SHA, or bounded content for clean/untracked files; the binary verdict is honest; paths are validated (relative, no..);eopens the file with the system opener. -
PR cleanup (V15-2): worktree rows show PR state via
gh(60s cache; unknown stays unknown).Dtwice — naming the exact path — releases and removes a worktree whose PR is MERGED, re-checked live and audited; closed/unknown states refuse. -
Agent handoff (V15-3):
hhands a worktree to another agent. The brief carries the task goal, the branch and the departing agent's last controlled summary, delivered into the new terminal; the departing terminal keeps running; the handoff lands in task history and the audit log. -
Auto-sync (V15-4):
viva sync auto-pull on|off(default OFF, persists) andviva sync status. When on, active projects' MAIN checkouts fast-forward (--ff-only, clean tree only, 5-minute TTL, off-thread, pause-gated, audited); task worktrees are fetched, never merged; rows show ahead/behind vs origin; failures degrade to a status note. -
Rate-limit recovery (V15-5): agents report
rate_limitedwith a required RFC3339reset_at; the resident server sweeps due plans once a second and prompts the terminal to continue. Plans persist across restarts; overdue ones expire with a record instead of executing blindly.viva recovery list | schedule --terminal <id> --at <rfc3339> [--task <id>] | cancel --id <n>.
The series went through six QA rounds; notable fixes: char-boundary-safe diffs, single-flight sync and fetch-gate splitting, owner-only toggles, cleanup lock split, protocol timeouts carried through, and a terminal reader that survives EINTR/EAGAIN (the CI high-volume flake root cause).
- All socket-mutating V15 requests sit behind the existing grant gate (ADR-0007); every outcome lands in the append-only event log.
- Auto-sync never merges task worktrees and never runs on dirty trees; member-initiated dispatch and stopping still require a live grant.
-
gh-derived PR state is cached for 60s and unknown whenghis absent; cleanup refuses on unknown state. - No schema migration: existing VIVA_HOME state opens as-is.
v0.2.1(2026-10-01 · GitHub Release)
Migrated from
docs/releases/v0.2.1.md@ 871a00a。设计记录见 CLI-Update-Validation。
-
viva update: upgrade this installation to a newer stable version. -
viva update --check: check the installation's release channel without replacing the executable or installing packages. - Global npm installations upgrade through npm at their original prefix, keeping the wrapper and platform package in sync.
- Standalone macOS installations use official GitHub Release artifacts: bounded HTTPS download, SHA-256 verification, version probe and atomic executable replacement. Failed native validation preserves the old binary; equal/older versions are not installed.
Older binaries do not have viva update; install v0.2.1 once first:
npm install --global @zuohaisu/viva@0.2.1
viva --version
viva update --checkFor standalone installations, download viva-macos-arm64.tar.gz (Apple Silicon) or viva-macos-intel.tar.gz (Intel) and its SHA-256 checksum from this release.
- Updates do not open/migrate VIVA_HOME, alter member/task/history records, stop agents or restart servers. Activate the installed server explicitly with
viva server-restart, then reconnect the TUI. - Native updates replace only the executable; refresh bundled Pi extension sources separately if needed. Checksums provide integrity, not an independent publisher signature.
- Local npm installs update with
npm install @zuohaisu/viva@latestinside their project. npm owns its installation/failure behavior; native atomic replacement guarantees do not apply to npm package installation. - No sudo, automatic background upgrades or overwrite of Cargo build outputs.
Viva Wiki
Charter & Product
Core-Thesis Vision Customer-Zero User-Stories Product-Model Workflows First-Usable-Version Workbench-Navigation Phase-1-Scope
Architecture
Conceptual-Architecture Domain-Model Temporal-Model Resident-Container Transition-Record
Decisions
Decisions ADR-0001 · ADR-0002 · ADR-0003 · ADR-0004 · ADR-0005 · ADR-0006 ADR-0007 · ADR-0008 · ADR-0009 · ADR-0010 · ADR-0011 · ADR-0012 · ADR-0013
Development
Rust-Rollout-Plan G0-Interface-Contracts Terminal-PTY-Selection V15-Workbench-Deepening
Research
Research-Hermes Research-Hermes-Holographic-Memory Research-Agent-Memory-Architecture Research-Orca Research-Orca-Reuse-Audit Research-Herdr-Runtime-Parity Research-VS-Code-Workspace Research-Self-Model-Relationship
Validation
V12-G1-Baselines V12-Final-Acceptance V13-Python-Retirement F01-F04-Acceptance CLI-Update-Validation
Releases & History
Releases Goal-Drift-Log Technology-Selection-Archive Start-Prompt-Track
主仓库:zuohaisu/viva · 工作规则:AGENTS.md