Commit Graph

  • eefbd1e849 Merge feat/ref-supermode: SuperMode enum TapTap 2026-09-12 20:43:42 +02:00
  • 1fd462cca8 refactor(config): replace SUPER_MODE_* macros with SuperMode enum TapTap 2026-09-12 20:43:24 +02:00
  • 4ac37c4d8a refactor(dir-times): extract dir_times_should_capture predicate TapTap 2026-09-12 20:42:47 +02:00
  • 08af945bd6 Merge main back into dev after v2.19.0 release TapTap 2026-09-12 20:22:54 +02:00
  • 378d881ca7 Merge release/v2.19.0 into main: FastSync v2.19.0 v2.19.0 TapTap 2026-09-12 20:22:50 +02:00
  • cc27ee1b83 Release v2.19.0 TapTap 2026-09-12 20:22:46 +02:00
  • d653c3e151 Merge feat/tls-dummy-integration: verified/Local-only transport for daemon auth + persistent dummy key TapTap 2026-09-12 19:55:28 +02:00
  • 1b90ee2449 fix(review): close loopback TLS auth bypass; align docs and wrong-CN test TapTap 2026-09-12 19:50:52 +02:00
  • 89b967f29a Merge feat/dummy-key: persist anti-enumeration dummy key across restarts TapTap 2026-09-12 19:30:35 +02:00
  • 8f06ae5262 Merge feat/tls-auth: require verified/local transport for daemon auth modules TapTap 2026-09-12 19:29:35 +02:00
  • ac3c4c7c72 fix(a7-auth): harden dummy-key temp creation TapTap 2026-09-12 19:29:23 +02:00
  • d53614d06b fix(a7-3/s1): fail closed on non-loopback peers; require plaintext opt-in before challenge TapTap 2026-09-12 19:18:29 +02:00
  • f0381a6b8e fix(a7-auth): publish dummy-key sidecar atomically and harden reads TapTap 2026-09-12 19:16:11 +02:00
  • a7a1930e88 fix(a7-3/s1): require TLS or local transport for daemon auth TapTap 2026-09-12 19:02:05 +02:00
  • 42f01c0968 fix(a7-auth): persist dummy key in owner-only sidecar TapTap 2026-09-12 18:40:21 +02:00
  • 2489d422e5 Merge feat/a7-integration: SCRAM-SHA-256 daemon auth + lazy protocol debug escaping TapTap 2026-09-12 18:21:13 +02:00
  • e2ddc0c07f Merge feat/hardening-misc: lazy protocol debug escaping, log_debug_enabled TapTap 2026-09-12 18:08:56 +02:00
  • 1480716304 Merge feat/a7-auth: SCRAM-SHA-256 daemon auth replacing replayable static digest TapTap 2026-09-12 18:08:56 +02:00
  • 1de1376e54 fix(a7-auth): final hardening pass on SCRAM auth TapTap 2026-09-12 18:08:46 +02:00
  • eaf67f6257 fix(a7-auth): address SCRAM auth review findings A-G TapTap 2026-09-12 17:56:52 +02:00
  • 8c94ec9886 feat(a7): SCRAM-SHA-256 daemon auth to replace replayable digest TapTap 2026-09-12 17:19:33 +02:00
  • 87585e9881 perf(protocol): skip string debug escaping when proto debug is off TapTap 2026-09-12 16:54:43 +02:00
  • 1ba6372017 Merge feat/p8-integration: P8 hardening batch (fs/transport, identity/server, CLI quality, fuzz) TapTap 2026-09-12 15:55:49 +02:00
  • 9f74b21c64 test(p8h): assert a --no-super daemon still refuses client --super TapTap 2026-09-12 15:55:44 +02:00
  • 108fee1e41 fix(p8h): restore daemon --super refusal, race-free secret-file check, remaining log escapes TapTap 2026-09-12 15:50:14 +02:00
  • e1bb2e9233 chore(p8h): reconcile ssh old-args docs, secret-file perms docs; fix test cppcheck TapTap 2026-09-12 15:33:54 +02:00
  • 81fed86748 Merge branch 'feat/p8h-fuzz' into feat/p8-integration TapTap 2026-09-12 15:22:00 +02:00
  • 5844648fb2 Merge branch 'feat/p8h-cli' into feat/p8-integration TapTap 2026-09-12 15:22:00 +02:00
  • 4331bc4a8d Merge branch 'feat/p8h-core' into feat/p8-integration TapTap 2026-09-12 15:22:00 +02:00
  • d97e3982b4 test(fuzz): add config-frame receive and identity parser fuzz targets TapTap 2026-09-12 15:21:33 +02:00
  • 6d32bc795b fix(p8h-core): escape log paths, fail closed on identity activation, tidy server gate TapTap 2026-09-12 15:03:54 +02:00
  • abad1664ba security(shared): fix -K TOCTOU, ssh old-args quoting, TLS opts, secret-file perms, sparse dedup TapTap 2026-09-12 15:01:48 +02:00
  • 7e45891257 refactor(cli): dedupe server/client option parsing and tighten CLI tests TapTap 2026-09-12 14:54:47 +02:00
  • b8db810ee5 Merge feat/p8-security: P8 security hardening (daemon ownership opt-in, fake-super gating, no implicit numeric-ids, copy-as fail-fast) TapTap 2026-09-12 14:33:47 +02:00
  • ea0a0e2eaf fix(p8-security): make --copy-as directory ownership airtight; harden tests/logs TapTap 2026-09-12 14:33:42 +02:00
  • b216ed31fb fix(p8-security): close review gaps in the ownership gate and copy-as failure propagation TapTap 2026-09-12 14:18:03 +02:00
  • e3840c8326 fix(p8-security): enforce daemon ownership policy, gate fake-super replay, drop implicit numeric-ids, make copy-as failures per-entry TapTap 2026-09-12 14:00:55 +02:00
  • 58409cee10 test(p7-privilege): skip copy-as refusal test when workspace is not traversable by the unprivileged uid TapTap 2026-09-12 13:08:22 +02:00
  • 549a23993f Merge feat/p7-privilege: Phase 7 Wave E (privilege: --super/--no-super + --copy-as safe subset; PROTOCOL 2.18.0; all rsync rows implemented) TapTap 2026-09-12 12:55:55 +02:00
  • a5f6899590 docs(p7-privilege): recount Summary to 143/0/4/0/0/0; Wave E shipping note TapTap 2026-09-12 12:55:47 +02:00
  • 938886829e fix(p7-privilege): close re-review gaps (implicit dir ownership, daemon --super, write-devices gate) TapTap 2026-09-12 12:54:45 +02:00
  • fdc0f238c9 fix(p7-privilege): harden copy-as/super gates, own dirs/specials TapTap 2026-09-12 12:34:43 +02:00
  • e6a65d0980 Merge branch 'feat/p7-copy-as' into feat/p7-privilege TapTap 2026-09-12 12:14:44 +02:00
  • a785ec13c4 feat(p7-super): implement --super/--no-super safe-subset privilege gate (protocol 2.18.0) TapTap 2026-09-12 12:01:19 +02:00
  • 80dd64aae6 feat(identity): implement --copy-as USER[:GROUP] safe subset (P7 Wave E) TapTap 2026-09-12 11:58:37 +02:00
  • f64d252faf docs: recount RSYNC_COMPAT to 141/0/4/0/0/2 after Phase 7 Waves B-D; refresh README short-option note TapTap 2026-09-12 11:30:06 +02:00
  • 003a5e8f2f Merge feat/p7-times: Phase 7 Wave D (real dir/symlink time preservation making -O/-J meaningful; secluded-args -> Impossible/Divergence; PROTOCOL 2.17.0) TapTap 2026-09-12 11:22:23 +02:00
  • 9d97e1d3c0 Merge feat/p7-devices: Phase 7 Wave C (device/special statuses; --copy-devices --sendfile non-regular fallback) TapTap 2026-09-12 11:21:09 +02:00
  • 402e829fef docs(p7-times): re-review nits (chunked STATUS_DIR_TIMES comment; -M/--metadata -> --preserve; -m sink -> -j/--threads) TapTap 2026-09-12 11:20:40 +02:00
  • 9749c7878c fix(p7-times): dir-time entries only record (never create dirs); bound/chunk dir-time frames; harden list add; docs+tests TapTap 2026-09-12 11:06:05 +02:00
  • 8ca2b74e79 fix(p7-devices): sendfile falls back to buffered read for non-regular sources (--copy-devices no longer hangs); test/doc hardening TapTap 2026-09-12 11:00:26 +02:00
  • 04514c5b70 Merge feat/p7-output-fs: Phase 7 Wave B (sparse hole preservation, partial retention, fake-super replay, block-size; crtimes/stderr -> Impossible/Divergence) TapTap 2026-09-12 10:32:03 +02:00
  • a539d8b2ba docs(p7-output-fs): align fake-super comments with silent EPERM/EACCES skip (re-review nit) TapTap 2026-09-12 10:31:56 +02:00
  • f1a447bb4a feat(p7-times): real directory/symlink time preservation; -O/-J meaningful TapTap 2026-09-12 10:31:20 +02:00
  • 227d001092 feat(p7-devices): finalize device/special-file statuses (devices/copy/write -> implemented, specials -> Impossible/Divergence for sockets) + coverage TapTap 2026-09-12 10:10:21 +02:00
  • f2ba8211ce fix(p7-output-fs): address c-review (fake-super mode sanitization HIGH; sparse/preallocate precedence; partial no_replace guard; stronger tests) TapTap 2026-09-12 09:55:40 +02:00
  • 47de05d215 feat(p7-output-fs): sparse hole preservation (-S), partial retention (-P), fake-super replay; block-size verified; crtimes/stderr -> Impossible/Divergence (Wave B) TapTap 2026-09-11 15:58:20 +02:00
  • f34eb34f87 Merge feat/p7-cli-namespace: Phase 7 Wave A CLI-namespace parity (renames colliding short flags to rsync parity) TapTap 2026-09-11 14:44:58 +02:00
  • 560ed601f9 docs(p7-cli-namespace): sweep remaining -m-as-multithreading refs to -j/--threads TapTap 2026-09-11 14:37:48 +02:00
  • d39ddab42c fix(p7-cli-namespace): address c-review (setfacl -m mangled to --threads; two -s tests lost intent; label/doc sweeps) TapTap 2026-09-11 14:34:03 +02:00
  • 66e82f9384 feat(p7-cli-namespace): rename colliding short flags to rsync parity (Wave A) TapTap 2026-09-11 14:20:15 +02:00
  • 15363c0018 docs: add Phase 7 plan (CLI namespace parity, output/filesystem completion, privilege) toward full rsync flag parity TapTap 2026-09-11 13:47:44 +02:00
  • c1eac6321c docs: recount RSYNC_COMPAT to 129/2 after --batch (Wave D); Phase 6 complete TapTap 2026-09-10 22:07:10 +02:00
  • f43f236f66 Merge feat/p6-batch: residual batch --write-batch/--only-write-batch/--read-batch TapTap 2026-09-10 22:06:23 +02:00
  • fc2d144492 fix(p6-batch): reject clean EOF on record read; add traversal/EOF security tests TapTap 2026-09-10 22:05:18 +02:00
  • c026176bb3 feat(p6-batch): residual-batch write/read driver + codec TapTap 2026-09-10 21:40:07 +02:00
  • 4930127312 feat(p6-batch): CLI/config plumbing for --write-batch/--only-write-batch/--read-batch TapTap 2026-09-10 21:14:30 +02:00
  • 52f45692b9 docs: recount RSYNC_COMPAT to 126/5 after --protocol (Wave C) TapTap 2026-09-10 20:45:32 +02:00
  • 40b0870514 Merge feat/p6-protocol: --protocol version-force flag (client-only) TapTap 2026-09-10 20:44:44 +02:00
  • 5262cc2597 test(p6-protocol): harden validation null-check; cover missing-arg --protocol TapTap 2026-09-10 20:44:33 +02:00
  • 9fe6d6c748 test(p6-protocol): unit + integration coverage for --protocol TapTap 2026-09-10 20:36:05 +02:00
  • 2b7bb2d523 feat(p6-protocol): --protocol version-force flag (client-only) TapTap 2026-09-10 20:36:05 +02:00
  • bb27b2af50 docs: correct RSYNC_COMPAT selection/update rows to implemented (no code change) TapTap 2026-09-10 20:16:03 +02:00
  • a2ac599298 docs: recount RSYNC_COMPAT to 121/10 after Phase 6 waves A-B (--stop-after/--stop-at, --iconv) TapTap 2026-09-10 18:18:17 +02:00
  • 282aebb7f5 Merge feat/p6-stop: --stop-after/--stop-at deadline stop TapTap 2026-09-10 18:16:55 +02:00
  • b2afcf2c65 Merge feat/p6-iconv: --iconv charset conversion + PROTOCOL 2.16.0 TapTap 2026-09-10 18:16:51 +02:00
  • 09a07179c9 fix(p6-stop): init -m scan_stopped_early; gate delete warning; stabilize partial-stop test TapTap 2026-09-10 18:16:35 +02:00
  • cac805b661 fix(p6-iconv): prevent convert buffer overflow; validate both directions; reset on error; more tests TapTap 2026-09-10 17:49:29 +02:00
  • ac7e9e3bc1 fix(p6-stop): block delete-manifest on early stop; sync -m manifest access; overflow guard TapTap 2026-09-10 17:39:34 +02:00
  • 7d6665633d test(p6-iconv): iconv unit, config wire-roundtrip, integration tests TapTap 2026-09-10 17:13:06 +02:00
  • 6e02a24232 feat(p6-iconv): --iconv charset conversion + PROTOCOL 2.16.0 TapTap 2026-09-10 17:13:01 +02:00
  • 37cff96537 test(p6-stop): unit and integration tests for stop deadlines TapTap 2026-09-10 16:27:49 +02:00
  • 24d1448246 feat(p6-stop): --stop-after/--stop-at deadline transfer stop TapTap 2026-09-10 16:27:49 +02:00
  • 6bb63c6f21 docs: recount RSYNC_COMPAT to 118/13 after daemon Wave C (--no-motd + MOTD) TapTap 2026-09-10 13:59:15 +02:00
  • 61eb08023a Merge feat/d5-daemon-motd: daemon MOTD display + --no-motd TapTap 2026-09-10 13:59:07 +02:00
  • 0c35cf2b82 test(d5-daemon-motd): assert no banner when no config key TapTap 2026-09-10 13:58:21 +02:00
  • cf5f730940 feat(d5-daemon-motd): daemon MOTD display + --no-motd TapTap 2026-09-10 13:52:24 +02:00
  • 8330f275a6 docs: recount RSYNC_COMPAT to 117/14 after daemon Wave B auth (--password-file, --early-input) TapTap 2026-09-10 13:27:39 +02:00
  • d3c9f1d218 Merge feat/d5-daemon-auth: daemon password auth (--password-file, --early-input) TapTap 2026-09-10 13:27:27 +02:00
  • accd34ad60 fix(d5-daemon-auth): address auth review findings (Wave B) TapTap 2026-09-10 13:20:42 +02:00
  • dd5ae60459 feat(d5-daemon-auth): password auth, --password-file, --early-input TapTap 2026-09-10 12:50:56 +02:00
  • 958eddf414 docs: recount RSYNC_COMPAT to 115/16 after daemon Wave A (--daemon/--config/--dparam/--no-detach) TapTap 2026-09-09 18:40:06 +02:00
  • 8440dbfdb8 Merge feat/d5-daemon-core: daemon lifecycle, module config, ::dest (PROTOCOL 2.15.0) TapTap 2026-09-09 18:39:37 +02:00
  • 7c55409a6b fix(d5-daemon-core): cppcheck const-correctness, wire module length cap, daemonize chdir/umask, daemon confinement tests TapTap 2026-09-09 18:30:52 +02:00
  • b3d7d64347 feat(d5-daemon-core): daemon lifecycle, module config, ::dest, PROTOCOL 2.15.0 TapTap 2026-09-09 17:48:07 +02:00
  • 9d17e951f1 docs: recount RSYNC_COMPAT to 111/20 after Phase 5 waves A-C; clang-format 18 reflow TapTap 2026-09-09 14:37:52 +02:00
  • 1e02ebcd32 Merge feat/p5-remote-option: --remote-option, --trust-sender TapTap 2026-09-09 14:35:26 +02:00
  • b1c63ff947 Merge feat/p5-socket: --address, -4/-6, --sockopts, server bind options TapTap 2026-09-09 14:30:36 +02:00
  • 35f4297538 Merge feat/p5-rsh: --rsh/-e, --rsync-path, --blocking-io, --outbuf TapTap 2026-09-09 14:29:58 +02:00
  • f86ba7a556 fix(p5-socket): clang-format 18 reflow + cppcheck const-correctness TapTap 2026-09-09 14:23:59 +02:00