ServiceHealthBanner component exists but is never rendered — ServiceHealthIndicator is in the navbar (small dot) but the banner (full message) is wired nowhere, so service-down users see a small indicator with no explanation #230
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#230
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
src/components/ServiceHealthBanner.tsx:5defines an exportedServiceHealthBannerfunction. The file exists.grep -n 'ServiceHealthBanner' src/pages/returns 0 hits. No page renders the banner.ServiceHealthIndicator(line 4 ofNavbar.tsx) is the small dot indicator in the navbar. The user sees a green/red dot but no explanation when the service is down.A user who lands on the Workspace with the easystitch-service offline:
easystitch-client.ts:481: "easystitch-service responded ${response.status}")The banner is the right surface for this — it shows a full message at the top of the page when the service is degraded.
Where
src/components/ServiceHealthBanner.tsx(exists, never rendered)src/components/ServiceHealthIndicator.tsx(in the navbar)src/lib/easystitch-client.ts:289(the health check)Suggested fix shape
Render
<ServiceHealthBanner />at the top of each page that uses the easystitch-service:The banner shows only when
serviceStatus === 'down'or'degraded'. The styles are already defined in the component (likely, since the file exists and is exported).The indicator (small dot) stays in the navbar; the banner is the loud, in-page version.
Severity
Medium. The user sees a red dot but no message; the failure reason is opaque.
Discovered by
Gap analysis (2026-10-02) of error state UX.
Related
easystitch-client.ts:481error message is generic. The banner can show more user-friendly copy.ServiceHealthIndicatorin the navbar is the small version; the banner is the loud version. The pattern is: dot is the always-visible hint, banner is the click-through-to-details.RightClickMenucomponent exists but is not used anywhere —DesignCard'sonContextMenuonly callse.preventDefault(), so the menu never opens, the user has no right-click affordance on designs #242This finding is already addressed on the current
mainbranch — no fix needed.The grep in the report (
grep -n 'ServiceHealthBanner' src/pages/) returned 0 because the banner is rendered one level up:src/components/Layout.tsximports and mounts<ServiceHealthBanner />as a sibling of<Navbar />and<main>. Every page in the app is wrapped by Layout viasrc/App.tsx(which wraps the<Routes>element), so the banner appears on Home, Workspace, Editor, Gallery, Help, About, Privacy, Terms, and NotFound.Wiring reference:
src/components/Layout.tsx:5(import { ServiceHealthBanner } from './ServiceHealthBanner';)src/components/Layout.tsx:17(<ServiceHealthBanner />between Navbar and main)src/App.tsx:16and:103(<Layout>...</Layout>wrapping all routes)The banner already shows only when
status === 'unhealthy'(seeServiceHealthBanner.tsx:9:if (status !== "unhealthy") return null;), so a service-down user sees the full "Service unavailable — auto-digitize and export are temporarily offline." message at the top of any page, with a dismiss affordance.Adding
<ServiceHealthBanner />directly to individual pages (as the suggested fix proposes) would duplicate the banner — Layout already renders it once site-wide. Closing this as already-resolved by existing Layout wiring.