GET /folders returns SourceRoot rows (the top-level scan paths shown in the LeftSidebar tree), but photos.folder_id points to a Folder row (a directory under a source root), and the photos list endpoint was matching Photo.folder_id == folder_id literally. Result: clicking "MulitaTest" in the sidebar sent the source root id, which never matched any photo, so the timeline went empty even though the photo_count badge showed 5. Fix: when the folder_id param matches a SourceRoot, expand it to every child Folder.id under that root and use IN. Falls back to the literal match for actual folder ids. If a source root has no child folder rows yet, returns no photos (rather than the whole library) so a half-scanned root doesn't accidentally show everything. The longer-term cleanup is to deduplicate the source_root / folder rows the scanner is creating on each rescan, but this makes the navigation work today. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
17 KiB
17 KiB