From f9f276a986fc99f2c1dced2d66e16e73bf278378 Mon Sep 17 00:00:00 2001 From: Claudio Date: Mon, 18 May 2026 15:54:25 +0000 Subject: [PATCH] Review view: tabs per cause (mirrors /tags pill row) Each cause now becomes a URL-driven tab instead of stacking the cards vertically. Empty buckets are filtered out by the adapter already, so the tab row only shows causes with hits. Active tab persists via ?tab=; refresh / share / back land on the same panel. The standalone ReviewView container is no longer used (the page renders the active CauseGroupCard directly); deleted. --- .../lib/components/review/ReviewView.svelte | 48 -------- web/src/routes/review/+page.svelte | 109 ++++++++++++++---- 2 files changed, 85 insertions(+), 72 deletions(-) delete mode 100644 web/src/lib/components/review/ReviewView.svelte diff --git a/web/src/lib/components/review/ReviewView.svelte b/web/src/lib/components/review/ReviewView.svelte deleted file mode 100644 index 4ea6bf1..0000000 --- a/web/src/lib/components/review/ReviewView.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - -
- {#if pending} -

Loading review queue…

- {:else if error} -

- Could not load review queue: {error instanceof Error ? error.message : 'unknown error'} -

- {:else if groups.length === 0} -
-

The review queue is empty.

-

- PhotoPrism's indexer flags photos with a low quality score for human review. New - arrivals with missing EXIF, low resolution, or unknown cameras will land here. -

-
- {:else} -

- {totalCount} photos in {groups.length} groups · arrow keys to focus, S to approve, A - to archive, Enter to inspect -

-
- {#each groups as g, i (g.cause)} - - {/each} -
- {/if} -
diff --git a/web/src/routes/review/+page.svelte b/web/src/routes/review/+page.svelte index ad59e6b..ab4a12f 100644 --- a/web/src/routes/review/+page.svelte +++ b/web/src/routes/review/+page.svelte @@ -1,14 +1,22 @@ Review + {#if tabs.length > 0} + +
+ {#each tabs as t (t.id)} + + {/each} +
+ {/if} {#snippet trailing()}
-
- +
+ {#if reviewQuery.isPending} +

Loading review queue…

+ {:else if reviewQuery.error} +

+ Could not load review queue: {reviewQuery.error instanceof Error + ? reviewQuery.error.message + : 'unknown error'} +

+ {:else if groups.length === 0} +
+

The review queue is empty.

+

+ PhotoPrism's indexer flags photos with a low quality score for human + review. New arrivals with missing EXIF, low resolution, or unknown + cameras will land here. +

+
+ {:else if activeGroup} + {#key activeGroup.cause} + + {/key} + {/if}
{#if !view.rightSidebarCollapsed && selection.focused}