screentinker/frontend
ScreenTinker ee6888e737 Fix display duplication on WebSocket reconnect
Server-side: when a device reconnects on a fresh socket while the old
TCP zombie is still around, the old socket's eventual disconnect handler
flipped the device offline and removed the new heartbeat entry. Now we
proactively evict any prior socket on register and ignore disconnects
from sockets that are no longer the registered one for that device_id.

Frontend: dedupe devices by id from the API response and only render
each device in the first group it belongs to (multi-group membership
is still tracked for the Manage modal).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 10:13:00 -05:00
..
assets Landing: replace iframe mock with dashboard screenshot 2026-04-21 19:47:13 -05:00
css QA fixes: toast aria-live + scope playlist flex-wrap to mobile 2026-04-21 16:00:41 -05:00
js Fix display duplication on WebSocket reconnect 2026-04-28 10:13:00 -05:00
legal Update ToS: add CSAM policy, fix MIT license conflict, add governing law 2026-04-24 11:26:32 -05:00
index.html Mobile: sidebar polish (Commit 1/4) 2026-04-21 15:49:49 -05:00
landing.html Add Discord link and refresh feature copy 2026-04-23 17:47:00 -05:00
manifest.json Initial open source release 2026-04-08 12:14:53 -05:00
robots.txt Initial open source release 2026-04-08 12:14:53 -05:00
sitemap.xml SEO: open-source positioning, GitHub links, OG image, semantic <main> 2026-04-21 19:56:22 -05:00
sw-admin.js Initial open source release 2026-04-08 12:14:53 -05:00