Reflect active tab in document.title

Every Pulse route rendered as a browser tab labeled "Pulse" — the
title never changed even when navigating between Infrastructure,
Workloads, Storage, Recovery, Alerts, Patrol, and Settings. Multi-tab
users couldn't tell tabs apart, browser history showed identical
entries, and screen-reader page-title announcements gave no useful
context.

Add a createEffect in AppLayout that maps the active tab id (resolved
via getActiveTabForPath on location.pathname) to a label and writes
"{label} · Pulse" to document.title. Verified live: all seven top-level
routes update correctly.

Title:
  /infrastructure        → Infrastructure · Pulse
  /workloads             → Workloads · Pulse
  /storage               → Storage · Pulse
  /recovery              → Recovery · Pulse
  /alerts                → Alerts · Pulse
  /patrol                → Patrol · Pulse
  /settings/...          → Settings · Pulse
This commit is contained in:
rcourtman
2026-05-10 15:09:19 +01:00
parent 76b9e2bb32
commit feefc4bb41
+18
View File
@@ -184,6 +184,24 @@ export function AppLayout(props: AppLayoutProps) {
}
});
// Reflect the active tab in the browser tab title so multi-tab use,
// browser history, and screen-reader page-title announcements all
// identify the current Pulse surface instead of every page reading
// as the bare app name.
const tabTitleByActive: Record<NonNullable<ReturnType<typeof getActiveTabForPath>>, string> = {
infrastructure: 'Infrastructure',
workloads: 'Workloads',
storage: 'Storage',
recovery: 'Recovery',
alerts: 'Alerts',
ai: 'Patrol',
settings: 'Settings',
};
createEffect(() => {
const active = getActiveTabForPath(location.pathname);
document.title = active ? `${tabTitleByActive[active]} · Pulse` : 'Pulse';
});
const toggleKioskMode = () => {
setKioskMode(!kioskMode());
};