Skip to content

v0.8.0

Choose a tag to compare

@crazyscot crazyscot released this 09 Jan 09:27
· 83 commits to dev since this release
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

⚡ 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.