fix: polish the save download error row and stop layout shift - #191
Merged
Merged
Conversation
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
tagium | e688ea3 | Commit Preview URL Branch Preview URL |
Sep 02 2026, 03:40 AM |
flamboh
force-pushed
the
fix/save-error-states
branch
from
September 2, 2026 03:38
43f287c to
e688ea3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
🤖 Fable 5 on behalf of Oliver
problem
Download failures in tagium save rendered as bare red text mounted below the fixed-height progress slot, so the error's variable height pushed recent downloads (and, on short viewports, the attribution) around. Each failure also fired a sonner toast on top of the inline row, reporting the same thing twice.
solution
ErrorRownow renders inside the existing reservedh-9progress slot — working and error states are mutually exclusive, so they share it. Showing or clearing an error moves nothing.titletooltip) with retry/reset icon buttons sized to fit the slot, and a fade-in that respectsprefers-reduced-motion. No card or border — just the text and buttons.presentVideoDownloadFailurenow uses the puregetSystemFailurePresentationinstead ofreportSystemFailure, which only fed this one inline path. All other failure contexts still toast as before.review instructions
bun run dev, openhttp://localhost:3001/?app=tagium-save(or your dev port), and with no cobalt instance running, submit any valid https url. Expect the inline error "downloads are temporarily unavailable." to appear inside the download stage with no toast and no movement of the recent-downloads list or attribution.Tradeoff to consider: long provider messages truncate to one line (full text in the
titletooltip and screen-reader alert). All current failure messages are short normalized strings, so truncation should be rare.Verified automatically:
bun run typecheck,bun run lint, and the fullbun run testsuite (899 tests) pass, including a new regression guard asserting the alert renders inside the reserved slot and that no toast fires. Layout stability was also confirmed in-browser: the slot's bounding rect is identical before and after the error appears.🤖 changes written by gpt-5.6-luna via codex, orchestrated and reviewed by Fable 5 in Claude Code.