Skip to content

Commit 4b4b62a

Browse files
Dumbrisclaude
andauthored
fix(ui): respect engaged flag in sidebar Setup pulse (#462)
The sidebar Setup item kept pulsing forever on remote/headless mcpproxy installs because `setupIncomplete` only looked at live host predicates (`HasConnectedClient`, `FirstMCPClientEver`), both structurally false on a LAN server with no local AI clients and no GUI to install one in. Clicking the wizard's "Close for now" correctly persisted `engaged: true` server-side, but the sidebar never read it back, so the visual was "I dismissed this five times and the dot keeps blinking." Engagement is a deliberate, permanent signal — once the user has dismissed the wizard, the pulse should stop. The Setup entry itself remains in the sidebar so the user can reopen the wizard at will; only the animate-ping halo and the count badge are gated. The two follow-ups worth tracking but not in scope here: - auto-quieting irrelevant tabs on headless `env_kind` hosts - explicit "Hide on this host" button in the wizard footer for discoverability (dismiss already does the right thing under the hood now that the sidebar honors it) Closes #461 Co-authored-by: Claude Code <noreply@anthropic.com>
1 parent 24aab3d commit 4b4b62a

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

frontend/src/components/SidebarNav.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,17 @@ const onboardingStore = useOnboardingStore()
402402
403403
// Spec 046 v2: badge count drives the sidebar Setup entry's pulse + count.
404404
// Refetched on mount; the wizard itself drives subsequent updates while open.
405+
//
406+
// Pulse is also gated on `!isEngaged` so that headless / LAN-server installs
407+
// (where HasConnectedClient and FirstMCPClientEver are structurally false —
408+
// there's no local AI client and no GUI to install one) can quiet the badge
409+
// by clicking "Close for now". The Setup entry itself remains in the sidebar
410+
// so the user can re-open the wizard, but it no longer pulses or shows a
411+
// count after engagement.
405412
const setupCount = computed(() => onboardingStore.incompleteTabCount)
406-
const setupIncomplete = computed(() => setupCount.value > 0)
413+
const setupIncomplete = computed(
414+
() => setupCount.value > 0 && !onboardingStore.isEngaged
415+
)
407416
const setupTitleAttr = computed(() =>
408417
setupIncomplete.value
409418
? `Setup (${setupCount.value} step${setupCount.value === 1 ? '' : 's'} remaining)`

0 commit comments

Comments
 (0)