fix(electrobun): untrack blink+session timer writes to prevent effect_update_depth_exceeded

This commit is contained in:
Hibryda 2026-03-23 21:16:54 +01:00
parent f2e8b07d7f
commit a4c0435b56

View file

@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { onMount } from 'svelte'; import { onMount, untrack } from 'svelte';
import ProjectCard from './ProjectCard.svelte'; import ProjectCard from './ProjectCard.svelte';
import SettingsDrawer from './SettingsDrawer.svelte'; import SettingsDrawer from './SettingsDrawer.svelte';
import CommandPalette from './CommandPalette.svelte'; import CommandPalette from './CommandPalette.svelte';
@ -43,19 +43,20 @@
let appReady = $state(false); let appReady = $state(false);
let sessionStart = $state(Date.now()); let sessionStart = $state(Date.now());
// ── Blink timer ───────────────────────────────────────────── // ── Blink timer (untracked — must not create reactive dependency) ────
let blinkVisible = $state(true); let blinkVisible = $state(true);
let _blinkId: ReturnType<typeof setInterval>;
$effect(() => { $effect(() => {
const id = setInterval(() => { blinkVisible = !blinkVisible; }, 500); _blinkId = setInterval(() => { untrack(() => { blinkVisible = !blinkVisible; }); }, 500);
return () => clearInterval(id); return () => clearInterval(_blinkId);
}); });
// ── Session duration ──────────────────────────────────────── // ── Session duration (untracked) ──────────────────────────────
let sessionDuration = $state('0m'); let sessionDuration = $state('0m');
$effect(() => { $effect(() => {
function update() { function update() {
const mins = Math.floor((Date.now() - sessionStart) / 60000); const mins = Math.floor((Date.now() - sessionStart) / 60000);
sessionDuration = mins < 60 ? `${mins}m` : `${Math.floor(mins / 60)}h ${mins % 60}m`; untrack(() => { sessionDuration = mins < 60 ? `${mins}m` : `${Math.floor(mins / 60)}h ${mins % 60}m`; });
} }
update(); update();
const id = setInterval(update, 10000); const id = setInterval(update, 10000);