- Adds syncAllMutation calling trpc.syncAllProjects once for all cards - Shows Sync All button in header when ≥1 project exists (hidden otherwise) - Propagates isPending to ProjectCard.syncAllPending to disable per-card sync - On success: toasts all-success or failure count; invalidates listProjects + getProjectSyncStatus per project - On network error: toasts Sync failed with err.message - Adds unit tests for ProjectSyncManager.syncAllProjects: empty list, all succeed, partial failure, result shape, and failure counting logic Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.1 KiB
5.1 KiB