v5.9.6
Highlights
A download now always reports how it ended.
π Fixes
- A download could finish without ever raising
DownloadFileCompleted.StartDownloadended in one of four branches, and the last one β an "unexpected" terminal state β only logged a warning and returned. For anything driven by the events (rather than only awaiting the task) that meant the download never ended: no error, no file, nothing to retry, and a UI left showing it as still in progress. That branch now always sends a completion signal. - Pausing exactly as the last bytes arrive no longer throws the download away. A
Pause()that lands after every byte has been received leaves the status Paused with nothing left to do β a finished download. It is now reported as Completed instead of falling into the unexpected-state branch and being discarded. - Any other unexpected terminal state is reported as Failed with an
IncompleteDownloadExceptionnaming the state and the byte counts, so the cause is visible instead of silent.
π§ Under the hood
- New integration tests (
CompletionSignalTest) cover all three terminal paths β completed, cancelled, and paused-at-the-finish-line. The last one fails against 5.9.5.
Found while tracing a download manager whose row stayed "downloading" forever against a server that refused its requests (Downloader.Desktop #9).
What's Changed
- docs: fix readme code sample, docker tag, and navigation by @bezzad in #240
- Develop by @bezzad in #241
- Add Claude Code GitHub Workflow by @bezzad in #242
Full Changelog: v5.9.5...v5.9.6