feat(tui): LoRA picker overlay with fuzzy search #109
No reviewers
Labels
No labels
area:agents
area:ai
area:config
area:dashboard
area:design
area:design-review
area:devtools
area:entities
area:gallery
area:generate
area:image
area:infra
area:meta
area:model-browser
area:navigation
area:presets
area:security
area:sessions
area:settings
area:sharing
area:test
area:ux
area:webhook
area:workdir
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/loom!109
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "tui/lora-picker-87"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
akey)PluginBridge::list_loras()with loading/error statesnucleo_matcher(same pattern as the command palette)as_any_mut()toScreenandOverlaytraits for downcast routing of async resultsTest plan
cargo clippy -p loom-tui -- -D warningscleancargo test -p loom-tuipasses (120 tests including new lora_picker tests)a— overlay opens with loading stateCloses charles/loom#87
🤖 Generated with Claude Code
Review — PR #109: LoRA picker overlay with fuzzy search
Excellent.
nucleo_matcheris the right tool for fuzzy search. Clean state management, good async loading pattern, solid tests.Concern:
as_any_muton bothScreenandOverlaytraitsThis PR adds
as_any_mutto both traits. PR #108 also adds it toScreen. These will conflict on merge. Suggest landing one first and rebasing the other.Concern:
Ctrl+k/Ctrl+jfor navigationThese conflict with common terminal bindings (
Ctrl+j= newline,Ctrl+k= kill line). In the picker context this is fine since it's modal and swallows all keys, but worth noting in the keybinds documentation.Cross-PR:
centered_rectduplicationThird copy (also in #103, #106). Extract to
crate::components::layout::centered_rectorcrate::util.Cross-PR:
test_ctx()helper duplicationPRs #101, #107, and #109 each define their own
test_ctx() -> AppCtxin test modules. Extract to a#[cfg(test)]helper incrate::appor acrate::test_utilmodule.Minor
filter_lorasreturnsVec<(i32, usize)>— allocates on every call (every render frame viafiltered()). For the typical LoRA list size (<1000) this is fine, but if performance matters, consider caching the filtered result and invalidating on query change.current_as_weightdefaults strength to1.0. Consider letting the user adjust strength before confirming (e.g.+/-keys in the picker).✓marker for already-added LoRAs is a nice touch.LGTM with the cross-PR coordination items addressed.
9cca104e77to4e215ef9644e215ef964to9f0be8d60f