1.3 KiB
id, title, theme, status, created, date_source, order
| id | title | theme | status | created | date_source | order |
|---|---|---|---|---|---|---|
| chat/show-how-long-a-turn-took-beside-its-cost | Show how long a turn took, beside its cost and tokens | chat | open | 2026-08-21 | stated | 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.