Briglia CLI 0.2.38
Briglia CLI 0.2.38 (sequence 98)
You no longer have to wait for a long job to finish before Briglia listens. The main agent's ordinary requests are byte-identical to 0.2.37 apart from the image-tool wording below.
- Your message is read within about 3 seconds. If Briglia is waiting on a long Bash command, or on a general-purpose, custom or Web research subagent, and you write, that work moves to the background and keeps running while Briglia reads your message. The window is fixed at about 3 seconds from your first message and does not extend when more messages follow. Tool calls it had planned before it could see your message are not run; it re-reads and decides again (at most three times in a row).
- Background results arrive exactly once. A moved command or subagent reports when Briglia is idle, once, even across a restart or crash. Work that died in a crash is reported once as lost. A Web research call made inside a subagent keeps running with it and is charged once with it.
- No "got it" text. On Telegram a silent 👀 reaction shows the message arrived while Briglia was busy.
/statuslists background jobs./stopstops everything the agent started, including background commands, subagents and results still waiting; stopped work does not restart later, also after a restart.- Not yet in the background: Browse (browser) agents, custom agents that can drive the browser, and image generation still finish before Briglia replies.
- Generated images are sent explicitly. Briglia sees each image it generates and shares it with
send_document_to_chatwhen it chooses, instead of every image being attached automatically after the reply. - Spend limits stay complete. Every tool and subagent charge is recorded exactly once, across failed saves and restarts; when two records of one charge disagree, the larger amount counts. If a daily or monthly limit is set and some cost cannot be known (a subagent lost in a crash, an unreadable spend file), paid work pauses and says why.
/spend accept-unknownaccepts only the unknown amounts open at that moment, as $0, and keeps every known charge;/morecannot lift this pause. Without a limit the gap is only reported. Mind import and/deleteuserdatasettle pending charges first or stop without changing anything. - Storage failures never look like "empty". If the conversation file or the held-message file exists but cannot be read, Briglia holds new work, keeps the files untouched for repair, and shows the problem in
/statusand a maintenance alert; after repair and/restart, the earlier request runs first and held messages follow, each once.
Implemented by Claude on the owner's request and accepted by Codex at bb84de4 after six rounds for the Bash part and four for the subagent part. Release-only follow-up: the permission-based "unreadable file" test rows now run only as a non-root user, because the Linux CI container runs as root and root can read a mode-000 file; the decode-failure rows cover the same paths there (test-only, no product change). Evidence: mid-turn wake selftest 450/450 on macOS (five consecutive runs) and 426/426 as root on Linux, every review reproduction kept as a permanent test, dozens of mutation controls each caught by its own rows; all CI guards and both scans pass; wire 91/91 bodies identical outside the reviewed image-tool migration; the lifecycle differential passes; browser and headless tests pass.
Upgrade with /upgrade (or briglia upgrade). Phones unchanged.