Artist identity/storage/display decoupling — rename, move-source, add-time name resolution (#130) #193
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?
Merges dev → main. All CI-green on dev head
0963bf0(run 1931). Migration 0077 (drops uq_artist_name).Fixes the artist-model fragility: one
slugcolumn was doing identity + storage-path + display, bothnameandslugwere UNIQUE. Decoupled into an immutable, unique, readable slug (the on-disk path key — never moves) and a freely-editable, non-unique display name.Rename (step 1)
Inline pencil-edit on the artist header →
PATCH /api/artists/<id>; name only, slug/files untouched. Migration 0077 drops name-uniqueness so two real creators can share a name.Move source into another artist (step 4)
A "Move…" action per source on the artist Management tab →
POST /api/sources/<id>/reassign. Re-attributes the source, its posts, and its images to the target artist (no files move — immutable slug); deletes the old artist if left empty. Consolidates split/mis-named artists.Identity-by-source (step 2)
quick-add resolves the artist by an existing (platform, url) source first, so a re-add reuses the artist even after it was renamed.
Add-time display-name resolution (steps 3 + 5)
The extension add now names artists by their real display name, not the URL handle: pixiv via the app API (was the numeric id), patreon via the campaigns API, subscribestar via the profile page. Best-effort, falls back to the readable handle on any failure. gallery-dl platforms keep their handle. All curator-core — the extension is unchanged (sends only the URL).
🤖 Generated with Claude Code
https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM