Restore the board-subfolder and Cluster Strength fixes #382 reverted - #383
Merged
Merged
Conversation
PR #382 (the iPad fullscreen-panel fix) carried stale copies of files it never meant to touch, and squash-merging it rolled two already-merged PRs all the way back to their pre-merge state: #378 Resolve InvokeAI board media through their recorded subfolder photomap/backend/invokeai_client.py photomap/backend/routers/index.py tests/backend/test_invokeai_client.py tests/backend/test_invokeai_board_index.py #376 Pausing mid-edit no longer discards the Cluster Strength photomap/frontend/static/javascript/umap.js photomap/frontend/static/css/umap-floating-window.css tests/backend/test_cluster_eps.py tests/frontend/umap-eps-debounce.test.js (deleted outright) tests/frontend/umap-reindex-refresh.test.js Every one of those files was byte-identical to its pre-merge content on master, tests included, which is why nothing failed: the tests that would have caught it went back with the code they covered. The user-visible symptom is #378's: board albums went back to joining the bare filename to <invokeai_root>/outputs/{images,videos}, so on a backend whose subfolder strategy is not `flat` almost nothing resolved — indexing the reporter's board skipped 386 of 387 files. This restores both commits verbatim (cherry-picked, no conflicts) on top of current master. #377's `asyncio.to_thread` hunk in index.py, which landed after the revert in an untouched region, is preserved. Verified live against the reporter's InvokeAI at localhost:9090: the same album now resolves 386 of 387 files, the inverse of the reported failure. The one remaining miss is a genuine gap — InvokeAI lists a video whose subfolder resolves correctly and whose directory exists, but the file itself is not on disk. Backend 844 passed, frontend 656 passed (633 before, the difference being umap-eps-debounce.test.js coming back), ruff clean. Checked the seam between restored #376 and #375, which was authored against the reverted tree: both floor the Cluster Strength at MIN_CLUSTER_EPS (0.01, the spinner's own `min`), so they agree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KtGdMfK3k6z2tazjDjMFtE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Indexing an InvokeAI board album skipped almost everything — "386 of 387 file(s) listed by InvokeAI were not found on disk and were skipped" against a backend at
localhost:9090with a correct InvokeAI root.The resolution code had not been changed. It had been deleted.
What happened
PR #382 (the iPad fullscreen-panel fix) carried stale copies of files it never meant to touch, and squash-merging it rolled two already-merged PRs back to their exact pre-merge state:
photomap/backend/invokeai_client.py,photomap/backend/routers/index.py,tests/backend/test_invokeai_client.py,tests/backend/test_invokeai_board_index.pyphotomap/frontend/static/javascript/umap.js,photomap/frontend/static/css/umap-floating-window.css,tests/backend/test_cluster_eps.py,tests/frontend/umap-eps-debounce.test.js(deleted outright),tests/frontend/umap-reindex-refresh.test.jsEvery one of those files was byte-identical to its pre-merge content on master, tests included — which is why nothing failed. The tests that would have caught it went back with the code they covered.
The user-visible symptom is #378's: board albums went back to joining the bare filename to
<invokeai_root>/outputs/{images,videos}, so on a backend whose subfolder strategy is notflat, almost nothing resolves. #376's loss is silent until someone pauses mid-edit over the Cluster Strength spinner.What this does
Restores both commits verbatim — cherry-picked onto current master, no conflicts. #377's
asyncio.to_threadhunk inindex.py, which landed after the revert in an untouched region, is preserved.No new logic: every line here has already been reviewed and merged once.
Verification
Live against the reporter's InvokeAI at
localhost:9090, the same album that failed:The inverse of the reported failure. The one remaining miss is a genuine gap rather than a resolution bug — InvokeAI lists a video whose subfolder resolves correctly and whose directory exists, but the file is not on disk.
Backend 844 passed, frontend 656 passed (633 before this PR, the difference being
umap-eps-debounce.test.jscoming back), ruff clean. Confirmed working in the app by the reporter.Checked the seam between the restored #376 and #375, which was authored against the already-reverted tree: both floor the Cluster Strength at
MIN_CLUSTER_EPS(0.01, the spinner's ownmin), so they agree.Worth doing separately
Any branch opened before 2026-08-20 can carry the same staleness. This loop reports files a later commit took back to their pre-merge state:
(It misses files a commit created; a drop in the test count between PRs is the other tell.)
🤖 Generated with Claude Code
https://claude.ai/code/session_01KtGdMfK3k6z2tazjDjMFtE