Skip to content

feat: status toast, stable footer and operation progress - #236

Merged
nextestudios merged 4 commits into
mainfrom
feature/ux-status-toast
Sep 28, 2026
Merged

nextestudios merged 4 commits into
mainfrom
feature/ux-status-toast

Conversation

@nextestudios

Copy link
Copy Markdown
Owner

Summary

UX audit fixes P2-1, P2-2 and P2-3.

  • Stable footer + status toast (P2-1): AppController.StatusMessage no longer lives in the footer (which grew 59 → 124 px and shrank the list). A new StatusToastView shows it in the bottom-right corner of the content at FontBody, fades after ~3 s (a timer collapses it; the ≤200 ms OpacityTransition is cosmetic and off with reduced motion), moves to the top-right when the focused row would be under it, is a polite live region for Narrator and hides while a modal is open (modals already show the status in their own footer). StatusSerial restarts it for a repeated message. Captures mirror StatusMessage without a timer. The search summary / "items without permission" line moves to the badge line above the list.
  • No blocking success dialog (P2-2): copy/move/delete that finish Completed set a toast ("3 itens copiados · Menu → Desfazer", "· N ignorados" when conflicts were skipped); warnings, failures and cancels keep the result dialog; everything stays in Menu → Operações.
  • Progress (P2-3): OperationItem.Fraction (bytes, else items) and OperationQueue.Progress (mean over active operations) drive a 4 px accent bar along the bottom edge of the title strip (no height change, no animation); the header operation text shows the percentage. Menu → Operações is split into Em andamento (state icon: running/paused/waiting, "45% · 3/10 itens · 12 MB", refreshed in place while open via MenuModal.Reload) and Histórico (result icons).
  • Title bar (feat: theme-colored title bar and full screen toggle #232) untouched: the progress bar sits inside row 0 but is not hit-testable, so drag regions are unchanged.

Tests

  • Deliberate change: journeys that waited for "Copiar/Mover: concluído" now use Driver.WaitStatus and assert no modal (FileOperationJourneyTests, UndoJourneyTests — undo now through Menu → Desfazer as the toast says, PauseJourneyTests, DualPaneJourneyTests, ClipboardJourneyTests).
  • PauseJourneyTests also checks the Em andamento → Histórico grouping and that Operations.Progress is set while running and null after.
  • Screens-only smoke for 2-folder, 3-folder-compact, 3b-folder-grid-compact, m6-operations at 1280x720 / 1280x800-text150 / 1920x1080.

Manual checks (docs/TESTING.md "Avisos e andamento")

Toast timing/fade on real hardware, avoidance of the focused row, Narrator reading, live progress bar during a large copy, light theme.

🤖 Generated with Claude Code

@nextestudios
nextestudios force-pushed the feature/ux-status-toast branch 2 times, most recently from f424efb to 3edea67 Compare September 28, 2026 03:17
nextestudios and others added 4 commits September 28, 2026 00:30
Transient status messages move from the footer to a toast over the content
(FontBody, fades after 3 s, avoids the focused row, Narrator live region), so
the footer height no longer changes. Clean copy/move/delete finish with a toast
instead of a blocking dialog; warnings, failures and cancels keep it. A thin
bar under the title strip shows aggregate progress and Menu > Operacoes is
split into Em andamento / Historico with state icons and percentages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nextestudios
nextestudios force-pushed the feature/ux-status-toast branch from 4e442c9 to cddfb16 Compare September 28, 2026 03:30
@nextestudios
nextestudios merged commit fcc6d89 into main Sep 28, 2026
3 checks passed
@nextestudios
nextestudios deleted the feature/ux-status-toast branch September 28, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant