fix(maint): resurface dedup/gated-purge results after navigate-away (#877) #113

Merged
bvandeusen merged 1 commits from dev into main 2026-06-16 16:48:52 -04:00
Owner

Long-running maintenance tasks now survive navigating away or reloading the page.

Problem

VideoDedupCard + GatedPurgeCard held the in-flight Celery task id only in component refs and polled task-result inline — leaving the page mid-run lost the id, so the result was never shown even though the task finished on the worker. Secondary bug: both watched QueueStatusBar queue="maintenance" but tasks.admin.* routes to maintenance_long, so the bar never reflected their own task.

Fix

  • New shared useMaintenanceTask composable: persists {taskId, mode, startedAt} to localStorage on dispatch, re-attaches on mount, and re-shows the result when the task finishes (celery result backend retains the summary). 3h stale-guard.
  • Both cards refactored onto it; card-specific computeds + confirm dialog retained.
  • QueueStatusBar corrected to queue="maintenance_long".

CI green on dev (run 1174, e287802). Frontend-only.

🤖 Generated with Claude Code

Long-running maintenance tasks now survive navigating away or reloading the page. ## Problem `VideoDedupCard` + `GatedPurgeCard` held the in-flight Celery task id only in component refs and polled `task-result` inline — leaving the page mid-run lost the id, so the result was never shown even though the task finished on the worker. Secondary bug: both watched `QueueStatusBar queue="maintenance"` but `tasks.admin.*` routes to `maintenance_long`, so the bar never reflected their own task. ## Fix - New shared `useMaintenanceTask` composable: persists `{taskId, mode, startedAt}` to localStorage on dispatch, re-attaches on mount, and re-shows the result when the task finishes (celery result backend retains the summary). 3h stale-guard. - Both cards refactored onto it; card-specific computeds + confirm dialog retained. - `QueueStatusBar` corrected to `queue="maintenance_long"`. CI green on dev (run 1174, e287802). Frontend-only. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bvandeusen added 1 commit 2026-06-16 16:48:47 -04:00
fix(maint): resurface dedup/gated-purge results after navigate-away (#877)
CI / lint (push) Successful in 4s
CI / frontend-build (push) Successful in 21s
CI / backend-lint-and-test (push) Successful in 28s
CI / integration (push) Successful in 3m16s
e287802ecb
Long-running maintenance tasks must survive navigating away or reloading
the page. VideoDedupCard + GatedPurgeCard held the in-flight Celery task id
only in component refs and polled task-result inline, so leaving the page
mid-run lost the id and the result was never shown — even though the task
finished on the worker.

New shared composable useMaintenanceTask: persists {taskId, mode, startedAt}
to localStorage on dispatch, re-attaches on mount, and re-shows the result
when the task finishes (the celery result backend retains the summary well
under result_expires). Stale-guard skips resume past 3h. Both cards refactored
onto it; card-specific computeds + confirm dialog kept.

Also fixed the QueueStatusBar lane: both cards watched queue="maintenance"
but tasks.admin.* routes to maintenance_long, so the bar never reflected
their own task — now queue="maintenance_long".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bvandeusen merged commit 11ddfc3876 into main 2026-06-16 16:48:52 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#113