Files
platform/TODO.md
T
pastilhasandClaude Opus 5 6b8cf848ff a turn this tab did not start is still a turn in progress
"Turn finished · no closing message" kept appearing over an agent that was
plainly still working, with output resuming a moment later.

isGenerating was set in exactly three places: sendPrompt, and the two reconnect
handshakes. So it answered "am I waiting for a reply I asked for", never "is
this conversation working". Every other way a turn begins left it false — a
commander waking on its own schedule, a queued prompt the server delivered,
another tab driving the same session, or a turn that started before this tab
was looking. The events still render, but buildRows reads isGenerating to
decide whether the last turn is finished, so a live turn was `complete` and the
moment it sat on a completed tool call with nothing said after it, the banner
fired. Same gap left the composer enabled mid-turn, and a message typed then
was not marked injected — which splits the live turn and prints the banner a
second way, the exact failure injected exists to prevent.

session:claude now sets it: the harness's own turn-start signal, and the only
one that arrives before any work does. tool:start sets it too, because
session:claude is not durable and a socket connecting mid-turn never receives
one, while a tool cannot start outside a turn.

Two candidates were measured rather than argued. A genuinely silent turn ending
earns the banner honestly, but 667 of 673 recorded turns end with
assistant:text immediately before result, so that is ~1% and cannot be it. And
a stale sync:live is real but rare: correlating every attach in the officer log
against the agent's own later output, 15 of 549 "not generating" attaches were
contradicted and one provably so. That residue is left alone — the tool:start
fallback now corrects it on the next event — and noted on the refresh card,
which is the same seam.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: f7a62308-0977-4cf4-aa29-c020853fd420
2026-08-25 15:27:49 +00:00

5.9 KiB

TODO — the index

Deferred work. The items live in todo/, one file each, grouped by theme; this file is the map over them and is GENERATED — run bun run todo:index after any change rather than editing it here. Format and the two-way-sync contract: todo/README.md. Browse and edit it at /todos in the app.

Context, corrected 2026-08-07. This list used to open by saying Officer was "collapsing from multi-tenant / open-source-ready to a single-user platform", and told you to treat multi-tenant indirection as accidental complexity. That direction was reversed. The permission model shipped on 2026-08-07 to serve a real goal — deploy to the company server, onboard people, give each one their own Gitea account through the platform. Per-user scoping is now a requirement, and the items that proposed deleting it have been removed rather than left to mislead the next reader.

What did NOT reverse: execution permissions (terminal, chat, tasks, files, desktop, browser) run as the owner's OS user and can never be granted. Indirection there really is accidental complexity.

Urgent

Themes

97 open, 31 closed, across 32 themes.

Theme Open Closed
Affordances 2 0
Agents coordinating agents 3 0
Speaking into a session from the backend 1 1
Backburner 3 0
Background jobs 2 1
Chat interface 1 0
Code editor 1 0
Components — the shared UI layer 1 0
File watchers 1 0
Fleet — one command across every server 5 2
Headscale 0 5
Infra (alpha) 7 0
Known bugs 5 4
Memory — one store instead of per-harness files 1 0
Mobile apps 4 0
Multi-user 17 5
Notifications 1 0
Plugin ecosystem — before it opens to third parties (2026-08-18) 3 0
Plugin infrastructure 2 0
Plugin repos — what writing their READMEs turned up 10 9
Plugin system — gaps the email extraction found (2026-08-18) 3 0
Prompt library 1 0
SendOff 1 0
Settings — portable, and readable by an agent 2 0
Shell — spotlight and the dock 4 1
Sub-agents — agents spawning agents 0 2
Sudo terminal modal 1 0
Tooling — the list about the list 0 1
Transmission 6 0
URL state — routing, query strings and selection 4 0
Waiting on the owner to run it 3 0
Workspaces & Panels 2 0

Records — no items, kept for the reasoning

Newest ten