tui: model browser — detail view with preview carousel and metadata #134

Closed
opened 2026-04-14 20:11:37 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As a user browsing models, I want to press Enter on a result to see its full preview carousel, description, ratings, base model, and tags before deciding to install, so that I'm not flying blind.

Background

The TUI model browser only shows a single thumbnail + name + downloads per row. The GTK frontend has a rich detail view in crates/loom-gtk/src/pages/store/detail_layout.rs:43-290. This ticket ports the equivalent to a TUI overlay.

Acceptance criteria

Overlay

  • New OverlayKind::ModelDetail(ResultCard) opens on Enter from a search result
  • Centered overlay, ~80% width, ~80% height
  • Header: model name + kind + base_model + author
  • Body split: image carousel on top half, scrollable text panel on bottom
  • Shows all preview_urls; / cycles
  • Current image / total count indicator (2 / 7)
  • Async download per image to ~/.cache/loom/thumbs/
  • Loading placeholder while fetching

Metadata panel

  • Description (markdown if present, plain text otherwise; word-wrapped)
  • Stats line: rating · downloads · file size · NSFW flag
  • Trigger words list (when present, comma-separated)
  • Tags (chips, wrapped)

Actions

  • i triggers install (same as current row-level install)
  • Esc closes the overlay
  • If installed, show "(installed)" badge and a u keybind for uninstall (with Confirm overlay)

Tests

  • Unit: carousel cycles correctly with empty / single-image / multi-image preview lists
  • Integration: pressing Enter on a result pushes the overlay

Out of scope

  • Sidecar metadata editing (separate ticket)
  • Workflow inspection (separate ticket)
  • Renaming installed models

References

  • crates/loom-tui/src/screens/model_browser.rs (current row rendering)
  • crates/loom-gtk/src/pages/store/detail_layout.rs:43-290 (GTK reference)
## User story As a user browsing models, I want to press Enter on a result to see its full preview carousel, description, ratings, base model, and tags before deciding to install, so that I'm not flying blind. ## Background The TUI model browser only shows a single thumbnail + name + downloads per row. The GTK frontend has a rich detail view in `crates/loom-gtk/src/pages/store/detail_layout.rs:43-290`. This ticket ports the equivalent to a TUI overlay. ## Acceptance criteria ### Overlay - [ ] New `OverlayKind::ModelDetail(ResultCard)` opens on `Enter` from a search result - [ ] Centered overlay, ~80% width, ~80% height - [ ] Header: model name + kind + base_model + author - [ ] Body split: image carousel on top half, scrollable text panel on bottom ### Image carousel - [ ] Shows all `preview_urls`; `←`/`→` cycles - [ ] Current image / total count indicator (`2 / 7`) - [ ] Async download per image to `~/.cache/loom/thumbs/` - [ ] Loading placeholder while fetching ### Metadata panel - [ ] Description (markdown if present, plain text otherwise; word-wrapped) - [ ] Stats line: rating · downloads · file size · NSFW flag - [ ] Trigger words list (when present, comma-separated) - [ ] Tags (chips, wrapped) ### Actions - [ ] `i` triggers install (same as current row-level install) - [ ] `Esc` closes the overlay - [ ] If installed, show "(installed)" badge and a `u` keybind for uninstall (with Confirm overlay) ### Tests - [ ] Unit: carousel cycles correctly with empty / single-image / multi-image preview lists - [ ] Integration: pressing `Enter` on a result pushes the overlay ## Out of scope - Sidecar metadata editing (separate ticket) - Workflow inspection (separate ticket) - Renaming installed models ## References - `crates/loom-tui/src/screens/model_browser.rs` (current row rendering) - `crates/loom-gtk/src/pages/store/detail_layout.rs:43-290` (GTK reference)
Sign in to join this conversation.
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#134
No description provided.