email: live backfill progress on Email Capture panel — v0.1.0:61

The first Gmail backfill leaves the account at "pending · never synced" until it
fully completes (the sync_runs row only finalizes at the end), so there was no
feedback. /api/email/status now also returns captured_emails (total, which climbs
page-by-page during backfill), the latest sync run, and a backfilling flag. The
panel shows a "Backfilling… N captured so far" banner + an Emails Captured count
and auto-refreshes every 5s while a backfill is in progress. Verified live in
preview with seeded data (count auto-climbed 37 -> 50 without manual refresh).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Keysat
2026-06-06 12:29:01 -05:00
parent 1850bc4431
commit 2cb476e36b
5 changed files with 60 additions and 12 deletions
+3 -2
View File
@@ -21,8 +21,9 @@ import { v_0_1_0_57 } from './v0.1.0.57'
import { v_0_1_0_58 } from './v0.1.0.58'
import { v_0_1_0_59 } from './v0.1.0.59'
import { v_0_1_0_60 } from './v0.1.0.60'
import { v_0_1_0_61 } from './v0.1.0.61'
export const versionGraph = VersionGraph.of({
current: v_0_1_0_60,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59],
current: v_0_1_0_61,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59, v_0_1_0_60],
})
+18
View File
@@ -0,0 +1,18 @@
import { VersionInfo } from '@start9labs/start-sdk'
// Email Capture: show live backfill progress. The status endpoint now reports total
// emails captured (climbs page-by-page during backfill, since the sync-run row only
// finalizes at the end), the latest sync run, and whether a backfill is still in
// progress. The panel shows a "Backfilling… N captured so far" banner + an Emails
// Captured count, and auto-refreshes every 5s while a backfill runs. No schema migration.
export const v_0_1_0_61 = VersionInfo.of({
version: '0.1.0:61',
releaseNotes: {
en_US: [
'Email Capture now shows live backfill progress: a count of emails captured so far',
'that ticks up while the first sync pulls your history, plus a clear backfilling banner',
'that refreshes on its own. No more staring at a static "pending" with no feedback.',
].join(' '),
},
migrations: { up: async () => {}, down: async () => {} },
})