Skip to content

feat(decrypt): smooth transitions between Yivi, decrypt, and done states#249

Merged
rubenhensen merged 1 commit into
mainfrom
decrypt-flow-transitions
Jun 4, 2026
Merged

feat(decrypt): smooth transitions between Yivi, decrypt, and done states#249
rubenhensen merged 1 commit into
mainfrom
decrypt-flow-transitions

Conversation

@rubenhensen

Copy link
Copy Markdown
Contributor

Summary

  • Hold briefly on the Yivi success animation before flipping to the decrypt progress banner
  • Fade between Ready / Decrypting / Done states and slide the progress bar in/out
  • Keep the success banner through Done with a distinct completion message (doneMessageComplete)

Test plan

  • Decrypt a file end-to-end: Yivi success → progress banner → done banner transitions feel smooth
  • Banner message switches from "being downloaded" to "have been downloaded" on completion
  • NL locale renders the new message correctly
  • Retry status still appears during decrypt when applicable

Hold the Yivi success animation briefly before flipping to the
progress banner, fade between states, and keep the success banner
visible through Done with a distinct completion message.
@dobby-coder

dobby-coder Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Dobby has received the request! Routing to the right specialist now...

@dobby-coder dobby-coder Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review

UI animation polish for the decrypt page: 1400ms hold on Yivi success, fade/slide transitions between Ready/Decrypting/Done, distinct Done-state message. Build, svelte-check, and lint pass; no functional regressions.

Rule compliance

One soft a11y note: the repo has no prefers-reduced-motion handling and this PR adds several transitions. Strictly WCAG AAA territory, not AA — flagging only because the rule explicitly calls out animations.

downloadState !== 'Decrypting' &&
pendingDecryptFlip === null
) {
pendingDecryptFlip = setTimeout(() => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Code review] pendingDecryptFlip is never cleared on unmount — if the user navigates away during the 1400ms hold, the timer fires on a torn-down component. Add an onDestroy that calls clearTimeout.

padding: 0;
}

.success-banner :global(.container .label) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Code review] .success-banner :global(.container .label) { display: none } is broad enough to leak if another .container ever lands inside the banner. Scope it to the DecryptionProgress component or use a more specific selector.

@rubenhensen rubenhensen merged commit 21abd88 into main Jun 4, 2026
7 checks passed
@rubenhensen rubenhensen deleted the decrypt-flow-transitions branch June 4, 2026 11:24
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