Version, CHANGELOG (palier 1) et README (fonctionnalités, KANBANTE_WIP_LIMITS / KANBANTE_AGING_DAYS, nouvelles routes).
This commit is contained in:
@@ -1,5 +1,36 @@
|
||||
# Changelog
|
||||
|
||||
## 0.3.0 — 2026-10-11
|
||||
|
||||
« Palier 1 » : voir ce qui se passe sur les boards.
|
||||
|
||||
### Ajouts
|
||||
- **Journal d'événements** (`board_events`, append-only) : chaque
|
||||
création, déplacement, fermeture, réouverture et commentaire est
|
||||
horodaté. Il alimente la page **`/activity`** (fil tous projets),
|
||||
`GET /api/events` et `GET /api/metrics` (débit par type et temps de
|
||||
cycle moyen : entrée en « En cours » → fermeture). Les fermetures
|
||||
détectées lors de la réconciliation avec Gitea sont aussi journalisées
|
||||
(source `gitea`). Un reclassement dans la même colonne n'écrit pas
|
||||
d'événement.
|
||||
- **Panneau détail de carte** : un clic sur une carte ouvre un panneau
|
||||
latéral avec le corps de l'issue rendu en markdown (marked + DOMPurify,
|
||||
vendorés), ses commentaires, assignés, milestone et échéance ; on peut
|
||||
**commenter directement dans Gitea** depuis le panneau
|
||||
(`GET /api/issues/{owner}/{repo}/{n}`, `POST .../comments`, 404 propre
|
||||
si l'issue n'existe pas).
|
||||
- **Vieillissement des cartes** : badge « ⏳ N j » dès qu'une carte reste
|
||||
dans sa colonne au-delà de `KANBANTE_AGING_DAYS` (défaut 7, rouge au
|
||||
double). Le temps en colonne vient du journal, avec repli sur
|
||||
`board_state.updated_at` puis sur la date de création de l'issue.
|
||||
- **Limites WIP** : `KANBANTE_WIP_LIMITS="in_progress:5,review:3"` —
|
||||
l'en-tête de colonne affiche `n/limite`, passe en rouge en dépassement
|
||||
et un toast avertit au dépôt. Limites souples : jamais bloquantes.
|
||||
|
||||
### Tests
|
||||
- 16 tests ajoutés (52 au total) : journal et métriques, détail et
|
||||
commentaires, vieillissement, WIP.
|
||||
|
||||
## 0.2.0 — 2026-10-11
|
||||
|
||||
Consolidation complète à partir d'un audit du code 0.1.0 (chaque correctif
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
- 🎯 **Drag & Drop** — glisse les issues entre colonnes ; en cas d'échec, la carte est replacée
|
||||
- 🔗 **Gitea Sync bidirectionnelle** — « Terminé » ferme l'issue dans Gitea, la ressortir la rouvre ; l'état local est réconcilié à chaque chargement
|
||||
- ➕ **Création d'issues** depuis le board, filtres texte + étiquettes, cartes liées à Gitea
|
||||
- 🗂️ **Panneau détail** — clic sur une carte : corps markdown, commentaires, et réponse postée dans Gitea sans quitter le board
|
||||
- 📰 **Journal d'événements** — chaque mouvement est horodaté : fil d'activité (`/activity`), métriques de débit et de temps de cycle (`/api/metrics`)
|
||||
- ⏳ **Vieillissement + limites WIP** — badge d'ancienneté par colonne et limites souples configurables
|
||||
- 🎯 **Vue Focus** — tout ce qui est En cours / En révision, tous projets confondus (`/focus`)
|
||||
- 📝 **Notes** — bloc-notes par projet
|
||||
- 🔐 **Authentification** Basic Auth intégrée + protection CSRF (voir Sécurité)
|
||||
@@ -92,6 +95,8 @@ sudo systemctl enable --now docker
|
||||
| `KANBANTE_CACHE_TTL` | `30` | Secondes de cache des listes Gitea (dépôts, issues) |
|
||||
| `KANBANTE_MAX_NOTE_CHARS` | `20000` | Taille maximale d'une note de projet |
|
||||
| `KANBANTE_SYNC_GITEA` | `1` | `0` = les déplacements ne ferment/rouvrent plus les issues Gitea |
|
||||
| `KANBANTE_WIP_LIMITS` | *(vide)* | Limites souples par colonne, ex. `in_progress:5,review:3` (affichage `n/limite`, rouge en dépassement, jamais bloquant) |
|
||||
| `KANBANTE_AGING_DAYS` | `7` | Jours dans la même colonne avant le badge « ⏳ » sur une carte (rouge au double) |
|
||||
|
||||
## Sécurité
|
||||
|
||||
@@ -134,8 +139,13 @@ kanbante/
|
||||
| GET | `/` | Dashboard tous les projets |
|
||||
| GET | `/board/{owner}/{repo}` | Kanban board |
|
||||
| GET | `/focus` | En cours + En révision, tous projets actifs |
|
||||
| GET | `/activity` | Fil d'activité (journal d'événements, tous projets) |
|
||||
| POST | `/api/move` | Déplacer une issue (ordre persisté, synchro Gitea) |
|
||||
| POST | `/api/issues` | Créer une issue Gitea depuis le board |
|
||||
| GET | `/api/issues/{owner}/{repo}/{n}` | Détail d'une issue + commentaires (panneau) |
|
||||
| POST | `/api/issues/{owner}/{repo}/{n}/comments` | Commenter l'issue dans Gitea |
|
||||
| GET | `/api/events` | Derniers événements du journal (`?repo=`, `?limit=`) |
|
||||
| GET | `/api/metrics` | Débit + temps de cycle moyen (`?repo=`, `?window=`) |
|
||||
| POST | `/api/notes` | Sauvegarder des notes |
|
||||
| GET | `/api/stats` | Statistiques JSON |
|
||||
| GET | `/api/projects` | Projets JSON (actifs / inactifs / archivés) |
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "kanbante"
|
||||
version = "0.2.0"
|
||||
version = "0.3.0"
|
||||
description = "Kanban project manager integrated with Gitea"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user