Kanbante 0.45.6 : barre commune v0.2.0 — onglet ShaarIt + garde data-theme (comportement visible) #78

Merged
bruno merged 6 commits from barre-v020-0-45-6 into main 2026-11-04 11:16:59 -05:00
Owner

⚠ CHANGEMENT DE COMPORTEMENT VISIBLE — garde data-theme (arbitrage de Bruno à la fusion)

Avant cette PR : le CSS de barre vendangé chez Kanbante (v0.1.11) n'avait aucune garde — dès que le système était en mode sombre, @media (prefers-color-scheme: dark) forçait la barre sombre, même si l'app était en thème clair explicite (html[data-theme="light"]). Barre sombre sur app claire.

Après cette PR : la barre commons v0.2.0 garde ses deux blocs prefers-color-scheme par html:not([data-theme]) — le sombre système ne s'applique que si <html> n'a aucun data-theme. Kanbante posant toujours html[data-theme] (sombre par défaut, bascule mémorisée kanbante-theme), sa barre suivra désormais toujours le thème choisi dans l'app. C'est le correctif du piège documenté (déjà corrigé localement chez TikTak en 0.61.12 ; ici il arrive par la re-vendange, sans aucune surcharge style.css). À valider visuellement à la fusion : poste en système sombre + Kanbante en thème clair → la barre doit être claire.


Kanbante 0.45.6 — Barre commune v0.2.0 : onglet ShaarIt (phase 3 ShaarIt, vague 3b)

Re-vendange de la barre d'apps dracodev-commons v0.2.0 (source : branche shaarit-phase3-barre-contrats, commit 70c837a1734939b76d35a9679708e88456726f52, PR commons #7) dans Kanbante, qui vendangeait la v0.1.11 (0.45.3). Aucune fusion, aucune release — la fusion reste l'acte de Bruno.

Verbatim — preuve par hachages SHA-256 (source @70c837a vs copie vendangée)

Fichier commons (source) SHA-256 source Copie Kanbante SHA-256 copie
ui/barre-apps/barre-apps.css abc0c3b2a282566013bd121b0c46b133700f20be78cf44128bebdf19b7e05fab static/css/draco-barre.css abc0c3b2a282566013bd121b0c46b133700f20be78cf44128bebdf19b7e05fab ✅
ui/barre-apps/barre-apps.js 24efe399823eed21add535c081ea153ae97afe128744aed9b628cf855e6b50e1 static/js/draco-barre.js 24efe399823eed21add535c081ea153ae97afe128744aed9b628cf855e6b50e1 ✅
ui/barre-apps/logos/shaarit.svg faf0c8a17e7cb82d0884f598eadf2c4fee7a603bfdc3a2ecfdac1e750316db34 static/img/logos/shaarit.svg (nouveau) faf0c8a17e7cb82d0884f598eadf2c4fee7a603bfdc3a2ecfdac1e750316db34 ✅
ui/barre-apps/barre-apps.html d41854870ea9974a0b74dc86a61386bec11c3a21ed70aaffc0d51d83a4dbe45d app/templates/_draco_bar.html adapté (voir ci-dessous)

Le fragment HTML n'est pas une copie verbatim — comme pour toutes les vendanges Kanbante précédentes, l'hôte adapte le fragment : les jetons {{URL_…}} / {{LOGO_…}} de commons sont remplacés par le mécanisme en place (Jinja draco_urls / agent_url depuis app.config, draco_avatar, bloc DRACO_BAR_CONFIG et onAction Kanbante complet). La structure passe exactement à la v0.2.0 (onglet ShaarIt aux mêmes place, couleur et libellés). Les hachages des trois assets sont aussi assertés par tests/test_barre_v020.py.

Onglet ShaarIt et dérivation de l'URL — aucun nom codé en dur

  • Nouvel onglet data-app="shaarit", après Kanbante, avant Console Spark, couleur émeraude #059669, logo shaarit.svg ; le menu de la marque l'inclut automatiquement. Le palier mobile du CSS gagne la règle data-current="shaarit" (sans effet chez Kanbante, hôte kanbante).
  • app/config.py gagne le champ shaarit_url (Settings + UrlsDraco), résolu par le même mécanisme que les autres apps : 1) explicite DRACO_SHAARIT_URL ; 2) hôte public de la requête (motif fermé étendu : shaarit ajouté au motif (og|flowdeck|tiktak|kanbante|shaarit|agent)<SUFFIXE>.dracodev.net, donc shaarit-dev.dracodev.net reconnu comme hôte et comme sœur) ; 3) dérivation depuis les adresses de l'agent connues (_url_soeur_draco, suffixe de AGENT_EVENEMENTS_URL / AGENT_URL) ; 4) défaut officiel https://shaarit.dracodev.net (dev dérivée : https://shaarit-dev.dracodev.net). app/main.py expose draco_urls.shaarit au gabarit ; .env.example documente la variable (prod + exemple dev). Le JS vendangé résout en plus urls.shaarit côté client.

Garde data-theme — avant / après (preuve)

Bloc @media (prefers-color-scheme: dark) Avant (v0.1.11 vendangée) Après (v0.2.0 vendangée)
Variables .draco-bar .draco-bar { … } — non gardé html:not([data-theme]) .draco-bar { … } — gardé
Marque .draco-brand-mark img .draco-bar .draco-brand-mark img { filter: none; } — non gardé html:not([data-theme]) .draco-bar .draco-brand-mark img { filter: none; } — gardé
Sombre forcé [data-theme="dark"] présent présent, inchangé

Asserté par tests/test_barre_v020.py::test_garde_data_theme_apportee_par_la_v020.

Version et tests

  • 0.45.5 → 0.45.6 selon la convention du dépôt : APP_VERSION dans app/config.py + entrée CHANGELOG.md (le pyproject.toml, resté à 0.37.1, n'est pas le fichier de version suivi — inchangé, comme lors des re-vendanges précédentes).
  • Suite complète : 377/377 (python -m pytest tests/ -q), dont tests/test_barre_v020.py (nouveau, 8 tests : verbatim, garde, défaut/dérivation/explicite/hôte de requête, onglet dans le rendu) et tests/test_draco_barre.py (21 tests, inchangé, vert — ses énumérations d'URL restent vraies par présence).

Écarts / notes

  • La base de cette branche est main @1cd66fd (0.45.5 fusionnée, PR #77) — revérifiée juste avant le push, aucun commit parallèle à réintégrer.
  • Rien d'autre n'est touché : ni draco-alertes.*, ni draco-panneau.*, ni les surcharges style.css de Kanbante.
  • Rappel de contexte (hors périmètre de cette PR) : le redéploiement du conteneur Kanbante restait à faire pour la 0.45.5 ; cette re-vendange n'ajoute aucun changement de configuration — à la fusion, un seul redéploiement suffira pour 0.45.5 + 0.45.6.
## ⚠ CHANGEMENT DE COMPORTEMENT VISIBLE — garde `data-theme` (arbitrage de Bruno à la fusion) **Avant cette PR** : le CSS de barre vendangé chez Kanbante (v0.1.11) n'avait **aucune garde** — dès que le **système** était en mode sombre, `@media (prefers-color-scheme: dark)` forçait la barre sombre, **même si l'app était en thème clair explicite** (`html[data-theme="light"]`). Barre sombre sur app claire. **Après cette PR** : la barre commons **v0.2.0** garde ses deux blocs `prefers-color-scheme` par `html:not([data-theme])` — le sombre système ne s'applique que si `<html>` n'a **aucun** `data-theme`. Kanbante posant toujours `html[data-theme]` (sombre par défaut, bascule mémorisée `kanbante-theme`), **sa barre suivra désormais toujours le thème choisi dans l'app**. C'est le correctif du piège documenté (déjà corrigé localement chez TikTak en 0.61.12 ; ici il arrive par la re-vendange, sans aucune surcharge `style.css`). **À valider visuellement à la fusion** : poste en système sombre + Kanbante en thème clair → la barre doit être claire. --- ## Kanbante 0.45.6 — Barre commune v0.2.0 : onglet ShaarIt (phase 3 ShaarIt, vague 3b) Re-vendange de la barre d'apps **dracodev-commons v0.2.0** (source : branche `shaarit-phase3-barre-contrats`, commit **`70c837a1734939b76d35a9679708e88456726f52`**, PR commons #7) dans Kanbante, qui vendangeait la **v0.1.11** (0.45.3). **Aucune fusion, aucune release** — la fusion reste l'acte de Bruno. ### Verbatim — preuve par hachages SHA-256 (source @70c837a vs copie vendangée) | Fichier commons (source) | SHA-256 source | Copie Kanbante | SHA-256 copie | |---|---|---|---| | `ui/barre-apps/barre-apps.css` | `abc0c3b2a282566013bd121b0c46b133700f20be78cf44128bebdf19b7e05fab` | `static/css/draco-barre.css` | `abc0c3b2a282566013bd121b0c46b133700f20be78cf44128bebdf19b7e05fab` ✅ | | `ui/barre-apps/barre-apps.js` | `24efe399823eed21add535c081ea153ae97afe128744aed9b628cf855e6b50e1` | `static/js/draco-barre.js` | `24efe399823eed21add535c081ea153ae97afe128744aed9b628cf855e6b50e1` ✅ | | `ui/barre-apps/logos/shaarit.svg` | `faf0c8a17e7cb82d0884f598eadf2c4fee7a603bfdc3a2ecfdac1e750316db34` | `static/img/logos/shaarit.svg` (nouveau) | `faf0c8a17e7cb82d0884f598eadf2c4fee7a603bfdc3a2ecfdac1e750316db34` ✅ | | `ui/barre-apps/barre-apps.html` | `d41854870ea9974a0b74dc86a61386bec11c3a21ed70aaffc0d51d83a4dbe45d` | `app/templates/_draco_bar.html` | *adapté (voir ci-dessous)* | Le fragment HTML n'est **pas** une copie verbatim — comme pour toutes les vendanges Kanbante précédentes, l'hôte adapte le fragment : les jetons `{{URL_…}}` / `{{LOGO_…}}` de commons sont remplacés par le mécanisme en place (Jinja `draco_urls` / `agent_url` depuis `app.config`, `draco_avatar`, bloc `DRACO_BAR_CONFIG` et `onAction` Kanbante complet). La structure passe exactement à la v0.2.0 (onglet ShaarIt aux mêmes place, couleur et libellés). Les hachages des trois assets sont aussi assertés par `tests/test_barre_v020.py`. ### Onglet ShaarIt et dérivation de l'URL — aucun nom codé en dur - Nouvel onglet `data-app="shaarit"`, **après Kanbante, avant Console Spark**, couleur émeraude `#059669`, logo `shaarit.svg` ; le menu de la marque l'inclut automatiquement. Le palier mobile du CSS gagne la règle `data-current="shaarit"` (sans effet chez Kanbante, hôte `kanbante`). - `app/config.py` gagne le champ **`shaarit_url`** (`Settings` + `UrlsDraco`), résolu par **le même mécanisme que les autres apps** : 1) explicite `DRACO_SHAARIT_URL` ; 2) hôte public de la requête (motif fermé étendu : `shaarit` ajouté au motif `(og|flowdeck|tiktak|kanbante|shaarit|agent)<SUFFIXE>.dracodev.net`, donc `shaarit-dev.dracodev.net` reconnu comme hôte et comme sœur) ; 3) dérivation depuis les adresses de l'agent connues (`_url_soeur_draco`, suffixe de `AGENT_EVENEMENTS_URL` / `AGENT_URL`) ; 4) défaut officiel **`https://shaarit.dracodev.net`** (dev dérivée : **`https://shaarit-dev.dracodev.net`**). `app/main.py` expose `draco_urls.shaarit` au gabarit ; `.env.example` documente la variable (prod + exemple dev). Le JS vendangé résout en plus `urls.shaarit` côté client. ### Garde `data-theme` — avant / après (preuve) | Bloc `@media (prefers-color-scheme: dark)` | Avant (v0.1.11 vendangée) | Après (v0.2.0 vendangée) | |---|---|---| | Variables `.draco-bar` | `.draco-bar { … }` — **non gardé** | `html:not([data-theme]) .draco-bar { … }` — **gardé** | | Marque `.draco-brand-mark img` | `.draco-bar .draco-brand-mark img { filter: none; }` — **non gardé** | `html:not([data-theme]) .draco-bar .draco-brand-mark img { filter: none; }` — **gardé** | | Sombre forcé `[data-theme="dark"]` | présent | présent, inchangé | Asserté par `tests/test_barre_v020.py::test_garde_data_theme_apportee_par_la_v020`. ### Version et tests - **0.45.5 → 0.45.6** selon la convention du dépôt : `APP_VERSION` dans `app/config.py` + entrée `CHANGELOG.md` (le `pyproject.toml`, resté à 0.37.1, n'est pas le fichier de version suivi — inchangé, comme lors des re-vendanges précédentes). - Suite complète : **377/377** (`python -m pytest tests/ -q`), dont `tests/test_barre_v020.py` (nouveau, 8 tests : verbatim, garde, défaut/dérivation/explicite/hôte de requête, onglet dans le rendu) et `tests/test_draco_barre.py` (21 tests, inchangé, vert — ses énumérations d'URL restent vraies par présence). ### Écarts / notes - La base de cette branche est `main` @`1cd66fd` (0.45.5 fusionnée, PR #77) — revérifiée juste avant le push, aucun commit parallèle à réintégrer. - Rien d'autre n'est touché : ni `draco-alertes.*`, ni `draco-panneau.*`, ni les surcharges `style.css` de Kanbante. - Rappel de contexte (hors périmètre de cette PR) : le redéploiement du conteneur Kanbante restait à faire pour la 0.45.5 ; cette re-vendange n'ajoute aucun changement de configuration — à la fusion, un seul redéploiement suffira pour 0.45.5 + 0.45.6.
bruno added 6 commits 2026-11-03 22:45:30 -05:00
bruno merged commit d97ca399f0 into main 2026-11-04 11:16:59 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Projets/kanbante#78