- build-chrome-store.mjs / build-firefox.mjs : host_permissions et content_scripts matches
passent à http://*/* + https://*/* au lieu de memento-note.com uniquement.
Un Web Clipper a besoin d'accéder à tous les sites ; le manifest Store
bloquait l'injection du content script sur n'importe quel article.
- extract-article.ts : refonte de cleanClipText en filtrage par ligne avec
patterns élargis (mis à jour, temps de lecture, aujourd'hui à HH:MM,
source - date, publié le, etc.).
- Bump version 0.4.5 dans manifest, locales, README et builds.
Bug réel : la bannière 'Surlignez le texte à clipper' n'apparaissait
jamais en pratique parce que le side panel envoyait SET_PICK_MODE
avant que le content script ne soit prêt (race condition MV3 entre
chrome.scripting.executeScript et la mise en place du listener
chrome.runtime.onMessage). Le retry PING dans ensureContentScript
ne suffisait pas : le listener sidepanel peut aussi être en retard.
Fix radical : content.js affiche la bannière IMMÉDIATEMENT à
l'initialisation, sans attendre SET_PICK_MODE. L'utilisateur voit
immédiatement que l'extension est active. Un bouton ✕ permet de
la fermer (state local au tab). Pas de dépendance sur le side panel
pour le feedback visuel.
+ manifest : retrait de optional_host_permissions (redondant avec
host_permissions http://*/* et https://*/*, peut perturber Chrome
en dev).
+ bannière rediseignée : max-width 640px responsive, animation
slideIn, bouton ✕ accessible.
+ nouvelles clés i18n bannerDismiss dans les 15 locales.
+ build : exclusion de store-assets/ du zip et du xpi (sinon le
package Store faisait 327 Ko au lieu de 47 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.
1. Recherche: fetchChunkSnippets() — après le classement RRF existant,
récupère les passages précis qui matchent depuis NoteEmbeddingChunk.
Pur affichage, AUCUN changement de classement.
2. Script migration: scripts/migrate-chunk-embeddings.ts
Indexe toutes les notes existantes en fragments.
Batch de 10, barre de progression.
Usage: npx tsx scripts/migrate-chunk-embeddings.ts
3. Memory Echo chunk-level: à faire (US restante)