From bb3da870a05419c4fc472e37268f208a6d8439d8 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:35 -0400 Subject: [PATCH 01/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16972d3..4af0113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.42.0 — 2026-10-28 — Lot UX complet (#57 à #68) + +- **#57 Jetons** : échelle fermée documentée (typo xs/sm/base/lg/xl, rayons sm/md/base/full, ombres, espacements) ; rayons pilule passés au jeton `--radius-full`. +- **#58 Boutons** : système primary uni (fini les dégradés), secondary, danger, icon 36px, états unifiés ; `.btn-save` et `.proj-primary` alignés sur le primary. +- **#59 Icônes** : emoji d'interface retirés des gabarits (cartes, tableaux, états vides, boutons, titres) ; épingler en SVG trait, recherche en SVG ; favicons et contenu utilisateur (titres/labels Gitea) inchangés. +- **#60 Accessibilité** : jeton `--accent-text` distinct (`#14b8a6` sombre, `#0f766e` clair, 5,47:1 sur blanc) pour tous les textes d'accent ; focus visible unifié. +- **#61 Typographie** : pile système assumée (Inter déclarée mais jamais chargée, pas de CDN tiers pour une app auto-hébergée) ; hiérarchie H1/H2 via `.page-title`. +- **#62 Pages** : Aujourd'hui et Focus reprennent l'en-tête `.page-head` / `.page-title` commun ; titre Aujourd'hui ramené à l'échelle xl. +- **#63 Navigation** : recherche en double supprimée de l'en-tête (palette Ctrl+K + recherche sidebar restent). +- **#64 Mobile** : cibles 44px sous 640px, en-tête et KPI compacts. +- **#65 États** : `.empty-state` / `.focus-empty` unifiés, classe `.skeleton` (pulsation, respect de `prefers-reduced-motion`). +- **#66 Formulaires** : classes `.field-error` / `.field-error-msg` (bordure rouge + message, jamais la couleur seule). +- **#67 Cartes** : titre clampé à 2 lignes, code discret, labels/chips en texte thème sur fond teinté `color-mix` (contraste garanti quelle que soit la couleur Gitea). +- **#68 Thème clair** : connexion et wallboard suivent le thème mémorisé (init avant rendu, comme `_header`) et ne restent plus sombres par défaut ; variantes claires ajoutées. + ## 0.41.0 — 2026-10-28 — Identité Kanbante : sidebar charbon, accent vert, icônes ligne, bouton thème en Administration (#54, #55) - **Sidebar (#54)** : fond charbon draco (`rgba(26, 28, 26, 0.96)`) à la place du bleu-noir `rgba(13, 16, 24)` oublié par le re-thème 0.39.0 — la barre latérale a désormais la même teinte que le reste du site, en sombre comme en clair (clair déjà blanc). -- 2.54.0 From 21414de936f6d0b39340c3184073d2820f687c89 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:37 -0400 Subject: [PATCH 02/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config.py b/app/config.py index cbadc00..fbada76 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.41.0" +APP_VERSION = "0.42.0" def _env_bool(name: str, default: bool) -> bool: -- 2.54.0 From 7a3081c408bcc5728d5f341df4dfb435868117b8 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:39 -0400 Subject: [PATCH 03/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/_card.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/templates/_card.html b/app/templates/_card.html index 46c8e87..af02bdc 100644 --- a/app/templates/_card.html +++ b/app/templates/_card.html @@ -13,14 +13,14 @@ {% if issue.labels %}
{% for label in issue.labels %} - + {{ label.name }} {% endfor %}
{% endif %} {% if issue._code %} -
⑂{% if issue._code.branches %} 🌿 {{ issue._code.branches }}{% endif %}{% if issue._code.commits %} · {{ issue._code.commits }} commit{{ 's' if issue._code.commits > 1 }}{% endif %}{% if issue._code.pr %} · PR #{{ issue._code.pr.number }} {{ issue._code.pr.label }}{% endif %}
+
⑂{% if issue._code.branches %} {{ issue._code.branches }}{% endif %}{% if issue._code.commits %} · {{ issue._code.commits }} commit{{ 's' if issue._code.commits > 1 }}{% endif %}{% if issue._code.pr %} · PR #{{ issue._code.pr.number }} {{ issue._code.pr.label }}{% endif %}
{% endif %}
{% if issue.assignee %} @@ -30,8 +30,8 @@ {% set age = ages.get(issue.number) %} {% if age and age.days >= aging_days %} ⏳ {{ age.days }} j + title="Dans cette colonne depuis le {{ age.since[:10] }}">{{ age.days }} j {% endif %} - +
-- 2.54.0 From 642c7bbb2dd632ec0045be65b862251f25e41ab0 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:41 -0400 Subject: [PATCH 04/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/_header.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/templates/_header.html b/app/templates/_header.html index 83bbac8..bb10f81 100644 --- a/app/templates/_header.html +++ b/app/templates/_header.html @@ -39,7 +39,7 @@ ("activity", "/activity", "📰", "Activité"), ]), ("outils", "Outils", [ - ("search", "/search", "🔍", "Recherche"), + ("search", "/search", "", "Recherche"), ("capture", "/capture", "⚡", "Capture"), ("archives", "/archives", "🗄️", "Archives"), ("wall", "/wall", "🖥️", "Wallboard"), @@ -164,7 +164,6 @@ {% if repo_info is defined and repo_info and repo_info.html_url %} 🔗 Gitea ↗ {% endif %} - -- 2.54.0 From 8596ad57088f5b1479836c035228f2a127983355 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:43 -0400 Subject: [PATCH 05/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/admin.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/templates/admin.html b/app/templates/admin.html index 9c1e523..b9b8cda 100644 --- a/app/templates/admin.html +++ b/app/templates/admin.html @@ -12,11 +12,11 @@
-

🛠️ Administration

+

Administration

Utilisateurs, vue d'ensemble et journal d'administration.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %}

👥 Utilisateurs ({{ users|length }})

@@ -79,7 +79,7 @@ 🔌 Connexions ({{ connections|length }}) · 🧭 Espaces ({{ workspaces|length }}) · 🎛️ Paramètres · - 🗄️ Archives + Archives

-- 2.54.0 From 2735905c7e7ff795f8f7e9565b8dc64de6c5dd04 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:45 -0400 Subject: [PATCH 06/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/admin_columns.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/templates/admin_columns.html b/app/templates/admin_columns.html index 9af03c6..1d608b8 100644 --- a/app/templates/admin_columns.html +++ b/app/templates/admin_columns.html @@ -12,11 +12,11 @@
-

🧱 Colonnes du board

+

Colonnes du board

Espace : {{ workspace.name }} (change d'espace par le sélecteur en haut pour régler un autre board). Les colonnes sont propres à chaque espace : nom, couleur, ordre et mapping étiquette ↔ colonne. La clé d'une colonne ne change jamais (les cartes y sont rattachées) ; le nom affiché, lui, est libre.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %}

Comment marche le mapping

@@ -52,12 +52,12 @@
- +
- +
{% if c.kind == 'flow' %}
-- 2.54.0 From a01b6a484abe044c65298b0ab503193f863528bb Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:47 -0400 Subject: [PATCH 07/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/admin_connections.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/templates/admin_connections.html b/app/templates/admin_connections.html index d5716e5..c52e3de 100644 --- a/app/templates/admin_connections.html +++ b/app/templates/admin_connections.html @@ -12,11 +12,11 @@
-

🔌 Connexions aux forges

+

Connexions aux forges

Chaque connexion est un accès Gitea ou GitHub. Les jetons sont chiffrés au repos et ne sont jamais réaffichés — pour en changer un, saisis la nouvelle valeur.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %} {% for c in connections %}
@@ -41,7 +41,7 @@

- +

-- 2.54.0 From cb056ee456f810b1815f0ca33652eacfa3bf08d1 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:49 -0400 Subject: [PATCH 08/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/admin_settings.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/templates/admin_settings.html b/app/templates/admin_settings.html index edf0245..bd460b0 100644 --- a/app/templates/admin_settings.html +++ b/app/templates/admin_settings.html @@ -12,11 +12,11 @@
-

🎛️ Paramètres

+

Paramètres

L'environnement amorce, le panneau gouverne. Une valeur saisie ici remplace celle de l'environnement (sans redémarrage pour la plupart) ; un champ vidé revient à la valeur d'environnement. Les secrets et les réglages d'amorçage (base de données, clé maître, session, draco) restent en environnement, volontairement.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %}
-- 2.54.0 From 0ce5de46f324f8a560cd4c03153923b38f90d48e Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:51 -0400 Subject: [PATCH 09/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/admin_workspaces.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/templates/admin_workspaces.html b/app/templates/admin_workspaces.html index caffc0d..9f499f4 100644 --- a/app/templates/admin_workspaces.html +++ b/app/templates/admin_workspaces.html @@ -12,11 +12,11 @@
-

🧭 Espaces de travail

+

Espaces de travail

Un espace regroupe des connexions (forges) et des membres. Le board d'un projet appartient à l'espace : deux espaces peuvent ranger le même projet différemment. L'état de board, les notes et les épingles du jour sont propres à chaque espace.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %} {% for d in details %} {% set ws = d.ws %} -- 2.54.0 From b4f3cce0df2372f51b48a7c29a3f8017f827d88b Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:53 -0400 Subject: [PATCH 10/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/archives.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/templates/archives.html b/app/templates/archives.html index 8030fa2..561d197 100644 --- a/app/templates/archives.html +++ b/app/templates/archives.html @@ -12,11 +12,11 @@
-

🗄️ Archives

+

Archives

Espace : {{ workspace.name if workspace else '—' }}. Deux sortes d'archives : locale (le projet disparaît des vues de cet espace, la forge n'est pas touchée, réversible en un clic) et sur la forge (propriété du dépôt, lecture seule là-bas). Les archives sortent des rituels et des instantanés, mais restent cherchables.

{% if msg %}

✅ {{ msg }}

{% endif %} - {% if err %}

⚠️ {{ err }}

{% endif %} + {% if err %}

{{ err }}

{% endif %} {% macro actions(row, kind) %} {% if can_write %} @@ -26,7 +26,7 @@ - + {% endif %} {% if kind == 'local' %} @@ -35,7 +35,7 @@ - +
@@ -50,7 +50,7 @@ - +
{% endif %} {% if kind == 'forge' %} @@ -59,14 +59,14 @@ - + {% endif %}
- +
{% endif %} {% endmacro %} @@ -80,7 +80,7 @@ {% if row.missing %}introuvable sur la forge{% endif %} {{ row.updated_at or '—' }}{% if row.idle_days is not none %} (il y a {{ row.idle_days }} j){% endif %} - {% if row.open_issues %}⚠️ {{ row.open_issues }} ouverte(s){% else %}0{% endif %} + {% if row.open_issues %}{{ row.open_issues }} ouverte(s){% else %}0{% endif %} {{ actions(row, kind) }} {% endmacro %} @@ -98,13 +98,13 @@ {% if row.conn_kind == 'github' %}🐙{% else %}🍵{% endif %} {{ row.full_name }} {% if row.conn_slug %}{{ row.conn_slug }}{% endif %} {{ row.updated_at }} (il y a {{ row.idle_days }} j) - {% if row.open_issues %}⚠️ {{ row.open_issues }} ouverte(s){% else %}0{% endif %} + {% if row.open_issues %}{{ row.open_issues }} ouverte(s){% else %}0{% endif %} {{ actions(row, 'suggested') }} {% endfor %} -

+

{% else %}

Rien à proposer : aucun projet inactif au-delà du seuil (réglable : archive_suggest_days dans Administration → Paramètres).

@@ -112,7 +112,7 @@
-

📥 Archives locales de cet espace ({{ groups.local|length }})

+

Archives locales de cet espace ({{ groups.local|length }})

{% if groups.local %} @@ -124,7 +124,7 @@
-

🔒 Archivés sur la forge ({{ groups.forge|length }})

+

Archivés sur la forge ({{ groups.forge|length }})

{% if groups.forge %}
ProjetDernière activitéIssues ouvertesActions
-- 2.54.0 From bcd9c2facedd348ced0d1a3b3fa26a67b38f2369 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:55 -0400 Subject: [PATCH 11/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/board.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/templates/board.html b/app/templates/board.html index 2d81752..54c2760 100644 --- a/app/templates/board.html +++ b/app/templates/board.html @@ -44,7 +44,7 @@
- + - 📥 Triage du backlog + Triage du backlog {% if is_admin or workspace_role == 'admin' %}🧱 Colonnes{% endif %}
-- 2.54.0 From 546e6fb81b4d7137ddf82f68c9d7d23267d794ba Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:57 -0400 Subject: [PATCH 12/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/capture.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/templates/capture.html b/app/templates/capture.html index 6a4b9fe..e1e1fc3 100644 --- a/app/templates/capture.html +++ b/app/templates/capture.html @@ -12,7 +12,7 @@
-

⚡ Capture éclair

+

Capture éclair

Une idée, un bogue, une pensée — capturés en deux secondes, ils deviennent une issue dans le bon backlog.

@@ -41,7 +41,7 @@ - + Astuce : tape un début, Tab complète segment par segment (pr → Projets/ → kan → kanbante), ↑↓ + Entrée choisissent dans la liste. -- 2.54.0 From e3a89710d7f26c3975f08aa5beea1a38fabc086f Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:39:59 -0400 Subject: [PATCH 13/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/dashboard.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 566dcfa..46d023b 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -55,7 +55,7 @@ - 🗄️ Gérer + Gérer
- + @@ -228,21 +228,21 @@
{% for repo in active_listed %}{{ project_card(repo) }}{% endfor %} {% if not active_listed and not pinned_repos %} -
🌱 Aucun projet actif en ce moment. Les projets bougent dès qu'une issue ou un commit arrive dans Gitea.
+
Aucun projet actif en ce moment. Les projets bougent dès qu'une issue ou un commit arrive dans Gitea.
{% endif %}
{% for repo in inactive_listed %}{{ project_card(repo) }}{% endfor %} {% if not inactive_listed %} -
✨ Rien d'endormi : tous vos projets ont eu de l'activité récemment.
+
Rien d'endormi : tous vos projets ont eu de l'activité récemment.
{% endif %}
{% for repo in archived_repos %}{{ project_card(repo, archived=True) }}{% endfor %} {% if not archived_repos %} -
🗄️ Aucun projet archivé. L'archivage se fait dans Gitea (Réglages du dépôt).
+
Aucun projet archivé. L'archivage se fait dans Gitea (Réglages du dépôt).
{% endif %}
-- 2.54.0 From 9eb236ba63afad4b8cd02ee28b9efff2ada3155b Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:01 -0400 Subject: [PATCH 14/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/digest.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/digest.html b/app/templates/digest.html index 3032b19..10092ac 100644 --- a/app/templates/digest.html +++ b/app/templates/digest.html @@ -12,7 +12,7 @@
-

🧠 Digest hebdo → ObsiGate

+

Digest hebdo → ObsiGate

Chaque semaine, Kanbante compose le résumé de l'activité (livré, en cours, chiffres du journal) en une note markdown. L'envoi vers ObsiGate est une écriture dans un autre système : il n'a jamais lieu sans ton approbation ici.

{% if last_result %}

🧾 Dernier envoi : {{ last_result }}

{% endif %} -- 2.54.0 From e49f498ca04a2707df387e866d20e8011d014865 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:03 -0400 Subject: [PATCH 15/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/error.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/error.html b/app/templates/error.html index 38b52fe..6006786 100644 --- a/app/templates/error.html +++ b/app/templates/error.html @@ -10,7 +10,7 @@ {% include "_header.html" %}
-

⚠️ Quelque chose s'est mal passé

+

Quelque chose s'est mal passé

{{ message }}

← Retour au dashboard

-- 2.54.0 From c09118938138d3676e7ac49ba4e324ad2a9af64f Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:05 -0400 Subject: [PATCH 16/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/focus.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/templates/focus.html b/app/templates/focus.html index 4d08ab7..83cc7f7 100644 --- a/app/templates/focus.html +++ b/app/templates/focus.html @@ -11,9 +11,9 @@ {% include "_header.html" %}
-

Tout ce qui est En cours ou En révision, tous projets actifs confondus.

+

Focus

Tout ce qui est En cours ou En révision, tous projets actifs confondus.

{% if not groups %} -

🎉 Rien en cours ni en révision pour le moment.

+

Rien en cours ni en révision pour le moment.

{% endif %} {% for group in groups %}
@@ -26,7 +26,7 @@
#{{ card.issue.number }} - + {{ column_labels[card.column] }} {% if card.issue.html_url %} @@ -37,7 +37,7 @@ {% if card.issue.labels %}
{% for label in card.issue.labels %} - + {{ label.name }} {% endfor %} -- 2.54.0 From e23dd499a9291029904d0378436d0615c1956d39 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:07 -0400 Subject: [PATCH 17/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/forecast.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/templates/forecast.html b/app/templates/forecast.html index 8bb3acd..6eea4d7 100644 --- a/app/templates/forecast.html +++ b/app/templates/forecast.html @@ -12,15 +12,15 @@
-

🔮 Prévisions — « on finit quand ? »

+

Prévisions — « on finit quand ? »

Le tableau de bord des jalons, tous projets confondus, trié par risque : l'écart entre la date estimée (au débit réel du journal) et l'échéance. Réponse honnête — fourchettes plutôt que faux chiffres précis, et aucune prévision sans historique de fermetures.

🎯 {{ summary.total }} jalon(s) ouvert(s) - {% if summary.late %}⚠️ {{ summary.late }} en retard à ce rythme{% endif %} + {% if summary.late %}{{ summary.late }} en retard à ce rythme{% endif %} {% if summary.ontime %}✅ {{ summary.ontime }} dans les temps{% endif %}

@@ -56,7 +56,7 @@
ProjetDernière activitéIssues ouvertesActions
{{ repo.owner.login }} {{ repo.open_issues_count or 0 }} {{ st.get('in_progress', 0) + st.get('qa', 0) + st.get('review', 0) }}{% if repo.next_milestone %}🎯 {{ repo.next_milestone.title }}{% if repo.next_milestone.late %} ⚠️{% endif %}{% else %}—{% endif %}{% if repo.next_milestone %}🎯 {{ repo.next_milestone.title }}{% if repo.next_milestone.late %} {% endif %}{% else %}—{% endif %} {% if repo.health_dot %}{% else %}—{% endif %} {{ repo.updated_at[:10] }}
{{ row.eta or '—' }} {% if row.verdict == 'late' %} - ⚠️ +{{ row.gap_days }} j + +{{ row.gap_days }} j {% elif row.verdict == 'ontime' %} ✅ dans les temps{% if row.gap_days is not none and row.gap_days < 0 %} ({{ -row.gap_days }} j d'avance){% endif %} {% elif row.verdict == 'nodue' %} @@ -78,7 +78,7 @@

📈 Débit par projet

{% for project in projects %}
- + {% for bar in project.bars %} {% set px = (bar.h * 0.42)|round|int %} -- 2.54.0 From c2052959d19a733776d854b370306d1c2144cce4 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:09 -0400 Subject: [PATCH 18/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/health.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/health.html b/app/templates/health.html index b4fc2e5..eb47f1c 100644 --- a/app/templates/health.html +++ b/app/templates/health.html @@ -12,7 +12,7 @@
-

🩺 Santé du flux

+

Santé du flux

Tous les projets actifs, triés par sévérité — le rouge d'abord. Quelle colonne accumule (temps médian par colonne, d'après le journal) et quelles cartes sont devenues des zombies. Cliquez un projet pour le détail et les actions rapides.

-- 2.54.0 From a0b461f46850b3832afcf3086f58134a519cdef5 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:10 -0400 Subject: [PATCH 19/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/health_project.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/templates/health_project.html b/app/templates/health_project.html index fa88a83..c3a2dac 100644 --- a/app/templates/health_project.html +++ b/app/templates/health_project.html @@ -25,12 +25,12 @@ {% endif %} {% if health is none %}
-

🩺 {{ full_name }}

+

{{ full_name }}

Projet introuvable.

{% else %}
-

🩺 {{ full_name }}

+

{{ full_name }}

⏱️ Temps passé par colonne (journal)

{% if health.dwell %} @@ -71,7 +71,7 @@

« Fermer » déplace la carte en Terminé (l'issue est fermée dans Gitea par la synchro habituelle). « Toujours pertinent ? » poste un commentaire du même texte sur l'issue.

{% else %} -

Aucune carte zombie. Le flux est propre. ✨

+

Aucune carte zombie. Le flux est propre.

{% endif %} {% endif %} -- 2.54.0 From f976d22d4b78f10832ea58201d7754cdc6a84165 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:12 -0400 Subject: [PATCH 20/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/inflight.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/templates/inflight.html b/app/templates/inflight.html index af63974..5bcebf9 100644 --- a/app/templates/inflight.html +++ b/app/templates/inflight.html @@ -17,14 +17,14 @@
🛩️ {{ total }} carte{{ 's' if total != 1 }} en vol {% for group in groups %} - + {{ column_labels[group.column] }} · {{ group.cards|length }}{% if wip_globals.get(group.column) %} / limite globale {{ wip_globals[group.column] }}{% endif %} {% endfor %}
{% if not groups %} -

🎉 Rien en vol pour le moment — aucun encours, aucune révision en attente.

+

Rien en vol pour le moment — aucun encours, aucune révision en attente.

{% endif %} {% for group in groups %} @@ -51,7 +51,7 @@ {% if card.issue.labels %}
{% for label in card.issue.labels %} - + {{ label.name }} {% endfor %} @@ -62,7 +62,7 @@ {{ card.issue.assignee.login }} {% endif %} ⏳ {{ card.age_days }} j dans la colonne + title="Dans cette colonne depuis le {{ card.age_since[:10] }}">{{ card.age_days }} j dans la colonne
{% endfor %} -- 2.54.0 From e7ceb14d2b44d9e96789a4d2b9ec0edc38a69ffd Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 23:40:14 -0400 Subject: [PATCH 21/37] =?UTF-8?q?Page=20Projets=20:=20copie=20URL=20dans?= =?UTF-8?q?=20le=20menu=20=E2=8B=AF=20+=20refonte=20th=C3=A8me=20barre=20F?= =?UTF-8?q?usion/Spark=20(#44,=20#45)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/login.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/templates/login.html b/app/templates/login.html index bf574c8..b1f25a3 100644 --- a/app/templates/login.html +++ b/app/templates/login.html @@ -1,7 +1,8 @@ - + + Connexion — Kanbante @@ -11,12 +12,12 @@