feat(cli): page older history on demand and keep the reading position master
A reset replayed the whole transcript in one SSE line, and the TUI kept only its last 1,000 rendered lines: scrolled up while output arrived, trimming reached the row being read and pinned the view to the top. - stream?tail=N replays only the newest rows; reset carries before/more - GET /sessions/:id/history?before=&rows= returns older rendered pages, never starting on a tool result - committed {seq} markers stamp what a client shows with its rows, so evicted history resumes exactly after the newest evicted row - the TUI loads a page when scrolled to the top and prepends it in place - while scrolled up, trimming never drops the row being read and the caps stretch; rebuilds keep the distance from the end