Skip to content

Commit 1177f59

Browse files
authored
refactor: streamline extension build process and update permissions (#92)
- Removed background script files and adjusted the build process for browser extensions. - Updated manifest files to restrict host permissions to the official Ecoindex API endpoint. - Enhanced privacy policy documentation to clarify data handling practices. - Added functionality for integrating Ecoindex badges in the popup, including a preview feature.
1 parent 7a6c9f5 commit 1177f59

11 files changed

Lines changed: 86 additions & 121 deletions

File tree

bin/build-extension.mjs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ async function buildForBrowser(browser) {
2929
`${dirname}/../src/images`,
3030
`${dirname}/../dist/${browser}/images`,
3131
);
32-
fs.copySync(
33-
`${dirname}/../src/background`,
34-
`${dirname}/../dist/${browser}/background`,
35-
);
3632
fs.copySync(
3733
`${dirname}/../src/common.js`,
3834
`${dirname}/../dist/${browser}/common.js`,

doc/PRIVACY-POLICY-FR.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,15 @@ Le fichier manifeste de l’Extension peut contenir les déclarations suivantes,
3838
```json
3939
{
4040
"permissions": ["activeTab", "storage"],
41-
"host_permissions": ["<all_urls>"]
41+
"host_permissions": ["https://bff.ecoindex.fr/*"]
4242
}
4343
```
4444

45-
- **`activeTab`** — Accorde un accès **temporaire** à l’onglet actif lorsque vous utilisez l’Extension (par exemple à l’ouverture de la popup). Elle sert à lire **l’URL de la page affichée** afin d’interroger le backend Ecoindex pour le résultat correspondant. Elle **ne** permet pas de lire en continu tous les onglets en arrière-plan.
45+
- **`activeTab`** — Accorde un accès **temporaire** à l’onglet actif lorsque vous ouvrez la popup de l’Extension. Elle sert à lire **l’URL de la page affichée** afin d’interroger le backend Ecoindex pour le résultat correspondant. Elle **ne** permet pas de lire en continu tous les onglets en arrière-plan.
4646

47-
- **`storage`** — Sert à conserver **localement sur votre appareil** des données d’Extension : préférences et état d’interface de courte durée (par exemple le badge de la barre d’outils lié à l’onglet courant). Ce stockage n’est pas utilisé pour constituer un historique de navigation exploité par des tiers.
47+
- **`storage`** — Sert à conserver **localement sur votre appareil** les préférences de l’Extension. Ce stockage n’est pas utilisé pour constituer un historique de navigation exploité par des tiers.
4848

49-
- **`host_permissions` : `<all_urls>`** — Indique que l’Extension peut **s’exécuter dans le contexte des pages web sur les sites que vous visitez**. Ce schéma est en particulier nécessaire lorsque l’Extension injecte des **scripts de contenu** sur toutes les pages (par exemple pour partager du code avec la popup) ou lorsque le navigateur associe ce type d’injection à des autorisations d’hôtes larges. **Il ne s’agit pas d’un dispositif de suivi comportemental** : l’objectif reste d’obtenir l’URL de la page pour la requête Ecoindex décrite ci-dessus. Lorsque les politiques des magasins d’extensions le permettent, l’**accès réseau** au backend est limité à l’API officielle Ecoindex (`https://bff.ecoindex.fr/`) plutôt qu’à des sites arbitraires.
50-
51-
Certaines versions peuvent aussi demander la permission **`tabs`** pour que la partie « arrière-plan » réagisse aux changements d’onglet ou de chargement de page, toujours dans le même objectif (par exemple mettre à jour le badge pour l’onglet actif).
49+
- **`host_permissions` : `https://bff.ecoindex.fr/*`** — Autorise uniquement les appels réseau vers l’API officielle Ecoindex BFF. Aucun accès hôte large de type `<all_urls>` n’est demandé.
5250

5351
---
5452

doc/PRIVACY-POLICY.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,15 @@ The extension manifest may include the following declarations and use them only
3838
```json
3939
{
4040
"permissions": ["activeTab", "storage"],
41-
"host_permissions": ["<all_urls>"]
41+
"host_permissions": ["https://bff.ecoindex.fr/*"]
4242
}
4343
```
4444

45-
- **`activeTab`** — Grants **temporary** access to the active tab when you interact with the extension (for example when you open the toolbar popup). The extension uses this to read the **URL of the page you are viewing** so it can request the corresponding Ecoindex result from the backend. It does **not** give ongoing read access to all tabs in the background.
45+
- **`activeTab`** — Grants **temporary** access to the active tab when you open the extension popup. The extension uses this to read the **URL of the page you are viewing** so it can request the corresponding Ecoindex result from the backend. It does **not** give ongoing read access to all tabs in the background.
4646

47-
- **`storage`** — Used to keep **local data on your device**: extension preferences and short-lived UI state (for example toolbar badge information tied to the current tab). This storage is not used to build a browsing history for third parties.
47+
- **`storage`** — Used to keep **local data on your device**: extension preferences. This storage is not used to build a browsing history for third parties.
4848

49-
- **`host_permissions`: `<all_urls>`** — Declares that the extension may **run in the context of web pages on any site** you visit. This pattern is required when the extension uses **content scripts** injected on all pages (for example to share helpers with the popup) or when the browser ties injection to broad host permissions. **This is not used for behavioural tracking**: the goal remains to obtain the current page URL for the Ecoindex query described above. Where store policies allow, **network** access to the backend is kept to the official Ecoindex API host (`https://bff.ecoindex.fr/`) rather than arbitrary sites.
50-
51-
Some builds may also request **`tabs`** so the background logic can react when you switch tabs or load a page, still in line with the same purpose (updating the badge for the active tab).
49+
- **`host_permissions`: `https://bff.ecoindex.fr/*`** — Allows network requests only to the official Ecoindex BFF API. No broad host access such as `<all_urls>` is requested.
5250

5351
---
5452

src/background/background.html

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/background/background.js

Lines changed: 0 additions & 68 deletions
This file was deleted.

src/manifest-chrome.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,9 @@
1212
"default_title": "Ecoindex",
1313
"default_popup": "popup/popup.html"
1414
},
15-
"background": {
16-
"service_worker": "background/background.js",
17-
"type": "module"
18-
},
1915
"permissions": [
2016
"activeTab",
21-
"storage",
22-
"tabs"
17+
"storage"
2318
],
2419
"host_permissions": [
2520
"https://bff.ecoindex.fr/*"

src/manifest-firefox.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,10 @@
1212
"default_title": "Ecoindex",
1313
"default_popup": "popup/popup.html"
1414
},
15-
"background": {
16-
"page": "background/background.html"
17-
},
1815
"permissions": [
1916
"activeTab",
2017
"https://bff.ecoindex.fr/*",
21-
"storage",
22-
"tabs"
18+
"storage"
2319
],
2420
"options_ui": {
2521
"page": "options/options.html",

src/options/options.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ <h2 id="perms-heading" class="h3">Données et permissions</h2>
2828
<p>L’Extension peut déclarer dans son manifeste :</p>
2929
<pre class="options-code" id="options-perms-snippet" aria-label="Exemple de permissions manifeste">{
3030
"permissions": ["activeTab", "storage"],
31-
"host_permissions": ["&lt;all_urls&gt;"]
31+
"host_permissions": ["https://bff.ecoindex.fr/*"]
3232
}</pre>
3333
<ul class="options-perms-list">
34-
<li><strong>activeTab</strong> — Accès <strong>temporaire</strong> à l’onglet actif quand vous ouvrez la popup (ou utilisez l’Extension), pour lire l’URL de la page et interroger le service Ecoindex. Pas de lecture continue de tous les onglets.</li>
35-
<li><strong>storage</strong> — Stockage <strong>local</strong> des préférences et d’un état d’affichage de courte durée (par ex. badge), sur votre appareil.</li>
36-
<li><strong>host_permissions &lt;all_urls&gt;</strong> — Autorise l’Extension à s’exécuter sur les pages que vous visitez (notamment si des scripts de contenu sont injectés partout). Ce n’est <strong>pas</strong> utilisé pour du pistage publicitaire ; l’URL sert à demander le score Ecoindex. L’accès réseau vers le backend peut être limité à <code>https://bff.ecoindex.fr/</code> selon la version du manifeste.</li>
34+
<li><strong>activeTab</strong> — Accès <strong>temporaire</strong> à l’onglet actif lorsque vous ouvrez la popup pour récupérer l’URL affichée et demander le score Ecoindex correspondant.</li>
35+
<li><strong>storage</strong> — Stockage <strong>local</strong> des préférences de l’extension sur votre appareil.</li>
36+
<li><strong>host_permissions https://bff.ecoindex.fr/*</strong> — Autorise uniquement les appels réseau vers l’API officielle Ecoindex BFF. Aucun accès hôte large de type <code>&lt;all_urls&gt;</code> n’est demandé.</li>
3737
</ul>
3838
<p class="options-meta">Détail : voir la politique de confidentialité du projet (<code>doc/PRIVACY-POLICY-FR.md</code> ou <code>doc/PRIVACY-POLICY.md</code>).</p>
3939
</section>

src/popup/popup.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,8 @@ code {
739739
background: #f5f5f5;
740740
font-family: monospace;
741741
font-size: 12px;
742+
white-space: pre-wrap;
743+
word-break: break-all;
742744
}
743745

744746
.shadow {
@@ -768,4 +770,11 @@ code {
768770

769771
summary {
770772
cursor: pointer;
773+
}
774+
775+
#badge-preview-img {
776+
display: block;
777+
margin: 0.5rem 0;
778+
max-width: 100%;
779+
height: auto;
771780
}

src/popup/popup.html

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ <h1 id="title">Ecoindex</h1>
6363
<svg aria-hidden="true">
6464
<use xlink:href="#icon-refresh">
6565
<symbol id="icon-refresh" viewBox="0 0 25 25">
66-
<path d="m17.856 5.476 2.56-2.56v7.657h-7.66l3.524-3.523c-1.181-1.191-2.8-1.946-4.614-1.947-2.854.003-5.28 1.829-6.177 4.375h-.02c-.124.352-.22.718-.283 1.094h-2.202c.537-4.318 4.21-7.656 8.677-7.656h.011c2.417 0 4.602.977 6.184 2.559zm-14.94 14.94 2.562-2.559c1.58 1.582 3.766 2.56 6.183 2.56h.011c4.467 0 8.14-3.339 8.677-7.657h-2.201c-.064.377-.16.742-.284 1.094h-.02c-.896 2.547-3.322 4.372-6.176 4.375-1.815-.001-3.433-.755-4.614-1.947l3.524-3.522h-7.661v7.657z" transform="translate(.833 .833)"></path>
66+
<path
67+
d="m17.856 5.476 2.56-2.56v7.657h-7.66l3.524-3.523c-1.181-1.191-2.8-1.946-4.614-1.947-2.854.003-5.28 1.829-6.177 4.375h-.02c-.124.352-.22.718-.283 1.094h-2.202c.537-4.318 4.21-7.656 8.677-7.656h.011c2.417 0 4.602.977 6.184 2.559zm-14.94 14.94 2.562-2.559c1.58 1.582 3.766 2.56 6.183 2.56h.011c4.467 0 8.14-3.339 8.677-7.657h-2.201c-.064.377-.16.742-.284 1.094h-.02c-.896 2.547-3.322 4.372-6.176 4.375-1.815-.001-3.433-.755-4.614-1.947l3.524-3.522h-7.661v7.657z"
68+
transform="translate(.833 .833)"></path>
6769
</symbol>
6870
</use>
6971
</svg>
@@ -98,9 +100,25 @@ <h2 class="space">Derniers résultats</h2>
98100
</details>
99101
</div>
100102
</div>
103+
<details id="badge-integration" class="space">
104+
<hr>
105+
<summary>Intégrer le badge Ecoindex <a id="badge-preview-link" target="_blank" rel="noopener noreferrer">
106+
<img id="badge-preview-img" alt="Ecoindex Badge" />
107+
</a></summary>
108+
<p>Vous pouvez intégrer un badge Ecoindex pour la page analysée avec le snippet suivant :</p>
109+
<label for="badge-theme">Thème du badge :</label>
110+
<select id="badge-theme" class="space">
111+
<option value="light" selected>light</option>
112+
<option value="dark">dark</option>
113+
</select>
114+
<code id="badge-snippet"></code>
115+
<p class="space --s-3">En savoir plus : <a href="https://www.jsdelivr.com/package/gh/cnumr/ecoindex_badge"
116+
target="_blank" rel="noopener noreferrer">cnumr/ecoindex_badge sur jsDelivr</a></p>
117+
</details>
101118
<footer class="space text-align:center">
102119
<hr>
103-
<div class="space --s-3">Plus d'infos sur <a href="https://www.ecoindex.fr" target="_blank">www.ecoindex.fr</a></div>
120+
<div class="space --s-3">Plus d'infos sur <a href="https://www.ecoindex.fr" target="_blank">www.ecoindex.fr</a>
121+
</div>
104122
</footer>
105123
<script type="module" src="../common.js"></script>
106124
<script type="module" src="./popup.js"></script>

0 commit comments

Comments
 (0)