• bvandeusen released this 2026-05-25 14:30:50 -04:00 | 855 commits to main since this release

    Patch release on top of v26.05.25.1. See PR #12 for the change list.

    Operator-facing win

    Scanning the GS download dir now enriches superseded images with the GS sidecar's post metadata. Previously _supersede() was file-only — bigger version of an IR-migrated image would replace the file but lose the gallery-dl JSON sidecar's Post/Source/ImageProvenance entirely. The behavior is additive: any existing IR-migration provenance survives, and the new GS-sidecar provenance gets added as a second ImageProvenance row that the modal surfaces.

    UI

    • Scan trigger button now produces visible feedback (immediate "Scan triggered" toast + 2s status refresh + "Scan complete — no new files" toast when the scan quick-finalizes against an already-imported library).

    CI

    • pip wheel cache + uv pip install --system when available — ~2 min saved on warm runs.
    • pytest --durations=25 on integration job to expose slowest tests for future targeted optimization.

    Schema changes

    None.

    Next step for the operator

    Now that this is on main + deployed, run a deep scan (Settings → Import → Quick scan with deep mode, or curl -X POST /api/import/trigger -d '{"mode":"deep"}'). For each GS file at /import/...:

    • Same SHA256 as an existing FC row → _deep_rederive backfills phash + sidecar
    • Phash matches a smaller existing IR-migrated image → _supersede swaps file AND applies sidecar
    • Brand new → fresh import with sidecar

    🤖 Generated with Claude Code

    Downloads