fix(extension): rollback content/background/sidepanel à v0.3.1, version 0.4.1
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:
@@ -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 l’icô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(() => {})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user