diff --git a/src/client/index.tsx b/src/client/index.tsx index c6165d0..27070f3 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -47,23 +47,9 @@ events.onmessage = e => { const prev = apps setApps(JSON.parse(e.data)) - // Full re-render if app list changed structurally or selected app disappeared - const added = apps.some(a => !prev.find(p => p.name === a.name)) - const removed = prev.some(p => !apps.find(a => a.name === p.name)) - if (added || removed || (selectedApp && !apps.some(a => a.name === selectedApp))) { - if (selectedApp && !apps.some(a => a.name === selectedApp)) { - setSelectedApp(null) - } - render() - return + if (selectedApp && !apps.some(a => a.name === selectedApp)) { + setSelectedApp(null) } - // Targeted DOM updates for state-only changes - const states = ['running', 'stopped', 'starting', 'stopping', 'invalid'] - for (const app of apps) { - document.querySelectorAll(`[data-app="${app.name}"]`).forEach(dot => { - for (const s of states) dot.classList.remove(`state-${s}`) - dot.classList.add(`state-${app.state}`) - }) - } + render() }