mirror of https://github.com/garrytan/gstack.git
Without "tabs", chrome.tabs.query() returns tab objects with undefined
url/title for any site outside host_permissions (everything except
127.0.0.1). snapshotTabs() in background.js then writes empty strings
into tabs.json, and the active-tab.json gate (`if (active && active.url
&& ...)`) silently skips the write. The sidebar agent loses track of
what page the user is actually on.
The "tabs" permission is a no-warning install-time grant in MV3 (not a
host permission). It exposes tab.url / tab.title / tab.favIconUrl across
all tabs, but does not grant content-script injection or cross-origin
fetch — a tight scope match for what snapshotTabs() actually needs.
activeTab is too narrow (only after a user gesture on the extension
action) for background polling.
Reproduces on every gstack version since v1.14.0.0 (
|
||
|---|---|---|
| .. | ||
| icons | ||
| background.js | ||
| content.css | ||
| content.js | ||
| inspector.css | ||
| inspector.js | ||
| manifest.json | ||
| popup.html | ||
| popup.js | ||
| sidepanel-terminal.js | ||
| sidepanel.css | ||
| sidepanel.html | ||
| sidepanel.js | ||