- 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.
87 lines
3.3 KiB
Markdown
87 lines
3.3 KiB
Markdown
# Memento Web Clipper — extension Chrome
|
||
|
||
Clipper web avec **panneau latéral** : le panneau reste ouvert pendant que vous surlignez du texte sur la page.
|
||
|
||
## Langues
|
||
|
||
L’extension suit la **langue de l’interface Chrome** (`chrome.i18n.getUILanguage`) — 15 locales comme l’app Memento : `de`, `en`, `es`, `fr`, `it`, `pt`, `nl`, `pl`, `ru`, `zh`, `ja`, `ko`, `ar`, `fa`, `hi`.
|
||
|
||
Fichiers : `extension/_locales/<lang>/messages.json`. Régénération : `node extension/i18n/generate-translations.cjs` puis `node extension/scripts/build-extension-locales.mjs`.
|
||
|
||
## Installation (dev)
|
||
|
||
### Chrome
|
||
1. `chrome://extensions`
|
||
2. **Mode développeur** → **Charger l’extension non empaquetée** → dossier `memento-note/extension`
|
||
3. Épingle l’icône Memento
|
||
|
||
> Chrome **114+** requis (Side Panel API).
|
||
|
||
### Firefox
|
||
```bash
|
||
# Avec web-ext (https://extensionworkshop.com/)
|
||
npx web-ext run --source-dir memento-note/extension
|
||
```
|
||
Ou via `about:debugging` → **Ce Firefox** → **Charger un module temporaire** → sélectionner `manifest.json`.
|
||
|
||
> Firefox **115+** requis (MV3 + sidebarAction).
|
||
|
||
## Instance Memento
|
||
|
||
- **Dev** : icône ⚙ → URL (`http://localhost:3000` ou IP LAN) → **Appliquer & reconnecter**
|
||
- Connectez-vous sur **la même URL** dans Chrome (Google OAuth)
|
||
- **Production (build Store)** : mettre `ALLOW_INSTANCE_CONFIG = false` dans `sidepanel.js` → URL `https://memento-note.com` en dur, réglages masqués
|
||
|
||
## Utilisation
|
||
|
||
1. Ouvrez une page web normale (pas `chrome://`)
|
||
2. Cliquez l’icône Memento → panneau latéral
|
||
3. Choisissez le **carnet** (liste hiérarchique)
|
||
4. Optionnel : surlignez du texte → **Clipper la sélection** (bouton sky)
|
||
5. Ou **Clipper cette page** (article complet + IA)
|
||
6. Ou **Enregistrer le lien seul**
|
||
7. **Aperçu** : titre éditable, résumé, extrait, temps de lecture → **Enregistrer dans Memento**
|
||
|
||
## Dépannage
|
||
|
||
| Problème | Solution |
|
||
|----------|----------|
|
||
| Carnets vides / 401 | **Ouvrir Memento ↗** sur la même URL, connectez-vous |
|
||
| `localhost` vs `127.0.0.1` | Utilisez **toujours la même** URL partout (cookies session) |
|
||
| Pas de sélection | Rechargez la page après install extension ; surlignez sur la page, pas dans le panneau |
|
||
| Page Chrome système | Impossible — ouvrez un site http(s) normal |
|
||
|
||
## Persan / RTL
|
||
|
||
Détection automatique `dir` / `lang` (ex. BBC Persian), aperçu RTL avec Vazirmatn.
|
||
|
||
## Builds production
|
||
|
||
Deux scripts produisent des paquets prêts à publier :
|
||
|
||
```bash
|
||
# Chrome Web Store (zip)
|
||
node extension/scripts/build-chrome-store.mjs
|
||
# → memento-note/extension/memento-web-clipper-chrome-store.zip (~44 Ko, 27 fichiers)
|
||
|
||
# Firefox Add-ons (xpi)
|
||
node extension/scripts/build-firefox.mjs
|
||
# → memento-note/extension/memento-web-clipper-firefox.xpi (~44 Ko, 27 fichiers)
|
||
```
|
||
|
||
Chaque build :
|
||
- Verrouille `ALLOW_INSTANCE_CONFIG = false` (URL prod en dur)
|
||
- Restreint les `host_permissions` à `https://memento-note.com/*`
|
||
- Génère les PNG d'icônes depuis `public/icons/icon-{192,512}.svg`
|
||
- Exclut les fichiers internes (`i18n/`, `diagnose.js`, `test-sidepanel.html`, etc.)
|
||
|
||
Différences manifest :
|
||
- **Chrome** : `side_panel` (Side Panel API Chrome 114+)
|
||
- **Firefox** : `sidebar_action` + `browser_specific_settings.gecko` (Firefox 115+)
|
||
|
||
## APIs
|
||
|
||
- `GET /api/clip/notebooks`
|
||
- `POST /api/clip/analyze`
|
||
- `POST /api/clip/save`
|