feat(tui): Gallery screen — grid & list view #66

Merged
charles merged 1 commit from tui/gallery-grid-27 into main 2026-04-11 20:42:45 +00:00
Owner

Stacks on #65. Closes charles/loom#27. First PR of Phase 4.

GalleryScreen with ViewMode::{Grid, List}, selection index with row/col clamping (move_selection(dx, dy)), grid rendering with bordered prompt-caption cells, list rendering via List + ListState, G jumps to end.

The items vec is populated from GalleryStorage once threaded through AppCtx in a later glue PR; today the screen renders an "empty" hint so it's still navigable. 3 new tests, 84 total.

Stacks on #65. Closes charles/loom#27. First PR of Phase 4. `GalleryScreen` with `ViewMode::{Grid, List}`, selection index with row/col clamping (`move_selection(dx, dy)`), grid rendering with bordered prompt-caption cells, list rendering via `List + ListState`, `G` jumps to end. The `items` vec is populated from `GalleryStorage` once threaded through `AppCtx` in a later glue PR; today the screen renders an "empty" hint so it's still navigable. 3 new tests, 84 total.
Adds GalleryScreen with ViewMode::{Grid, List}, a selection index,
and movement helpers (move_selection with row/col clamping, jump).
h/j/k/l and arrow keys move, v toggles view, G jumps to end.

Grid view renders each item as a compact bordered cell with the
truncated prompt as caption; list view uses a ratatui List with
highlight_symbol. Items slice is empty until GalleryStorage is
threaded through AppCtx in a later glue PR — the screen renders an
"empty" hint so it's still a navigable surface.

Closes charles/loom#27

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
charles changed target branch from tui/ai-jobs-26 to main 2026-04-11 20:42:43 +00:00
charles deleted branch tui/gallery-grid-27 2026-04-11 20:42:45 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/loom!66
No description provided.