From 3f73fc059ef579ec32fa03678730c3c0461f5448 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 22 Jun 2026 21:09:21 -0400 Subject: [PATCH] fix(sw): guard navigator.serviceWorker access before feature check; fix EOF newline Accessing navigator.serviceWorker.controller before the 'serviceWorker' in navigator guard would throw a TypeError on browsers without SW support. Moved the guard into the had_controller expression so the property is never accessed on unsupported browsers. Also adds the missing trailing newline to core__export.ts. Co-Authored-By: Claude Sonnet 4.6 --- src/lib/ae_core/core__export.ts | 2 +- src/routes/+layout.svelte | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/ae_core/core__export.ts b/src/lib/ae_core/core__export.ts index 83b99901..eff8717e 100644 --- a/src/lib/ae_core/core__export.ts +++ b/src/lib/ae_core/core__export.ts @@ -65,4 +65,4 @@ export async function download_export__obj_type({ } return result; -} \ No newline at end of file +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 56d32466..3c555261 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -346,7 +346,9 @@ $effect(() => { // Added 2026-06-22 to close this gap. // Capture before registering — if null, this is first activation (fresh page load) // and the reload is unnecessary since assets were already fetched without the SW. - const had_controller = !!navigator.serviceWorker.controller; + // Guard must be part of the expression: navigator.serviceWorker doesn't exist on + // browsers without SW support, so accessing .controller before checking would throw. + const had_controller = 'serviceWorker' in navigator && !!navigator.serviceWorker.controller; const on_controller_change = () => { if (had_controller) window.location.reload(); };