bcmr v0.6.3
§ changelog

what changed.

every release published on github, mirrored here verbatim from the release notes. newest first.

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.6.2...v0.6.3

Changes since v0.6.2:

Bug Fixes

  • fix(remote): ControlPath uses 16-hex hash, not 32 — sun_path budget on macOS (0f5e8d2)
  • fix(serve): server-side data integrity + DoS bounds (a85051f)
  • fix(remote): drain stderr concurrently + collision-resistant ControlPath (7d9b958)
  • fix(config): fail-fast on parse error instead of silent default fallback (2000ac5)

Other

  • test(e2e): lock in audit fixes — relative path anchor, block_size, CONFIG fail-fast (6657b95)
  • test(e2e): kill flaky wall-clock sleep, tighten weak probe assertions (3d266af)
  • refactor(serve_client): centralize recv-then-extract via helpers (8ace1de)
  • refactor(remote): drop dead worker_id chain + RemoteTransferOptions alias (bf4ff5a)
  • refactor: hoist TempFileGuard + bytes_to_hex into core (419a6fe)
Maintenance
  • chore: release v0.6.3 (2391423)
  • chore: trim audit-cycle comments to non-obvious WHY only (049f3f6)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.6.1...v0.6.2

Changes since v0.6.1:

Features

  • feat(ssh): BCMR_SSH_NO_MULTIPLEX + actionable MaxSessions error (#129) (44d633f)
  • feat(cli): --config validate, --profile flag, argv dedupe, subcmd --version (a80eb28)

Bug Fixes

  • fix(resume): advertise CAP_PUT_OFFSET; honest BCMR_SSH_NO_MULTIPLEX docs (bad0910)
  • fix: unified @bookmark resolver covers inspect cmds + copy/move --to (ab39c33)
  • fix(copy): self-copy detection, '-' sentinel refused, host:/host:./host:. shorthand (7fca9ec)
  • fix(inspect): locale-safe stat/du, ls file dispatch + missing errors, --json output (b4abed9)

Other

  • style: cargo fmt (7a05678)
  • test(config): update --config missing-path assertion to match #124 (3a5356b)
Maintenance
  • chore: release v0.6.2 (78fbafa)
  • chore: strip what-comments and doc-restatement comments (ae68691)
  • ci: doctor --config test uses .toml-extension tempfile (#124) (03692f0)
  • ci: --profile unknown is now a loud error, not silent no-op (#125) (8b47298)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.6.0...v0.6.1

Changes since v0.6.0:

Features

  • feat(config): per-host default flags and named profiles (#111) (#118) (80a6e58)
  • feat(copy): --to for fan-out copy to multiple targets (#80) (#117) (ecb9d67)
  • feat: bcmr ls / stat / du / hash for remote inspection (#71) (#116) (11bdf20)
  • feat(status): --watch follows a running job's log (#110) (#114) (81ec97f)
  • feat(ui): surface reflink count in Done line + result event (#112) (#115) (3ab0593)
  • feat(doctor): probe non-interactive vs login PATH on remotes (#109) (#113) (e3293c4)
  • feat(config): @bookmark path aliases in config (#81) (#107) (77dfb89)
  • feat(completions): one-shot install / uninstall (#75) (#104) (06448e7)
  • feat: add 'bcmr doctor' subcommand for setup diagnostics (#72) (#102) (ca259dd)
  • feat(ui): surface 'verified' in Done line + result event when -V is used (#76) (#105) (f805429)
  • feat(status): --rm / --rm --all / --gc on bcmr status (#68) (#101) (a37d316)
  • feat(ux): show common-usage hint when invoked with no args (#83) (#106) (df93f27)
  • feat(cli): add -q/--quiet and --config overrides (#78) (#103) (0a83ac5)
  • feat(cli): rename --tui to --plain (legacy alias retained) (#77) (#98) (b73e730)
  • feat(ui): surface skipped bytes in Done: summary line (#76) (#100) (0b0e88c)
  • feat: bcmr copy --no-deref preserves symlinks for local copies (#47) (#95) (cce0561)
  • feat: add --sudo to bcmr deploy for system-wide install (#40) (#89) (575f74b)
  • feat: bcmr update --check (read-only version probe) (#60) (#94) (a2c4d89)

Bug Fixes

  • fix(jobs): BCMR_JOBS_DIR env override + revert STARTUP_GRACE bump (b35a6e9)
  • fix(status): bump --watch STARTUP_GRACE 1s → 2s (a4329f1)
  • fix(serve): harden AEAD + protocol decoder + path open (ea6e772)
  • fix(refactor): cargo fmt + drop windows-unused imports (00e8b45)
  • fix(remote): refuse remote-to-remote copy/move with clear error (#69) (#96) (4e5ad19)
  • fix: confirm same-size mtime-only diffs by hash before reporting modified (#42) (#93) (7bc5252)
  • fix: detect multi-source basename collisions in bcmr copy (#48) (#91) (5a4c7f6)
  • fix: honor NO_COLOR and TERM=dumb in progress UI selection (#55) (#85) (09d58cb)
  • fix: copy to existing remote dir without trailing slash (#54) (#90) (2f146c3)
  • fix: refuse FIFO / socket / device-node sources in copy and move (#59) (#92) (aed2185)
  • fix: expand ~ and ~user in remote paths via SSH probe (#61, #39) (#87) (fd6caa6)
  • fix: parse bracketed IPv6 in host:path / user@host:path forms (#53) (#86) (436bb71)
  • fix: auto-degrade progress UI to plain text when stdout is not a TTY (#46) (#84) (756b631)
  • fix: bcmr init powershell emits a powershell-flavored block (#49) (#82) (ca1a6c9)
  • fix: probe non-interactive PATH after deploy + warn on mismatch (#41) (#88) (b0d7e92)
  • fix: error on bcmr copy DIR DST without -r instead of silent 0 B (#58) (#65) (bed9b60)
  • fix: append basename in legacy single-file upload to host:dir/ (#37) (#66) (c29dd09)
  • fix: --append refuses incompatible destinations instead of overwriting (#52) (#64) (7fee875)
  • fix: share ControlMaster across legacy workers (#38) (#67) (9a19c33)
  • fix: dispatch remote move via copy + delete-source (#36) (#51) (d500c19)
  • fix: dispatch remote remove via ssh rm (#35) (#50) (33b87bd)
  • fix: reject '..' in remote paths before transport (#45) (#63) (7d71902)
  • fix: gate Put{offset} resume on CAP_PUT_OFFSET (#44) (#62) (f3bad88)

Other

  • refactor: drop num_cpus, use std::thread::available_parallelism (7a7735e)
  • refactor: dedup, abstract, and decouple across hot modules (79b5099)
Maintenance
  • chore: release v0.6.1 (3437b04)
  • ci: install GNU coreutils on macOS for timeout(1) (4df0e88)
  • chore: MSRV pin, dep-feature trim, CI hardening, serve graceful shutdown (9602513)
  • chore(deps): cargo update — clears 8 RustSec advisories (fcf73ad)
  • chore(deps): bump clap_complete in the rust-minor group (#108) (4325ef7)
  • docs(cli): add EXAMPLES / ENVIRONMENT / EXIT CODES to --help (#74) (#99) (5bfe723)
  • docs(internals): document --json NDJSON event schema (#73) (#97) (2b192ed)
  • chore(deps): bump signal-hook from 0.3.18 to 0.4.4 (#33) (a13d861)
  • chore(deps): bump softprops/action-gh-release from 1 to 3 (#29) (116a67c)
  • chore(deps): bump actions/upload-artifact from 4 to 7 (#30) (79f97df)
  • chore(deps): bump self_update from 0.43.1 to 0.44.0 (#34) (d816b16)
  • chore(deps): bump lz4_flex from 0.11.6 to 0.13.1 (#32) (00452f4)
  • chore(deps): bump actions/download-artifact from 4 to 8 (#28) (0511fb6)
  • chore(deps): bump the rust-minor group across 1 directory with 14 updates (#31) (318b835)
  • docs(install): point linux install command at /install.sh (71a7e7c)
  • docs(readme): /guide/* and /ablation/* are now /docs/* and /internals/* (17fa98b)
  • docs(readme): point install URL at /install.sh so /install browser visits hit the docs page (ccf6e08)
  • ci(docs): also rebuild snaix.homes on release publish + commands changes (2185107)
  • docs: move d2 diagram sources out of docs/ tree (9c7314e)
  • docs: restructure for snaix.homes rendering (dc557fd)
  • docs(home): rewrite feature cards to capability-led voice, 7→8 for clean 4+4 grid (4879886)
  • docs(open-questions): add FastCDC / content-defined chunking entry (dee5e9c)
  • docs(ablation): fix broken anchor to CAS dedup experiment (fe5ff29)
  • docs: wire new ablation pages into sidebar; correct SECURITY.md scope claim (471f370)
  • docs(ablation): centralize design-thinking — Internals indexes non-goals + external rationale (98c867d)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.20...v0.6.0

Changes since v0.5.20:

Features

  • feat: serve upload resume via Put{offset}; drop dispatcher bypass for files (#25) (3eb749b)
  • feat: ListEntry carries mtime, check uses it on remote paths (#24) (2e990b5)

Bug Fixes

  • fix: check --exclude symmetry + --sync honored on legacy downloads (#26) (cdcbef0)
  • fix: serve bypass for --resume/--strict/--append + --sync on big downloads (#19) (1d4cabc)
  • fix: serve recursive --exclude filter + check mtime comparison per docs (#18) (38e4890)
  • fix: serve-path feature parity (--verify, --preserve, check multi-src) (#17) (4927be1)
  • fix: direct-TCP rendezvous concurrent verify + client dial timeout (#16) (96f1255)
  • Fix transfer integrity regressions and local copy jobs (#13) (b8d0444)

Other

  • refactor: split commands/remote_copy.rs into legacy + serve submodules (#15) (774c6d2)
  • cache cap_bytes + strict-clippy test code + CI --all-targets (b2510bb)
  • test: widen e2e_pipeline_copy_honors_jobs_concurrency signal-to-noise (71a9ada)
  • session: unify find_resume_offset errors, uid-namespace tmp fallback, size-hint serialize (09ca586)
  • tier-3: session_path NUL separator + selective comment restoration (793b952)
  • refactor: split serve_client.rs, remote.rs, and main.rs (#14) (e8b149e)
  • tier-2 follow-ups: session lookup-key, AUTH_HELLO_TAG dedup, stricter comments (432238a)
  • address post-review audit: correctness, structure, comments (0fbaa7a)
Maintenance
  • chore: rewrite external messaging to a modern-but-honest voice (804402a)
  • chore: bump to v0.6.0 (1a51912)
  • chore(deps): bump actions/checkout from 4 to 6 (#23) (6ab0552)
  • chore(deps): bump actions/configure-pages from 4 to 6 (#22) (4ce25df)
  • chore(deps): bump actions/deploy-pages from 4 to 5 (#21) (8224121)
  • chore: add SECURITY, CONTRIBUTING, dependabot config (#20) (74e335f)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.19...v0.5.20

Changes since v0.5.19:

Features

  • feat: Path B — direct-TCP data plane with AES-256-GCM framing (fc08057)
  • feat(direct-tcp): wire single-file striping into the CLI path (f26a93e)
  • feat(direct-tcp): single-file striping across N streams (protocol + handlers + client) (b937fec)
  • feat(direct-tcp): mandatory AEAD on rendezvous sessions — downgrade guard (55fb83a)
  • feat(direct-tcp): AEAD framing on the data plane + --direct CLI flag (493f679)
  • feat(direct-tcp): end-to-end rendezvous with AuthHello + full data session (926f35e)
  • feat(direct-tcp): one-shot rendezvous listener, session-scoped lifetime, no escalation over TCP (cb5153d)
  • feat(direct-tcp): CAP_DIRECT_TCP gate + zeroize session_key (ba09fcd)
  • feat(path-b phase 3c1): AEAD wire format primitives (0332e3c)
  • feat(path-b phase 3b): server handler for OpenDirectChannel (e737046)
  • feat(path-b phase 3a): protocol messages for direct-TCP rendezvous (ed029f9)
  • feat(path-b phase 2): bcmr serve --listen binds TCP, dispatch runs over socket (289e1d9)

Bug Fixes

  • fix(direct-tcp): squatter-resistant rendezvous accept (ba82772)
  • fix(direct-tcp): bind rendezvous listener to SSH_CONNECTION server_ip (a7a15a0)

Other

  • style: cargo fmt (d185ed3)
  • style: strip explanatory / narrative comments across the whole crate (020e349)
  • refactor: second-pass audit — Transport collapse + helper extraction (8aa22e7)
  • review: address Critical + Important findings from Path B code review (726905c)
  • polish(direct-tcp): pipelined+pool coverage, ProxyJump diagnostics, session-key zeroize (e48e633)
  • test(serve): split 1611-line e2e_serve_tests.rs into four files (7b0460b)
  • refactor(client): ServeClient holds Transport enum + Box<dyn AsyncRead/Write> (8b917be)
  • cleanup: strip phase-narrating comments, rewrite design doc without ASCII art (9e635fa)
  • bench(path-b): crypto microbench decides ring::AES-256-GCM (4a71e38)
  • refactor(path-b phase 1): extract SSH spawn into core::transport::ssh (828c9c8)
Maintenance
  • chore: address reviewer Minors + bump to v0.5.20 (1b002d0)
  • docs(path-b): note ProxyJump limitation (2978a8e)
  • docs(ablation): strip retrospective / defensive prose from Exp 10/13/14/16/17/18/19 (6be0e36)
  • docs(exp-20): trim to Exp 19's narrative style, use host-N/host-L codenames (b52ca69)
  • docs(exp-20): best-of-3 bench numbers + scp head-to-head (daa8b06)
  • docs(path-b): design doc for SSH rendezvous + direct TCP (956aac7)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.18...v0.5.19

Changes since v0.5.18:

Bug Fixes

  • fix(ui): ProgressRunner Drop aborts ticker; fallback warning now config-gated (a6d1735)
Maintenance
  • chore: bump version to v0.5.19 (aac2d43)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.17...v0.5.18

Changes since v0.5.17:

Other

  • polish: Exp 19 chart, README acks, defaults (parallel=4, update_check=off), fallback warning (e9d02d8)
Maintenance
  • chore: bump version to v0.5.18 (d735a9c)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.16...v0.5.17

Changes since v0.5.16:

Bug Fixes

  • fix(clippy): drop redundant .into_iter() on rhs of .zip() (rust 1.95) (652090a)

Other

  • perf(serve): ServeClientPool — parallel SSH connections, --parallel N wins (587a6af)
Maintenance
  • chore: bump version to v0.5.17 (e5dec4f)
  • docs(ablation): Experiment 19 on parallel SSH sessions + Path B sketch (8455c6b)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.15...v0.5.16

Changes since v0.5.15:

Other

  • refactor(serve): FileTransfer struct + helpers, per-chunk progress, GET size check (0199032)
Maintenance
  • chore: bump version to v0.5.16 (df7b7a3)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.14...v0.5.15

Changes since v0.5.14:

Bug Fixes

  • fix(serve): honor --verify on recursive upload (pipelined dir path) (91b8628)

Other

  • perf(serve): pipeline many-file PUT + GET via writer task split (336ac6e)
Maintenance
  • chore: bump version to v0.5.15 (47e0e81)
  • docs(ablation): Experiment 18 on client-side request pipelining (2b65486)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.13...v0.5.14

Changes since v0.5.13:

Other

  • perf(serve): gate per-file fsync on CAP_SYNC, default off (0ef963c)
Maintenance
  • chore: bump version to v0.5.14 (9110b12)
  • docs(ablation): Experiment 17 on per-file fsync gate + path-jail UX trap (767c267)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.9...v0.5.13

Changes since v0.5.9:

Bug Fixes

  • fix(clippy): drop unused Write import in splice path (24c4eb1)

Other

  • test(serve): cfg(unix) the whole e2e_serve_tests file (87b3c00)
  • test(fix): cfg(unix) the security tests + handle .exe suffix (b8aaaad)
  • perf(serve): rewrite CAP_FAST splice path to remove regression (067f2b0)
  • perf(stream): gate session + block-hash + checkpoint fsync on explicit resume intent (47c7847)
  • security(serve): root jail + PUT size bound (e97ac2e)
Maintenance
  • chore: bump version to v0.5.13 (213e8b7)
  • chore: bump version to v0.5.12 (bed3cca)
  • docs(ablation): Experiment 16 + scope clarity for auditors (365fd26)
  • docs: document v0.5.7-v0.5.9 features across all 3 locales (35726ed)
  • docs(ablation): replace Mermaid flowcharts with D2-rendered SVGs (2aba8c4)
  • docs(ablation): host codenames, mermaid diagrams, two new experiments (b1b8b3a)
  • docs(ablation): record Experiments 13 + CAS cap + CAP_FAST landings (94215a1)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.8...v0.5.9

Changes since v0.5.8:

Features

  • feat(serve): CAP_FAST — skip server hash, splice(2) on Linux (282ed76)
  • feat(cas): LRU eviction with configurable byte cap (c816f56)

Other

  • perf(stream): one spawn_blocking for the whole copy loop (c87e282)
Maintenance
  • docs(ablation): split monolithic page into Internals subsections (5a3a1c2)
  • docs(ablation): Experiments 10-12 (hash skip, dedup, cross-host compress) (8f0656b)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.7...v0.5.8

Changes since v0.5.7:

Features

  • feat(serve): content-addressed dedup for PUT (CAP_DEDUP) (73f3fe0)
  • feat(copy): preserve extended attributes on -p (9cf9112)

Bug Fixes

  • fix(deps): gate xattr dev-dep to Unix to unblock Windows CI (1a275f8)

Other

  • perf: skip whole-source BLAKE3 when nothing needs it (4ee7400)
Maintenance
  • chore: bump version to v0.5.8 (ae8cf9e)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.6...v0.5.7

Changes since v0.5.6:

Features

  • feat(serve): wire compression for Data frames (LZ4 + Zstd) (343ae55)

Other

  • bench: harness for local and compression benchmarks (64459f9)
  • perf: parallel local multi-file copy via --jobs/-j (1418470)
  • perf: skip per-file dir fsync unless --sync (25a3719)
Maintenance
  • chore: bump version to v0.5.7 (f30125f)
  • docs(ablation): add Experiments 7-9 for fsync gate, --jobs, and wire compression (4dfee9e)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.5...v0.5.6

Changes since v0.5.5:

Features

  • feat: emit error events to log + job state machine (e8128dd)

Bug Fixes

  • fix(remove): handle symlinks and all non-directory entries (d41abc7)

Other

  • test(ci): symlink remove + --json error events + status state machine (4560aa9)
Maintenance
  • chore: bump version to v0.5.6 (3c4af7d)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.4...v0.5.5

Changes since v0.5.4:

Bug Fixes

  • fix: emit scanning heartbeat during remove --json to avoid looking hung (4206679)
  • fix: replace unwrap with proper error handling in check remote paths (9f1c95d)

Other

  • refactor: extract scanning-runner helpers, extend --json fix to copy/move (e9a7303)
Maintenance
  • chore: bump version to v0.5.5 (abc716e)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.3...v0.5.4

Changes since v0.5.3:

Features

  • feat: --json detaches to background with job management (44b33a6)

Bug Fixes

  • fix: platform-guard libc::kill for Windows compatibility (3e99ead)
  • fix: graceful fallback when serve list exceeds frame limit (e58be3e)
Maintenance
  • chore: bump version to v0.5.4 (6bf337d)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.2...v0.5.3

Changes since v0.5.2:

Other

  • perf: single SSH connection for check, eliminate redundant stat (9806ff6)
Maintenance
  • chore: bump version to v0.5.3 (3c2a763)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.1...v0.5.2

Changes since v0.5.1:

Other

  • perf: check uses serve protocol for fast remote listing, adds scanning feedback (52c65fc)
Maintenance
  • chore: bump version to v0.5.2 (90f8618)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.5.0...v0.5.1

Changes since v0.5.0:

Features

  • feat: add remote path support for check command (ac2aabd)

Bug Fixes

  • fix: add missing inline_src_hash field on Linux copy_file_range path (f655c14)

Other

  • refactor: relocate ProgressRunner, unify TransferOptions, complete FinalizeCtx (de27a1f)
  • refactor: unify check command with collect+diff architecture (acd5832)
Maintenance
  • chore: bump version to v0.5.1 (7d904fb)
  • docs: add check command, --json flag, and AI-Agent feature to docs site (3fa2a00)
  • docs: add --json and check to README highlights and quick start (fdff6cc)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.19...v0.5.0

Changes since v0.4.19:

Features

  • feat: add --json flag with NDJSON streaming progress and check subcommand (fd27749)

Bug Fixes

  • fix: resolve clippy CI failures (63d6404)

Other

  • style: cargo fmt (5768c08)
  • refactor: trait defaults, scan dedup, output reorganization (f0c5c65)
  • refactor: decompose copy_file and extract shared helpers (bac9c55)
  • refactor: unify Copy/Move CLI args, extract TestMode helper, remove dead code (f549db1)
  • refactor: reduce parameter redundancy across command functions (ed7ea6d)
Maintenance
  • chore: bump version to v0.5.0 (0e7bde7)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.17...v0.4.19

Changes since v0.4.17:

Bug Fixes

  • fix: path traversal in serve, sync consistency, resume Decision enum (c20d339)
  • fix: path validation in serve, opt-level, fallocate error handling (f16a85e)
  • fix: avoid double-sync on copy_file_range path (7f60ba2)
Maintenance
  • chore: bump version to v0.4.19 (c65ac3b)
  • chore: switch license from GPL-3.0 to Apache-2.0 (c17f04c)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.17...v0.4.18

Changes since v0.4.17:

Other

  • refactor: decompose copy_file into strategy modules (de21412)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.16...v0.4.17

Changes since v0.4.16:

Other

  • refactor: extract resume logic to core::resume module, clean up comments (77d5a37)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.15...v0.4.16

Changes since v0.4.15:

Features

  • feat: add bcmr deploy command for remote installation (1bd025a)
  • feat(serve): wire serve protocol into remote copy with auto-fallback (d7e1457)
  • feat(serve): add serve client with typed request/response API (fb26bb4)
  • feat(serve): add binary frame protocol for bcmr serve (3f1b8a5)
  • feat: wire session-based resume with tail-block verification and add SCC integration tests (2d4c048)
  • feat: streaming checkpoint copy with durable sync and parallel SSH (a580485)

Bug Fixes

  • fix: session integrity checksum, block size assert, and carry-forward test (bbffb3e)
  • fix: address code review findings before release (d6a2c09)
  • fix: skip unix-only inode test on Windows (18665de)
  • fix(serve): fix double-write bug, resource leaks, and protocol safety (4751c1f)
  • fix: prevent fork bomb in serve tests and add child process cleanup (9a938e2)
  • fix: carry forward block hashes on resume for multi-crash resilience (75edd42)
  • fix: install markdown-it-mathjax3, fix VitePress image paths (d2b3a98)
  • fix: resolve clippy errors (io_other_error, too_many_arguments) (eddfffa)

Other

  • test: add unit tests for deploy and io modules (d8ed4f9)
  • test: add end-to-end integration tests for copy, resume, and verify (4aa5fad)
  • style: cargo fmt (bf4adc0)
  • refactor: rename SPARSE_BLOCK and block_bytes_in_current for clarity (0d70020)
Maintenance
  • docs: add serve protocol section to internals page (7319341)
  • docs: add serve protocol and deploy guide to all locales (4d2bbcf)
  • docs: update README and add Internals nav for zh/zh-Hant locales (23b1ea8)
  • chore: bump version to v0.4.16 (9dc3e5f)
  • docs: add bcmr serve implementation plan (2b75b9e)
  • docs: rewrite SCC documentation with algorithm design, math, and VitePress integration (5a1d872)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.14...v0.4.15

Changes since v0.4.14:

Bug Fixes

  • fix: report remove progress after successful deletion, finish dry-run runner (3cd90fd)
  • fix: improve reliability and feature parity for remote transfers (9df7d28)
  • fix: comprehensive code audit fixes across 12 source files (57b9af7)
Maintenance
  • chore: bump version to v0.4.15 (85ceecc)
  • chore: update docs links to custom domain, bump to v0.4.14 (36aee22)
  • chore: remove install_cn.sh, add TLS fallback retry to install.sh (48677a3)
  • docs: update install script URL to /install endpoint (8b2b7d6)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.13...v0.4.14

Changes since v0.4.13:

Features

  • feat: add -V/-p/-e/-n support for remote downloads (018cdb7)
  • feat: add resume/strict/append support for remote downloads (1c4b952)
  • feat: add -s (strict) support for remote uploads (1254933)
  • feat: add -C (resume) support for remote uploads, consolidate append logic (b8c3427)
  • feat: add -V (verify) support for remote uploads (2b38231)
  • feat: add -p (preserve) support for remote uploads (82bb4b2)
  • feat: add -e (exclude) and -n (dry-run) support for remote transfers (7e7af38)

Bug Fixes

  • fix: replace unwrap() with safe alternatives in remote_copy (dc723cf)
  • fix: suppress unused variable warning on Windows for mode parameter (869c549)
  • fix: ETA calculation excludes skipped bytes in append mode (95c1ffc)
  • fix: -a (append) now works for non-parallel directory uploads (89ca7c8)

Other

  • refactor: code quality cleanup (e8e453d)
  • test: add unit tests for checksum, traversal, utils, state, config, remote, cli (a48a523)
  • refactor: move remote copy orchestration to commands/remote_copy.rs (9653fa0)
  • refactor: extract shared resume/append/strict logic (64e9a7d)
  • refactor: code quality cleanup (785c4ed)
  • refactor: unify TUI rendering, eliminate parallel/non-parallel clear hack (f2e90b8)
  • refactor: replace scattered booleans with RemoteTransferOptions struct (e718bf0)
Maintenance
  • chore: update docs links to custom domain, bump to v0.4.14 (ca36856)
  • ci: update test workflow with stricter checks (e2c3e9b)
  • ci: split test and release into separate workflows (8e8e404)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.12...v0.4.13

Changes since v0.4.12:

Bug Fixes

  • fix: TUI double-draw on parallel switch and add remote append support (662a955)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz

Changelog

Full Changelog: https://github.com/Bengerthelorf/bcmr/compare/v0.4.11...v0.4.12

Changes since v0.4.11:

Bug Fixes

  • fix: TUI worker bars now use gradient colors, proper alignment, and longer file names (34f2503)

Download

Choose the appropriate binary for your platform:

  • Linux x86_64: bcmr-x86_64-linux.tar.gz (statically linked)
  • Linux ARM64: bcmr-aarch64-linux.tar.gz (statically linked)
  • macOS Intel: bcmr-x86_64-macos.tar.gz
  • macOS Apple Silicon: bcmr-aarch64-macos.tar.gz
  • Windows x86_64: bcmr-x86_64-windows.zip
  • Windows ARM64: bcmr-aarch64-windows.zip
  • FreeBSD x86_64: bcmr-x86_64-freebsd.tar.gz