From 9068e1572fce52eba1a827a145f321f184862d82 Mon Sep 17 00:00:00 2001 From: Spark Date: Thu, 5 Nov 2026 05:52:32 +0000 Subject: [PATCH 1/2] =?UTF-8?q?Flowdeck=207.84.15=20:=20barre=20v0.4.1=20?= =?UTF-8?q?=E2=80=94=20correctif=20des=20ic=C3=B4nes=20invisibles=20du=20m?= =?UTF-8?q?enu=20compte,=20vendange=20verbatim=20(fusion=20#125)=20+=20gar?= =?UTF-8?q?de=20+=20version/changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++++ VERSION | 2 +- static/js/vendor/draco-barre.js | 10 ++++++++-- tests/test_draco_bar_texte.py | 13 +++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef35411..b2ac5c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## v7.84.15 (2026-11-05) — Barre commune v0.4.1 : correctif des icônes invisibles du menu compte (fusion #125) + +- **Barre d'apps v0.4.1 vendangée (dracodev-commons, branche `menu-compte-icones-svg-ns-v0-4-1`, PR commons #11)** : seul `static/js/vendor/draco-barre.js` change, remplacé verbatim par la v0.4.1 ; le CSS et le fragment `app/templates/_draco_bar.html` sont inchangés. +- **Correctif** : en v0.4.0, `menuIcone()` créait le `` des icônes et ses primitives via `document.createElement()` — espace de noms **HTML**, jamais dessinés par le navigateur : les libellés du menu compte étaient décalés d'un cran d'icône, sans aucun glyphe. La v0.4.1 crée tout via `document.createElementNS()` (espace de noms SVG). Glyphes, CSS et comportements inchangés. +- **Cache** : le bump 7.84.14 → 7.84.15 change aussi `asset_version`, donc les navigateurs ne garderont pas l'ancienne barre. +- Tests : `tests/test_draco_bar_texte.py` étendu (création en espace de noms SVG verrouillée). + ## v7.84.14 (2026-11-05) — Barre commune v0.4.0 : icônes monoline du menu compte (HUB-11) - **Barre d'apps v0.4.0 vendangée (dracodev-commons, branche `menu-compte-icones-v0-4-0`, PR commons #10)** : `static/css/draco-barre.css` et `static/js/vendor/draco-barre.js` remplacés verbatim par la v0.4.0 ; le fragment `app/templates/_draco_bar.html` est inchangé (aucune clé d'URL nouvelle). diff --git a/VERSION b/VERSION index 4319d65..009f75c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.84.14 +7.84.15 diff --git a/static/js/vendor/draco-barre.js b/static/js/vendor/draco-barre.js index 582e088..7078871 100644 --- a/static/js/vendor/draco-barre.js +++ b/static/js/vendor/draco-barre.js @@ -529,11 +529,17 @@ ["line", { x1: "21", y1: "12", x2: "9", y2: "12" }] ] }; + /* Espace de noms SVG — OBLIGATOIRE : un élément « svg » (ou + * « path », « circle »…) créé par createElement() appartient à + * l'espace de noms HTML et le navigateur ne le dessine JAMAIS + * (bug v0.4.0 : libellés décalés d'un cran d'icône, aucun glyphe + * visible ; corrigé en v0.4.1, carte fusion #125). */ + var SVG_NS = "http://www.w3.org/2000/svg"; function menuIcone(nom) { var span = document.createElement("span"); span.className = "draco-menu-icone"; span.setAttribute("aria-hidden", "true"); - var svg = document.createElement("svg"); + var svg = document.createElementNS(SVG_NS, "svg"); svg.setAttribute("viewBox", "0 0 24 24"); svg.setAttribute("fill", "none"); svg.setAttribute("stroke", "currentColor"); @@ -542,7 +548,7 @@ svg.setAttribute("stroke-linejoin", "round"); svg.setAttribute("focusable", "false"); (MENU_ICONES[nom] || []).forEach(function (spec) { - var el = document.createElement(spec[0]); + var el = document.createElementNS(SVG_NS, spec[0]); for (var k in spec[1]) el.setAttribute(k, spec[1][k]); svg.appendChild(el); }); diff --git a/tests/test_draco_bar_texte.py b/tests/test_draco_bar_texte.py index c8784f3..f260103 100644 --- a/tests/test_draco_bar_texte.py +++ b/tests/test_draco_bar_texte.py @@ -89,6 +89,19 @@ def test_barre_v040_icones_menu_compte(): assert "width: 18px" in css +def test_barre_v041_correctif_icones_espace_de_noms_svg(): + """Barre v0.4.1 (commons, correctif fusion #125) : les icônes + du menu compte sont créées via createElementNS (espace de + noms SVG). En v0.4.0, createElement() les créait dans + l'espace de noms HTML : jamais dessinées par le navigateur, + libellés décalés d'un cran d'icône sans aucun glyphe.""" + js = (ROOT / "static/js/vendor/draco-barre.js").read_text() + assert 'createElementNS(SVG_NS, "svg")' in js + assert "createElementNS(SVG_NS, spec[0])" in js + assert 'createElement("svg")' not in js + assert "createElement(spec[0])" not in js + + def test_barre_intacte_apres_suppression(): """Le 5e onglet Console Spark et la marque survivent a la suppression.""" gabarit = (ROOT / "app/templates/_draco_bar.html").read_text() -- 2.54.0 From 54bd43e9f28adbc7fd8d81dd84a86355fa29f539 Mon Sep 17 00:00:00 2001 From: Spark Date: Thu, 5 Nov 2026 07:08:06 +0000 Subject: [PATCH 2/2] =?UTF-8?q?Flowdeck=207.84.15=20:=20barre=20v0.4.1=20?= =?UTF-8?q?=E2=80=94=20menu=20compte=20resserr=C3=A9=20=C3=A0=20232=20px,?= =?UTF-8?q?=20re-vendange=20verbatim=20(fusion=20#125)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/css/draco-barre.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/static/css/draco-barre.css b/static/css/draco-barre.css index ba8aa62..55ab916 100644 --- a/static/css/draco-barre.css +++ b/static/css/draco-barre.css @@ -29,6 +29,9 @@ replacées à gauche du libellé par order: -1 (l'item est en flex), couleur atténuée --ink-2, pleine --ink au survol/focus. Jetons repris du prototype validé Console v7.2. + v0.4.1 (fusion #125) : menu compte resserré — min-width + 248 → 232 px, le panneau épouse le contenu (demande de Bruno : + le menu était trop large une fois les icônes visibles). Thème : clair par défaut, sombre via [data-theme="dark"] sur ou prefers-color-scheme si l'app intégratrice ne force rien (aucun attribut data-theme sur ). */ @@ -86,7 +89,7 @@ * droite ; ses items réutilisent .draco-apps-item. */ .draco-compte-menu { position: absolute; top: calc(100% + 6px); right: 10px; z-index: 400; - min-width: 248px; padding: 6px; + min-width: 232px; padding: 6px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 16px 44px rgb(0 0 0 / .28); } -- 2.54.0