-
released this
2026-05-24 14:30:26 -04:00 | 724 commits to dev since this releaseExtends the IR migration so post-level data (title, description, source URL, publish date, attachment count) survives IR shutdown, and adds a modal-side artist fallback so IR-imported images without ImageProvenance still show a "by " line.
IR Post/Provenance restore
- IR export script bumped to schema v2; dumps PostMetadata as
image_postswith per-post sha256 lists. ir_ingest.pyaccepts schema 1 or 2; carriesimage_postsinto the manifest.tag_apply.pynew phase 4: find-or-createsSource+Post+ImageProvenanceper IR PostMetadata entry. Idempotent, dry-run safe.
Modal artist fallback
/api/gallery/image/<id>now returnsartist: {id, name, slug}whenimage_record.artist_idis set.ProvenancePanel.vueshows a "by " line when ImageProvenance is empty but a direct artist FK exists.
Operator workflow
- Pull this image; force-update services.
- Deploy a one-shot
ir-exportservice inside the IR stack (see chat for snippet) → runsscripts/export_for_fabledcurator.py --output /staging/ir-export-v2.json. - Settings → Maintenance → Legacy migration → upload the new JSON to the IR slot.
- Click "3. Ingest IR" (works now thanks to the FormData fix in v26.05.24.1).
- Click "5. Apply IR tags" — phase 4 fires alongside phases 1-3.
- Open any image modal: ImageProvenance entries render for images-in-posts; artist fallback line renders for everything else.
Downloads
- IR export script bumped to schema v2; dumps PostMetadata as