feat(slideshow): foldernavigatie in elke slideshow, altijd zichtbaar #69

Merged
janpeter merged 1 commit from feat/slideshow-foldernav-overal into main 2026-07-31 15:52:36 +02:00
Owner

Aanleiding

Na deploy van PR #67 bleek de volgende folder-knop alleen op de albumpagina zichtbaar — de categorie-overzichtspagina (die de diashow automatisch opent), favorieten, prullenbak en collecties gaven geen folderNav door.

Wijziging

  • elk slideshow-item draagt nu zijn album mee (albumSlug/albumName via de album-relatie in IMAGE_SELECT, alle lijstqueries incl. batch-API)
  • nieuwe folderAlbums-prop: pagina's geven de albumlijst door; de component leidt vorige/volgende folder af uit het album van de huidige dia → werkt in elke slideshow hetzelfde
  • knoppen staan nu altijd op de vaste plek in de controlsbalk rechtsboven (naast play/pauze, fullscreen, sluiten); zonder doel (eerste/laatste folder) gedimd + disabled, met duidelijke tooltip
  • adjacentSlideshowAlbums + nieuwe slideshowFolderHref verhuisd naar client-safe slideshow-media.ts (her-export vanuit slideshow.ts, bestaande imports blijven werken)
  • toetsenbord n/p volgt dezelfde afleiding

Buiten scope: MediaGrid (bestandsfolder-domein, geen slideshow-albums).

Verificatie

  • 357/357 tests groen, eslint schoon, npm run build groen
## Aanleiding Na deploy van PR #67 bleek de **volgende folder**-knop alleen op de albumpagina zichtbaar — de categorie-overzichtspagina (die de diashow automatisch opent), favorieten, prullenbak en collecties gaven geen `folderNav` door. ## Wijziging - elk slideshow-item draagt nu zijn album mee (`albumSlug`/`albumName` via de album-relatie in `IMAGE_SELECT`, alle lijstqueries incl. batch-API) - nieuwe `folderAlbums`-prop: pagina's geven de albumlijst door; de component leidt vorige/volgende folder af uit **het album van de huidige dia** → werkt in elke slideshow hetzelfde - knoppen staan nu **altijd** op de vaste plek in de controlsbalk rechtsboven (naast play/pauze, fullscreen, sluiten); zonder doel (eerste/laatste folder) gedimd + disabled, met duidelijke tooltip - `adjacentSlideshowAlbums` + nieuwe `slideshowFolderHref` verhuisd naar client-safe `slideshow-media.ts` (her-export vanuit `slideshow.ts`, bestaande imports blijven werken) - toetsenbord `n`/`p` volgt dezelfde afleiding Buiten scope: `MediaGrid` (bestandsfolder-domein, geen slideshow-albums). ## Verificatie - 357/357 tests groen, eslint schoon, `npm run build` groen
feat(immich): dubbelen-review iteraties 1-4 — vergelijk-view, batch-cleanup, quarantaine
All checks were successful
CI / docker-build (pull_request) Successful in 1m28s
041a67e34e
- media-route: lookup via genormaliseerde ImmichAsset + Immich thumbnail/preview-varianten
- overzicht: thumbnails, metadata, checksum-badges, besparingsmetrics, statusfilters, paginering
- vergelijk-view /immich/dubbelen/[groupId]: side-by-side previews, criteria-matrix, keeper-override
- beslis-model (migratie): decision overleeft re-sync; decisions API
- batch-cleanup als duplicate_cleanup_batch-job met voortgang en per-groep herstel
- quarantaine (<media-root>/.quarantine/<run>/) + manifest i.p.v. direct unlink
- run-historie /immich/dubbelen/runs met per-item status en retry
- 355 tests groen, next build groen, review-doc in docs/reviews
feat(slideshow): foldernavigatie in elke slideshow, altijd zichtbaar
All checks were successful
CI / docker-build (pull_request) Successful in 1m18s
17011acbab
De vorige/volgende-folder-knoppen waren alleen op de albumpagina zichtbaar
(alleen die gaf folderNav door). Nu universeel:

- elk slideshow-item draagt zijn album mee (album_slug/album_name via de
  album-relatie in IMAGE_SELECT, alle lijstqueries)
- nieuwe folderAlbums-prop: pagina's geven de albumlijst door en de
  component leidt vorige/volgende folder af uit het album van de huidige
  dia — werkt op album-, categorie-, favorieten-, prullenbak- en
  collectiepagina's
- knoppen staan altijd op dezelfde plek in de controlsbalk rechtsboven;
  zonder doel (eerste/laatste folder) zijn ze gedimd en niet klikbaar
- adjacentSlideshowAlbums + nieuwe slideshowFolderHref verhuisd naar
  slideshow-media (client-safe), her-exporteerd vanuit slideshow.ts
- toetsenbord n/p volgt dezelfde afleiding

Tests: 357/357 groen (mapping album-info, folderHref, adjacency).
s4m-codex-reviewer left a comment

Verdict: REQUEST_CHANGES

geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • blockersrc/components/ImmichDuplicateComparePanel.tsx:216 — De nieuwe vergelijkpagina voert executeCleanup direct uit via de destructieve knop "Direct cleanup", zonder bevestigingsdialoog of samenvatting van wat wordt verplaatst/getrasht. Dit is een regressie t.o.v. de bestaande cleanup-beveiliging en extra riskant omdat deze flow DB-referenties wijzigt, Immich-assets trasht en lokale bestanden naar quarantaine verplaatst. Voeg minimaal een expliciete bevestiging toe met keeper/losers/strategie voordat deze actie de execute-route aanroept, of verwijder de directe cleanup en laat uitvoering alleen via de batch-bevestiging/job lopen.

Opmerkingen

De diff bevat naast de slideshow-foldernavigatie ook omvangrijke duplicate-cleanup schema-, API-, UI- en job-runner-wijzigingen. Tests zijn toegevoegd voor meerdere helpers/routes, maar de blocker zit in de nieuwe client-flow zelf en wordt niet door de huidige tests afgedekt.

# Verdict: REQUEST_CHANGES geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - **blocker** — `src/components/ImmichDuplicateComparePanel.tsx:216` — De nieuwe vergelijkpagina voert `executeCleanup` direct uit via de destructieve knop "Direct cleanup", zonder bevestigingsdialoog of samenvatting van wat wordt verplaatst/getrasht. Dit is een regressie t.o.v. de bestaande cleanup-beveiliging en extra riskant omdat deze flow DB-referenties wijzigt, Immich-assets trasht en lokale bestanden naar quarantaine verplaatst. Voeg minimaal een expliciete bevestiging toe met keeper/losers/strategie voordat deze actie de execute-route aanroept, of verwijder de directe cleanup en laat uitvoering alleen via de batch-bevestiging/job lopen. ## Opmerkingen De diff bevat naast de slideshow-foldernavigatie ook omvangrijke duplicate-cleanup schema-, API-, UI- en job-runner-wijzigingen. Tests zijn toegevoegd voor meerdere helpers/routes, maar de blocker zit in de nieuwe client-flow zelf en wordt niet door de huidige tests afgedekt.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/Media-Organizer!69
No description provided.