diff --git a/frontend/src/components/gallery/GalleryFacetPanel.vue b/frontend/src/components/gallery/GalleryFacetPanel.vue
index 94a6d02..a27bf24 100644
--- a/frontend/src/components/gallery/GalleryFacetPanel.vue
+++ b/frontend/src/components/gallery/GalleryFacetPanel.vue
@@ -34,6 +34,15 @@
:color="store.filter.no_artist ? 'accent' : undefined"
@click="toggleFlag('no_artist')"
>No artist{{ facetCount('no_artist') }}
+
+ Show hidden
diff --git a/frontend/src/components/gallery/GalleryFilterBar.vue b/frontend/src/components/gallery/GalleryFilterBar.vue
index f0a9b7e..779a4da 100644
--- a/frontend/src/components/gallery/GalleryFilterBar.vue
+++ b/frontend/src/components/gallery/GalleryFilterBar.vue
@@ -160,7 +160,7 @@ let debounce = null
const refineCount = computed(() => {
const f = store.filter
return (f.platform ? 1 : 0) + (f.untagged ? 1 : 0) + (f.no_artist ? 1 : 0)
- + (f.date_from ? 1 : 0) + (f.date_to ? 1 : 0)
+ + (f.include_hidden ? 1 : 0) + (f.date_from ? 1 : 0) + (f.date_to ? 1 : 0)
})
const hasRefineFilters = computed(() => refineCount.value > 0)
diff --git a/frontend/src/stores/gallery.js b/frontend/src/stores/gallery.js
index 617cc73..334c3bd 100644
--- a/frontend/src/stores/gallery.js
+++ b/frontend/src/stores/gallery.js
@@ -30,6 +30,9 @@ export const useGalleryStore = defineStore('gallery', () => {
tag_or: [], tag_exclude: [],
// Phase-2 faceted refine params.
platform: null, untagged: false, no_artist: false,
+ // Reveal the presentation chrome (banner / editor screenshot) the gallery
+ // hides by default (milestone 141).
+ include_hidden: false,
date_from: null, date_to: null,
// Phase-3 visual similarity: when set, the gallery is in "similar mode" —
// ranked by cosine distance to this image, bounded top-N, no cursor.
@@ -158,6 +161,7 @@ export const useGalleryStore = defineStore('gallery', () => {
if (filter.value.platform) p.platform = filter.value.platform
if (filter.value.untagged) p.untagged = '1'
if (filter.value.no_artist) p.no_artist = '1'
+ if (filter.value.include_hidden) p.include_hidden = '1'
if (filter.value.date_from) p.date_from = filter.value.date_from
if (filter.value.date_to) p.date_to = filter.value.date_to
return p
@@ -196,6 +200,7 @@ export const useGalleryStore = defineStore('gallery', () => {
platform: q.platform || null,
untagged: _truthy(q.untagged),
no_artist: _truthy(q.no_artist),
+ include_hidden: _truthy(q.include_hidden),
date_from: _parseDate(q.date_from),
date_to: _parseDate(q.date_to),
similar_to: _toId(q.similar_to),
@@ -284,7 +289,8 @@ export function cloneFilter(f) {
tag_exclude: [...(f.tag_exclude || [])],
artist_id: f.artist_id, media_type: f.media_type,
sort: f.sort, platform: f.platform, untagged: f.untagged,
- no_artist: f.no_artist, date_from: f.date_from, date_to: f.date_to,
+ no_artist: f.no_artist, include_hidden: f.include_hidden,
+ date_from: f.date_from, date_to: f.date_to,
similar_to: f.similar_to,
}
}
@@ -301,6 +307,7 @@ export function filterToQuery(f) {
if (f.platform) q.platform = f.platform
if (f.untagged) q.untagged = '1'
if (f.no_artist) q.no_artist = '1'
+ if (f.include_hidden) q.include_hidden = '1'
if (f.date_from) q.date_from = f.date_from
if (f.date_to) q.date_to = f.date_to
if (f.similar_to) q.similar_to = String(f.similar_to)