Page Projets : copie URL dans le menu ⋯ + refonte thème barre Fusion/Spark (#44, #45)
CI / test (push) Failing after 1s

This commit is contained in:
2026-10-29 08:21:17 -04:00
parent 144957ccd3
commit 9653f851c8
+19 -19
View File
@@ -27,19 +27,19 @@
<div class="proj-actions"> <div class="proj-actions">
<a href="/board/{{ full_name }}" class="nav-pill proj-primary">Ouvrir le board</a> <a href="/board/{{ full_name }}" class="nav-pill proj-primary">Ouvrir le board</a>
<a href="/capture" class="nav-pill">⚡ Capture</a> <a href="/capture" class="nav-pill">Capture</a>
<a href="/triage/{{ full_name }}" class="nav-pill">Triage</a> <a href="/triage/{{ full_name }}" class="nav-pill">Triage</a>
<a href="/health/{{ full_name }}" class="nav-pill">🩺 Santé</a> <a href="/health/{{ full_name }}" class="nav-pill">Santé</a>
<a href="/forecast" class="nav-pill">🔮 Prévisions</a> <a href="/forecast" class="nav-pill">Prévisions</a>
<a href="/wall?repo={{ full_name }}" class="nav-pill">🖥️ Wallboard</a> <a href="/wall?repo={{ full_name }}" class="nav-pill">Wallboard</a>
{% if repo_info.html_url %} {% if repo_info.html_url %}
<a href="{{ repo_info.html_url }}" target="_blank" rel="noopener" class="nav-pill">🔗 Gitea ↗</a> <a href="{{ repo_info.html_url }}" target="_blank" rel="noopener" class="nav-pill">Gitea ↗</a>
{% endif %} {% endif %}
</div> </div>
<div class="proj-grid"> <div class="proj-grid">
<section class="proj-panel"> <section class="proj-panel">
<h2>🎯 Jalons ouverts</h2> <h2>Jalons ouverts</h2>
{% if milestones %} {% if milestones %}
{% for ms in milestones %} {% for ms in milestones %}
<div class="proj-ms"> <div class="proj-ms">
@@ -49,19 +49,19 @@
</div> </div>
{% if ms.total %} {% if ms.total %}
<div class="progress ms-progress"><span style="width: {{ ms.pct }}%"></span></div> <div class="progress ms-progress"><span style="width: {{ ms.pct }}%"></span></div>
<div class="ms-meta">{{ ms.closed }}/{{ ms.total }} terminées{% if ms.eta_label %} · 🔮 {{ ms.eta_label }}{% endif %}</div> <div class="ms-meta">{{ ms.closed }}/{{ ms.total }} terminées{% if ms.eta_label %} · {{ ms.eta_label }}{% endif %}</div>
{% else %} {% else %}
<div class="ms-meta">Aucune issue dans ce jalon pour le moment.</div> <div class="ms-meta">Aucune issue dans ce jalon pour le moment.</div>
{% endif %} {% endif %}
{% if ms.id %} {% if ms.id %}
<details class="ms-edit"> <details class="ms-edit">
<summary>✏️ Modifier / fermer</summary> <summary>Modifier / fermer</summary>
<form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones/{{ ms.id }}/update"> <form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones/{{ ms.id }}/update">
<label>Titre <input type="text" name="title" value="{{ ms.title }}" maxlength="255" required></label> <label>Titre <input type="text" name="title" value="{{ ms.title }}" maxlength="255" required></label>
<label>Échéance <input type="date" name="due_on" value="{{ ms.due_iso }}"> <label>Échéance <input type="date" name="due_on" value="{{ ms.due_iso }}">
<span class="ms-hint">vide = retirer l'échéance</span></label> <span class="ms-hint">vide = retirer l'échéance</span></label>
<div class="ms-form-actions"> <div class="ms-form-actions">
<button type="submit" class="btn-save btn-inline">💾 Enregistrer</button> <button type="submit" class="btn-save btn-inline">Enregistrer</button>
</div> </div>
</form> </form>
<form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones/{{ ms.id }}/close" <form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones/{{ ms.id }}/close"
@@ -76,29 +76,29 @@
<p class="proj-empty">Aucun jalon ouvert pour le moment.</p> <p class="proj-empty">Aucun jalon ouvert pour le moment.</p>
{% endif %} {% endif %}
<details class="ms-edit ms-new"> <details class="ms-edit ms-new">
<summary>➕ Nouveau jalon</summary> <summary>Nouveau jalon</summary>
<form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones"> <form class="ms-form" data-ms-form data-action="/api/repos/{{ full_name }}/milestones">
<label>Titre <input type="text" name="title" maxlength="255" required placeholder="Ex. : Version 2.0"></label> <label>Titre <input type="text" name="title" maxlength="255" required placeholder="Ex. : Version 2.0"></label>
<label>Échéance <input type="date" name="due_on"></label> <label>Échéance <input type="date" name="due_on"></label>
<label>Description <textarea name="description" rows="2" maxlength="2000" placeholder="Optionnelle"></textarea></label> <label>Description <textarea name="description" rows="2" maxlength="2000" placeholder="Optionnelle"></textarea></label>
<div class="ms-form-actions"> <div class="ms-form-actions">
<button type="submit" class="btn-save btn-inline">🎯 Créer le jalon</button> <button type="submit" class="btn-save btn-inline">Créer le jalon</button>
</div> </div>
</form> </form>
</details> </details>
</section> </section>
<section class="proj-panel"> <section class="proj-panel">
<h2>🩺 Santé du flux</h2> <h2>Santé du flux</h2>
{% if health %} {% if health %}
<ul class="proj-list"> <ul class="proj-list">
<li><strong>{{ health.open_count }}</strong> cartes ouvertes</li> <li><strong>{{ health.open_count }}</strong> cartes ouvertes</li>
{% if health.slowest %} {% if health.slowest %}
<li>🐢 Goulot : <strong>{{ COLUMN_LABELS[health.slowest.column] }}</strong> — séjour médian {{ health.slowest.median_days }} j</li> <li>Goulot : <strong>{{ COLUMN_LABELS[health.slowest.column] }}</strong> — séjour médian {{ health.slowest.median_days }} j</li>
{% else %} {% else %}
<li>🐢 Pas encore de goulot mesurable (historique trop court).</li> <li>Pas encore de goulot mesurable (historique trop court).</li>
{% endif %} {% endif %}
<li>🧟 Zombies (≥ {{ health.zombie_days }} j sans activité) : <strong>{{ health.zombies|length }}</strong></li> <li>Zombies (≥ {{ health.zombie_days }} j sans activité) : <strong>{{ health.zombies|length }}</strong></li>
</ul> </ul>
{% if health.zombies %} {% if health.zombies %}
<ul class="proj-list proj-zombies"> <ul class="proj-list proj-zombies">
@@ -114,7 +114,7 @@
</section> </section>
<section class="proj-panel"> <section class="proj-panel">
<h2>🔮 Prévisions</h2> <h2>Prévisions</h2>
{% if throughput %} {% if throughput %}
<ul class="proj-list"> <ul class="proj-list">
<li>Débit : <strong>{{ throughput.avg }}</strong> fermetures / semaine en moyenne (min {{ throughput.min }} · max {{ throughput.max }}, 4 dernières semaines complètes)</li> <li>Débit : <strong>{{ throughput.avg }}</strong> fermetures / semaine en moyenne (min {{ throughput.min }} · max {{ throughput.max }}, 4 dernières semaines complètes)</li>
@@ -127,7 +127,7 @@
</section> </section>
<section class="proj-panel"> <section class="proj-panel">
<h2>🕘 Activité récente</h2> <h2>Activité récente</h2>
{% if events %} {% if events %}
<ul class="proj-list"> <ul class="proj-list">
{% for e in events %} {% for e in events %}
@@ -141,11 +141,11 @@
</section> </section>
<section class="proj-panel proj-notes"> <section class="proj-panel proj-notes">
<h2>📝 Notes du projet</h2> <h2>Notes du projet</h2>
{% if notes %} {% if notes %}
<div class="proj-notes-body">{{ notes }}</div> <div class="proj-notes-body">{{ notes }}</div>
{% else %} {% else %}
<p class="proj-empty">Aucune note. Les notes s'écrivent depuis le panneau « 🗒️ Notes » du board et vivent avec le projet.</p> <p class="proj-empty">Aucune note. Les notes s'écrivent depuis le panneau « Notes » du board et vivent avec le projet.</p>
{% endif %} {% endif %}
<p><a href="/board/{{ full_name }}">Ouvrir le board pour éditer →</a></p> <p><a href="/board/{{ full_name }}">Ouvrir le board pour éditer →</a></p>
</section> </section>