From ad8392b790be61b9c64c54c71e558acbd6549dd8 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 2 Sep 2026 19:45:54 -0400 Subject: [PATCH] fix: system health is a Settings tab, not a page only the dot reached MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The surface shipped at /system with no nav entry, reachable only by clicking the health dot beside the brand — a target you have to already suspect something is wrong to go looking for. Operator-flagged: it needs a path someone can walk to. Settings is where you go to ask the instance about itself, so the view becomes a tab there, beside Activity — Activity answers "what is the queue doing", System answers "is anything left to do it". - SystemView.vue moves to components/settings/SystemHealthTab.vue; the content is unchanged apart from shedding its own container and h1. - SettingsView adopts useTabQuery (the composable Browse and Subscriptions already use) so a tab can be linked TO. The health dot now points at ?tab=system, and /system redirects there so the previous build's link and any bookmark still land. - The tab drops its own 10s poll. v-window keeps a visited item mounted rather than destroyed, so that timer would have gone on firing behind Maintenance — and TopNav already polls the same store every 15s for the dot. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01TTjbZZ6JirCMSaJzQV1RhA --- frontend/src/components/TopNav.vue | 9 ++--- .../settings/SystemHealthTab.vue} | 33 +++++++++---------- frontend/src/router.js | 14 ++++---- frontend/src/views/SettingsView.vue | 18 ++++++++-- frontend/test/router.spec.js | 8 +++++ 5 files changed, 52 insertions(+), 30 deletions(-) rename frontend/src/{views/SystemView.vue => components/settings/SystemHealthTab.vue} (80%) diff --git a/frontend/src/components/TopNav.vue b/frontend/src/components/TopNav.vue index 8b99c2b..31a9645 100644 --- a/frontend/src/components/TopNav.vue +++ b/frontend/src/components/TopNav.vue @@ -6,7 +6,8 @@ FabledCurator {{ health.icon }} @@ -282,9 +283,9 @@ onUnmounted(() => { if (healthTimer) clearInterval(healthTimer) }) display: flex; align-items: center; flex-shrink: 0; - /* A RouterLink since milestone 365 — it is the path to /system, not just an - indicator. Reset the anchor so turning a span into a link changed nothing - about how the nav reads. */ + /* A RouterLink since milestone 365 — it is the path to the Settings System + tab, not just an indicator. Reset the anchor so turning a span into a + link changed nothing about how the nav reads. */ text-decoration: none; color: inherit; border-radius: 50%; diff --git a/frontend/src/views/SystemView.vue b/frontend/src/components/settings/SystemHealthTab.vue similarity index 80% rename from frontend/src/views/SystemView.vue rename to frontend/src/components/settings/SystemHealthTab.vue index 18ead8a..c1853aa 100644 --- a/frontend/src/views/SystemView.vue +++ b/frontend/src/components/settings/SystemHealthTab.vue @@ -1,7 +1,10 @@