diff --git a/extension/CHANGELOG.md b/extension/CHANGELOG.md index b93a2a1..1e2ad73 100644 --- a/extension/CHANGELOG.md +++ b/extension/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.0.75 + +### Changes + +- **Remove `alarms` permission and keepalive**: Removed `chrome.alarms` keepalive added in 0.0.73. The `maintainLoop` while-loop and `setInterval(checkMemory)` already keep the service worker alive. The alarm was a no-op that required an unnecessary permission. + ## 0.0.74 ### Bug Fixes diff --git a/extension/manifest.json b/extension/manifest.json index 8b3b4f7..7c6bb20 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -1,10 +1,9 @@ { "manifest_version": 3, "name": "Playwriter", - "version": "0.0.74", + "version": "0.0.75", "description": "Automate your Browser using Cursor, Claude, VS Code. More capable and context efficient than Playwright MCP.", "permissions": [ - "alarms", "debugger", "tabGroups", "contextMenus", diff --git a/extension/src/background.ts b/extension/src/background.ts index faa58d5..6022d74 100644 --- a/extension/src/background.ts +++ b/extension/src/background.ts @@ -1520,18 +1520,6 @@ async function onActionClicked(tab: chrome.tabs.Tab): Promise { resetDebugger() connectionManager.maintainLoop() -// MV3 service workers can be terminated by Chrome despite setInterval. -// chrome.alarms is the only reliable way to keep a service worker alive. -// Without this, the maintainLoop stops, the WebSocket closes, and the -// extension silently disconnects from the relay server. -chrome.alarms.create('keepalive', { periodInMinutes: 0.25 }) -chrome.alarms.onAlarm.addListener((alarm) => { - if (alarm.name === 'keepalive') { - // No-op — the alarm firing is enough to wake the service worker. - // The maintainLoop will handle reconnection if needed. - } -}) - chrome.contextMenus .remove('playwriter-pin-element') .catch(() => {})