-
released this
2026-05-24 12:52:52 -04:00 | 727 commits to dev since this releaseBig 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 under
extension/. Six platforms (Patreon, SubscribeStar, Hentai-Foundry, Discord, Pixiv, DeviantArt). Popup with per-platform Export + Export All + Sources tab. Floating "Add to FabledCurator" button on artist pages. New backend/api/extension/quick-add-source+/api/extension/manifest+/extension/<filename>(serves signed XPI withapplication/x-xpinstallMIME). NewBrowserExtensionCard.vueon Settings → Maintenance. CI workflow signs via Mozilla AMO (unlisted) on main pushes + commits XPI back so next build bundles it into the Docker image.Worker resilience
- Recovery sweep tightened 30min → 5min — flips stuck
processingrows automatically. import_media_filebody-wrapped so no exit leaves rows inprocessing.- Celery
autoretry_for(OperationalError, DBAPIError, OSError) + exponential backoff onimport_media_file,generate_thumbnail,tag_and_embed,download_source. - Per-task
soft_time_limit+time_limitsafety nets.
Migration UX
- FormData passthrough in
useApi— IR/GS export-file UI uploads now actually work. - Backup subprocess 30-min wall-clock timeout (FC-3h queued for the full promotion).
UI
- Global
.fc-contentpadding-top so view content doesn't start hidden behind the sticky TopNav.
CI / lint
- extension.yml YAML schema fix.
- ASYNC240 —
/api/extension/manifestfilesystem work moved toasyncio.to_thread.
Test hygiene
test_recover_interrupted_only_oldunpinned from the threshold value.
Operator workflow
- After pulling: force-update
app,worker,ml-worker,scheduler,web. - 2224 stuck-processing rows from the IR migration will recover within 5 min of
schedulercoming up. - First signed XPI lands ~5-10 min after this release (Mozilla signing + bot commit triggers a second build that bundles the XPI). After that, the Browser Extension card on Settings → Maintenance goes from "No bundled extension found" to the "Install Firefox extension" CTA.
Downloads
- Recovery sweep tightened 30min → 5min — flips stuck