tui: notification bar, confirmation dialogs & error handling #42

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

User story

As a user, I want clear, non-blocking feedback for successes, failures, and destructive actions, so that the app feels responsive and I never lose work by accident.

Acceptance criteria

Notification bar

  • Rendered above the status bar, auto-dismissing after 5 seconds or on next keypress
  • Queued — multiple notifications show one at a time
  • Levels: info, success, warn, error (colour-coded)
  • Public API: ctx.notify(Notification::info("…")), etc.

Confirmation dialogs

  • Reusable ConfirmDialog overlay with explicit y/n answers and a default (always n for destructive prompts)
  • Used by: gallery delete, folder delete, preset delete, settings destructive changes, quit-during-generation

Fatal error dialog

  • Full-screen dialog shown on unrecoverable startup errors (e.g. database locked, plugin load failure)
  • Shows actionable instructions (file path, suggested command) and an Enter to exit

Text input basics

  • All text inputs support Ctrl+A (select all), Ctrl+U (clear line), Ctrl+W (delete word)

Tests

  • Unit test: notification queue auto-dismisses after 5 s (driven by fake clock)
  • Unit test: confirm dialog default answer on Enter is the safe option

Out of scope

  • Log overlay (separate ticket)

References

  • Spec §8 "Error Handling & UX Polish"
## User story As a user, I want clear, non-blocking feedback for successes, failures, and destructive actions, so that the app feels responsive and I never lose work by accident. ## Acceptance criteria ### Notification bar - [ ] Rendered above the status bar, auto-dismissing after 5 seconds or on next keypress - [ ] Queued — multiple notifications show one at a time - [ ] Levels: info, success, warn, error (colour-coded) - [ ] Public API: `ctx.notify(Notification::info("…"))`, etc. ### Confirmation dialogs - [ ] Reusable `ConfirmDialog` overlay with explicit `y`/`n` answers and a default (always `n` for destructive prompts) - [ ] Used by: gallery delete, folder delete, preset delete, settings destructive changes, quit-during-generation ### Fatal error dialog - [ ] Full-screen dialog shown on unrecoverable startup errors (e.g. database locked, plugin load failure) - [ ] Shows actionable instructions (file path, suggested command) and an `Enter` to exit ### Text input basics - [ ] All text inputs support `Ctrl+A` (select all), `Ctrl+U` (clear line), `Ctrl+W` (delete word) ### Tests - [ ] Unit test: notification queue auto-dismisses after 5 s (driven by fake clock) - [ ] Unit test: confirm dialog default answer on `Enter` is the safe option ## Out of scope - Log overlay (separate ticket) ## References - Spec §8 "Error Handling & UX Polish"
charles added this to the loom-tui v0.1.0 milestone 2026-04-11 13:06:37 +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#42
No description provided.