diff --git a/CHANGELOG.md b/CHANGELOG.md
index b5a1c47..8355d3f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.45.1 — 2026-10-29 — Barre commune : les 5 logos en place dans le menu et la barre
+
+- **Barre d'apps v0.1.9 vendangée (dracodev-commons)** : `draco-barre.js` et `draco-barre.css` remplacés verbatim par la v0.1.9 (les fichiers vendangés précédents étaient identiques à l'octet près à ceux de commons avant la v0.1.9, aucune adaptation locale n'est perdue) ; fragment `_draco_bar.html` porté à la v0.1.9, le reste de l'intégration Kanbante (URL Jinja `draco_urls` / `agent_url`, `onAction` complet y compris profil/déconnexion, compteurs) est inchangé. Les surcharges Kanbante dans `style.css` ne sont pas touchées.
+- **Icônes** : les 5 tuiles de la barre — et donc du menu de la marque, qui les clone — sont désormais les logos fournis, tels quels, jamais redessinés : ObsiGate (arbre), Flowdeck (cartes), TikTak (logo officiel SVG), Kanbante (cycle vert), Console Spark (étoile rouge validée). Fichiers servis depuis `static/img/logos/` (copie de `ui/barre-apps/logos/` de commons, PNG 180 px) ; l'entrée « Console Spark » du menu clone l'icône de l'onglet agent. Les glyphes texte ▤/▦/✓/▥/✦ disparaissent des onglets (la marque ✦, le bouton Spark et le rappel d'en-tête gardent leur ✦).
+- **Cache** : le bump 0.45.0 → 0.45.1 change aussi le `?v=` des CSS/JS de la barre, donc les navigateurs ne garderont pas les anciennes icônes.
+
## 0.45.0 — 2026-10-29 — Mobile : tiroir, pied et menu compte
- **Tiroir mobile** : l'état « replié » mémorisé sur desktop ne rétrécit plus le tiroir (cause : `body.sidebar-collapsed .sidebar { width: 68px; }` gagnait par spécificité sur le 264 px mobile, libellés tronqués par overflow-x). Le tiroir fait 264 px, replié ou non ; le fond ne défile plus derrière lui ; le bouton de repli dans le tiroir le ferme ; un clic sur un lien de navigation le ferme aussi.
diff --git a/app/config.py b/app/config.py
index c4cf430..989ee76 100644
--- a/app/config.py
+++ b/app/config.py
@@ -177,7 +177,7 @@ from urllib.parse import urlparse
BASE_DIR = Path(__file__).resolve().parent.parent
-APP_VERSION = "0.45.0"
+APP_VERSION = "0.45.1"
def _env_bool(name: str, default: bool) -> bool:
diff --git a/app/templates/_draco_bar.html b/app/templates/_draco_bar.html
index ac768ba..5bc0f28 100644
--- a/app/templates/_draco_bar.html
+++ b/app/templates/_draco_bar.html
@@ -1,5 +1,5 @@
{# Barre d'apps commune dracodev — Fusion ACC-1 (issue kanbante#28).
- Snippet vendangé depuis Projets/dracodev-commons v0.1.6
+ Snippet vendangé depuis Projets/dracodev-commons v0.1.9
(ui/barre-apps/) : structure inchangée ; seule adaptation locale
(0.32.0, dev/prod) = les URL des apps et l'adresse du service
d'agents sont INJECTÉES par l'hôte depuis app.config
@@ -10,7 +10,12 @@
« Console Spark » du menu de la marque est conservée.
CSS/JS : /static/css/draco-barre.css, /static/js/draco-barre.js.
Inclus par _header.html (toutes les pages applicatives ; ni le
- wallboard ni l'écran de connexion, volontaires). #}
+ wallboard ni l'écran de connexion, volontaires).
+ Icônes logos v0.1.9 (2026-10-29) : les 5 tuiles sont les logos
+ fournis, tels quels, servis depuis /static/img/logos/ (copie de
+ ui/barre-apps/logos/ de dracodev-commons) — jamais de glyphe
+ texte, jamais de redessin ; l'entrée « Console Spark » du menu
+ clone l'icône de l'onglet agent (draco-barre.js). #}
@@ -23,25 +28,25 @@
diff --git a/static/css/draco-barre.css b/static/css/draco-barre.css
index ad654dc..b7c9f07 100644
--- a/static/css/draco-barre.css
+++ b/static/css/draco-barre.css
@@ -94,6 +94,13 @@
width: 30px; height: 30px; flex: none; display: grid; place-items: center;
border-radius: 9px; background: var(--app); color: #fff; font-size: 15px;
}
+/* Icônes logos (2026-10-29, corrigé le même jour) : l'image du logo
+ * fourni, telle quelle, remplit la tuile 30 px — jamais de glyphe
+ * texte, jamais de redessin. Le fond de la tuile est transparent :
+ * les logos PNG portent déjà leur fond (dégradé), le SVG TikTak
+ * reste sur le fond de la barre. */
+.draco-apptab-ico { background: transparent; }
+.draco-apptab-ico img { width: 30px; height: 30px; display: block; border-radius: 9px; object-fit: cover; }
.draco-apptab-txt { display: none; flex-direction: column; line-height: 1.15; }
.draco-apptab-txt strong { font-size: 14px; font-weight: 700; }
.draco-apptab-txt small { font-size: 11.5px; color: var(--ink-2); }
diff --git a/static/img/logos/flowdeck.png b/static/img/logos/flowdeck.png
new file mode 100644
index 0000000..21c556f
Binary files /dev/null and b/static/img/logos/flowdeck.png differ
diff --git a/static/img/logos/kanbante.png b/static/img/logos/kanbante.png
new file mode 100644
index 0000000..32a2b02
Binary files /dev/null and b/static/img/logos/kanbante.png differ
diff --git a/static/img/logos/obsigate.png b/static/img/logos/obsigate.png
new file mode 100644
index 0000000..27b93ff
Binary files /dev/null and b/static/img/logos/obsigate.png differ
diff --git a/static/img/logos/spark.png b/static/img/logos/spark.png
new file mode 100644
index 0000000..049acad
Binary files /dev/null and b/static/img/logos/spark.png differ
diff --git a/static/img/logos/tiktak.svg b/static/img/logos/tiktak.svg
new file mode 100644
index 0000000..4babd04
--- /dev/null
+++ b/static/img/logos/tiktak.svg
@@ -0,0 +1,8 @@
+
diff --git a/static/js/draco-barre.js b/static/js/draco-barre.js
index eeaa965..6ea58ca 100644
--- a/static/js/draco-barre.js
+++ b/static/js/draco-barre.js
@@ -369,7 +369,10 @@
* de l'agent commun (URL agent résolue — explicite > -dev >
* défaut prod ; aucun hôte spark-dev inventé). data-app="agent"
* l'intègre à refreshMenuHrefs/applyUrls/setCurrent comme les
- * autres items ; l'icône ✦ reprend la couleur agent du CSS. */
+ * autres items ; son icône CLONE celle de l'onglet agent
+ * (2026-10-29, logos barre-apps, corrigé le même jour) : le logo
+ * fourni, tel quel, jamais redessiné — le CSS --agent (rose) des
+ * autres éléments de la barre n'est pas changé ici. */
var sep = document.createElement("div");
sep.className = "draco-menu-sep";
sep.setAttribute("aria-hidden", "true");
@@ -379,10 +382,18 @@
sparkItem.href = resolvedUrls.agent || "#";
sparkItem.dataset.app = "agent";
sparkItem.setAttribute("role", "menuitem");
- var sparkIco = document.createElement("span");
- sparkIco.className = "draco-apptab-ico";
- sparkIco.setAttribute("style", "--app:#c2437e");
- sparkIco.textContent = "✦";
+ var sparkIco;
+ var agentTab = document.querySelector('.draco-apptab[data-app="agent"]');
+ var agentIco = agentTab ? agentTab.querySelector(".draco-apptab-ico") : null;
+ if (agentIco) {
+ sparkIco = agentIco.cloneNode(true);
+ } else {
+ sparkIco = document.createElement("span");
+ sparkIco.className = "draco-apptab-ico";
+ sparkIco.setAttribute("style", "--app:#d21f2c");
+ sparkIco.setAttribute("data-icon", "agent");
+ sparkIco.textContent = "✦";
+ }
sparkItem.appendChild(sparkIco);
var sparkTxt = document.createElement("span");
sparkTxt.className = "draco-apps-item-txt";