From a5a4df78f01c7b48ce352b4a288c4d35bda13926 Mon Sep 17 00:00:00 2001 From: david raistrick <1108844+keen99@users.noreply.github.com> Date: Mon, 29 Jun 2026 11:30:08 -0400 Subject: [PATCH] M3: stub db sentinel in ws/memory mode so legacy guards pass ws/memory storage mode never set the module-level `db` variable. 24 handlers guarded with `if (!db) return` early-exited, silently dropping all writes (create campaign, add encounter, participant CRUD, combat, logs). db stays a truthy sentinel object { __localStub: true } in non-firebase mode. All real reads/writes route through storage.*; db only used by guards. 56 frontend tests green. Verified via headed browser: create campaign flow works end-to-end (modal closes, campaign appears via WS realtime push). --- src/App.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/App.js b/src/App.js index a460536..fe01c58 100644 --- a/src/App.js +++ b/src/App.js @@ -122,10 +122,13 @@ const initializeStorage = () => { } // ws / memory mode: stub auth so App's anon-sign-in path works. + // db stays a truthy sentinel object so legacy `if (!db) return` guards pass; + // all real reads/writes route through `storage.*`, never the SDK `db`. const FAKE_USER = { uid: 'local-user', isAnonymous: true }; auth = { currentUser: FAKE_USER, }; + db = { __localStub: true }; storage = getStorage(); return true; };