What's new in v0.3.0
Features
- Managed background processes.
terminal(background=true) now returns a stable process_id immediately, plus a session-scoped process tool with list, poll, log, wait, and kill. Incremental output with absolute offsets and a bounded rolling buffer, explicit lifecycle states, and process-group termination on kill/timeout/Stop/session close. (#9)
- Background server lifecycle.
antares serve now detaches by default and returns once the daemon owns the listener and health is ready. New antares stop (graceful SIGTERM → process-group SIGKILL) and antares status (PID, dashboard URL, version, log path). antares serve --foreground and bare headless antares are preserved for systemd/containers. Stale/reused PID files are rejected via kernel start-time, UID, executable, cmdline, and socket ownership. (#10)
- Reasoning-effort picker in the composer. Choose the reasoning effort per turn (Default / Off / Low / Medium / High) straight from the chat composer; the request value overrides the configured default.
- Correct per-model context window. The context gauge and compaction now resolve each model's real budget (e.g. glm-5.2's 1M) instead of a flat 200k default, via a per-model catalogue with a
model_meta override.
Fixes
- Context accounting. Cached prompt tokens are no longer double-counted: providers now expose a normalized context size (OpenAI/Gemini use total prompt tokens; Anthropic adds its separately-reported cache read/write), and tool schemas are included in request-size estimates so compaction fires at the right time. The runaway "3.5M/200k (100%)" gauge is fixed — it now plots the current turn's context, not the run's cumulative input. (#7, #5)
- Chat renderer hangs on long sessions. Idle
/chat/attach polls no longer re-download and re-hydrate the entire transcript every 1.5s, reconnects resume from a real cursor instead of replaying the whole backlog, and text/reasoning deltas are coalesced on both the client and the server. (#8, #5)
- Terminal hangs on non-POSIX shells. Persistent terminal sessions no longer inherit a
$SHELL such as fish that rejects the POSIX completion sentinel. (#7)
- Sub-agent workspaces. Background sub-agents inherit the parent project workspace (and honor isolated worktrees) instead of falling back to the global workspace. (#7)
- Tools page crash on ungrouped/MCP tools (
toolsets encoded as [] rather than null). (#11)
- uTLS panic (
extension already initialized) under parallel http_request, via httpcloak v1.6.8 (requires Go 1.26).
- Edit / revert the last user message now works right after a turn without a manual reload.
Notes
- Building from source now requires Go 1.26.
Thanks to @nvdorman for #7, #8, #9, #10, and #11.