+
+
+
+ mdi-clock-outline
+ Checked {{ lastCheckedLabel }}
+
+
+
+ mdi-alert-circle-outline
+ {{ failing }} {{ failing === 1 ? 'source is' : 'sources are' }} failing
+
+
+
+
+ mdi-lock-outline
+ {{ noAccess }} you can't see
+
+
+
+
+
+
+
diff --git a/frontend/src/components/subscriptions/SubscriptionsTab.vue b/frontend/src/components/subscriptions/SubscriptionsTab.vue
index 1894e77..b5ef2b2 100644
--- a/frontend/src/components/subscriptions/SubscriptionsTab.vue
+++ b/frontend/src/components/subscriptions/SubscriptionsTab.vue
@@ -368,7 +368,19 @@ const platformsStore = usePlatformsStore()
const importStore = useImportStore()
const search = ref('')
-const statusFilter = ref('all')
+// URL-addressable (#387 B3) so the front-door status ribbon can link straight
+// to "the sources this number is about" — a count that lands you on an
+// unfiltered list makes the reader do the filtering the ribbon just did.
+// Mirrors how artistFilter already reads from route.query below.
+const statusFilter = computed({
+ get: () => route.query.status || 'all',
+ set: (v) => {
+ const q = { ...route.query }
+ if (!v || v === 'all') delete q.status
+ else q.status = v
+ router.replace({ query: q })
+ },
+})
const needsAttention = ref(false)
const expanded = ref([])
const selected = ref([])
diff --git a/frontend/src/router.js b/frontend/src/router.js
index 3de94dd..00bd714 100644
--- a/frontend/src/router.js
+++ b/frontend/src/router.js
@@ -35,7 +35,10 @@ const routes = [
//
// No stickyChrome: unlike Browse/Gallery/Settings this view has no sticky
// sub-header for the nav to butt against, so the nav keeps its normal fade.
- { path: '/latest', name: 'latest', component: PostsView, meta: { title: 'Latest', navOrder: 5 } },
+ // `props` turns on the ingestion-status ribbon (#387 B3). Only here: inside
+ // Browse's Posts tab the same view renders without it.
+ { path: '/latest', name: 'latest', component: PostsView, props: { statusRibbon: true },
+ meta: { title: 'Latest', navOrder: 5 } },
// FC-2: image backbone
{ path: '/showcase', name: 'showcase', component: ShowcaseView, meta: { title: 'Showcase', navOrder: 10 } },
diff --git a/frontend/src/views/PostsView.vue b/frontend/src/views/PostsView.vue
index 30bbb96..ee5b760 100644
--- a/frontend/src/views/PostsView.vue
+++ b/frontend/src/views/PostsView.vue
@@ -49,6 +49,8 @@