- Shipped
- 8 Agosti 2026, 04:08 UTC
- Author
- kamo
- Commit
- 620a49a
A stalled upload sat at 100% with the bar full and no way out. Three separate reasons, all of them mine. XMLHttpRequest has no useful read timeout: when bytes stop arriving it waits indefinitely. A watchdog now aborts after two minutes of complete silence and reports it as a failure the member can retry — routed apart from Cancel, which goes through the same abort path but is not a fault. Reaching 100% does not mean finished: the server still has to hash and store the file, which for gigabytes is a long silence with nothing left to measure. The panel now says so, and drops the speed and time-left figures rather than freezing them at their last values, which is precisely what made a working upload look hung. That silence is also why the post-upload wait gets its own generous timeout instead of the stall watchdog, which would otherwise abort a perfectly healthy transfer. Also fixes the sheen that was meant to mark a live transfer: @keyframes kc-sheen was referenced but never defined, so it has never animated since I added it. Both rails now stand down under prefers-reduced-motion.