# Regression: `/categories` must not render campaign edit ## Symptom (fixed) Nav/URL on **Categories** (`/categories`) sometimes showed **Edit campaign** chrome with a blank body. ## Cause notes - Route files are distinct: `routes/categories/+page.svelte` vs `routes/campaigns/[id]/+page.svelte`. - SvelteKit dictionary maps `/categories` → categories page and `/campaigns/[id]` → campaign edit. - Campaign edit previously rendered `PageShell` titled "Edit campaign" even when `page.params.id` was empty (blank body) — that shell must never linger across client navigations. ## Guards added 1. Root dashboard layout keys page content by `page.url.pathname` so prior route shells unmount on nav. 2. Campaign edit redirects to `/campaigns` when `id` is missing; wizard is keyed by `campaignId`. ## Quick check 1. Open `/campaigns/` (or list), then click **Categories** in the nav. 2. Assert H1 is **Categories** and body shows the category tree (not "Edit campaign"). 3. Hard-load `/categories` — same result.