Review view: cause-grouped UI with actions + suggestions
Builds a dedicated /review route that mirrors /duplicates' chrome: - /review/+page.svelte mounts Toolbar + ReviewView + RightSidebar - CauseGroupCard.svelte renders one card per cause with Approve all and Archive all bulk actions plus a per-cause suggestion line - CauseBadges.svelte shows every matching cause as chips on each tile - services/adapters/review.ts fetches review:true and groups photos by primary cause; current taxonomy is low_resolution > stripped_exif > implausible_year > non_image_type > quality_other (low_resolution ranks first because it's the most actionable signal) Sidebar gains an opt-in showRelated prop that adds three RelatedStrip panels (same folder / camera / year) for the 'decide these together' workflow. LeftSidebar's Review entry switches from a section filter to a route link so /review picks up the click. PpPhoto gains the missing Resolution field PhotoPrism actually returns on list responses.
This commit is contained in:
@@ -385,7 +385,7 @@
|
||||
];
|
||||
|
||||
const manageViews: ViewItem[] = [
|
||||
{ kind: 'section', id: 'review', label: 'Review', getCount: () => configQuery.data?.count?.review },
|
||||
{ kind: 'route', href: '/review', label: 'Review', getCount: () => configQuery.data?.count?.review },
|
||||
{ kind: 'route', href: '/duplicates', label: 'Duplicates', getCount: () => undefined },
|
||||
{ kind: 'section', id: 'hidden', label: 'Hidden', getCount: () => configQuery.data?.count?.hidden },
|
||||
{ kind: 'section', id: 'archive', label: 'Archive', getCount: () => configQuery.data?.count?.archived }
|
||||
|
||||
Reference in New Issue
Block a user