Skip to content

Releases: Lockyc/warden

warden 0.4.0

Choose a tag to compare

@Lockyc Lockyc released this 30 Jun 23:21

Features

  • Window menu — a new Window submenu lists every configured window: open ones carry a checkmark and raise on select; closed ones show (closed) and reopen on select (restoring persisted size/position, tabs cold). ⌘⇧T reopens the most-recently-closed window. The menu rebuilds on any window-set change (open/close/reopen).
  • Global density setting"comfortable" (default) or "compact", a proportional ~0.85× scale of the whole chrome type + spacing hierarchy. Hot-reloads live without a relaunch; mirrors curator's density mechanism.
  • notify_debug config flag — traces the notification path to /tmp/warden-notify-dbg.log for diagnosing missing banners (see docs/notifications.md).

Fixes & changes

  • Probe: canonical command is now amux --probe — delegates the agent/frame socket layout to amux instead of hand-inlining tmux has-session legs that drift silently. The probe also lights for a lingering amux frame (agent exited, frame still up); the example kill reaps the whole frame.
  • Tab-bar treatment converged with curator — row/header type scale, a larger leading window title, and status dots bumped to match the tab scale.
  • Rust toolchain pinned to 1.96.0 (rust-toolchain.toml) so formatting and lints are identical across the config-core-sharing repos.

Docs

  • New docs/notifications.md — full write-up of the macOS-26 notification path and the OS-side banner regression.

warden 0.3.1

Choose a tag to compare

@Lockyc Lockyc released this 30 Jun 07:14

Fixes

  • GUI-launched tabs with a bare-name shell no longer die exec: <shell>: not found. A config shell = "fish -l" (what the shipped examples/config.toml seeds) failed when warden was launched from Finder/Dock/Spotlight, because a .app inherits only the minimal launchd PATH (no /opt/homebrew/bin). warden again imports the login-shell PATH at startup (restore_login_path), so bare Homebrew/nix shell names — and bare tmux in a probe — resolve from any launch context. The absolute-$SHELL login-shell default for the unset case is kept; the two compose. This restores behaviour a prior refactor had regressed.

Note: non-PATH shell exports (e.g. $AGENTMUX_AGENT_SOCKET) are still not imported — keep targeting tmux's default socket (no -L) in probes/kill.

warden 0.3.0

Choose a tag to compare

@Lockyc Lockyc released this 30 Jun 02:24

warden 0.3.0 — session kill, login-shell terminals, and DPI/robustness fixes.

Features

  • kill — a companion session-kill command. New cascading optional config field (global → window → tab, "" opts a level out). Triggered by a two-step confirm on a tab's cyan presence dot: a full-row red confirmation with destructive iconography (✓/✗, no timeout, disarms on ⌘W). Runs fire-and-forget, severs the session without unloading warden's terminal surface (you're left at a live shell prompt), then re-probes to drop the dot.
  • Default shell is now your login shell, run as login — warden behaves like a terminal. When no shell is set, warden spawns $SHELL -l (absolute path from launchd), so GUI-launched tabs find their shell without the minimal-PATH trap. Login PATH is imported at startup.
  • Hot-reloaded tab metadata applied in place. A kept tab's group/probe/kill change is now detected (set_meta) and applied live — sidebar re-section, new probe/kill picked up on the next poll — without respawning the terminal.

Fixes

  • Terminal no longer mis-scaled after a DPI/monitor change. The render layer's contentsScale now tracks the backing scale (the dead respawn_on_scale_change path was removed in favour of the real fix). Verified on hardware.
  • A surface that fails to spawn degrades to a cold tab instead of panicking the whole app out of startup; the reason surfaces in the chrome error banner.
  • Window-state is scoped per config, so the example/test config (just run) no longer inherits your production window sizes/positions.

Docs

  • README/CLAUDE.md reconciled (sign+notarize when Apple env present; probe/kill PATH guidance); CLAUDE.md footguns trimmed of past-facing narration.

Full changelog: v0.2.1...v0.3.0

warden 0.2.1

Choose a tag to compare

@Lockyc Lockyc released this 29 Jun 05:39

Documentation patch — no code changes.

Docs

  • Reconciled docs/FOLLOWUPS.md and PROVENANCE.md after the config-core extraction: dropped stale colour.rs references (that code now lives in the shared config-core crate).
  • Retired the obsolete "Plan 2 / Spike S / not production" planning vocabulary now that warden-app is shipped — reframed as deferred hardening on the released app, keeping every real deferred item. Also removed a tracked-doc pointer at ephemeral scratch.

Install / update: curl -fsSL https://raw.githubusercontent.com/lockyc/warden/main/install.sh | bash (or /warden:install). macOS; unsigned local build.

warden 0.2.0

Choose a tag to compare

@Lockyc Lockyc released this 29 Jun 05:16

Second release. Headline: warden now installs from source with one command.

Added

  • Claude-Code installer — a self-sufficient install.sh (builds from source, installs warden.app to /Applications, manages a persistent ~/.warden clone, seeds ~/.config/warden/config.toml) plus a guided /warden:install command that checks prerequisites and walks through setup. One-liner:
    curl -fsSL https://raw.githubusercontent.com/lockyc/warden/main/install.sh | bash
  • Click a terminal-notification banner to surface its window and focus the originating tab.
  • Blank-background placeholder shown when a window has no tab selected.

Changed

  • House-style TOML formatter + colour parsing extracted to the shared config-core crate (shared with curator).
  • just deploy now delegates its build+install to install.sh (single source of truth for the deploy flow).

Docs

  • README Features/badges/hero refresh; CSP-shipped and public-repo status reconciled across docs.

Install: curl -fsSL https://raw.githubusercontent.com/lockyc/warden/main/install.sh | bash (macOS; needs Xcode CLT + Rust — the installer handles the Tauri CLI). Unsigned local build, not notarized.

warden 0.1.0

Choose a tag to compare

@Lockyc Lockyc released this 29 Jun 03:25

First public release of warden — a config-driven terminal multiplexer for macOS. One TOML file defines your windows and the project tabs inside them; warden materializes itself from that config and hot-reloads on save.

Config core — warden-config crate + warden CLI

  • TOML schema → parse / validate / resolve: defaults, ~ expansion, and a shell / cmd / probe cascade (global → window → tab).
  • Hot-reload diffing (reconcile) and a notify-based file watcher.
  • House-style TOML formatter (embedded taplo) exposed as warden fmt (with --check) and an optional format_on_save.
  • warden validate prints the resolved window/tab tree + warnings.

macOS app — warden-app (Tauri + libghostty)

  • A native window per [[window]] with a colour + title banner; curator-style draggable sidebar under an overlay titlebar.
  • Embedded libghostty terminal surfaces behind a TerminalSurface seam; tabs lazy-spawn on first focus (load_on_open spawns eagerly and stays running).
  • Grouped tabs (cosmetic sidebar sections), a live/cold dot with hover-✕ unload, terminal notifications (OSC 9 / OSC 777 desktop banners + bell badges), and a cyan session-presence probe dot.
  • Live hot-reload (open / close / recolour / re-section), a diagnostic window for a missing/invalid config, an error banner that keeps last-good windows up on a bad edit, and per-window size/position persistence.
  • Tab navigation via the app menu: ⌘⇧[ / ⌘⇧] cycle loaded tabs, ⌘1–⌘9 jump (or ⌘1/⌘2 cycle via tab_digit_keys = "cycle"); ⌘W unloads, ⌘⇧W closes the window.

Platform & packaging

macOS only. Local builds via just build / just deploy (code-signed with a local Apple Development identity if present, otherwise unsigned; not notarized for distribution to other machines).

Notes

The vendored libghostty is a throwaway prebuilt; a controlled upstream source build is deferred (blocked on a Zig 0.15.2 / macOS 26 SDK mismatch). See docs/FOLLOWUPS.md for tracked deferrals.