todo + terminal-rendering: ctx-badge cold-load, auto session-reset, more coherence-pass gripes

This commit is contained in:
müde 2026-05-18 18:00:46 +02:00
parent 9995bbc891
commit 8a3e8bfb7f
2 changed files with 98 additions and 0 deletions

View file

@ -71,6 +71,56 @@ shared `.live .<class>` styling).
autonomous harness chatter; nothing flags them as "operator
initiated."
7. **Turn-start / turn-end are visually overweight**: the
triggering event row + the closing row both get bold text,
top margins, and a full coloured background tint. The
coloured left rule alone already says "this is a turn
boundary" — the heavy chrome adds noise without information.
Drop the bold/margin/tint, keep the left rule.
8. **Left-alignment is incoherent across row types**: the `▸`
disclosure marker on expandable rows doesn't sit in the
same column as flat-row prefix glyphs (`→`, `←`, `·`), so
the prefix column wanders by row kind. Expandable tool_use
(`→ Name …`) and expandable tool_result (`▸ ← Nl …`) use
different layouts from each other too. Pick one prefix
column and align every row kind into it; the disclosure
marker should be visually inside that column, not pushed
to the side.
9. **Continuation lines aren't inset**: when a row's body
wraps (e.g. `→ foo bar baz quux …`), the second visual
line starts at column 0 rather than under the `f` of
`foo`, so wrapped content blurs into the next row. Want a
`text-indent` / hanging-indent rule so continuation lines
align with the start of the body, not the prefix glyph.
10. **Most message-bearing rows are collapsed by default**
even when the body is the whole point: `send`, `recv`,
`ask`, and friends hide their text behind a `<details>`
summary. The summary headline is rarely enough context.
Want these expanded by default, with collapse reserved
for genuinely heavy payloads (multi-page diffs, long
tool_result blocks).
11. **Tools from extra MCP servers aren't pretty-printed**:
`renderRichToolUse` only special-cases the built-in
hyperhive tools (Write/Edit/send). Anything coming from
`extraMcpServers` (matrix, bitburner, …) falls through
to the generic `→ Name args…` JSON dump. Either a
plugin-style hook in the renderer map, or at minimum a
nicer generic args-pretty-printer that handles common
shapes (single string arg, single dict arg, etc.).
12. **No markdown rendering on message bodies**: `send` /
`recv` / `ask` / `answer` / agent text content all
arrive as markdown-flavoured prose (bullets, fenced
code, bold, links) but render as raw text. Want a
minimal markdown pass — at least lists, fenced code,
inline code, bold/italic, links — applied to message
bodies and probably to the `assistant.content[].text`
`.text` row.
## Suggested coherence pass
Pick one scheme and audit all renderers to match. A concrete
@ -96,6 +146,48 @@ The `.sys` catch-all should escalate visually — a louder
shapes for future fix-up rather than hiding them in the muted
note stream.
### Layout rules to apply uniformly
- **One prefix column for every row kind** — flat rows and
expandable rows alike. The disclosure marker (`▸`) lives
inside that column, not as a separate gutter, so glyph
alignment doesn't shift between row types.
- **Hanging indent on wrapped bodies** so continuation lines
start under the first character of the body, not under the
prefix glyph. Probably `display: grid` with
`grid-template-columns: <prefix-col> 1fr` per row, or
`text-indent`/`padding-left` with negative `text-indent`.
- **Turn boundaries are rule-only** — drop the bold + margin
+ tint on `.turn-start` / `.turn-body` / `.turn-end-*`.
The coloured left rule alone carries the boundary signal.
- **Default-expanded message rows**: `send`, `recv`, `ask`,
`answer`, and short-ish `text` rows render their body
inline (no `<details>`). Reserve collapse for genuinely
heavy bodies — multi-page diffs, long tool_results,
thinking blocks past N lines.
### Renderer surface for extra MCP tools
`renderRichToolUse` currently switches on hard-coded tool
names. Replace with a registry keyed by
`mcp__<server>__<tool>` (and the built-in claude tool names)
that maps to a `(toolUse) -> Node` renderer. Per-agent extra
MCPs can register their own renderers via a small JS hook
(loaded the same way `extra-mcp.json` is loaded server-side);
the fallback is a generic args-pretty-printer that handles
single-string and single-dict shapes nicely instead of dumping
raw JSON.
### Markdown rendering
Apply a minimal markdown pass to message bodies (`send` /
`recv` / `ask` / `answer`) and to assistant `text` rows.
Scope: paragraphs, lists, fenced + inline code, bold/italic,
links. No HTML passthrough, no images, no tables —
explicitly bounded so we don't import a kitchen-sink parser
into the per-agent page. A small handwritten pass or a tiny
dep (e.g. `micromark` / `marked`) both work.
## Dashboard side (not covered here)
The main dashboard's message-flow pane is a different beast: