1. scrolling: ↑/↓ scroll the messages when the input is empty (otherwise the
caret moves), Ctrl+U scrolls up line-by-line, PageUp/PageDown page, wheel
scrolls; follow-to-bottom restored on reaching the end
2. markdown: hand-rolled renderer (headers, bold/italic, inline code, fenced
code blocks, lists, quotes, links, rules) applied to assistant/user text
3. ordering/refresh: messages are now committed into the transcript in real
time at MessageEnd (assistant + tool results), so earlier turns never
vanish mid-run and the latest content stays at the bottom; the live view
shows only the streaming partial plus running tool executions (finished
ones are presented by their tool_result messages, with duration)
4/5. expanded tool calls show human-readable arguments (command:/path:/edits
as key-value lines) instead of raw JSON; tool results show duration
new tests: markdown renderer, format_args_human, commit_partial, live
running-only execs, tool-duration propagation