diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index 98e010e3cb..242dbf2f5b 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -1308,7 +1308,7 @@ The shared what's-new modal now follows that same owner split. `frontend-modern/src/components/shared/WhatsNewModal.tsx` stays the render shell, `frontend-modern/src/components/shared/useWhatsNewModalState.ts` owns local-storage dismissal, session dismissal, step progression, spotlight target -resolution, and overlay placement/runtime behavior, and +resolution, direct stop selection, and overlay placement/runtime behavior, and `frontend-modern/src/components/shared/whatsNewModalModel.ts` owns the feature tour catalog, telemetry copy, labels, and canonical docs/privacy links. Future what's-new work should extend those owners instead of pushing dismissal state, @@ -1317,6 +1317,10 @@ The v6 welcome surface is one guided spotlight tour, not a modal plus a second dashboard-only migration hint: it must dim the live app, glow the real primary-navigation target being described, and keep route-orientation copy on the existing welcome flow instead of layering a duplicate in-product banner. +The guided stop map inside that welcome surface is interactive, not decorative: +operators must be able to jump directly to any tour step from the stop list, +and desktop layouts may widen the panel enough to keep stop labels readable +without overlapping or collapsing into clipped pills. That state owner now also owns public-demo suppression: the modal must stay closed until `sessionPresentationPolicyResolved()` is true and must fail closed when `presentationPolicyIsDemoMode()` resolves true, so the public demo does diff --git a/frontend-modern/src/components/shared/WhatsNewModal.tsx b/frontend-modern/src/components/shared/WhatsNewModal.tsx index 17baa270dd..6a095137d0 100644 --- a/frontend-modern/src/components/shared/WhatsNewModal.tsx +++ b/frontend-modern/src/components/shared/WhatsNewModal.tsx @@ -83,13 +83,16 @@ export function WhatsNewModal() { aria-modal="true" aria-labelledby="whats-new-title" tabindex="-1" - class="fixed z-[1001] max-h-[min(90vh,42rem)] overflow-y-auto rounded-2xl border border-border bg-surface shadow-2xl focus:outline-none" + class="fixed z-[1001] max-h-[min(90vh,44rem)] overflow-y-auto rounded-[1.75rem] border border-border bg-surface shadow-2xl backdrop-blur-sm focus:outline-none" style={state.panelStyle()} onClick={(event) => event.stopPropagation()} > -
{step().description}
-{step().description}
+Click any stop to jump there.
++ {WHATS_NEW_TELEMETRY_COPY[0]} +
+- {WHATS_NEW_TELEMETRY_COPY[0]} -
{WHATS_NEW_TELEMETRY_COPY[1]} You can disable it any time in{' '} {WHATS_NEW_TELEMETRY_SETTINGS_PATH} or by @@ -159,7 +206,7 @@ export function WhatsNewModal() {