From 5fd9c1d11e8d769b7ea24aaf1894fb8e5e75edae Mon Sep 17 00:00:00 2001 From: Till JS Date: Sat, 4 Apr 2026 10:38:57 +0200 Subject: [PATCH] fix(manacore/web): resolve effect_update_depth_exceeded and Dexie transaction errors - Replace $effect + liveQuery().subscribe() with useLiveQueryWithDefault in 6 dashboard modules (todo, calendar, contacts, habits, notes, finance) to prevent cascading $state writes exceeding Svelte 5 effect depth limit - Defer checkInlineSuggestion in Dexie hooks via setTimeout to avoid cross-table reads within a single-table transaction scope - Add 5s timeout to trySSO fetch calls so app loads in guest mode when mana-auth is unreachable - Fix guestMode reactivity by declaring with $state() Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/lib/data/database.ts | 11 +++++++--- .../src/lib/modules/calendar/ListView.svelte | 22 +++++++------------ .../src/lib/modules/contacts/ListView.svelte | 22 +++++++------------ .../src/lib/modules/finance/ListView.svelte | 18 ++------------- .../web/src/lib/modules/finance/queries.ts | 10 ++++----- .../src/lib/modules/habits/ListView.svelte | 18 ++------------- .../web/src/lib/modules/habits/queries.ts | 16 +++++++------- .../web/src/lib/modules/notes/ListView.svelte | 9 +------- .../apps/web/src/lib/modules/notes/queries.ts | 6 ++--- .../web/src/lib/modules/todo/ListView.svelte | 9 +------- .../apps/web/src/lib/modules/todo/queries.ts | 18 +++++++-------- .../apps/web/src/routes/(app)/+layout.svelte | 2 +- packages/shared-auth/src/core/authService.ts | 5 +++++ 13 files changed, 61 insertions(+), 105 deletions(-) diff --git a/apps/manacore/apps/web/src/lib/data/database.ts b/apps/manacore/apps/web/src/lib/data/database.ts index a7e5a0b5d..8c73a8d1d 100644 --- a/apps/manacore/apps/web/src/lib/data/database.ts +++ b/apps/manacore/apps/web/src/lib/data/database.ts @@ -412,9 +412,14 @@ for (const [appId, tables] of Object.entries(SYNC_APP_MAP)) { }); trackFirstContent(appId); fireTrigger(appId, tableName, 'insert', { ...obj }); - checkInlineSuggestion(appId, tableName, { ...obj }).then((sug) => { - if (sug) window.dispatchEvent(new CustomEvent('mana:automation-suggest', { detail: sug })); - }); + // Defer cross-table reads outside the Dexie hook's transaction scope + const objCopy = { ...obj }; + setTimeout(() => { + checkInlineSuggestion(appId, tableName, objCopy).then((sug) => { + if (sug) + window.dispatchEvent(new CustomEvent('mana:automation-suggest', { detail: sug })); + }); + }, 0); }); table.hook('updating', function (modifications, primKey) { diff --git a/apps/manacore/apps/web/src/lib/modules/calendar/ListView.svelte b/apps/manacore/apps/web/src/lib/modules/calendar/ListView.svelte index 75f72fab0..4970a553d 100644 --- a/apps/manacore/apps/web/src/lib/modules/calendar/ListView.svelte +++ b/apps/manacore/apps/web/src/lib/modules/calendar/ListView.svelte @@ -4,7 +4,7 @@ Clicking an event opens the detail view. -->