v26.05.24.1: FC-3g Firefox extension + worker resilience + UI/migration fixes #7
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Big release rolling up FC-3g (Firefox extension), worker-level recovery hardening, and several dogfood fixes surfaced during the IR migration.
Headline — FC-3g: Firefox extension
Plain-JS MV3 Firefox extension that pushes session cookies from the six supported platforms into FC's
/api/credentials, and lets you add a creator as a Source from their page in one click.extension/at the repo root; built with Mozillaweb-ext./api/extension/quick-add-source(derives platform + artist slug from URL, find-or-creates Artist + Source),/api/extension/manifest(install metadata),/extension/<filename>static route serving the signed XPI withapplication/x-xpinstallMIME so Firefox installs in one click.BrowserExtensionCard.vueon Settings → Maintenance: install button + API URL/key copy/rotate..forgejo/workflows/extension.ymllints on dev, signs via Mozilla AMO (unlisted) + commits XPI back on main → next build bundles it into the Docker image.Worker resilience (operator-mandated 2026-05-24)
Operator hit a 2224-row pile of
ImportTask.status='processing'zombies during the IR migration. Built proper recovery into the worker code itself:STUCK_THRESHOLD_MINUTES30 → 5. The sweep flips the existing 2224 zombies retroactively within 5 min of the new image being deployed.failed(with a real error message) or relies on Celery autoretry. No path can leave it stuck inprocessing.OperationalError/DBAPIError/OSErrorforimport_media_file,generate_thumbnail,tag_and_embed,download_source. Exponential backoff with jitter, max 3 attempts.soft_time_limit+time_limitsafety nets so a runaway task can't sit forever.Migration UX fixes
"{}"(backend saw an empty multipart payload). Now FormData passes through unaltered.UI
.fc-contentso views don't start hidden behind the sticky TopNav (depending on parent overflow interactions). Scrolled-down content still slides under the nav — gradient-fade design intact.CI
/api/extension/manifestfilesystem work moved intoasyncio.to_threadper ruff.Test hygiene
test_recover_interrupted_only_oldfrom the recovery threshold value so future tightening doesn't break it.Operator notes
app,worker,ml-worker,scheduler, andwebservices.processingrows will recover within 5 min ofschedulercoming up on the new image.