fix(library): pagineer bestanden in de folder-browser #61
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/library-folder-view-paging"
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?
Probleem
/libraryviel om zodra je een groot album opende. De gebruiker zag het generieke "Startup fout / App kon niet starten"-scherm, dat naar/api/readyen de database wijst — maar/api/readygaf gewoon200 {"status":"ready"}. De echte fout stond in de container-log:en eerder al, op andere albums:
Oorzaak
De folder-browser haalde álle bestanden van een node in één keer op.
src/actions/storage.tsrieplistSlideshowImagesForAlbum()aan zonder venster, en albumlibrary-imports/motherlessbevat 437.421 images.De
window-parameter uit #59 is destijds wél toegevoegd aan de slideshow-routes (library/[category]/page.tsx,library/[category]/[album]/page.tsx), maar niet aan het pad dat/libraryzelf gebruikt:MediaGrid→listFolderFiles→listSlideshowImagesForAlbum. De draaiende image bevatte de fix van #59 dus wel — dit was een gemiste plek, geen stale deploy.Een sweep over alle 1970 library-nodes op de productie-database gaf precies drie kapotte nodes:
library:album:library-imports/motherlesslibrary:album:library-imports/shared-photoslibrary:album:library-imports/celebslibrary:album:library-imports/starsOplossing
listFolderFiles(nodeId, window?)geeft het venster door aan alle takken — album, collectie, favorieten, prullenbak, import-folder en Immich-persoon. Die waren stuk voor stuk onbegrensd; alleen albums waren nu groot genoeg om te crashen.listManualFavoriteImages,listSlideshowImagesForTrash,listSlideshowImagesForCollection,listLibraryImportFilesenlistImmichPersonMediaFilesaccepteren een venster.useFolderFileslaadt perLIBRARY_FOLDER_PAGE_SIZE(500) en vraagt er telkens één extra op om te weten of er meer is.MediaGridenLibraryMixedContenttonen een "Meer laden"-knop zolang dat zo is.mediaWindowArgsstaat nu gedeeld infolder-browser.ts;slideshow.tsgebruikt het ook, zodat de clamping-logica niet op twee plekken kan gaan afwijken.Folders die in één pagina passen zien er ongewijzigd uit — de knop rendert alleen als er echt meer is.
Verificatie
De aangepaste server-action tegen de live database op max2:
Verder:
npm run buildgroen,npx tsc --noEmitzonder nieuwe fouten,npx eslintterug op baseline.npm testgaat van 296 naar 302 tests (6 nieuwe regressietests); de 20 falende tests zijn identiek vóór en ná deze branch — het zijn allemaal DB-integratietests die zonderDATABASE_URLniet kunnen draaien.Bekende beperking
Het filterveld in de folder-view filtert client-side over de geladen bestanden. Bij een gepagineerd album zoekt het dus binnen wat je tot nu toe hebt geladen. Dat gedrag bestond al, maar wordt met paginering zichtbaarder; echte server-side filtering is een aparte wijziging.
🤖 Generated with Claude Code
Verdict: COMMENT
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
filterLibraryItemsdraait nu alleen op de reeds geladen pagina. Voor folders met meer dan 500 bestanden kan een zoekterm die alleen in een latere pagina voorkomt eerst "Geen resultaten" tonen, terwijl het bestand wel bestaat. DeLoadMoreFiles-knop blijft zichtbaar, maar de zoeksemantiek is regressief t.o.v. de oude volledige client-side lijst; overweeg expliciet te maken dat filteren alleen geladen items raakt, of een server-side zoek/paginatiepad toe te voegen.Geen blokkerende findings gevonden. De backend-paginatie wordt consequent doorgegeven naar Immich-personen, library-folders/imports, favorieten, prullenbak, albums en collections, en er zijn gerichte unit-tests toegevoegd voor
mediaWindowArgsen de slideshow-querybegrenzing.