feat(drive): emit drive_sync_progress events during watch sync#76
Merged
Conversation
runDriveSyncOnce accepts an onProgress callback and reports processed/total over actionable paths only (transfers, deletes, conflicts), excluding unchanged and state-only paths so incremental syncs show meaningful progress. drive watch forwards the callback as drive_sync_progress NDJSON events.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
wspc drive watch --jsonnow emits incrementaldrive_sync_progressevents during a sync round, so consumers (wspc-drive dashboard) can show live per-file progress instead of a staticSyncing…badge.How
runDriveSyncOncetakes an optionalonProgress?: (processed, total) => void.decideDriveActionover every path to computetotal= number of actionable paths (transfers, deletes, conflicts), excludingunchanged/state_only/remove_state. This keeps incremental syncs from jumping straight to ~100% and stalling.processedand firesonProgressafter each actionable path.drive watchforwards the callback as{ "kind": "drive_sync_progress", "processed": N, "total": M }NDJSON events (one per actionable file — rate is bounded by network I/O, so no timer throttle).Compatibility
Purely additive. Old consumers ignore the new event kind.
Tests
runDriveSyncOncereportstotal= actionable count (unchanged excluded) andprocessedincrements 0 → total.drive watchemitsdrive_sync_progressevents from the progress callback.Design:
docs/superpowers/specs/2026-07-08-library-sync-progress-design.mdin wspc-drive.