v0.7.2 — quit means quit
Five confirmed bugs from a full-project review, each closed with a failing test first.
Fixed
- Quit sticks. Resuming a session —
--resume,--continue, a laptop waking, a compaction — no longer brings the app back after an explicit Quit. Only a genuinely new session (or/clear) is fresh consent. - The limits poll survives a changed answer. The usage endpoint is undocumented; an unexpected response shape used to crash the poll invisibly and freeze the limits. It now reads as a failed poll, and one malformed window no longer drops the rest.
- No more orphaned MCP servers. A probed server that ignores SIGTERM used to outlive its probe and multiply every ten minutes. The teardown now escalates to SIGKILL and reaps what fell.
- A corrupted state file shows a wrong number instead of crash-looping. Eight trapping
Int(Double)conversions on file-fed values — including hand-editableuiconfig.json— now clamp. - Backups of settings.json are owner-readable only, including the first one ever taken. Born with owner bits at creation; a per-refresh sweep also fixes existing ones.
Added
- The JS→Swift and Python→Swift schema seams are pinned by cross-language contract tests — a key rename now fails a suite instead of silently emptying the menu.
The DMG is not notarized (no Developer ID yet): on first launch macOS will object — right-click → Open, or allow it in System Settings → Privacy & Security. The plugin channel and the in-app source build are unaffected.
Full details in CHANGELOG.md.