v0.9.2
Added
- Every attempt now records the model that ran it, not just the agent. Resolved at launch alongside the agent (
runner.ts), it lands on theAttemptRecord, onpulse.jsonwhile a session is live, and inrun-log.md's launch line - surfaced in the panel's milestone cards and attempt tables, the standalone report, andmilestoner status. The field is a plain config string, the same one already threaded throughagent.modelArgs, so it needed no per-agent logic: it records correctly whatever the agent, Claude, Codex, or a fallback under any name.
Changed
The panel got a pass on its rough edges and its visual identity:
- The "watch the live transcript" button did nothing when clicked, and the per-attempt "transcript" link and both unblock buttons had the same bug: each built its
onclickattribute by splicingJSON.stringify(...)straight into a double-quoted HTML attribute, andJSON.stringify's own quotes closed the attribute early. The value is now HTML-escaped before it goes in. - The report link fell back to unstyled browser-default blue with no CSS of its own. It is now a real button, styled like every other action on the page, and opens in a new tab so the live panel is not lost.
- The transcript viewer scrolled sideways on long lines. It now wraps and scrolls vertically only.
- The config editor had no guidance on what it accepts. A collapsed reference now documents every field plus copy-paste agent blocks for Claude, Codex, and Ollama-via-Codex.
- IDs, timestamps, durations, and agent/model names now render in a tabular monospace face throughout (stat tiles, milestone cards, attempt tables, lint findings, activity log, interventions), while narrative text (the verdict, a diagnosis, evidence) stays sans-serif - a console feel that fits a coding-agent supervision tool better than a generic SaaS dashboard. Added
:focus-visibleand:activefeedback, previously absent on every control. - Zero em-dashes left in visible panel text.