todo: turn timer in chat, and a sub-agent spawn endpoint bounded by usage limits

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 05:44:47 +00:00
co-authored by Claude Fable 5
parent 6071ded175
commit a34ef422f4
6 changed files with 106 additions and 2 deletions
+7
View File
@@ -0,0 +1,7 @@
---
theme: chat
heading: "Chat interface"
kind: theme
---
The chat surface itself — what a turn shows about itself while and after it runs.
@@ -0,0 +1,25 @@
---
id: chat/show-how-long-a-turn-took-beside-its-cost
title: "Show how long a turn took, beside its cost and tokens"
theme: chat
status: open
created: 2026-08-21
date_source: stated
order: 1
---
**Show how long a turn took, beside its cost and tokens.** Wanted 2026-08-21. A timer running from the
start of each turn, and the elapsed time kept on the settled row — in the same place that already
renders cost and token count, not somewhere new.
That row is `MessageBubble.tsx:264`, and today it reads
`Done · ${message.cost.totalUSD.toFixed(3)} · {inputTokens + outputTokens} tokens`. Duration is the
third number that belongs there and is the only one missing.
Two things already exist and should be reused rather than rebuilt. `formatDuration` is in the same file
(~line 395), and the compaction row beside it already does exactly this job — its header comment says
the elapsed time is "honest for the window that watched it happen, and the settled row carries the
duration", which is the behaviour wanted here. What is missing is the field: `MessageCost` in
`Chat/types.ts:12` carries `totalUSD` and the token counters but no duration, while
`compact:done` carries `durationMs`. So the harness result has to bring it along, or the client has to
time the turn itself and keep it on the settled row.