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">
import { onMount } from 'svelte';
import { onMount, untrack } from 'svelte';
import ProjectCard from './ProjectCard.svelte';
import SettingsDrawer from './SettingsDrawer.svelte';
import CommandPalette from './CommandPalette.svelte';
@ -43,19 +43,20 @@
let appReady = $state(false);
let sessionStart = $state(Date.now());
// ── Blink timer ─────────────────────────────────────────────
// ── Blink timer (untracked — must not create reactive dependency) ────
let blinkVisible = $state(true);
let _blinkId: ReturnType<typeof setInterval>;
$effect(() => {
const id = setInterval(() => { blinkVisible = !blinkVisible; }, 500);
return () => clearInterval(id);
_blinkId = setInterval(() => { untrack(() => { blinkVisible = !blinkVisible; }); }, 500);
return () => clearInterval(_blinkId);
});
// ── Session duration ────────────────────────────────────────
// ── Session duration (untracked) ──────────────────────────────
let sessionDuration = $state('0m');
$effect(() => {
function update() {
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();
const id = setInterval(update, 10000);