powersync-docs/mkdocs.yml
Patrick Schurig 95a9edda5a fix(rgpd): polices auto-hébergées — la doc ne transmet plus l'IP du visiteur à Google
`theme.font: {text, code}` faisait injecter par Material, dans le <head> de
chacune des 316 pages, un preconnect vers fonts.gstatic.com et une feuille
depuis fonts.googleapis.com (Sans 300/300i/400/400i/700/700i + Mono
400/400i/700/700i). Chaque visite transmettait donc l'IP du visiteur à Google
AVANT tout consentement.

Ce qui rendait ça gênant n'est pas la règle en soi, c'est l'asymétrie : le site
vitrine a fait exactement l'inverse en T10, délibérément, pour cette raison
(jurisprudence LG München 2022, doctrine CNIL) et pour ne pas contredire « vos
données ne sortent pas de chez vous ». La doc affichait donc le contraire de
l'engagement que le produit met en avant, sur le même nom de domaine.

Correctif : `theme.font: false` retire les deux balises ; les 16 woff2 viennent
du dépôt du site — mêmes fichiers, mêmes unicode-range (latin + latin-ext pour
les accents), déjà éprouvés en production depuis juin. Les 16 blocs @font-face
sont repris tels quels plutôt que réécrits, avec les chemins adaptés. Material
lit `--md-text-font` / `--md-code-font`, qu'extra.css définit.

312 Ko d'actifs, servis localement.

⚠️ LES ITALIQUES SONT DÉSORMAIS SYNTHÉTISÉES, et c'est la contrepartie à
connaître. Google servait 4 fontes italiques que nous n'avons pas (aucun fichier
italique dans le dépôt du site, aucune IBM Plex installée sur la machine de
build) : le navigateur incline donc la romaine. Visible sur les intertitres en
italique des blocs générés — `_Einstellungen:_`, `_Gemessene Größen:_`. Pour y
remédier : récupérer les woff2 italiques depuis le dépôt officiel IBM/plex (OFL)
et ajouter les @font-face correspondants. La méthode est celle déjà documentée
au T10 du site, et je ne l'ai pas prise d'office — c'est un ajout de binaires
depuis Internet.

Vérifié sur le site construit, et pas seulement sur le <head> :
  · 0 url() externe dans toute la CSS
  · 0 preconnect
  · 0 ressource (link/script/img/iframe) chargée depuis un tiers — le seul hôte
    cité est docs.etm-powersync.fr lui-même, par les <link rel="canonical">
  · les 16 woff2 présents dans le build, 16 références, 0 chemin cassé
  · build --strict sans avertissement

La seule mention restante de Google dans le dépôt est le commentaire d'extra.css
qui explique pourquoi elle n'y est plus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-13 09:14:26 +02:00

179 lines
6.1 KiB
YAML

site_name: ETM PowerSync — Documentation
site_url: https://docs.etm-powersync.fr
site_description: >-
Documentation du HEMS ETM PowerSync : installation, fonctionnalités, compatibilité
des équipements. Gestion d'énergie locale bâtie sur nymea.io.
site_author: ETM-Schurig
copyright: >-
© ETM-Schurig — Documentation sous licence CC-BY 4.0 · exemples de code sous GPL-3.0
repo_url: https://github.com/etmschurig/powersync-docs
repo_name: etmschurig/powersync-docs
edit_uri: edit/main/docs/
theme:
name: material
language: fr
# `false` supprime le preconnect fonts.gstatic.com et la feuille
# fonts.googleapis.com que Material injecte sinon dans le <head>.
# Les polices sont auto-hébergées : voir les @font-face de
# docs/stylesheets/extra.css et les woff2 de docs/assets/fonts/.
font: false
palette:
scheme: slate # thème sombre, raccord avec la charte ETM
primary: custom # couleurs réelles définies dans stylesheets/extra.css
accent: custom
features:
- navigation.indexes
- navigation.top
# - navigation.instant # RETIRÉ (multi-langue, 2026-10-12) :
# incompatible avec le lien contextuel du sélecteur de langue de
# mkdocs-static-i18n, et l'avertissement fait échouer `mkdocs build --strict`.
# Le sélecteur l'emporte : il ramène sur la même page dans l'autre langue.
- navigation.footer
- search.suggest
- search.highlight
- content.code.copy
- content.action.edit
icon:
repo: fontawesome/brands/github
extra_css:
- stylesheets/extra.css
markdown_extensions:
- admonition
- attr_list
- md_in_html
- tables
- toc:
permalink: true
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.superfences
- pymdownx.details
- pymdownx.inlinehilite
- pymdownx.tabbed:
alternate_style: true
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
plugins:
# i18n AVANT literate-nav et search : il réécrit l'arbre des fichiers par langue,
# les autres doivent voir l'arbre déjà localisé.
- i18n:
docs_structure: suffix # index.md (fr) · index.de.md · index.en.md
fallback_to_default: true # pas de page absente : on retombe sur le FR
reconfigure_material: true # bascule de langue dans le header Material
reconfigure_search: true # un index de recherche par langue
languages:
- locale: fr
name: Français
default: true
build: true
site_name: ETM PowerSync — Documentation
theme:
language: fr
- locale: de
name: Deutsch
build: true
site_name: ETM PowerSync — Dokumentation
theme:
language: de
nav_translations:
Accueil: Startseite
Installation: Installation
Appareils: Geräte
Fonctionnalités: Funktionen
Référence: Referenz
Aide: Hilfe
Compatibilité: Kompatibilität
Dépôt APT: APT-Repository
Configuration: Konfiguration
L'application: Die App
Surplus solaire: Solarüberschuss
Délestage: Lastabwurf
Gestion batterie: Speicherverwaltung
Tarifs dynamiques: Dynamische Tarife
API JsonRPC: JSON-RPC-API
Référence API: API-Referenz
Dépannage: Fehlersuche
FAQ: FAQ
Compteurs: Zähler
Bornes de recharge: Wallboxen
SmartDevices: SmartDevices
HVAC: HVAC
Onduleurs / PV: Wechselrichter / PV
Batteries / ESS: Speicher / ESS
Tarifs & prévisions: Tarife & Prognosen
Types génériques: Generische Typen
API — Métier: API — Fachlich
API — Système: API — System
Compteur ABB B2x: ABB-B2x-Zähler
Borne ABB Terra AC: ABB Terra AC Ladestation
- locale: en
name: English
build: true
site_name: ETM PowerSync — Documentation
theme:
language: en
nav_translations:
Accueil: Home
Installation: Installation
Appareils: Devices
Fonctionnalités: Features
Référence: Reference
Aide: Help
Compatibilité: Compatibility
Dépôt APT: APT repository
Configuration: Configuration
L'application: The app
Surplus solaire: Solar surplus
Délestage: Load shedding
Gestion batterie: Battery management
Tarifs dynamiques: Dynamic tariffs
API JsonRPC: JSON-RPC API
Référence API: API reference
Dépannage: Troubleshooting
FAQ: FAQ
Compteurs: Meters
Bornes de recharge: EV chargers
SmartDevices: SmartDevices
HVAC: HVAC
Onduleurs / PV: Inverters / PV
Batteries / ESS: Batteries / ESS
Tarifs & prévisions: Tariffs & forecasts
Types génériques: Generic types
API — Métier: API — Domain
API — Système: API — System
Compteur ABB B2x: ABB B2x meter
Borne ABB Terra AC: ABB Terra AC charging station
- search:
lang: fr
- literate-nav:
nav_file: SUMMARY.md
nav:
- Accueil: index.md
- Installation:
- installation/index.md
- Dépôt APT: installation/depot-apt.md
- Configuration: installation/configuration.md
- L'application: installation/application.md
- Appareils: appareils/
- Fonctionnalités:
- fonctionnalites/index.md
- Surplus solaire: fonctionnalites/surplus-solaire.md
- Délestage: fonctionnalites/delestage.md
- Gestion batterie: fonctionnalites/gestion-batterie.md
- Tarifs dynamiques: tarifs.md
- Référence:
- reference.md
- API JsonRPC: integrations/jsonrpc-api.md
- Référence API: api/
- MQTT: integrations/mqtt.md
- Aide:
- Dépannage: depannage.md
- FAQ: faq.md