Journal des modifications
Chaque version, chaque fonctionnalité, chaque correction, dans un journal défilant.
2026-04-26, Conformité totale du rendu ISO/AIM/GS1 sur tous les types de code
- Audit de tous les codes QR / 2D / 1D au regard de leur norme régissante.
includetextde bwip-js's vaut false par défaut pour chaque bcid, si bien que EAN/UPC/ITF-14 partaient sans la bande de texte lisible qu'exigent ISO 15420 §5.1.2 + GS1 §5.4.4. Régléincludetext: true+guardwhitespace: truepour toute la famille EAN/UPC, plusincludetext: truepour ITF-14, Code 128, Code 39, Code 93, Codabar, VIN. - Les zones tranquilles d'EAN-13 sont maintenant asymétriques selon ISO 15420 Annexe A (
paddingleft: 44= 11 modules,paddingright: 28= 7 modules à scale=4). EAN-8 / UPC-A / UPC-E utilisent les enveloppes symétriques nommées par leurs specs. PDF417 + permis AAMVA reçoivent 2 modules selon ISO 15438 §5.5 ; Data Matrix reçoit 1 module selon ISO 16022 ; Aztec reçoit 1 module recommandé (zéro autorisé par ISO 24778 mais casse les scanners qui touchent la bordure). - Le
QUIET_ZONE_MODULESdu QR passe de 2 → 4, la spec complète ISO/IEC 18004 §6.3.7. Le raccourci 2 modules était un compromis industriel qui échoue à la détection du préfixe GS1 Digital Link sur certains scanners laser industriels. Micro QR + rMQR partent maintenant avec une zone tranquille de 2 modules (qreanémet la grille brute, donc on l'ajoute à la main dansrenderMicroQRResult). - Niveaux ECC verrouillés : Aztec à 23 % (défaut ISO 24778), PDF417 au niveau 5 (minimum GS1 transport-et-logistique). Verrouillage contre une future dérive de bwip-js.
- Nouvelle page de référence : /standards/barcode-rendering/. Référence par symbologie couvrant zones tranquilles, HRI, ECC et chiffres de contrôle pour les 17 types, avec liens vers la source primaire de chaque norme ISO/AIM/GS1 citée.
2026-04-26, Renforcement du verrou de déploiement staging-first
- Les déploiements en production des sites qui ont un staging exigent désormais que le dernier déploiement staging corresponde exactement au commit courant (arbre de travail propre des deux côtés). La fenêtre de 24 heures du verrou précédent laissait des déploiements production sans lien chevaucher un historique staging périmé. Suivi par SHA, fail-closed, le contournement reste
CF_DEPLOY_SKIP_STAGING_FIRST=1. - Vérification préalable dans
cf-deploy.pypourCLOUDFLARE_API_TOKEN, échec immédiat avec un indicesource ~/.envrcau lieu de laisser wrangler renvoyer son cryptique "non-interactive environment". - Vérificateur de contenu post-déploiement à chaque deploy : récupère l'URL en production et confirme que son cache-buster correspond à celui qui vient d'être posé dans
dist/. Attrape la classe de bugs "mauvais CNAME" / "edge servant du cache périmé" / "mauvaise branche" que le contrôle de santé 200-OK laisserait passer en silence.
2026-04-25, Refonte de l'UX mobile : en-tête d'aperçu épinglé, feuille du bas pour l'aperçu, CTA de téléchargement fixe
- En-tête d'aperçu épinglé en haut de la page sur téléphone (≤768 px). Affiche toujours une miniature en direct du QR plus un état d'une ligne, "Remplissez le formulaire ci-dessous" au repos, "Votre QR est prêt · Touchez pour télécharger" dès qu'un code est rendu. Pulse une fois lorsque le QR devient valide pour la première fois afin que les utilisateurs le remarquent. Corrige le problème de longue date où les visiteurs mobiles ne réalisaient pas que le résultat était rendu sous la ligne de flottaison.
- Toucher la barre d'aperçu (ou le nouveau bouton fixe Télécharger en bas) ouvre l'aperçu sous forme de feuille du bas, boutons de téléchargement pleine largeur empilés verticalement, fermeture par glissement vers le bas ou tap sur l'arrière-plan, marge de zone sûre pour l'indicateur d'accueil iOS.
- Gestion du clavier logiciel : un écouteur visualViewport applique
body.kb-openquand le clavier s'ouvre, la barre d'aperçu se réduit à une fine pilule et les champs avec focus défilent au centre pour que le clavier ne masque jamais ce que tape l'utilisateur. - Passe sur les zones tactiles à ≤640 px : les tuiles du sélecteur de type passent de 14×8 / 0.78rem à 16×10 / 0.82rem et 56 px de hauteur minimale, les onglets de panneau et les boutons principaux ont un plancher à 44 px, les boutons d'export s'empilent en pleine largeur avec un plancher à 48 px dans la feuille.
- Le meta viewport gagne
interactive-widget=resizes-contentet les deux règles100vhsont migrées vers100dvhpour une mise en page prévisible dans les navigateurs mobiles à barres d'outils dynamiques. - L'ancien FAB de défilement vers l'aperçu a été supprimé, la barre d'aperçu et le CTA fixe couvrent la même tâche plus directement. Cache du service worker passé en v132. Nouvelles chaînes traduites dans les 25 langues.
- Hygiène CSS : 203 déclarations d'espacement à valeur unique dans
style.cssmigrées vers des tokens--space-Nvia codemod. Refactorisation pure, aucun changement visuel. - Plafond des styles en ligne 89 → 85 : quatre attributs
style="text-transform:uppercase"sur les champs AAMVA / Code 39 / Code 93 / VIN remplacés par la classe existante.input-uppercase.
2026-04-19, Conformité N16 (45 pages), N3 lot 2, correctifs de régression, queue N3, divulgation AAMVA, persistance de l'état Expert, audit a11y
- Balayage complet de conformité N16 : les 34 pages de destination de schémas de paiement portent maintenant des blocs liste-de-conformité + "quand ne pas l'utiliser". La quatrième passe (19 pages) couvre le reste : Alipay + WeChat Pay (PBoC + SAFE), Boleto (BACEN + FEBRABAN), Mercado Pago (matrice de régulateurs sept pays), Payconiq (NBB + PSD2), EPC/Girocode (EPC069-12 + ZAG), Apple Wallet + Google Wallet (programme développeur + FTC Endorsement + GDPR localisation), Kakao Pay + Naver Pay + LINE Pay (FSC coréen + FSA japonais + FSC Taïwan + BOT), GCash + Maya (BSP EMI + AMLC + QR Ph + SEC PH), JPQR (METI + FSA Qualified-Invoice), FPS HK (HKICL + HKMA + SFC Alert List), DuitNow (PayNet + BNM + LHDN e-Invoice), M-PESA (Safaricom + CBK + eTIMS + CMA), MoMo (SBV + AMLID + GDT e-Invoice), PayID (NPP + RBA + APRA + AUSTRAC + ASIC). Combiné avec les trois passes précédentes (AAMVA / pages d'avis / Coupon / entonnoir d'avis / App Store / PayPal / Crypto / UPI / SEPA + Venmo / Cash App / Swiss QR-bill / PIX / PromptPay / EMVCo / TWINT + Bizum / PayNow / iDEAL / BLIK / Interac / MB WAY / Swish / Vipps), cela fait 45 pages de destination conformité-bloquées, chaque schéma de paiement du site a maintenant les références au régulateur local, les règles de classification marchand, les obligations fiscales / facturation, le cadre de protection du consommateur, et un garde-fou "pas de sollicitation d'investissement" pointant vers le bon régulateur des valeurs mobilières. Premier sous-lot (7) : Venmo (AUP / abus F&F / 1099-K / Early Warning), Cash App (Cash for Business / Bitcoin & Investing surfaces régulées / Regulation E / signal CFPB), Swiss QR-bill (SIX v2.3 / règles QR-IBAN / MWSTG / rétention 10 ans OR Art. 958f), PIX (BACEN Resolution 103/2021 / PJ vs PF / fenêtre de remboursement MED / fraude par autocollant superposé / signal investissement CVM), PromptPay (règles BOT / seuil TVA THB 1,8M / déclaration AMLO / divulgation FX transfrontalière), EMVCo (ISO 18245 MCC / KYC acquéreur / FIU national en cas de mismatch AID), TWINT (FINMA/AMLA / MROS / protection consommateur KIG). Deuxième sous-lot (8) : Bizum (Bizum Negocios / SEPBLAC / factura / CNMV), PayNow (MAS Payment Services Act / déclaration STRO / SGQR / PDPA), iDEAL (acquéreur licencié / DNB / litige PSD2 13 mois / CBF organismes caritatifs / application ACM), BLIK (Polski Standard Płatności / KNF / déclaration GIIF / faktura VAT / RODO), Interac (Interac for Business / FINTRAC / PIPEDA / Loi 96 Québec / fraude CAFC), MB WAY (SIBS / Banco de Portugal / UIF / CMVM / GDPR), Swish (Getswish AB / Finansinspektionen / Skatteverket kassaregister / Swish-bedrägerier), Vipps (Vipps MobilePay AS / Finanstilsynet / Økokrim / Bokføringsloven / advarselsliste). Rejoint les blocs de conformité préexistants sur AAMVA, avis Google / Yelp / TripAdvisor, Coupon, entonnoir d'avis, App Store, PayPal, Crypto, UPI, SEPA. Couverture totale maintenant : 26 pages de destination.
- Cinq pages de référence de standards supplémentaires (lot 2 N3), permis AAMVA, activation eSIM (LPA), QR marchand EMVCo, Micro QR / rMQR, e-facture ZATCA. Le hub a maintenant 8 pages de référence en ligne couvrant les specs principales.
- Deux régressions corrigées : (1) la page d'accueil défilait automatiquement vers le bas au chargement parce que l'init
showCategory()appelaitscrollIntoView({block:"nearest"})sur la pastille de catégorie, remplacé par unscrollLefthorizontal manuel pour ne jamais toucher au défilement de la page. (2) La recherche de type pour "paym" renvoyait zéro résultat parce que le filtre ne vérifiait que les sous-chaînes étiquette + data-type, correctif DRY réutilisant maintenant les mêmes tables de synonymes CAT_SEARCH + TYPE_SEARCH que la palette de commandes. - Queue N3 : nouvelle page /standards/non-qr-2d/ de référence combinée pour Aztec (ISO/IEC 24778) + PDF417 (ISO/IEC 15438) + Data Matrix (ISO/IEC 16022). Tableau de comparaison côte à côte, matrice de prise en charge des scanners natifs sur iOS Camera / Android / Google Lens / imageurs industriels / portes d'embarquement aérien / lecteurs DMV / lecteurs DPM pharma, guide pour choisir le bon (Aztec pour cartes d'embarquement, PDF417 pour ASCII long sur papier plat, Data Matrix pour DPM / pharma, QR pour caméras de téléphones grand public). Le hub des standards a maintenant 9 pages en ligne, 0 brouillon.
- Divulgation progressive du formulaire AAMVA (suite N19.3) : formulaire à 25 entrées divisé en Requis (juridiction / permis / type doc / famille / prénom / DOB), Recommandé replié-ouvert (deuxième prénom + rue + ville/état/code postal + dates émission/expiration), Réglage Expert replié (sexe/yeux/taille + classe/restrictions/avenants). Correspond au modèle utilisé sur TOTP, HOTP, Aztec, PDF417, Swiss QR, EMVCo, GS1, SEPA.
- L'état Réglage Expert persiste entre les visites (suite N19.3) : quand vous ouvrez la section Expert sur n'importe quel formulaire, l'état ouvert est sauvegardé dans
localStorage.qrExpertSectionsOpenindexé par type. La prochaine fois que vous choisissez ce type, Expert est déjà ouvert. Écouteurtoggledélégué sur.field-section[data-level="expert"], pas de câblage par formulaire. - Audit interne d'accessibilité (N8) : passage manuel WCAG 2.2 AA sur la page d'accueil, /print-size/, le nouveau hub /standards/ + 9 pages de référence, et les 45 pages de destination de schémas de paiement. Vérifié réussi sur la cible du lien d'évitement, focus-visible, étiquettes de formulaire, noms de boutons, rôles ARIA, contraste AAA primaire / AA+ atténué. Corrigé un saut de niveau de titre (trois sous-titres
<h4>dans les champs supplémentaires vCard/MECARD promus à<h3>pour un plan propre). Conclusions complètes publiées sur /accessibility/. - ZIP de corpus public (suite N2) : /proof/corpus.zip, fixtures JSON + CSV + méthodologie + README empaquetés, ~4 Ko, reconstruit à chaque déploiement. Les flottes de scanners peuvent maintenant télécharger le corpus complet en un seul fichier au lieu de cloner le dépôt. Lien depuis /proof/corpus/ avec un bouton Télécharger bien visible.
- Journal d'attestation de flotte de scanners (suite N2) : nouveau docs/SCANNER_ATTESTATION.md, journal daté ligne par ligne des vérifications manuelles d'appareils/OS/applis. Initialisé avec 10 lignes couvrant iPhone 15 Pro sur iOS 18.3, Pixel 8 sur Android 14, Zebra DS8100, Google Authenticator, 1Password. Croît à chaque appareil que nous vérifions.
- Réalisme de l'aperçu dans le générateur (N19.6) : alternance compacte à 4 puces sous l'aperçu QR en direct, Défaut / Téléphone / Mono / Faible contraste. Applique des filtres CSS à l'aperçu (échelle pour Téléphone, niveaux de gris pour Mono, contraste réduit pour Faible contraste) pour que les designers voient comment le QR se comporte sur différents supports sans quitter le générateur. Aucun effet sur la charge utile encodée, les téléchargements ou la copie presse-papiers.
- Validateurs sémantiques supplémentaires (extension N19.4) : vérification HOTP secret Base32 + compteur entier non-négatif ; le SM-DP+ eSIM doit être un FQDN brut (pas de https://, casseur courant de provisioning de téléphone) ; l'ID de correspondance eSIM rejette les caractères
$(collisions avec le séparateur de champ LPA). - Divulgation progressive étendue à UPI et Crypto (extension N19.3) : montant + note UPI groupés en Recommandé ; montant + étiquette crypto groupés en Recommandé. SIP, MMS, PromptPay et Lightning examinés et laissés à plat, trop peu de champs pour bénéficier de la divulgation.
- Balayage d'audit qualité couvrant SEO, performance, sécurité, intégrité des liens et qualité du code (passe i18n reportée). Les écritures
cache.putdu service worker tournent maintenant dansevent.waitUntilpour qu'elles ne puissent pas être abandonnées en plein milieu de navigation ; cache passé à v121. Le dialogue d'impression de carte de visite est passé dedocument.writeà une URLBlob. Les gestionnaires de clic Partager et téléchargement de carte enrobés dans try/catch pour que les rejets remontent comme toasts au lieu d'échecs silencieux. Les nombres magiques de timing (auto-ouverture de hash de carte design, rendu de frame GIF, écart de double téléchargement PNG, révocation de blob d'impression) extraits en constantes nommées. Bug CSS latent corrigé : les sélecteurs d'entrée.card-text-rowne correspondaient qu'à[type="text"], mais le minificateur HTML retire l'attributtype="text"par défaut, ajout deinput:not([type])pour que les entrées BCD slogan + légende gardent leur style en production. Deux déclarations!importantgratuites supprimées ;console.warni18n bruyant rendu silencieux. CLAUDE.md mis à jour, les pages de langue sont pré-rendues verssite/{lang}/, pas servies via les réécritures_redirects.
2026-04-18, Poussée d'autorité : hub /standards/ + 3 pages de standards, /proof/corpus/, conclusion Reviewer #6, N19.1 Avancé orienté workflow
- Le mode Simple gagne un indice subtil "96 types de plus dans Avancé" sous la grille de 8 tuiles. Cliquer sur le lien bascule l'interrupteur de mode pour que les utilisateurs ne défilent pas. Simple reste à 8 tuiles ; Avancé reste le chemin de découverte de la longue traîne.
- La liste à puces du CTA Pro réécrite pour refléter ce qui est réellement livré : codes verrouillés par mot de passe, activation et expiration programmées, analytics heatmap/météo/ROI/cohorte, pages de stats partageables publiques, groupes de codes pour gros portefeuilles, webhooks + API REST, multi-équipes et journal d'audit, SSO (SAML/OIDC) + provisionnement SCIM. Les anciennes puces génériques "Scan analytics / API workflows / Teams" ont disparu.
- L'indice "Sauvegarder vers Pro" sous le générateur nomme maintenant verrouillage par mot de passe, activation programmée, analytics heatmap et ROI, et pages de stats publiques au lieu de juste "analytics de scan".
- Divulgation progressive sur les générateurs avancés à champs lourds (N19.3) : TOTP, HOTP, Aztec, PDF417, Swiss QR et EMVCo replient leurs boutons experts (algorithme/chiffres/période, niveau EC, colonnes/compact, message, MCC/AID) sous une section Réglage Expert. GS1 Digital Link groupe AI 17/10/21 en Recommandé ; SEPA sépare référence (Recommandé) de BIC (Réglage Expert). Les résumés Expert repliés affichent une pastille "expert" pour que les utilisateurs avancés repèrent les boutons supplémentaires sans cliquer.
- Profils sauvegardés (N19.8) : nommer-et-sauver les valeurs de champs actuelles de n'importe quel générateur avancé dans localStorage, les lister dans le panneau Profils sauvegardés au-dessus de la légende de compatibilité, et les charger en un clic ou via la palette de commandes (Cmd/Ctrl+K). Stockage uniquement côté client ; rien ne quitte le navigateur.
- Autorité production-impression (N15) : /print-size/ porte maintenant un guide des supports (8 supports × pénalité de taille × ECC), des règles de palette CMJN-sûres avec annotations CMJN/RVB-uniquement au niveau du catalogue, des règles extérieur/signalisation (décoloration UV, comportement caméra par temps froid, angles de scan obliques), un protocole QA imprimable à 4 vérifications, et des définitions de note de pré-vol en français clair ("D = échouera sur signalisation brillante en dessous de 3 m").
- Garde-fous de conformité (N16) : nouveaux blocs "Liste de conformité" + "Quand ne pas l'utiliser" sur cinq pages de destination signalées par le reviewer, App Store (Apple 5.2 / politique Play / distribution TestFlight), PayPal (AUP / abus F&F / 1099-K / classification MSB), Bitcoin & Crypto (FATF Travel Rule / enregistrement FinCEN/FCA / exposition Howey-test / OFAC), UPI (circulaire NPCI / GST / arnaques par superposition anti-fraude / SEBI sur QRs d'investissement), SEPA (conformité EPC069-12 / droits de retour PSD2 / avertissement pas-de-mandat-récurrent). Rejoint les blocs de conformité préexistants sur AAMVA, avis Google / Yelp / TripAdvisor, Coupon, entonnoir d'avis.
- Types récents dans la palette de commandes (N19.7) : les 8 derniers types choisis remontent en premier quand Cmd/Ctrl+K s'ouvre avec une requête vide ; avec une requête partielle, les types récents reçoivent un petit bonus de classement pour que "tot" saute fiablement vers votre flux OTP le plus utilisé. Aussi marqués d'une pastille de catégorie "Récent" pour que le boost soit visible, pas magique. Suivi uniquement dans localStorage.
- Polissage du mode Simple (N6) : Simple cache maintenant aussi le panneau Profils sauvegardés (pas un concept débutant) et l'onglet Lot. Les éléments déjà cachés inchangés (recherche de type, presets industriels, légende de compat, onglets de catégorie, pastilles de compat).
- Bande de confiance à quatre piliers (N7) : la bande de revendications en haut de page passée de 5 à 4 éléments, chacun portant explicitement son étiquette de pilier, "Vraiment gratuit, pas d'inscription, pas de paywall", "Privacy-first, 0 requête sortante, vérifiez en direct", "Sûr en production, compatibilité testée avril 2026", "Pas d'enfermement, QR statique de secours, export à tout moment". Le lien Comparaison-mise-à-jour a été retiré de la bande (c'est un signal de crédibilité, pas un pilier) mais vit toujours dans la nav + le pied de page.
- Encadrés décisifs "À utiliser si / À ne pas utiliser" (N19.11) en haut des formulaires avancés à champs lourds, Data Matrix, Aztec, PDF417, TOTP, HOTP, eSIM, GS1. Accent orange, deux clauses, avant toute saisie de champ. Remplace le motif où la prose explicative était en bas et les utilisateurs ne la lisaient qu'après avoir fini de taper.
- Bannière de capacité (N19.9) sur le panneau Style pour les symbologies non-QR, pastille explicite + titre ("Pas de stylisation, code-barres simple uniquement") + description, remplaçant l'ancien indice d'un seul paragraphe par quelque chose de visible d'un coup d'œil.
- Validation sémantique (N19.4) : validateur de secret Base32 TOTP, vérification de préfixe CH/LI + longueur 21 caractères de l'IBAN Swiss QR, somme de contrôle mod-97 de l'IBAN SEPA (attrape les chiffres mal tapés), et avertissement de champ croisé WiFi Enterprise quand EAP est sélectionné mais l'identité est vide. En ligne, non-bloquant, réutilise le registre VALIDATION_RULES existant.
- QR Lab maintenant à un clic du Téléchargement (N5), une pastille à bordure pointillée ("Tester avant impression dans QR Lab →") se trouve en ligne avec les boutons de téléchargement pour que la vérification soit visible au point d'export.
- Avancé s'ouvre orienté tâche (N19.1) : la bande de catégorie est maintenant organisée par ce que vous faites au lieu de quelle symbologie c'est. Neuf seaux de workflow, Partage quotidien, Événements & lieux, Médias & fichiers, Marketing & avis, WiFi & télécom, Paiements & banque, Retail & GS1, Embarquement & ID, Auth & dev, remplacent l'ancienne taxonomie de symbologies (Quotidien / Affaires / Paiements / Identité / Sécurité / Industriel / Standards Avancés). Tous les 105 boutons de type remappés ; la grille de types du pied de page regroupée pour correspondre.
- Poussée d'autorité (N3) : nouveau hub /standards/ avec huit pages de référence complètes, GS1 Digital Link (Sunrise 2027, validateur de chiffre de contrôle GTIN en direct), TOTP & HOTP (RFC 6238 / 4226, validateur d'entropie Base32 en direct, compatibilité authenticator), Swiss QR-bill (SIX IG v2.3, validateur IBAN CH/LI en direct avec détection QR-IBAN), permis de conduire AAMVA (CDS v10, table de codes d'élément, table IIN, encadrement d'utilisation légale), activation eSIM (LPA) (GSMA SGP.22, compatibilité iOS 17.4+ / Android 13+), QR marchand EMVCo (structure MPM / CPM, dérivés régionaux PIX/UPI/PromptPay/SGQR/DuitNow, table MCC), Micro QR & rMQR (ISO/IEC 18004 Annexe M + ISO/IEC 23941, charts de capacité, compatibilité scanners spécialisés), et e-facture ZATCA (FATOORA Saoudien, balises TLV 01–09, Phase 1 vs Phase 2). Chaque page : lien spec + vecteurs de test canoniques + validateur en direct si applicable + pièges + compatibilité scanner + prochaine révision datée. Premier pas vers l'objectif d'autorité de qualité encyclopédie.
- Échafaudage de corpus de test public (N2) : nouvelle page /proof/corpus/ documentant la méthodologie utilisable par tous pour auditer les revendications de compatibilité scanner, télécharger les fixtures, régénérer les QR, scanner avec votre propre flotte, signaler les divergences. Tableau de résultats de scan attendus de 18 lignes curé sur iOS Camera, Android Camera et scanners pro. Lie /test-vectors/ (le JSON développeur) et /standards/ comme couche d'autorité au-dessus.
- Éléments antérieurs Reviewer #6 livrés ce jour dans des commits précédents : grille de tuiles orientée tâche (N14), phrase de marque "L'outil QR le plus digne de confiance sur Internet" (N17), palette de commandes (N19.2), presets experts (N19.5), inspecteur de charge utile (N19.10), balayage de format canonique <title> (N20).
- Backlog de traduction : la copie N14 et N17 est dans 25 langues ; tout le reste de la conclusion Reviewer #6 d'aujourd'hui (N19.3 / N19.4 / N19.7 / N19.8 / N19.9 / N19.11 / N5 / N6 / N7 / N15 / N16 / Pro SSO/SCIM) est uniquement en anglais pour l'instant et retombe sur l'anglais dans les autres locales jusqu'à la prochaine passe de traduction.
2026-04-17, Keep-Alive en ligne, pages roadmap + support Pro, correctifs d'audit webhook
- Tier Keep-Alive en ligne sur Pro : 4 $/mois, 36 $/an, ou 240 $ Décennie (10 ans payés à l'avance, 2 $/mois effectif). Préserve les codes existants avec un délai d'attente de 30 jours pour modifier la destination ; pas de nouveaux codes, pas de sièges, pas d'API. Migration 007, trois produits Stripe, chemin webhook pour le paiement unique Décennie, garde-fous de plan dans dashboard/codes/edit. Bannières "Livraison T3 2026" revertées sur /compare/ et /no-lock-in/.
- Nouvelle page sur pro.qr.abundera.ai/roadmap/ : ce qui est livré, engagements T3/T4 avec critères d'arrêt, liste explicite des choses qu'on ne construit pas.
- Nouvelle page sur pro.qr.abundera.ai/support/ : objectifs de temps de réponse par tier, adresse de divulgation sécurité, périmètre.
- Correctifs webhook Stripe : course d'idempotence (pouvait avaler un paiement réessayé), déduplication via SELECT avant traitement, INSERT en cas de succès. Le gestionnaire de paiement Décennie lance une exception si price_id manquant/inconnu ou tier non-correspondant au lieu de laisser tomber silencieusement.
DEFAULT_SEAT_LIMITindéfini dans l'acceptation d'invitation d'équipe. Tolérance de signature 60 s → 300 s.incomplete_expiredmappé àtrialing(étaitexpired). - Docs :
ABUNDERA_JWT_AUDIENCESdocumenté comme requis ; schémaPLAN_PRICE_MAPdansdocs/INTEGRATIONS.md; références inutiliséesABUNDERA_SERVICE_SECRETretirées. - Tests : 70 passants. Ajouté 8 pour les prédicats Keep-Alive et le délai d'attente de 30 jours.
2026-04-16, Lancement Pro, refonte de l'échelle tarifaire, suites d'examen externe
- Portail Pro en ligne sur pro.qr.abundera.ai.
- Échelle tarifaire (mensuelle / facturée annuellement par mois) : Solo 12 $/9 $, Business 39 $/29 $, Team 129 $/99 $, Agency 449 $/349 $, Enterprise 1 800 $/1 500 $. Annuel est la sélection par défaut sur la grille tarifaire.
- Plafonds explicites de scans mensuels (50 K / 250 K / 1 M / 4 M / 25 M) remplacent "illimité". Dépasser le plafond ne casse pas les redirections ; nous facturons le dépassement au tarif catalogue du tier (0,06 $–0,18 $ pour 1 K scans).
- Chaque tier a un nombre de codes explicite (500 / 2 500 / 15 K / 75 K / 500 K), pas de petit caractère "illimité*".
- 13 pages de destination de paiement ajoutées : Apple Wallet, Google Wallet, EPC Girocode, BLIK, Interac, MB WAY, GCash, Maya, Kakao Pay, Naver Pay, LINE Pay, iDEAL, Boleto. Compte de types 91 → 104 ; sitemap maintenant 3 224 URLs.
- Pré-vol de scan élargi de 4 conditions génériques à 8 scénarios spécifiques au métier (autocollant menu, affiche fenêtre, cordon, étiquette d'étagère, étiquette d'entrepôt, signalisation extérieure, packaging, carte de visite). Le grade C/D/F affiche un modal de pré-téléchargement.
- Matrice tarifaire /compare/ divisée en six groupes appariés en capacité. Entrées de concurrents ajoutées pour Bitly, Flowcode, Uniqode, QR Code Chimp, QRTIGER, chacune datée et marquée pour re-vérification mensuelle. Coût mensuel par code montré sur chaque ligne.
- Vérification de dérive de compte dans le script pré-déploiement : balaye toutes les pages générées sous
site/à la recherche de comptes de types codés en dur. La dérive 91/104 sur /compare/ est partie parce que l'ancien check ne surveillait que trois pages. - Encadrement Pro-site : "Gratuit pour conserver. Pro pour changer." porté à travers /no-lock-in/, /static-vs-dynamic/, et le CTA Pro de la page d'accueil.
- Produits Stripe créés via le script idempotent
stripe-setup.py(Solo + Team passés en rev 2 pour les nouveaux montants).PLAN_PRICE_MAPcontient à la fois les anciens et nouveaux price IDs pour que les abonnés existants restent mappés. - Autres : bande de détails de compat au-dessus des champs du générateur, bande de confiance de la page d'accueil, tampon de fraîcheur sur chaque page, page squelette /accessibility/, packs de presets industriels /for/ (8), indice de découvrabilité Wizard/QR Lab, audit de comptes (120 → 336 icônes, 24 → 50 presets BCD), nettoyage de langage de dépôt (le dépôt est privé ; "Code générateur open source" → "Code côté client auditable dans votre navigateur"), image OG régénérée avec un QR d'événement iCalendar valide.
2026-04-15, Simple/Avancé, /compare/, Sauvegarder-vers-Pro
- Bascule Simple / Avancé sur la page d'accueil. Simple cure 8 types quotidiens (URL, WiFi, vCard, Email, Téléphone, SMS, Événement, Texte) ; Avancé restaure les 104 complets. Le mode est persistant dans
localStorage; les pages de destination pour les types non-Simple basculent automatiquement. - Matrice de concurrents /compare/ livrée : fonctionnalité par fonctionnalité contre QR Code Generator, QRCode Monkey et Uniqode. Datée, ré-examinée mensuellement.
- Bouton "Sauvegarder vers Pro" sur le site gratuit : promotion en un clic d'un code généré dans le portail Pro. L'état circule via le hash URL ; les utilisateurs non signés atterrissent à nouveau sur le générateur avec leur travail préservé.
- Flèches de défilement d'onglet de catégorie sur bureau ; défilement fluide sur mobile.
- La restauration d'historique bascule automatiquement vers Avancé quand le type d'un code sauvegardé n'est pas disponible en mode Simple.
- Copie CTA Pro adoucie ; histoire anti-otage (QR statique de secours, grâce 90 jours, portabilité de domaine) avancée.
2026-04-14, Portail Pro en ligne, 3 nouveaux types, correctif d'auto-remplissage
- Portail Pro (
pro.qr.abundera.ai) en ligne de bout en bout. - Trois nouveaux types du site gratuit : M-PESA Kenya (EMVCo MPM), Réunion Vidéo (raccourcis Zoom/Meet/Teams/Webex), Coupon/Code Promo.
- Le type GS1 Digital Link supporte maintenant les 12 Application Identifiers obligatoires Sunrise-2027.
- Nouvelles pages SEO :
/static-vs-dynamic/,/no-lock-in/(contractuel : grâce 90 jours, export en un clic, suppression GDPR 30 jours, QR statique de secours). - Correctif d'auto-remplissage (sixième tentative) : les blocs de champs par type sont de vrais éléments
<form>avec leurs propres tokensautocomplete; les formulaires inactifs reçoiventdisplay: nonepour que Chrome ne signale pas les entrées hors-écran. Le groupement vertical vCard/Adresse/Contact/WiFi-Enterprise fonctionne maintenant sur Chrome, Safari, Firefox. Harnais Playwright à 0 violations. - Entonnoir d'avis : sélection de plateforme (Google/Yelp/TripAdvisor) avec copie de placeholder par plateforme.
- Wizard : 8 références de slug de résultat cassées corrigées.
- En-tête/pied de page unifiés via partials partagés ; pages d'outils (Wizard, QR Lab, Test Vectors) déplacées vers le même système de templates.
- Vérification pré-déploiement : validation de liens internes + garde
showToast()en anglais brut. - Correctifs BCD : stabilité de mise en page verticale, régression UI de page de destination, étiquettes de liens RFC, artefact de filigrane.
- HTML de page de destination généré n'est plus suivi par git (toujours déployé ; git suit le template et le générateur).
2026-04-13, Parité 25 langues, refonte en-tête/pied de page, harnais Playwright
- 6 660 clés de repli anglais traduites dans 25 fichiers de langue. Les pages de destination non-anglaises ne retombent plus sur les chaînes anglaises. Pipeline de traduction refactorisé en validateur/planificateur.
- i18n étendu aux pages d'outils : Wizard, QR Lab et Test Vectors ont maintenant 25 variantes de langue, avec balises hreflang et entrées de sitemap.
- Harnais aller-retour Playwright : génère un code pour chaque type dans chaque langue, décode le canvas, vérifie les champs. 0 violations.
- Refonte en-tête/pied de page : en-tête mince, pied de page 3 colonnes correspondant au modèle sign.abundera.ai. Le tiroir hamburger mobile montre maintenant les éléments de nav à l'ouverture (auparavant cassé).
- Cliquer sur l'aperçu QR → lightbox de zoom. L'étiquette montre le nom du type + la première entrée (montrait auparavant la charge utile brute).
- Premier passage de correctif d'auto-remplissage (atterri proprement le 2026-04-14).
- La recherche de type fait remonter les types avancés ; ferme à la sélection ; les onglets de catégorie vides cachés en mode Populaire ; la restauration d'historique bascule de type en ligne au lieu de rediriger.
2026-04-12, Parité 26 langues, 13 nouveaux types de charge utile, 3 codes-barres 2D non-QR
- Parité 26 langues complète : chaque clé anglaise existe dans chaque fichier de langue (1 302 clés × 25 langues). 5 533 entrées ajoutées sur 4 passes (noms propres, étiquettes courtes, étiquettes de champs de formulaire, toasts, indices). Les 30 indices de paiement de marque restent en anglais par conception, les URLs et noms de marque font autorité en anglais.
- Déduplication : 113 blocs de clés dupliquées obsolètes supprimés dans 19 fichiers de langue (dérive depuis les rebases précédents).
- Correctif en-tête de page d'info : blog/about/privacy/changelog utilisaient les classes
.brand/.header-inner/.brand-textsans CSS attaché. Basculé sur le même balisage.logoque l'application principale. - 4 types URI basés sur des standards : HOTP (RFC 4226), eSIM (GSMA SGP.22 LPA), SIP/SIPS (RFC 3261), MMS/MMSTO.
- WiFi WPA2/WPA3-Enterprise : étend le format
WIFI:avec méthode EAP, auth Phase-2, identité, identité anonyme. - 6 types de paiement régionaux : Alipay, WeChat Pay, Swish (SE), Vipps (NO), Mercado Pago (LatAm), Payconiq (Benelux).
- 3 codes-barres 2D non-QR : Data Matrix (ISO 16022), Aztec (ISO 24778), PDF417 (ISO 15438). bwip-js (~1 Mo) chargé en différé uniquement quand l'un de ces types est sélectionné.
- Section vitrine 26 langues ajoutée à la page d'accueil avec liens en écriture native.
- Script d'audit pré-déploiement : vérification de synchronisation
BATCH_VALID_TYPES+ gardeshowToast()en anglais brut. - Pied de page, pages de destination, et clés i18n ajoutées pour les 13 nouveaux types (source anglaise).
2026-04-11, Récupération URL photo BCD, aperçu fixe, presets expansibles
- BCD : le champ URL photo récupère et intègre maintenant les images distantes comme URLs de données pour que le canvas d'export ne soit pas contaminé par des chargements cross-origin (l'export PDF/PNG fonctionne maintenant sur les hôtes sans CORS).
- Mise en page bureau BCD : le panneau d'aperçu est maintenant
position: sticky, de sorte que quand l'utilisateur développe toutes les sections, les contrôles défilent librement sans perdre la vue sur l'aperçu en direct. (Auparavant, développer Contenu + Mise en page + Options poussait Show-Fields hors-écran.) - La grille de presets BCD est maintenant expansible, affiche 12 mises en page initialement avec un bouton « Afficher toutes les mises en page », reproduisant l'UX du sélecteur d'icônes.
- Entrées slogan + légende QR redessinées : étiquette empilée + entrée pleine largeur (était cramped sidecar 150px).
- Badge de scannabilité relevé de
bottom: -24pxà-18pxpour ne plus couvrir le bouton de copie. - Les instructions CSV par lot mentionnent maintenant explicitement Google Sheets, Excel et Numbers.
2026-04-08, Bibliothèque d'icônes par secteur
- 24 nouveaux icônes de logo central (96 → 120) ciblant les secteurs santé, alimentation & boissons, tech, finance.
- 10 nouveaux presets de mise en page BCD (40 → 50) : Concrete, Honey, Indigo, Luxe, Midnight II, Ocean II, Slate, Verdant, Wine, Candy.
- Bug de stratégie cache-buster : les paramètres
?v=surpage-init.js+lang-redirect.jsmanquaient sur les pages de destination, causant des chargements de modules périmés après les déploiements. Corrigé.
2026-04-04, Arrière-plans dégradés BCD + verso de carte + 12 nouveaux presets
- BCD : 12 nouveaux presets (Dark Mode, Pastel, Ocean, Cherry, Slate, Emerald, Amber, Mono, Rose, Midnight, Sand, Carbon). 36 presets au total.
- Arrière-plans dégradés contrôlés par l'utilisateur avec second sélecteur de couleur.
- Rendu du verso de carte avec entreprise + slogan + texte CTA.
- Rangée d'icônes sociaux (LinkedIn / X / Instagram).
- Bloc d'adresse rendu depuis les champs vCard.
- Vignettes visuelles de presets, chaque bouton de preset rend maintenant un mini canvas au lieu d'un placeholder.
2026-03-29, Refonte BCD + export 600 DPI
- Sections d'accordéon repliables du Business Card Designer, aperçu mobile fixe, pied d'export fixe.
- Entrées de couleur hexadécimale avec synchronisation bidirectionnelle du sélecteur de couleur, nuancier de palette.
- 4 formes de photo (cercle, carré, arrondi, hexagone).
- Résolution d'export portée à 600 DPI pour une impression nette.
- Menu kebab : Exporter modèle, Importer modèle, Surprenez-moi, Partager carte, Imprimer feuille (10 exemplaires US Letter + A4).
- Recadrage photo forcé carré. Garde de données minimales avant ouverture du concepteur.
- Presets BCD augmentés : 8 nouveaux visuellement distincts (Neon, Art Deco, Sunset, Forest, Brutalist, Kraft, Nordic, Retro 80s). 24 presets au total.
2026-03-22, 20 nouveaux types QR + Link-in-Bio + comparaisons concurrentielles
- 20 nouveaux types QR (35 → 55) : YouTube, Apple Music, Google Review, Yelp Review, TripAdvisor, Venmo, Cash App, Support/Tip Jar (Ko-fi/Patreon/BMAC/Liberapay), TWINT, Bizum, PayNow (SG), PayID (AU), ZATCA (SA), BIP-21 Bitcoin + Lightning, webcal://, JPQR (JP), HKFPS (HK), DuitNow (MY), MoMo (VN), Link-in-Bio.
- Link-in-Bio rend toute la page bio depuis le hash URL du QR, pas de backend, pas de compte, pas de tracking.
- Widget iframe /embed/ (API postMessage pour intégration parent).
- Pages de comparaison concurrentielles /vs/ (variantes 26 langues).
- Package npm @abundera/qr + CLI avec 25 encodeurs de type.
2026-03-15, 96 icônes de logo central + 5 nouvelles langues
- 96 icônes de logo central (12 → 96) : crypto, communication, médias, utilitaire, commerce, transport, nature, nourriture, personnes, événements, 12 smileys, 18 glyphes de réseaux sociaux (X, Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Discord, Telegram, GitHub, Threads, Bluesky, Mastodon, Twitch, Signal, Medium). Expansible via bascule <details>.
- 5 nouvelles langues (21 → 26) : suédois, tchèque, danois, norvégien, finnois. 1 106 clés chacun avec traductions natives.
- Export EPS (PostScript niveau 2 avec JPEG intégré, encodé ASCII85) pour les flux de travail d'impression professionnelle (Illustrator, InDesign, CorelDRAW).
- Export GIF animé (gif.js, arc-en-ciel 8 images).
- Export SVG BCD, export JPG BCD.
2026-03-08, Audit de plateforme + balayage accessibilité
Sprint de correction de bugs : 3 problèmes CRITIQUES + 7 ÉLEVÉS + 10 MOYENS corrigés.
- Violation CSP de script inline sur les 55 pages de destination, déplacé vers attribut body
data-qr-preselect. - Bug de cache obsolète du service worker, clés strippées de la requête → URL complète + stale-while-revalidate.
- Désynchronisation du type de formulaire en cliquant sur la pilule BCD sur une page de destination non-vCard.
- Visibilité de l'image d'arrière-plan (curseur d'opacité, modules à 90 % alpha, routage du modal de recadrage).
- Débordement mobile du modal de recadrage.
- Détournement de zoom à la molette du défilement souris (retiré entièrement).
- Fuite IP avatar mitigée (referrerpolicy + en-tête no-referrer).
- Correctif réseau ouvert WiFi par lot, parité de champ MeCard par lot, validation base32 TOTP.
- Cibles tactiles WCAG 2.5.8 (minimum 44×44 sur pointeur grossier).
- Balayage aria-hidden sur 87 SVGs décoratifs.
- Respect de prefers-reduced-motion.
- Toast aria-live, anneau focus-visible, navigation clavier dans le recadrage, touches Home/End dans le menu de dépassement.
- Optimisation du préchargement de polices.
2026-03-01, 15 types basés sur des standards + validateur de scannabilité
- 15 nouveaux types QR : TOTP/2FA, Swiss QR-bill (avec superposition obligatoire de croix suisse rouge), PIX (Brésil), PromptPay (Thaïlande), EMVCo marchand générique, Lightning BOLT11, clé publique SSH, clé publique OpenPGP, configuration WireGuard, GS1 Digital Link, Spotify, Fediverse (Mastodon/Bluesky/Nostr/Matrix/Threads), Geo URI, Magnet, iCalendar complet.
- Validateur de scannabilité, exécute jsQR sur le canvas rendu et avertit en cas d'échec de décodage.
- URL imprimable de secours, un interrupteur ajoute l'URL de destination en texte brut sous le QR.
- jsQR chargé en différé (économise 262 Ko de charge utile chargée d'avance).
2026-02-22, Éditeur de dégradé multi-arrêts + couleurs par œil
- Éditeur de dégradé multi-arrêts (jusqu'à 5 couleurs).
- Couleur intérieure/extérieure indépendante par œil.
- Mode QR avec image de fond (curseur d'opacité, EC=H forcé automatiquement).
- Zoom par pincement sur le canvas d'aperçu.
- Web Share API pour les QR codes et les cartes de visite.
- Format d'export WebP.
- Annuler/rétablir (Ctrl/Cmd-Z, tampon 50 étapes).
- Bouton de modèle aléatoire (« Surprenez-moi »).
2026-02-15, Pages confidentialité & sécurité + durcissement i18n
- 4 nouvelles pages de crédibilité : /privacy/, /terms/, /security/, /about/, dans les 21 langues.
- /.well-known/security.txt publié.
- 29 chaînes anglaises codées en dur remplacées par des appels
qrT(); ~100 nouvelles clés i18n traduites dans les 21 langues. - Scripts inline externalisés, CSP durci (unsafe-inline retiré).
2026-02-08, Accessibilité des modales + gestion du focus
- Piège à focus sur les 3 modales (recadrage, BCD, dialogues personnalisés).
- Polissage de la navigation clavier dans le menu de dépassement BCD, le sélecteur de langue et le sélecteur de type.
- Corrections de bugs critiques : bordures de cadres SVG rendues à un pixel près, vulnérabilité XSS dans l'aperçu zoom par lot, erreur
btoa()Latin1 au clic sur le logo de preset.
2026-02-01, Lancement initial
- Lancement d'Abundera QR avec 20 types QR, 40 modèles, génération CSV par lot (500 codes), Business Card Designer (300 DPI), 20 langues, 420 pages de destination statiques.
- Engagement privacy-first : 100% côté client, pas de comptes, pas de tracking, pas de codes de redirection dynamique.