Skip to content

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