tui: dependency installer / first-run wizard #143
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/loom#143
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
User story
As a first-time user starting loom-tui, I want a guided check that the required dependencies (Forge backend reachable, plugins discovered, picker initialised) are present, with a friendly install hint when they're not, so that I'm not staring at empty screens with no idea what to do.
Background
GTK has a multi-step onboarding flow at
crates/loom-gtk/src/components/onboarding/(welcome, backend, plugins, presets, downloads) pluscrates/loom-gtk/src/dep_install.rs. The TUI just bootstraps and silently degrades if anything is missing. Users hit walls without explanation.Acceptance criteria
First-run detection
~/.config/loom/settings.tomlexists; absence triggers the wizardOverlayKind::Onboarding(OnboardingStep), blocks all other input until completed or dismissed (Escskips with a notification "you can re-run via Settings")Steps
Enterto begingeneration_backendURL (defaulthttp://127.0.0.1:7860),Enterrunsbridge.health_check()and surfaces the resultEntersavesEntersaves settings and dismissesMid-app health hint
bRe-run
Tests
Out of scope
References
crates/loom-gtk/src/components/onboarding/(GTK reference)crates/loom-gtk/src/dep_install.rscrates/loom-tui/src/main.rs(bootstrap_core)