c9809967e5
syncTabGroup was including 'connecting' tabs in the group unconditionally, so when the relay WebSocket closed and all tabs transitioned to 'connecting', the group stayed green. Now 'connecting' tabs are only included when the relay is actually connected (connectionState === 'connected'). When the relay is dead, 'connecting' tabs are excluded and the group gets cleaned up. The onUpdated handler at line ~1601 already guards against the ungroup→disconnect loop for 'connecting' tabs, so this is safe.