Files
codewhale/crates
Hunter Bown 59e1dd4e99 feat(tui): stacked toast overlay above footer (#439)
The status-toast bus already typed Info/Success/Warning/Error with
configurable per-toast TTL, a 24-bounded queue, and a sync adapter that
migrates legacy `app.status_message` writes — what was missing was
visibility when several events arrive in quick succession. The footer
showed only the most recent and the rest expired silently.

* New `App::active_status_toasts(limit)` returns up to `limit` currently
  active toasts (sticky pinned first, then queued newest-last so a stack
  reads chronologically). Drains expired toasts off the front as a side
  effect — same cleanup as the single-toast path.
* New `render_toast_stack_overlay` renders up to 2 *additional* toasts
  as a 1-2 line strip directly above the footer when the queue has 2+
  entries. Doesn't touch the layout chunk constraints — it's an
  absolute-position overlay, so the chat area never reflows when toasts
  arrive or expire. Older entries render dimmed in the level color so
  the freshest still draws the eye in the footer line itself.
* `TOAST_STACK_MAX_VISIBLE = 3` (footer line + up to 2 overlay rows).
  Anything beyond that ages out silently as before.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 02:58:02 -05:00
..