Ship: title-based WIP auto-tagging (#1458) #222
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ships title-based WIP auto-tagging from
devtomain(task #1458). CI-green on dev head0da0e47(run 2175: lint/backend/frontend/integration).What ships
When a freshly-imported post's TITLE explicitly declares work-in-progress ("WIP", "[WIP]", "W.I.P", "work in progress"), the importer auto-applies the
wipsystem tag to its images — a deterministic, precision-first complement to the MLwiphead. WIP images are excluded from Explore/training, so this honours the artist's own label at import.services/wip_title.py): token-anchored —swipe/wiped/wipingnever match.source="wip_title"stamped on the tag.ImportSettings.wip_title_tagging_enabled(default on).POST /settings/wip-title/scan→tasks.maintenance.backfill_wip_title_tags(operator-triggered, idempotent; deliberately not a beat). Settings UI: toggle + "Scan existing posts for WIP titles" button.test_wip_title.py(matcher) +test_wip_title_tagging.py(integration).Foundation for the follow-up system-tag behavior refactor (editor→process group, WIP provisional auto-apply):
wip_titleis the trusted, non-self-training label source that bootstraps the wip head.Post-deploy
New imports tag live. To catch the existing library, press "Scan existing posts for WIP titles" once in Settings → Maintenance → Ingestion & filters.
🤖 Generated with Claude Code
Auto-apply the `wip` system tag to posts whose TITLE explicitly declares work-in-progress ("WIP" / "work in progress") — a deterministic, high-precision complement to the image-based ML `wip` head. WIP images are excluded from the Explore/gallery browse, so honouring the artist's own label keeps unfinished pieces out of the main browse. - services/wip_title.py: precision-first token-anchored matcher (swipe/wiped never trip it) + sync apply helpers (source='wip_title', ON CONFLICT DO NOTHING, chunked under the psycopg param ceiling). - importer: live hook on FRESH import only (never on deep-scan/supersede), so a manually-removed WIP tag is never re-applied by a routine re-scan. - maintenance.backfill_wip_title_tags: operator-triggered back-catalogue sweep (coarse SQL prefilter + regex confirm, keyset-paginated). Deliberately NOT a beat — a periodic re-run would silently undo manual removals. - ImportSettings.wip_title_tagging_enabled (default ON, migration 0085) gating the live hook; GET/PATCH + POST /settings/wip-title/scan. - Settings UI: toggle + "Scan existing posts" button. - Tests: pure matcher unit tests + integration (apply idempotency, backfill precision). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>