/resume picker garbles rows on narrow terminals: row height ignores wrapped metadata lines
Summary
In the /resume (and claude --resume) session picker, each row's metadata line wraps when the terminal is narrow, but the picker appears to compute row heights as if every row were a fixed number of lines. Scrolling then redraws over the wrapped overflow, and the list turns into interleaved fragments of several sessions at once — unreadable, and impossible to select the session you want.
Environment
- Claude Code 2.1.222
- Windows 11 Pro 10.0.26100
- VS Code integrated terminal, narrow pane (~40 columns)
Steps to reproduce
- Narrow the terminal to roughly 40 columns.
- Have several sessions in the current project, ideally with long titles and a linked PR (so the metadata line is long).
- Run
/resume. - Arrow down through the list.
Expected
Rows scroll cleanly; each entry stays visually distinct regardless of terminal width.
Actual
Row text overlaps. A single visible block ends up mixing the title of one session, the age/branch/size of another, and the footer hint text, e.g. a title fragment immediately followed by 45 seconds ago · main · 2.1MB · then an unrelated session's title, with Ctrl+A to show all projects spliced into the middle of a row rather than pinned to the footer.
Notes
The wrapped metadata line (<age> · <branch> · <size> · <owner>/<repo>#<pr>) is the trigger — it needs two or three physical lines at this width, and long session titles wrap too. Widening the terminal avoids it, which is consistent with the height calculation counting logical rows rather than wrapped display lines.
Related nit while I was looking: there is no way to reduce the picker to just session titles. The in-picker controls are all filters (Ctrl+A projects, Ctrl+B branch, Ctrl+W worktree) plus rename/delete/group, and there is no flag or setting for a compact row format. A one-line-per-session mode would sidestep this on narrow terminals entirely.