a9322d3214
Sync change detection (3rd attempt — now correct): - After UPLOAD: save null remote metadata (server mtime unknown until next listing); decide() treats null remoteModifiedAt as "not changed" - After DOWNLOAD: read actual local mtime via accessor.lastModifiedMs() so the stored value matches what walkFiles() sees on next scan - SKIP reconciliation: if known state has null timestamps and both sides exist, fill them in — stabilises state within 2 syncs after first transfer - Extract syncDecide() as internal top-level function for testability Unit tests (14 cases covering all key scenarios): - First sync decisions (upload/download/conflict) - Second sync after upload with null remote metadata → SKIP - Second sync after download with recorded local mtime → SKIP - Epoch-millis precision: same ms = SKIP, +1ms = change detected - Regression: epoch-second stored value would have differed → now correct - Delete behaviour (MIRROR vs KEEP) - Direction filters (UPLOAD_ONLY, DOWNLOAD_ONLY) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0 lines
0 B
Plaintext
0 lines
0 B
Plaintext
The file is empty.