fix(extension): rollback content/background/sidepanel à v0.3.1, version 0.4.1
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled

Le rollback complet de content.js, background.js et sidepanel.js vers
la v0.3.1 (que tu confirmes fonctionner) règle la régression. Mes
modifs depuis (forwarder, shim chrome<->browser, setPickMode auto,
retry PING) ont introduit une régression silencieuse que je n'ai pas
reproduite localement. Je remets le code qui marchait.

Manifest = v0.3.1 + ajout sidebar_action + browser_specific_settings.gecko
pour le build Firefox. Version bumpée 0.3.1 → 0.4.1.
This commit is contained in:
Antigravity
2026-07-18 10:24:47 +00:00
parent 1e9b1b30c9
commit 07ac42cbee
14 changed files with 137 additions and 633 deletions

View File

@@ -1,46 +1,8 @@
/** Service worker — ouvre le panneau latéral (Chrome Side Panel ou Firefox sidebar) au clic sur l'icône. */
const extApi = (typeof browser !== 'undefined' && browser.sidebarAction) ? browser : chrome
if (extApi.sidePanel?.setPanelBehavior) {
// Chrome MV3 : Side Panel API
extApi.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
} else if (extApi.sidebarAction?.open) {
// Firefox MV3 : sidebarAction
extApi.action?.onClicked?.addListener?.(() => {
extApi.sidebarAction.open().catch(() => {})
})
}
extApi.runtime?.onInstalled?.addListener?.(() => {
if (extApi.sidePanel?.setPanelBehavior) {
extApi.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
}
})
extApi.runtime?.onStartup?.addListener?.(() => {
if (extApi.sidePanel?.setPanelBehavior) {
extApi.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
}
/** Service worker — ouvre le panneau latéral au clic sur licône. */
chrome.runtime.onInstalled.addListener(() => {
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
})
// === Forwarding content script → side panel ===
// En Chrome MV3, chrome.runtime.sendMessage depuis un content script arrive
// uniquement au background service worker (PAS au side panel directement).
// On doit broadcaster manuellement vers toutes les surfaces ouvertes.
extApi.runtime?.onMessage?.addListener?.((msg, sender) => {
if (!msg || typeof msg !== 'object') return
// Messages émis par le content script qui doivent atteindre le side panel.
const FORWARD_TYPES = new Set([
'SELECTION_CHANGED',
'PAGE_CONTEXT_CHANGED',
])
if (!FORWARD_TYPES.has(msg.type)) return
// Broadcast à toutes les surfaces (side panel, popup).
// runAt permet au receiver de filtrer par URL s'il veut.
extApi.runtime.sendMessage({
...msg,
_fromContentScript: true,
_fromTabId: sender?.tab?.id,
}).catch(() => { /* no listener */ })
// Retourne true pour permettre une réponse asynchrone si besoin.
return false
chrome.runtime.onStartup.addListener(() => {
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
})