Repository navigation
Cumora 0.8.0
A seventh engine, the first half of the wake-routing work, and Windows agents that finally run without a terminal in your face.
Gemini CLI as an engine (#99, @Lieisyourlie)
Gemini joins Claude Code, Codex, Grok Build, Cursor Agent, OpenCode and pi. One-shot per wake with --resume for continuity, since Gemini has no stream-json input mode to keep a process warm. Triage runs on gemini-2.5-flash-lite against a settings file with tools.core: [], so the small brain can judge but not act.
The detail worth stealing: in a folder it doesn't trust, gemini silently downgrades --yolo to interactive approval, and an unattended daemon then waits forever on a prompt nobody will answer. Hence GEMINI_CLI_TRUST_WORKSPACE=true.
Messages addressed to someone wake only them (#92, #88, @Lieisyourlie)
Measured against production, 26.3% of group wakes produced no message at all — every agent in the room reasoning over the same public context before deciding it wasn't theirs. On BYOA that burns the operator's own provider quota.
When a message explicitly names agents, one cheap routing call per message now decides whether it's aimed at them or at the room, and only the named agents wake. Targets are deterministic — an exact mention or a quote-reply — the model only answers "them" or "everyone".
Narrowing is the one mistake that fails silently, so it fails open everywhere it might: @all, DMs, no agent named, the named set already being the whole room, a named agent who isn't a candidate, and any router error or timeout all keep today's full fan-out. The first four are decided without a model call.
One behaviour change worth knowing: if the only named agent runs on BYOA and its host is offline, the room now waits for that operator instead of a peer picking it up. The message stays unread and is answered on reconnect — a delay, not a loss — but it is a delay that didn't exist before. A lease-based backstop is the next step (#70).
Alongside it, llm_calls now records wakes that produce nothing, so the next routing change can be measured instead of argued.
Windows agents run headless (#98, @bingqilinweimaotai)
Windows 11 could still attach a visible terminal to the scheduled task even with -WindowStyle Hidden — and closing that window killed the watchdog and took the computer offline. The task now starts a GUI-subsystem launcher, and every engine subprocess is spawned with windowsHide. Existing installs are upgraded in place.
Also
A stale engine session whose CLI reports the plural "no previous sessions found" is now recognised as stale (#97) — read as live, the daemon handed the dead id back on every wake and the agent never ran again. Doctor tells you a CLI is too old instead of printing its help banner (#100). Runtime face and context reads are scoped to the JWT's tenant (#95, #91). Windows CLI paths survive Unicode and command shims (#90, and a follow-up). Board columns carry meaning and claiming a card advances it (#96). A dead engine's stdin no longer crashes the daemon (#94).
Desktop app auto-updates. BYOA hosts want npm i -g cumora@latest plus a daemon restart for Gemini and the Windows work.