diff --git a/frontend/src/components/SyncStatus.tsx b/frontend/src/components/SyncStatus.tsx
index 447238e..2e5c368 100644
--- a/frontend/src/components/SyncStatus.tsx
+++ b/frontend/src/components/SyncStatus.tsx
@@ -57,6 +57,13 @@ export default function SyncStatus({
{t("header.sync.syncing", { count: syncing })}
+ ) : notFull > 0 ? (
+ // Recent uploads are in, but the scheduler is still backfilling full history —
+ // so "all synced" would be misleading. Reflect the deep work as active.
+
+
+ {t("header.sync.backfillingHistory")}
+
) : (
{t("header.sync.allSynced")}
)}
@@ -74,9 +81,10 @@ export default function SyncStatus({
>
)}
- {/* Pause only makes sense when there's work to pause; Resume must always show
- while paused so it can be lifted. Hidden entirely when idle and not paused. */}
- {isAdmin && (data.paused || syncing > 0) && (
+ {/* Pause only makes sense when there's work to pause (recent OR deep backfill);
+ Resume must always show while paused so it can be lifted. Hidden entirely when
+ idle and not paused. */}
+ {isAdmin && (data.paused || syncing > 0 || notFull > 0) && (