From 6e563b95792b1f6bf8f35a7eac9d4ac8e39a8f46 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 9 Jun 2026 23:36:33 -0700 Subject: [PATCH 1/3] fix: stop dashboard refresh loops --- .changeset/fn-blank-page-service-worker-assets.md | 3 +++ packages/dashboard/app/public/sw.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .changeset/fn-blank-page-service-worker-assets.md diff --git a/.changeset/fn-blank-page-service-worker-assets.md b/.changeset/fn-blank-page-service-worker-assets.md new file mode 100644 index 0000000000..1ad0e19f28 --- /dev/null +++ b/.changeset/fn-blank-page-service-worker-assets.md @@ -0,0 +1,3 @@ +"@runfusion/fusion": patch + +Revalidate dashboard service-worker assets before falling back to cache so rebuilt tabs cannot stay on stale bundles and render a blank page. diff --git a/packages/dashboard/app/public/sw.js b/packages/dashboard/app/public/sw.js index 9f53c68c68..dbd20849e5 100644 --- a/packages/dashboard/app/public/sw.js +++ b/packages/dashboard/app/public/sw.js @@ -1,4 +1,4 @@ -const CACHE_NAME = "fusion-cache-v4"; +const CACHE_NAME = "fusion-cache-v5"; const APP_SHELL_URLS = [ "/", "/index.html", From 5364b62af7c66f635d5d726a86b3d295027fa43d Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Sun, 21 Jun 2026 00:08:11 -0700 Subject: [PATCH 2/3] Update packages/dashboard/app/versionCheck.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- packages/dashboard/app/versionCheck.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/dashboard/app/versionCheck.ts b/packages/dashboard/app/versionCheck.ts index 7676c3f031..794baa1ada 100644 --- a/packages/dashboard/app/versionCheck.ts +++ b/packages/dashboard/app/versionCheck.ts @@ -240,7 +240,8 @@ export async function checkVersion(trigger: VersionCheckTrigger = "initial"): Pr } catch { // ignore } - if (autoReloadEnabled) { + const alreadyAttempted = Boolean((() => { try { return sessionStorage.getItem(RELOAD_FLAG); } catch { return null; } })()); + if (autoReloadEnabled && !alreadyAttempted) { setReloadedRemoteVersion(remote); } reloadOnce(`build version changed: ${__BUILD_VERSION__} -> ${remote}`); From 7ddb3ef26e01a2e5ad32722811f92c7a0c2246d4 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Sun, 21 Jun 2026 00:15:00 -0700 Subject: [PATCH 3/3] fix(review): changeset frontmatter, reload-marker ordering, cache bump - Add required `---` frontmatter fences to the changeset so the changesets CLI picks it up during release (greptile P1). - Mark the remote version as reloaded only when a reload actually proceeds, so a pre-existing RELOAD_FLAG no longer permanently suppresses future reloads for that version (greptile P2). - Bump service-worker cache to v5 after merging main's v4 and update the pwa test assertions accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) --- .changeset/fn-blank-page-service-worker-assets.md | 2 ++ packages/dashboard/app/__tests__/pwa.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.changeset/fn-blank-page-service-worker-assets.md b/.changeset/fn-blank-page-service-worker-assets.md index 1ad0e19f28..19dfd36ecf 100644 --- a/.changeset/fn-blank-page-service-worker-assets.md +++ b/.changeset/fn-blank-page-service-worker-assets.md @@ -1,3 +1,5 @@ +--- "@runfusion/fusion": patch +--- Revalidate dashboard service-worker assets before falling back to cache so rebuilt tabs cannot stay on stale bundles and render a blank page. diff --git a/packages/dashboard/app/__tests__/pwa.test.ts b/packages/dashboard/app/__tests__/pwa.test.ts index 45fe05fac2..09ce06fafb 100644 --- a/packages/dashboard/app/__tests__/pwa.test.ts +++ b/packages/dashboard/app/__tests__/pwa.test.ts @@ -194,7 +194,7 @@ describe("PWA configuration", () => { expect(swSource).toContain('addEventListener("install"'); expect(swSource).toContain('addEventListener("fetch"'); expect(swSource).toContain('addEventListener("activate"'); - expect(swSource).toContain('const CACHE_NAME = "fusion-cache-v4";'); + expect(swSource).toContain('const CACHE_NAME = "fusion-cache-v5";'); }); it("service worker bypasses SSE requests instead of trying to cache them", () => { @@ -316,7 +316,7 @@ describe("PWA configuration", () => { expect(indexHtml).toContain(''); expect(indexHtml).toContain(''); - expect(swSource).toContain('const CACHE_NAME = "fusion-cache-v4";'); + expect(swSource).toContain('const CACHE_NAME = "fusion-cache-v5";'); }); }); });