tui: Settings screen — all sections #39

Closed
opened 2026-04-11 13:06:10 +00:00 by charles · 0 comments
Owner

User story

As a user, I want a full Settings screen covering backends, paths, generation defaults, AI features, NSFW, appearance, sharing credentials, key bindings, and system prompts, so that I can configure the app without editing TOML by hand.

Acceptance criteria

Layout

  • Left sidebar with section list; right pane with editable controls
  • j/k navigates sections; Tab moves focus into the section's first editable field

Sections (per spec §4.6.1)

  • Backends — list configured plugins; per row: enable/disable toggle, URL, API key, per-plugin fields. Ctrl+T on a row runs a connectivity test and shows the result
  • Paths — model dir, output dir, cache dir (directory pickers)
  • Generation Defaults — steps, CFG, sampler, scheduler, image size
  • AI Features — prompt enhancement model (Ollama endpoint + model name OR Claude Code), tag generation, defect detection, entity description provider + model selectors
  • NSFW — global toggle; documented effects
  • Appearance — image_protocol override, theme (dark/light/system), sidebar width, gallery columns
  • Sharing — Mastodon instance + token, Pixelfed instance + token, Bluesky handle + app password, CivitAI API key (secret fields masked by default; toggle with s)
  • Key Bindings — editable table of (action, keybind); Enter on a row enters capture mode for the next key combo; r resets the row to default; R resets all
  • System Prompts — multi-line editors for each AI enhancement type

Persistence & UX

  • All settings are persisted immediately (no Save button); destructive changes show a confirmation dialog
  • Shared backend/plugin config uses the loom-core config path; TUI-only fields ([tui]) use $XDG_CONFIG_HOME/loom/tui.toml
  • Settings write a backup (.bak) of the previous file on change

Tests

  • Unit test: backend connectivity test routes through the right plugin and reports success/failure
  • Unit test: key-binding capture mode stores the captured combo and rejects global reserved keys

Out of scope

  • tui.toml load/save primitives (separate ticket — consumed here)
  • Keybinds data model (separate ticket)

References

  • Spec §4.6 "Settings Screen"
## User story As a user, I want a full Settings screen covering backends, paths, generation defaults, AI features, NSFW, appearance, sharing credentials, key bindings, and system prompts, so that I can configure the app without editing TOML by hand. ## Acceptance criteria ### Layout - [ ] Left sidebar with section list; right pane with editable controls - [ ] `j`/`k` navigates sections; `Tab` moves focus into the section's first editable field ### Sections (per spec §4.6.1) - [ ] **Backends** — list configured plugins; per row: enable/disable toggle, URL, API key, per-plugin fields. `Ctrl+T` on a row runs a connectivity test and shows the result - [ ] **Paths** — model dir, output dir, cache dir (directory pickers) - [ ] **Generation Defaults** — steps, CFG, sampler, scheduler, image size - [ ] **AI Features** — prompt enhancement model (Ollama endpoint + model name OR Claude Code), tag generation, defect detection, entity description provider + model selectors - [ ] **NSFW** — global toggle; documented effects - [ ] **Appearance** — image_protocol override, theme (dark/light/system), sidebar width, gallery columns - [ ] **Sharing** — Mastodon instance + token, Pixelfed instance + token, Bluesky handle + app password, CivitAI API key (secret fields masked by default; toggle with `s`) - [ ] **Key Bindings** — editable table of `(action, keybind)`; `Enter` on a row enters capture mode for the next key combo; `r` resets the row to default; `R` resets all - [ ] **System Prompts** — multi-line editors for each AI enhancement type ### Persistence & UX - [ ] All settings are persisted immediately (no Save button); destructive changes show a confirmation dialog - [ ] Shared backend/plugin config uses the `loom-core` config path; TUI-only fields (`[tui]`) use `$XDG_CONFIG_HOME/loom/tui.toml` - [ ] Settings write a backup (`.bak`) of the previous file on change ### Tests - [ ] Unit test: backend connectivity test routes through the right plugin and reports success/failure - [ ] Unit test: key-binding capture mode stores the captured combo and rejects global reserved keys ## Out of scope - `tui.toml` load/save primitives (separate ticket — consumed here) - Keybinds data model (separate ticket) ## References - Spec §4.6 "Settings Screen"
charles added this to the loom-tui v0.1.0 milestone 2026-04-11 13:06:10 +00:00
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#39
No description provided.