Repository navigation
Secousse v0.2.1
Fixes
- Chat listener leak that cascaded into a WebSocket storm. The disconnect listener in
useChatregistered its Tauri handler via an asyncawait listen(...)whose unlisten function was stored in a ref. If the effect's cleanup ran before that promise resolved (typical when switching focus rapidly inside the multi-stream grid), the cleanup saw a null ref and did nothing — the listener slot was then overwritten by the next effect run and the original handler leaked. Each leaked listener also receivedchat-disconnectedevents and scheduled its own 2-second-delayedconnect_to_chat, so a single Twitch-side disconnect produced N concurrent reconnect invocations on the same channel. Symptoms in the logs were repeatedChat disconnected from: <channel>entries from distinctuser-script:NNslots and floods of duplicateUSERNOTICEmessages; on screen this could degrade into the WebView going black during chat scroll under load. Track the unlisten in a local variable with acancelledflag so an in-flightlisten()is torn down as soon as it resolves.
Full changelog: v0.2.0...v0.2.1