• bvandeusen released this 2026-05-24 12:52:52 -04:00 | 727 commits to dev since this release

    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 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 with application/x-xpinstall MIME). New BrowserExtensionCard.vue on 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 processing rows automatically.
    • import_media_file body-wrapped so no exit leaves rows in processing.
    • Celery autoretry_for (OperationalError, DBAPIError, OSError) + exponential backoff on import_media_file, generate_thumbnail, tag_and_embed, download_source.
    • Per-task soft_time_limit + time_limit safety 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-content padding-top so view content doesn't start hidden behind the sticky TopNav.

    CI / lint

    • extension.yml YAML schema fix.
    • ASYNC240 — /api/extension/manifest filesystem work moved to asyncio.to_thread.

    Test hygiene

    • test_recover_interrupted_only_old unpinned 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 scheduler coming 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