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). 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: 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 %} - +
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 %} - 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

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' %}
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 @@

- +

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 %}
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 %} 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
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 %}
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. 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 %}
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 %} 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

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 %} 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 %} 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.

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 %} 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 %} 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 @@