Skip to content

Releases: vouchdev/vouch-desktop

vouch-desktop v1.0.0

Choose a tag to compare

@plind-junior plind-junior released this 26 Jun 15:19

vouch-desktop v1.0.0

Released 2026-06-26

A cross-platform Electron desktop GUI over the entire vouch command surface — the review-gated, local-first decision-memory knowledge base. vouch runs as an unmodified child process; the app talks to it only over its existing JSONL and review-ui transports, and never writes durable state except through vouch's own propose → approve gate.

1.0.0 reshapes the app to React + TypeScript + electron-vite — a faithful, behavior-preserving rewrite of the buildless 0.1.0 renderer, with a fully typed main/preload, a typed IPC boundary, and a generated typed method catalog.


Highlights

  • ⚛️ React 18 renderer + end-to-end TypeScript. The renderer is rebuilt as React components; main and preload are converted to TypeScript. electron-vite replaces the buildless setup, producing three typed targets (main → CJS, preload → CJS, renderer → React/ESM).
  • 🔒 Typed IPC contract. src/shared/ipc.ts declares one VouchApi interface plus every channel payload/return type — shared by main, preload, and renderer. Same channels, same semantics, now compiler-checked across the trust boundary.
  • 🗂️ Generated typed catalog. scripts/gen-methods.ts emits src/shared/methods.gen.ts (a typed Method[] + a MethodName union) that drives the form generator and gates window.vouch.call.
  • 🎛️ Same app, faithfully ported. All 11 views, the dark theme, the data-driven form generator, the result renderers, the review queue, and the dual-solve runner behave exactly as before.
  • 92 tests (Vitest) + an end-to-end runtime check (open KB → propose → review queue → approve), and a verified electron-builder package.

No behavior change vs 0.1.0. This release is an architectural reshape — if you used 0.1.0, everything works the same.

What this app does

  • One window over every command. A left rail of ten task-shaped views (Dashboard, Search & Ask, Browse, Propose, Review & Lifecycle, Sessions, Graph, Maintenance, Export/Import, Audit) plus a bespoke Dual-Solve runner. Data-entry methods get forms generated from a verified parameter catalog: typed controls, enum dropdowns, sliders, tag inputs, native file pickers, and search-backed id typeaheads.
  • The gate, made visible. Propose anything; it lands in the review queue. Approve / reject from the Review view. Nothing is ever auto-approved.
  • Capability-aware. Methods the connected vouch doesn't advertise are shown disabled and light up automatically when you upgrade vouch.
  • A companion, not just a window. Tray icon with a pending-count badge + KB switcher, native OS notifications (dual-solve ready, new proposals, process down), and a no-terminal launch flow — the app finds, launches, and supervises vouch for you.
  • Sandboxed + locked down. contextIsolation, sandbox, no node integration; a single frozen window.vouch preload bridge; a strict production Content-Security-Policy (relaxed only on the dev server for HMR).

Install & run

Linux (AppImage)

The release artifact is vouch-1.0.0.AppImage (x86-64 / amd64).

chmod +x vouch-1.0.0.AppImage

# Most Ubuntu 22.04/24.04 need the FUSE v2 lib for AppImages:
sudo apt install libfuse2        # Ubuntu 24.04: libfuse2t64
./vouch-1.0.0.AppImage

# …or run without FUSE at all:
./vouch-1.0.0.AppImage --appimage-extract-and-run

You also need vouch installed. The AppImage bundles only the Electron app, not the vouch binary. Install it so the app can find it on PATH:

pipx install 'vouch[web]'      # the [web] extra also enables dual-solve

On first launch, Open existing… a folder containing a .vouch/ directory, or Initialize new… to create one.

macOS / Windows

The build config targets dmg (macOS) and nsis (Windows); produce those installers by running npm run dist on the respective OS.

From source (development)

npm install
npm run dev      # electron-vite dev with hot reload

Other scripts: npm run build, npm test, npm run typecheck, npm run gen:methods, npm run dist.

Requirements

  • Node 18+ and npm to build/run from source (Node 20+ recommended).
  • vouch on your PATH (pipx install vouch), or set its path in the app.
  • Dual-Solve additionally needs vouch's [web] extra, git / gh / docker on PATH, the vouch/coder:latest sandbox image, and the KB inside a git repository.

Quality

  • 92 unit tests (Vitest) covering the generated catalog + enum extraction, the MethodForm.collect() parity, the form controls, the result/MethodCard rendering, the JSONL/HTTP clients, the vouch locator, and the vouch:call method-name gate.
  • Runtime-verified end to end: launched the packaged app, opened a knowledge base, proposed a claim → saw it in the review queue → self-approval correctly blocked → cross-agent approve produced a durable artifact.
  • Packaging verified: the built AppImage boots and the asar bundles the compiled out/ output.

Known limitations

  • The CLI-only orchestration commands auto-pr, migrate, schema, and sync-check / sync-apply are not yet surfaced in the UI.
  • A bundled, frozen vouch (PyInstaller) for zero-Python installs is scaffolded (scripts/freeze-vouch.sh slot + extraResources) but not built — for now, install vouch with pipx on the target machine.

Full changelog: see CHANGELOG.md. License: MIT.