You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
so an InvokeAI-board album is rewritten to source_type: directory with every invokeai_* field cleared, and umap_eps reset to the 0.07 default. The YAML is rewritten before move_images rejects the operation for board albums (routers/index.py), so the damage is already persisted.
Reproduction
Create an InvokeAI-board-backed album.
Bookmark any image in it.
Bookmark menu → Move to folder → pick a folder outside the album → answer "Yes, Add Folder".
Inspect config.yaml: source_type is now directory, invokeai_root/invokeai_url/invokeai_board_ids are gone.
Why it matters
After the demotion:
Update Index takes the directory branch and recursively scans InvokeAI's outputs/images (and, once Index InvokeAI board videos alongside board images #369 lands, outputs/videos) as ordinary directories, instead of asking InvokeAI which files belong to the board — so intermediates and other boards' assets get indexed.
Deletions stop routing through the InvokeAI API, so files are unlinked/trashed directly and leave dangling rows in InvokeAI's database.
The album can only be restored by hand-editing config.yaml or recreating it.
Suggested fix
Belongs in update_album, not the caller: when the stored album is an invokeai_board album, preserve source_type and the invokeai_* fields whenever the payload omits them (the same "omitted means keep what's stored" rule already applied to index and invokeai_password a few lines above), or reject a payload that would change source_type. Worth auditing the other partial-payload update_album/ callers in the frontend at the same time.
Found during an adversarial review of #369; the bug predates that PR (it reproduces on master).
What happens
BookmarkManager.addFolderToAlbum()(photomap/frontend/static/javascript/bookmarks.js:862-880) POSTs toupdate_album/with only:update_album(photomap/backend/routers/album.py:307-337) rebuilds the album from that payload alone:so an InvokeAI-board album is rewritten to
source_type: directorywith everyinvokeai_*field cleared, andumap_epsreset to the 0.07 default. The YAML is rewritten beforemove_imagesrejects the operation for board albums (routers/index.py), so the damage is already persisted.Reproduction
config.yaml:source_typeis nowdirectory,invokeai_root/invokeai_url/invokeai_board_idsare gone.Why it matters
After the demotion:
outputs/images(and, once Index InvokeAI board videos alongside board images #369 lands,outputs/videos) as ordinary directories, instead of asking InvokeAI which files belong to the board — so intermediates and other boards' assets get indexed.config.yamlor recreating it.Suggested fix
Belongs in
update_album, not the caller: when the stored album is aninvokeai_boardalbum, preservesource_typeand theinvokeai_*fields whenever the payload omits them (the same "omitted means keep what's stored" rule already applied toindexandinvokeai_passworda few lines above), or reject a payload that would changesource_type. Worth auditing the other partial-payloadupdate_album/callers in the frontend at the same time.Found during an adversarial review of #369; the bug predates that PR (it reproduces on
master).