78734bf1e8
When a user drags a tab into the playwriter group, connectTab() sets its state to 'connecting'. syncTabGroup() previously only kept 'connected' tabs in the group, so it would immediately ungroup the 'connecting' tab. This ungroup fired chrome.tabs.onUpdated, which called disconnectTab(). When the original connectTab() resolved, it re-added the tab, triggering onUpdated again — creating an infinite add/remove/add/remove loop. Fix: include 'connecting' tabs in syncTabGroup's group membership filter. This way syncTabGroup won't fight the user's intent by removing tabs that are still being set up. Error-state tabs are still correctly excluded from the group.