Skip to content

fix(sessions): /sessions list rendering + delete-flow fixes (port-2262 QA) - #31

Merged
MotionDevLab merged 3 commits into
mainfrom
feat/sessions-qa-fixes
Oct 16, 2026
Merged

MotionDevLab merged 3 commits into
mainfrom
feat/sessions-qa-fixes

Conversation

@MotionDevLab

Copy link
Copy Markdown
Owner

Summary

QA follow-up to port-2262 (#30): fixes /sessions list rendering + delete flows, user visually verified on fix build.

Root causes + fixes

  1. Rendering (frame explosion): untruncated ~200-char session titles (first-user-text prefix) passed to the custom fork picker as label/template rows overflowed the Ink frame. Fix: render the list through the resume-picker expanded Select path (LogSelector convergence) — truncation + windowing handled.
  2. Delete flow (stale list): post-delete refetch pulled the just-deleted session back. Fix: local-drop, reusing the /resume shape.
  3. Polish: Delete-key alias for double-press delete (fork picker parity) + hint text polish.

Local evidence (fix build)

  • sessions-delete-key: 4/4
  • windowing: 3/3 RED->GREEN (port-2262 reproduction)
  • screens: 81/0 (no rendering errors)
  • build + smoke: PASS

CI note

Repo-wide Actions outage standing — if checks absent/silent, merge on local evidence per PR #30 standard (risk documented in merge comment). If checks run RED on sessions files, do NOT merge.

Bug 1 (list breaks past 8th row with 20 sessions): size the Select visible window to the terminal height (rows - 9 for Dialog chrome, min 1) instead of the fixed 5-row default, mirroring the /resume LogSelector pattern that already handles long lists. Regression coverage in sessions-windowing.test.tsx (20-row traversal); upstream sessions.test.tsx untouched.

Bug 2 (double-d delete breaks the TUI flow): replace the post-delete disk reload + list remount with a local drop of the deleted entry (the /resume picker delete-flow shape from fork PR #25/#26), keeping the hardened deleteSessionFiles primitive (transcript + sidecars). Confirm dialog, d-d UX, and all user-facing strings unchanged.

Per-surface delete primitives: /sessions -> deleteSessionFiles; /resume + /replay pickers + ResumeConversation inline copy -> SDK deleteSession (picker convergence onto deleteSessionFiles remains open as F1).
…path

Round 1 only changed the option count; real 200-char session titles still wrapped option rows across lines in the compact two-column layout, exploding frame height past the viewport. Converge the list on the LogSelector flat path: layout=expanded, row-aware window floor((rows-12)/3), whitespace-collapsed width-truncated labels.

Tests: new sessions-list-layout.test.tsx 3/3 (0/3 pre-fix).
… parity)

The list handler now fires on key.delete as well as 'd' (LogSelector fires onDeleteRequest from key.delete), so the second confirm press may be Delete or d. Hint updated to 'Del or d delete (press twice to confirm)'. Armed cue and Dialog footer untouched. New sessions-delete-key.test.tsx: 4/4 (arm, Del-Del, Del-d, Del-x disarm).
@MotionDevLab

Copy link
Copy Markdown
Owner Author

Merging on local evidence per PR #30 standard (repo-wide Actions outage standing — no checks reported on this branch).

Accepted risk: CI silent, no remote validation. Local evidence on fix build: sessions-delete-key 4/4, windowing 3/3 RED->GREEN, screens 81/0, build+smoke PASS, plus user visual verification (delete flows fixed, no rendering errors). Merge explicitly authorized by user.

@MotionDevLab
MotionDevLab merged commit 413b8dc into main Oct 16, 2026
@MotionDevLab
MotionDevLab deleted the feat/sessions-qa-fixes branch October 16, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant