From 7b712920a4eef56b061e330a9e1fe650847c7b4f Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 23 Jun 2026 02:08:34 -0400 Subject: [PATCH] =?UTF-8?q?feat(explore):=20Explore=20view=20+=20tag-gap?= =?UTF-8?q?=20closing=20+=20modal=20meta/download=20(#94b=E2=80=93d,=20#4a?= =?UTF-8?q?/b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cluster C frontend, milestone #94. #94b Explore walk: new /explore/:imageId route + ExploreView + explore store. Anchor (reuse /api/gallery/image), neighbour grid (reuse /api/gallery/similar, 24), click a neighbour to re-anchor; in-memory breadcrumb that trims on backtrack (route is the source of truth). Empty/loading/error + no-embedding states. #94c tag-gap closing: components/explore/TagGapPanel — fetches /api/images/cluster/tag-gaps for the anchor+neighbours, a consensus-threshold slider (default 60%), per gap shows present/total + the missing thumbnails + 'Apply to N missing' → /api/tags/images/bulk/tags (source manual) → re-fetch. #94d entry points: 'Explore' button in the modal RelatedStrip; the TopNav entry comes free from the route's meta.title. #4a metadata HUD + #4b split Download: new modal ImageMetaBar (always-on, above ProvenancePanel) shows dimensions/size/type and a split Download button (default Download, chevron → Copy link via utils/clipboard — no clipboard-image, rule 95). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01XCUHUGQLrBrkgyk1t49kpX --- .../src/components/explore/TagGapPanel.vue | 159 ++++++++++++++ .../src/components/modal/ImageMetaBar.vue | 96 +++++++++ frontend/src/components/modal/ImageViewer.vue | 2 + .../src/components/modal/RelatedStrip.vue | 26 ++- frontend/src/router.js | 5 + frontend/src/stores/explore.js | 92 ++++++++ frontend/src/views/ExploreView.vue | 202 ++++++++++++++++++ 7 files changed, 577 insertions(+), 5 deletions(-) create mode 100644 frontend/src/components/explore/TagGapPanel.vue create mode 100644 frontend/src/components/modal/ImageMetaBar.vue create mode 100644 frontend/src/stores/explore.js create mode 100644 frontend/src/views/ExploreView.vue diff --git a/frontend/src/components/explore/TagGapPanel.vue b/frontend/src/components/explore/TagGapPanel.vue new file mode 100644 index 0000000..f44546c --- /dev/null +++ b/frontend/src/components/explore/TagGapPanel.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/frontend/src/components/modal/ImageMetaBar.vue b/frontend/src/components/modal/ImageMetaBar.vue new file mode 100644 index 0000000..b9629ad --- /dev/null +++ b/frontend/src/components/modal/ImageMetaBar.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/frontend/src/components/modal/ImageViewer.vue b/frontend/src/components/modal/ImageViewer.vue index b766665..7831206 100644 --- a/frontend/src/components/modal/ImageViewer.vue +++ b/frontend/src/components/modal/ImageViewer.vue @@ -73,6 +73,7 @@