All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Rare
IOException: The process cannot access the file … .downloadwhen finalizing a download (issue #239): downloader-owned file deletions now retry with exponential backoff (~3s) to ride out transient external locks (e.g. antivirus real-time scans); a permanent lock now fails with a clear error attributing it to the external process, original exception preserved asInnerException. RemoteFileResolver.GetFileInfoAsyncno longer rethrows the internal connect-timeout cancellation as a hard failure on slow/unreachable hosts; it falls back to the URL-derived file name as documented.
- .NET 11 (preview) target (
net11.0) for the library, validated by CI on Ubuntu/macOS/Windows.
- Resume after a failed attempt no longer restarts from 0%: a transient transport error (timeout, dropped connection, 503/504) no longer discards already-downloaded chunk progress when the single-connection fallback engages. A failed attempt now stays resumable from its last position.
- Silent file corruption when resuming a multi-chunk download against a server that reports no range support: the stale chunk layout is now rebuilt so restarted bytes are written at the correct offsets.
- Off-by-one in the chunk-completion check that treated a chunk left exactly one byte short as complete, which could fail a download near 100% and make its final byte impossible to resume.
5.9.1 - 2026-07-10
- Release packaging: stop building/pushing an empty symbol package; keep the embedded-PDB symbol-package fix.
5.9.0 - 2026-06-19
RemoteFileResolverwithGetFileNameAsync(url)andGetFileInfoAsync(url), returningRemoteFileInfo { FileName, FileSize, SupportsRange, Address }from a single header probe — preview a queued download's name and size without starting one.IDownloadService.GetFileInfoAsync(url)exposes the same lookup on the service.
- Filename/size/range resolution unified behind
SocketClient.GetFileInfoAsync, shared by the download pipeline andRemoteFileResolver. No behavior change to existing downloads.
5.8.1 - 2026-06-16
- Cookie handling for CDN redirects.
5.8.0 - 2026-06-02
- Fallback to a single connection for downloads on transient transport errors.
5.6.0 - 2026-06-01
- Download cancellation and progress reporting bugs.
5.4.0 - 2026-04-29
- AOT compilation support for .NET 8 and later.
5.3.0 - 2026-04-25
- URL encoding for square brackets in download paths (#223).
5.2.0 - 2026-04-21
- Servers that reject the
Rangeheader with 403/404/503 now fall back to a normal request (#220).
5.1.1 - 2026-04-20
- Maintenance release.
5.1.0 - 2026-03-11
- Custom
HttpClientsupport, plus related fixes (#219).
5.0.0 - 2026-03-10
- Improved resume-download functionality and error handling (#217).
- Redirected-URL download fix.
- Pre-release.
- Compiler warnings.
For releases and full history, see the GitHub releases and tags.