• bvandeusen released this 2026-05-25 13:04:39 -04:00 | 860 commits to main since this release

    Patch release on top of v26.05.25.0. See PR #11 for the full change list.

    Operator-facing wins

    • Gallery now sorts by original post date when known — IR-migrated content surfaces at its actual publish year instead of piling up in one FC-scan-week bucket. Re-run /api/migrate/tag_apply to backfill primary_post_id on existing migrated images.
    • DeviantArt + Pixiv PostMetadata is no longer silently dropped during tag_apply phase 4 — one of two root causes of the missing-provenance complaint.
    • Corrupt files in /import no longer Celery-autoretry-loop forever — PIL OSError now skips as invalid_image cleanly.
    • Stuck batches are recoverable from the UI: new "Clear stuck..." button on the import task list, plus an inline action next to the scanning spinner. No more SQL needed.
    • Quick scan button is always visible (was hidden by a wedged active batch in the old UI).
    • Camie v2 ML tagger actually works — download_models.py was fetching the wrong filenames; tagger.py had wrong preprocessing + wrong output handling. Aligned with the published onnx_inference.py reference.
    • Directory card UI: 2× width, bounded preview slot heights so tall source images can't escape.

    Maintenance / recovery

    • recover_interrupted_tasks Beat sweep now flips pending/queued orphans (>30 min) to failed in addition to recycling processing rows. Fixes the 5,490-row pile a scan_directory crash can leave behind.
    • /api/import/clear-stuck manual escape hatch for the autoretry-loop case.

    Schema changes

    None. All fixes are logic-only.

    Recovery steps

    After deploying:

    1. Re-run /api/migrate/tag_apply on the existing manifest — phase 4 is idempotent; backfills primary_post_id and picks up previously-skipped DeviantArt + Pixiv entries.
    2. Gallery + timeline + jump immediately reflect publish dates.

    🤖 Generated with Claude Code

    Downloads