Bug réel : chrome.runtime.sendMessage depuis un content script ne va
QU'au background service worker en MV3. Le side panel qui écoute via
chrome.runtime.onMessage ne reçoit jamais rien directement. Résultat :
la sélection, le titre de la page et le contexte n'atteignaient jamais
le panneau.
Fix :
- background.js : ajouter un onMessage qui forward SELECTION_CHANGED et
PAGE_CONTEXT_CHANGED vers toutes les surfaces (side panel).
- sidepanel.js applySelectionFromMessage : normaliser les URLs
(ignorer query/fragment/trailing slash), amorcer pageUrl depuis le
premier message si tabs.query a échoué, accepter une sélection qui
arrive avant refreshPageContext.
La v0.3.1 souffrait du même bug — la sélection fonctionnait parfois par
chance quand Chrome routait le message avant que le side panel ne soit
complètement initialisé. Maintenant c'est garanti.
Traductions:
- 'Tondeuse Web' (FR), 'Cortadora web' (ES), 'Schneiden Sie aus' (DE),
'ritagliare' (IT) etc. — le terme 'clip' était traduit littéralement
(tondeuse = mower, ausschneiden = cut out, ritagliare = trim).
- Garder 'clip' comme terme technique dans les 15 locales, sauf les
formulations verbe qui prennent une conjugaison locale correcte.
- 87 chaînes corrigées dans le bundle de traductions embarqué.
Diagnostic 401:
- Le message 'Veuillez vous connecter à Memento' s'affichait même
quand l'utilisateur était connecté, simplement sur une URL différente
(localhost vs 127.0.0.1 vs LAN IP — les cookies sont scopés par host).
- Nouveau message multi-ligne incluant l'URL configurée + bouton
'Ouvrir Memento' qui ouvre l'onglet directement à cette URL.
- Nouvelle clé i18n errLoginHintUrl (placeholder $URL$) traduite
dans les 15 locales.
Rebuilt :
- memento-web-clipper-chrome-store.zip (44 Ko)
- memento-web-clipper-firefox.xpi (44 Ko)
- Nouvelle page /privacy bilingue (FR/EN) avec sélection par Accept-Language
ou ?lang=, sections complètes (données collectées, IA/BYOK, RGPD, sécurité,
contact). Style sombre aligné sur la landing (x.ai premium).
- Liens footer landing.footer.legal.* mis à jour vers /privacy dans les 15 locales.
- Extension Web Clipper rendue cross-browser :
* background.js détecte chrome.sidePanel vs browser.sidebarAction
* sidepanel.js ajoute un shim chrome<->browser pour Firefox
* manifest.json inclut sidebar_action + browser_specific_settings.gecko
+ optional_host_permissions (Chrome les ignore)
- Script scripts/build-firefox.mjs pour produire un .xpi signé pour AMO,
symétrique de build-chrome-store.mjs. Exclusion mutuelle des artefacts
Chrome/Firefox pour éviter la cross-contamination.
- Branding corrigé : 176 occurrences de 'Momento' -> 'Memento' dans le
bundle de traductions embarqué.
- Version bumpée 0.3.1 -> 0.4.0.