wulf-pulse/components/mobile/profile
lorentz f32403ee35 fix(theme): guard ThemeSessionBridge sync with hasSynced ref
The dep-only fix wasn't enough: better-auth's useSession (nanostores) can
re-emit on focus / store refresh, transitioning session.user.id through
undefined and back. Each transition re-fires the effect, which then calls
setTheme(session.user.theme) with the stale cached value and reverts the
user's selection.

Track "have we synced this tab session" with a ref. After the first
successful sync, no subsequent effect fire can revert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 21:58:35 -04:00
..
ProfileChannelsSection.tsx fix(09.1-01): ProfileChannelsSection QR + subscribe link target company ntfy server 2026-05-11 06:43:42 -04:00
ProfileNotificationMatrix.tsx feat(09-04): ProfileThemeSection + ProfileNotificationMatrix 2026-05-10 07:40:53 -04:00
ProfileSectionSkeleton.tsx feat(09-04): page shell, drawer wiring, skeleton helper, channels placeholder 2026-05-10 07:40:40 -04:00
ProfileThemeSection.tsx feat(09-04): ProfileThemeSection + ProfileNotificationMatrix 2026-05-10 07:40:53 -04:00
ProfileTimezoneSection.tsx feat(09-04): ProfileTimezoneSection (Combobox + live current time) 2026-05-10 07:40:48 -04:00
ThemeSessionBridge.tsx fix(theme): guard ThemeSessionBridge sync with hasSynced ref 2026-05-14 21:58:35 -04:00