Repository navigation
v0.8.0
Major new feature: Adds support for multiple sources and recursive directory transfers.
⛰️ Features
- (proto) ListContents command - (4372c89)
- (proto) Add CreateDirectory and SetMetadata commands - (fa8ee8e)
- (stats) Add post-transfer hints for --rtt/--rx/--tx - (19a3881)
- -p preserves mode bits on directories in get-multi mode - (60fda05)
- Implement recursive get (#21) - (63d74a7)
- Implement --preserve on multi-file PUT - (0f2452c)
- Support --recurse on PUT commands (#21) - (66c388c)
- Add multi-source support and single-session transfers (#181) - (fc8e258)
- Add configuration option for IO buffer size - (414520a)
🐛 Bug Fixes
- (cli) Add missing ValueEnum declarations to TimeFormat and AddressFamily - (9628ba3)
- (stats) Satisfy clippy in bandwidth hint - (3ced4d3)
- Better handle encoding failures from List command - (9f85e97)
- Apply wire encoding limit at serialisation time (Postel's Law) - (aec1186)
- Recursion follows symlinks - (1ca3e00)
- Set readonly on Windows more reliably - (814c611)
- Detect Windows absolute paths with a drive letter as local - (57d994b)
- PUT behaviour when destination is a directory name - (b85b1d0)
📚 Documentation
- Update CLI docs - (7678310)
⚡ Performance
- (io) Speed up payload copy - (cb04ce9)
🎨 Styling
- Tidy up error handling - (5ffdd0c)
- Do not report a 0 byte transfer - (6dd22d6)
- Include comments in --list-features output; tidy up those comments - (5af4b29)
- Add "file N of M" to the progress spinner - (7b7f151)
- Report individual file transfer speeds as they complete - (bfbc4ed)
- Add a filename_width parameter to progress bars, so they align - (11d91e3)
🧪 Testing
- (get_multi) Test file times with --preserve - (a80c4d6)
- (get_multi) Include a readonly file - (bb7a417)
- (socket) Skip bind_ipv6 when unsupported - (fbf384c)
- Update session command tests to use SessionCommand factory - (23ba8b7)
- Refactor server/stream tests, add missing commands - (46488d3)
- Skip cosmetic stats functions in coverage analysis - (2d01de2)
⚙️ Miscellaneous Tasks
- (doc) Rework CLI doc autogeneration - (44e18de)
- (doc) Move autogenerated docs into qcp/misc/generated/ - (5685f35)
- Improve legibility of factory.rs - (3428140)
- Match scp behaviour over dotfiles; remove IncludeHiddenItems internal flag - (18b8fce)
- Process_recursive_get checks for compatibility sooner - (ee81459)
- Reduce duplicated code - (b235272)
- Simplify Client.process_job_requests generics - (c028228)
- Create protocol preludes, split up session/command.rs - (60ff04f)
- Introduce a recursion helper function for FileSpec - (0cab891)
- Tidy up CLI --help output - (8232f30)
- Add helper functions for job filenames - (5f03c1d)
🚜 Refactor
- Progress_bar_for becomes a function of UI - (abbf218)
- Use SessionCommandInner in send_impl; introduce UI struct - (414683d)
- SessionCommand: move handler arguments into a SessionCommandInner struct - (4bc2af3)
- Consolidate command implementations, reduce boilerplate - (6529b05)
- Create client sender factory function - (b49b95b)
- Create factory function for command handlers - (542497a)
- Deduplicate find_option() - (9cf9b37)
- Allow ListData to be split and rejoined; implement in Listing command - (56fb709)
- Remove ListResponse from Response; replace with ListData - (313a141)
- Introduce a partial-success return, for closer equivalence to scp - (f0f9574)
- Drop success field of RequestResult - (2e5096e)
- Client request running functions return Result<...> - (7031abd)
- Rename ListContents to List in protocol / Listing in command handler - (f1b51e0)
- SessionCommandImpl.send returns a RequestResult - (d488117)
- Rename SessionPass to Phase, rename members - (33aa8b4)
- Add optional Response to main_loop::RequestResult - (d14bbf2)
- Client.run_request takes a &CopyJobSpec - (a485d1c)
- Client moves the negotiated items into a Negotiated struct - (91d4c66)
- Process_job_requests no longer needs its spinner argument - (45d285f)
- Refactor away Client.transfer_jobs - (76fd11f)
- Make client.process_job_requests a member function - (afe37c4)
- Add directory flag to CopyJobSpec - (a3ca515)
- Coalesce branching in CliArgs::jobspecs - (88f0dce)
- Add command handler helper functions, unify error/status conversions - (9a082f4)
- SessionCommandImpl.send() takes a Parameters - (31a90b7)
- Manage_request no longer needs a separate 'quiet' argument - (f980a69)
- Move log_file up from Parameters to CliArgs, mark Parameters as Copy - (d4a97f5)
- Move paths up from Parameters into CliArgs - (29d94a6)
- Move path helper functions into util - (948fda0)
- Remove unnecessary 'quiet' argument of Client::transfer_jobs - (8e397f5)
- Deduplicate rate reporting - (7c22444)
◀️ Revert
- Work around for warnings from cargo shear 1.9.0 - (31f4cde)
Download notes
- Debian and Ubuntu users will likely find the .deb packages convenient.
- Other Linux distributions, use
qcp-linux-<ARCH>-musl.tar.gz. These are static musl binaries which should work on all distributions.