tui: Model browser — wire plugin bridge API calls & download flow #89

Closed
opened 2026-04-12 13:24:03 +00:00 by claude-desktop · 0 comments
Collaborator

User Story

As a loom-tui user, I want to search for models on CivitAI and Hugging Face from the Model Browser screen and install them directly, so that I can discover and manage models without leaving the terminal.

Context

The Model Browser screen (#32–#35) has three-tab UI (CivitAI, HuggingFace, Local) with search, pagination, and IP-Adapter filter. But searches return empty because PluginBridge calls aren't wired. This ticket connects the API layer and download flow.

Acceptance Criteria

CivitAI Tab

  • Type-to-search calls CivitAI plugin via PluginBridge with 300ms debounce
  • Results populate the grid with model cards (name, type, rating, download count)
  • Model card preview images rendered via ImageRenderer
  • Detail pane shows description, versions, file size, license, tags
  • Filtering by model type, base model, NSFW toggle (respects app-level NSFW setting)

Hugging Face Tab

  • Search calls HuggingFace plugin via PluginBridge
  • Results show model cards with metadata
  • Detail pane with model info

Local Tab

  • Lists installed models/LoRAs from configured model directory
  • Shows file size, last used date
  • d to delete (with confirmation); r to rename

Download & Install

  • Enter or i on a model card starts download to configured model path
  • Download progress bar shown per file
  • Supports multiple simultaneous downloads
  • u (one-click use): installs if needed, then sets as active model in Generate screen

Tests

  • Unit test: debounced search timer logic
  • Integration test: mock plugin bridge returns test model data, screen renders cards

Out of Scope

  • IP-Adapter browsing UI (already built in #35; this ticket wires the data)

References

  • Spec §4.3 (Model Browser Screen)
  • Existing code: src/screens/model_browser.rs
  • Tracking issue: #47
## User Story As a **loom-tui user**, I want to search for models on CivitAI and Hugging Face from the Model Browser screen and install them directly, so that I can discover and manage models without leaving the terminal. ## Context The Model Browser screen (#32–#35) has three-tab UI (CivitAI, HuggingFace, Local) with search, pagination, and IP-Adapter filter. But searches return empty because `PluginBridge` calls aren't wired. This ticket connects the API layer and download flow. ## Acceptance Criteria ### CivitAI Tab - [ ] Type-to-search calls CivitAI plugin via `PluginBridge` with 300ms debounce - [ ] Results populate the grid with model cards (name, type, rating, download count) - [ ] Model card preview images rendered via `ImageRenderer` - [ ] Detail pane shows description, versions, file size, license, tags - [ ] Filtering by model type, base model, NSFW toggle (respects app-level NSFW setting) ### Hugging Face Tab - [ ] Search calls HuggingFace plugin via `PluginBridge` - [ ] Results show model cards with metadata - [ ] Detail pane with model info ### Local Tab - [ ] Lists installed models/LoRAs from configured model directory - [ ] Shows file size, last used date - [ ] `d` to delete (with confirmation); `r` to rename ### Download & Install - [ ] `Enter` or `i` on a model card starts download to configured model path - [ ] Download progress bar shown per file - [ ] Supports multiple simultaneous downloads - [ ] `u` (one-click use): installs if needed, then sets as active model in Generate screen ### Tests - [ ] Unit test: debounced search timer logic - [ ] Integration test: mock plugin bridge returns test model data, screen renders cards ## Out of Scope - IP-Adapter browsing UI (already built in #35; this ticket wires the data) ## References - Spec §4.3 (Model Browser Screen) - Existing code: `src/screens/model_browser.rs` - Tracking issue: #47
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#89
No description provided.