Skip to content

Releases: stephane-schmidt/freecookie

0.16.1 — services exemptés du blocage a priori

Choose a tag to compare

@github-actions github-actions released this 05 Sep 05:35
7a6fa00
  • New option Services loaded without consent (FreeCookie ▸ Options, under "A-priori blocking"): a list of the known services that this site EXEMPTS from a-priori blocking. An exempted service (say, the YouTube player on a TV-channel directory, where the player is the page) keeps its src and loads as if the plugin were not there; no veil, no "Load the player" button. The banner shows it as Always on with a locked checkbox, and the choice is stored in exempt_services (validated against the known-services list, unknown keys are dropped). The freecookie_exempt_services filter adds keys from code. Nothing is exempted by default, and the site owner takes responsibility for what they exempt.

0.16.0 — carte jour/nuit et premier contact « trait »

Choose a tag to compare

@github-actions github-actions released this 05 Sep 05:48
f282167
  • New look: the banner takes the design of a compact card (large rounded corners, one title, one paragraph with a link to your cookie policy, three pill buttons: Customize, Reject, Accept). The categories and detected services open on Customize, in the same card; Accept and Reject stay one click away.
  • New: light and dark mode. The card follows the visitor's browser or system setting (prefers-color-scheme) by default; FreeCookie ▸ Options ▸ "Day and night" lets you force it always light or always dark, and set the two dark-mode colors (card background, text). A site that exposes its own day/night switch through data-theme="light|day|dark|night" (or html.dark) on <html> is honoured over the browser setting.
  • The default palette is now monochrome, like the mockup: ink on paper (black on white by day, white on near-black by night). A brand accent set in the options still colours the Accept button and the badge; when left empty, only the cookie badge keeps the detected site colours.
  • The link to the cookie policy uses the WordPress privacy policy page (Settings ▸ Privacy); the freecookie_policy_url filter overrides it. Without a page, the sentence is simply omitted.
  • New first-contact layout "Line" (Options ▸ First contact): at rest, a 3 px line along the bottom edge of the screen and nothing else; a tap opens a 40 px row with Settings / Reject / Accept, all one tap away; Settings unfolds the full panel in the page flow, like the bar layout. After a choice the line disappears and the badge takes over.
  • New strings accept, reject, policy_sentence, policy_link, settings, cookies_short (French and English; other languages fall back to "Accept all" / "Reject all" and omit the policy sentence until translated).

0.15.4 — langue du navigateur par défaut

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 24 Aug 11:39

Le bandeau parle désormais la langue du navigateur du visiteur par défaut (parmi les 27 embarquées), avec repli sur la langue du site ; Polylang/WPML priment quand ils sont là. Détection côté client via le REST non mis en cache (voir 0.13.9) : les caches de page restent sûrs. Les installations qui avaient enregistré le réglage gardent leur choix.

0.15.3 — une rangée sur mobile

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 17 Aug 08:08

Sur petit écran (moins de 600 px), le titre de la barre s'efface : deux rangées ne tenaient pas dans le plafond de 8 % et le titre sortait rogné. Les trois boutons restent seuls, entiers, sur une rangée (59 px mesurés sur 375 px) ; le titre demeure dans l'aria-label pour les lecteurs d'écran.

0.15.2 — correctifs du mode barre

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 17 Aug 07:36

Deux corrections signalées sur mobile : le panneau déplié en flux héritait du centrage du mode dialogue (translateX) et débordait à gauche de l'écran ; la barre restait affichée sous le panneau ouvert (display:flex écrasait l'attribut hidden). Vérifié sur banc mobile 375 px : barre à 9,2 % au chargement, panneau entier dans l'écran sous les slogans, barre éteinte pendant l'ouverture.

0.15.1 — barre à 8 %

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 17 Aug 07:29

Rectification : la barre du mode « Premier contact » est plafonnée à 8 % de l'écran (6,2 % mesurés sur desktop, 9,2 % sur mobile 375 px, les trois boutons entiers). Sur un écran très bas elle défile au lieu de couper « Refuser ».

0.15.0 — mode barre

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 17 Aug 07:04

Nouveau réglage « Premier contact » : au lieu du panneau complet, une barre discrète en bas de page (au plus 15 % de l'écran) — OK, Refuser, « Gérer mes cookies ». Refuser est sur la barre, au même rang qu'accepter. Les détails ne s'ouvrent jamais par-dessus le contenu : le panneau complet se déplie dans la page, après l'élément désigné par le sélecteur « Ancre des détails » (ex. sous les slogans du footer). Réouverture par le badge : en flux aussi. Défaut inchangé (panneau complet) pour tous les sites existants.

FreeCookie 0.14.0 — les comptes connectés ne voient plus le bandeau

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 15 Aug 11:35

Par défaut, les comptes connectés sont désormais exemptés de FreeCookie : ni bandeau, ni badge, aucun blocage de scripts et aucun comptage de visite pendant qu'ils sont connectés — administrer et éditer son site ne se fait plus avec le bandeau dans les pattes.

Nouveau réglage « Comptes exemptés » (FreeCookie ▸ Options) : tous les utilisateurs connectés (défaut) / administrateurs uniquement / personne. Sites à membres (espace client, forum…) : choisissez « administrateurs uniquement » pour continuer à demander le consentement des membres.

Les visiteurs anonymes ne changent pas : les caches de page ne servent jamais les vues connectées, le HTML public reste bloqué avant consentement.

FreeCookie 0.13.9 — langue du bandeau côté client (fin de l'empoisonnement de cache)

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 06 Aug 15:54

Correctif important. La langue du bandeau n'est plus détectée côté serveur : avec un cache de page, l'en-tête Accept-Language du visiteur qui régénérait le cache imposait SA langue à tous les visiteurs suivants (bandeau en chinois ou en allemand sur un site français, constaté en production le 06/08).

  • Le serveur sert désormais toujours la langue du site — la page mise en cache est neutre.
  • Quand l'option « langue du navigateur » est active, la détection se fait dans le navigateur (navigator.languages, 27 langues) et le bandeau traduit est rechargé via GET /freecookie/v1/banner (Cache-Control: no-store).
  • Aucun appel REST pour un visiteur déjà consenti.
  • Aperçu d'une langue : ?fclang=de (test/démo).
  • L'option devient désactivée par défaut (opt-in) pour les nouvelles installations ; les réglages existants sont conservés.
  • Description ajoutée sous la case à cocher, traduite dans les 27 langues de l'admin.

v0.13.5 — compteur de visites honnête (cookie-echo)

Choose a tag to compare

@stephane-schmidt stephane-schmidt released this 13 Jul 16:56

Correctif du compteur de visites (« 130k visites » = bruit de requêtes)

Le compteur local incrémentait dès qu'un client ne présentait pas le cookie fc_v — donc tout client sans jar de cookies (curl, scrapers à identité de navigateur, moniteurs de disponibilité, loopback wp-cron) comptait à chaque requête. Sur freeetv, cela affichait ~130 000 « visites » pour ~487 visiteurs réels/30 j.

Ce qui change

  • Cookie-echo : une visite n'est comptée que si le navigateur nous renvoie une sonde fc_v=pending posée au chargement précédent. Un vrai navigateur compte au 2e chargement ; curl / robots / cron ne comptent jamais.
  • wp_doing_cron() ajouté aux exclusions (en plus de admin / AJAX / REST / aperçu de scan / robots).
  • Libellé honnête dans l'avis d'administration : « sessions de navigation (approximation locale, sans traceur) » au lieu de « visites ».
  • Les cookies fc_v=1 hérités des versions ≤ 0.13.4 sont traités comme un premier contact (aucun double comptage).

Déploiement

Après mise à jour, re-baser le mois courant (le stock est du bruit) :
wp option pluck freecookie_visits 2026-07 puis remettre le mois en cours à une valeur réaliste / 0 — les autres mois sont conservés.

Aucun traceur, aucun appel tiers : le comptage reste 100 % local.

Banc (vrai fichier de classe, stubs WP) : 20 curl → 0 · 10 runs cron → 0 · navigateur → +1 au 2e hit, pas de double compte pendant 30 min, re-compte après expiration · Googlebot avec cookie → 0. php -l OK.