From 162b73dd4fcaa3ca4d4bcd9435f579c825a384da Mon Sep 17 00:00:00 2001 From: Eli Bosley Date: Mon, 20 Apr 2026 13:18:28 -0400 Subject: [PATCH 1/3] fix(onboarding): hide server name visually - Purpose: hide the server name from the onboarding flow without changing the underlying state or apply behavior. - Before: onboarding showed the server name in core settings, next steps, and the summary card. - Problem: the flow exposed server identity details that should no longer be visible to users during onboarding. - Now: server-name UI nodes remain mounted for state continuity but are visually hidden and removed from accessibility exposure. - How: adds Tailwind hidden styling, aria-hidden markers, and focused tests that assert the server-name rows stay hidden. --- .../Onboarding/OnboardingCoreSettingsStep.test.ts | 8 ++++++++ .../components/Onboarding/OnboardingSummaryStep.test.ts | 7 +++++++ .../Onboarding/steps/OnboardingCoreSettingsStep.vue | 6 ++++-- .../Onboarding/steps/OnboardingNextStepsStep.vue | 3 ++- .../components/Onboarding/steps/OnboardingSummaryStep.vue | 5 ++++- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/web/__test__/components/Onboarding/OnboardingCoreSettingsStep.test.ts b/web/__test__/components/Onboarding/OnboardingCoreSettingsStep.test.ts index c8c689566c..5d1f72c70d 100644 --- a/web/__test__/components/Onboarding/OnboardingCoreSettingsStep.test.ts +++ b/web/__test__/components/Onboarding/OnboardingCoreSettingsStep.test.ts @@ -199,6 +199,14 @@ describe('OnboardingCoreSettingsStep', () => { languagesError.value = null; }); + it('marks server name controls hidden', async () => { + const { wrapper } = mountComponent(); + await flushPromises(); + + const serverNameLabel = wrapper.findAll('label').find((label) => label.text() === 'Server Name'); + expect(serverNameLabel?.element.parentElement?.classList.contains('hidden')).toBe(true); + }); + it('prefers browser timezone over API on initial setup when draft timezone is empty', async () => { onboardingStore.completed.value = false; diff --git a/web/__test__/components/Onboarding/OnboardingSummaryStep.test.ts b/web/__test__/components/Onboarding/OnboardingSummaryStep.test.ts index 32eb5cdf83..1246449bb7 100644 --- a/web/__test__/components/Onboarding/OnboardingSummaryStep.test.ts +++ b/web/__test__/components/Onboarding/OnboardingSummaryStep.test.ts @@ -479,6 +479,13 @@ describe('OnboardingSummaryStep', () => { refetchInstalledPluginsMock.mockResolvedValue(undefined); }); + it('marks the server name hidden in the summary card', () => { + const { wrapper } = mountComponent(); + + const serverNameLabel = wrapper.findAll('span').find((span) => span.text() === 'Server Name'); + expect(serverNameLabel?.element.parentElement?.classList.contains('hidden')).toBe(true); + }); + it.each([ { caseName: 'skips install when plugin is already present', diff --git a/web/src/components/Onboarding/steps/OnboardingCoreSettingsStep.vue b/web/src/components/Onboarding/steps/OnboardingCoreSettingsStep.vue index a70cf8ba4c..21daf4ef35 100644 --- a/web/src/components/Onboarding/steps/OnboardingCoreSettingsStep.vue +++ b/web/src/components/Onboarding/steps/OnboardingCoreSettingsStep.vue @@ -441,7 +441,8 @@ const isBusy = computed(() => isSaving.value || (props.isSavingStep ?? false));