Skip to content

Releases

Vigil 0.1.7

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 08 Oct 03:25

Fixed

  • A spawned Codex worker's first prompt no longer sits unsubmitted in its composer. Vigil typed the task, waited 150 ms and pressed Enter without ever checking that the Enter took. Codex started on a fresh CODEX_HOME (every Vigil node gets one) draws its composer almost immediately but swallows an Enter that arrives in the first seconds of startup, so the pasted task stayed in the box until a human pressed Enter. Injection is now closed-loop: Vigil waits for the pasted text to land and stop changing, presses Enter, confirms the box emptied, and if not re-presses Enter with backoff — but only while the box still holds exactly the text it pasted. Anything else in the box (you typing, a dialog, a cleared box) stops it at once. The same loop covers Claude Code filling the box asynchronously after a pasted image.
  • Resumed Codex nodes can no longer hit the "Update available" box. The per-node Codex config now pins check_for_update_on_startup = false; previously an injected Enter on that box would have run a global npm install.

Forensics

  • The first prompt's injection result (how many extra Enters it took, or that it stayed unconfirmed) is written to the session's orchestration.jsonl as inject_note, like every later send.

Tests

  • Closed-loop unit tests (confirmed, swallowed-once, delayed landing, partial frame, never landed, fail-open, changed under us, budget exhausted, cancel/exit) plus a gated live test against real Codex on a cold home through the product path: open loop stalls, closed loop submits with 1–2 extra Enters. 656 runtime/core tests green, terminal parity 10/10.

Auto-update

If you are on 0.1.3 or later, Vigil should offer this update automatically. Manual download: Vigil-macos.dmg below.

Vigil 0.1.6

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 07 Sep 08:20

Fixed

  • Switching to a worker or sub-manager no longer fills Claude Code's input box with an old prompt. A node that was born in the background gets its terminal surface reconstructed from the parser's screen state on first select. That reconstruction carried the alternate screen but not the mouse-tracking, focus-reporting, cursor-key and keypad modes the agent had enabled, so the surface believed mouse tracking was off while the alternate screen was on. In that state the terminal converts every scroll-wheel tick into an Up/Down cursor key, and Claude Code reads Up as history recall. The reconstruction now replays every input-affecting DEC mode the agent changed (plus kitty keyboard flags), resets before sets, and leaves untouched modes at the surface's own defaults. Root nodes were never affected because their surface saw the mode bytes live.

Tests

  • Round-trip mode equality through two parsers, the folded mouse-tracking flag, untouched modes never invented, default-on modes explicitly reset, kitty flags, and a real Claude Code 2.1.263 startup capture (alt screen + mouse + focus) as a fixture. Baseline 1062 tests, ci 4/4, terminal parity 10/10.

Auto-update

If you are on 0.1.3 or later, Vigil should offer this update automatically. Manual download: Vigil-macos.dmg below.

Vigil 0.1.5

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 31 Aug 09:41

Fixed

  • Report watchdog no longer nags workers that are legitimately waiting. A worker whose turn ended with background subagents still running (claude's turn_duration line reports pendingBackgroundAgentCount > 0) is no longer reminded to report; the decision is also deferred by a short grace so it reads the transcript line claude writes after the Stop hook fires. In an audit of 142 local sessions about 30% of reminders hit exactly this state and produced "still in progress" filler in the manager's context.
  • Watchdog arms per delivery, not per lifetime. After a worker reports, its own follow-up turns are no longer nagged; only a new manager send (any agent kind — Claude Code, Codex, OpenCode) or task re-arms it. The watchdog's own reminder and claude's <task-notification> prompts never arm it.

Forensics (orchestration.jsonl)

  • turn_errored events now carry a reason with the API error text.
  • route events carry the sender node (from); rollup text is kept up to 400 characters (was 80).
  • New report_watchdog_skipped and live_lock_swept events.
  • Stale live.lock files left behind by a dead process are swept at startup.

Auto-update

If you are on 0.1.3 or 0.1.4, Vigil should offer this update automatically. Manual download: Vigil-macos.dmg below.

Vigil 0.1.4

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 11 Aug 08:23

Fixed

  • Blank terminal pane after the app starts while the display is asleep or the session is locked (e.g. an overnight auto-update relaunch): a failed surface build now retries automatically on screens-wake / session-unlock. Works around upstream ghostty #13248 until the fix (ghostty PR #13639) ships in a packaged libghostty release.

Auto-update

If you are on 0.1.3, Vigil should offer this update automatically (first over-the-air update since Sparkle shipped). Manual download: Vigil-macos.dmg below.

Vigil 0.1.3

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 29 Jul 09:03

Auto-update arrives.

New

  • Vigil now updates itself via Sparkle 2: when a new version is available, an "Update" pill appears in the sidebar (below Search), and Settings gains an "About & Update" panel with the current version and a Check for Updates button. Background checks are silent — no popups; the standard update flow only runs when you click. Updates are EdDSA-signed and delivered through the release feed (appcast.xml). Dev builds (swift run) keep the whole subsystem off.

Install: download Vigil-macos.dmg, open it, drag Vigil into Applications. Requires macOS 14+ (Apple Silicon) and at least one agent CLI on your PATH (claude / codex / opencode). Signed and notarized.

🤖 Generated with Claude Code

Vigil 0.1.2

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 29 Jul 03:40

Bug-fix release.

Fixes

  • Theme-flip color residue fixed at the root: when the app switches between light and dark, every agent cell — mounted on screen or sitting in the background — now reliably receives the theme-change report plus a redraw nudge. Previously codex sessions froze at the old palette after a flip, and claude kept painting dark input-echo bubbles after a light→dark→light round trip (libghostty's own mounted-surface notification turned out to be unreliable, so the host now pushes it authoritatively).
  • Launcher drafts survive session switches: text (and attachment chips) typed into a project's new-chat launcher are restored when you switch away and back, and cleared once submitted.
  • Ambient COLORFGBG from the terminal that launched Vigil no longer leaks into spawned agents while the theme is still unresolved.

Install: download Vigil-macos.dmg, open it, drag Vigil into Applications. Requires macOS 14+ (Apple Silicon) and at least one agent CLI on your PATH (claude / codex / opencode). Signed and notarized.

🤖 Generated with Claude Code

Vigil 0.1.1

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 22 Jul 06:19

Bug-fix release.

Fixes

  • Dragging the bottom terminal panel's resize bar (and other pane resize handles) no longer moves the whole window — the window now drags only from the title-bar rows, and pane resizing works reliably everywhere.
  • Light-theme fix: Claude's input echo bubbles no longer render with a dark background in light mode (COLORFGBG is now seeded for claude/codex/opencode from the resolved theme).

Install: download Vigil-macos.dmg, open it, drag Vigil into Applications. Requires macOS 14+ (Apple Silicon) and at least one agent CLI on your PATH (claude / codex / opencode). Signed and notarized.

🤖 Generated with Claude Code

Vigil 0.1.0

Choose a tag to compare

@butterlatte-zhang butterlatte-zhang released this 18 Jul 06:03

First public release.

A native macOS multi-agent terminal orchestrator: manager-driven agent trees for Claude Code, Codex, and OpenCode — spawn / send / kill / report primitives, per-node replay and native resume, settings as files, built on a libghostty terminal core.

Install: download Vigil-macos.dmg, open it, drag Vigil into Applications. Requires macOS 14+ (Apple Silicon) and at least one agent CLI on your PATH (claude / codex / opencode). Signed and notarized.

🤖 Generated with Claude Code