KamoCRM

Stop a dead upload spinning forever, and say what 100% means

Fixkamo-internal
Shipped
8 ஆகஸ்ட், 2026 அன்று 4:08 AM 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.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing