# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ## [1.4.0] - 2026-03-13 ### Added - Vue milestones dédiée avec `--milestones` (tableau Repo/Milestone/Open/Closed/Progress) - Support de fichier de configuration YAML (`~/.config/gitea-dashboard/config.yml`) - Option `--config` pour spécifier un fichier de configuration alternatif - Résolution des variables d'environnement `${VAR}` dans les fichiers de configuration - Priorité de configuration : CLI > variables d'environnement > fichier config > défauts - Colonnes configurables avec `--columns` (inclusion, exclusion par préfixe `-`, `--columns help`) - Rétrocompatibilité `--no-desc` maintenue avec `--columns` - Export JSON des milestones via `--milestones --format json` - Paramètre `state` dans `client.get_milestones()` (défaut : "open", supporte "all" pour la vue milestones) ### Changed - Colonne `activity` désormais rendue dans le tableau principal ### Fixed - Dégradation gracieuse sur timeout réseau pendant la pagination (retourne les données partielles au lieu de crasher) - Incohérence clé `token`/`auth` corrigée dans le chargement du fichier de configuration YAML - Détection et rejet des variables `${VAR}` non résolues dans le token ### Technical - Nouveau module `config.py` pour la gestion de configuration YAML (ADR-013) - Nouvelle dépendance PyYAML >= 6.0 - Dataclass `MilestoneData` dans `collector.py` (ADR-014) - Fonction `collect_milestones()` avec filtrage include/exclude et state=all - Fonctions `render_milestones()`, `parse_columns()`, `AVAILABLE_COLUMNS` dans `display.py` - Fonctions `milestones_to_dicts()`, `export_milestones_json()` dans `exporter.py` - Refactoring : `_filter_repos()` extrait la logique de filtrage partagée dans `collector.py` ## [1.3.0] - 2026-03-12 ### Added - Option `--health` pour vérifier la connexion Gitea (affiche version de l'instance et nombre de repos accessibles, exit code 0 si OK, 1 sinon) - Colonne "Description" dans le tableau principal (tronquée à 40 caractères) - Option `--no-desc` pour masquer la colonne description - Tests edge cases : unicode, repos vides, API malformée, caractères de contrôle (30 nouveaux tests) ### Fixed - Retry : gestion de HTTP 429 (rate limiting) avec respect du header `Retry-After` - Validation du header `Retry-After` (cap à 30 s, fallback sur backoff exponentiel pour les dates HTTP) - Export JSON : sanitisation des caractères de contrôle invalides (issue #12) ## [1.2.0] - 2026-03-12 ### Added - Export du dashboard en JSON via `--format json` (nouveau module `exporter.py`) - Colonne "Dernier commit" affichant la date relative du dernier commit par repo - Option `--sort` / `-s` pour trier les repos (valeurs : `name`, `issues`, `release`, `activity`) - Coloration des milestones selon l'échéance (rouge = dépassée, jaune = < 7 jours, vert = sinon) ### Fixed - Retry automatique sur timeout API (max 2 retries, backoff linéaire) au lieu d'un crash immédiat ### Technical - Nouveau module `exporter.py` pour la sérialisation JSON - Retry centralisé dans `GiteaClient._get_with_retry()` - Fonction `sort_repos` publique dans `display.py` - Helper de test partagé dans `tests/helpers.py` ## [1.1.0] - 2026-03-11 ### Added - Options CLI `--repo`/`-r` et `--exclude`/`-x` pour filtrer les repos par nom (sous-chaine, insensible a la casse) - Parsing CLI via argparse avec `parse_args()` separee pour testabilite - Parametres `include`/`exclude` dans `collect_all()` pour filtrage post-fetch ## [1.0.0] - 2026-03-10 ### Added - Client API Gitea avec authentification par token et pagination automatique - Collecteur de données avec dataclass `RepoData` - Affichage Rich du dashboard avec tableau repos et section milestones - Point d'entrée CLI `gitea-dashboard` avec configuration par variables d'environnement - Indicateurs visuels pour les repos forks, archives et miroirs - Gestion des erreurs réseau (connexion refusée, timeout, erreurs API) - Masquage du token dans les messages d'erreur [Unreleased]: https://gitea.tsmse.fr/admin/gitea-dashboard/compare/v1.4.0...HEAD [1.4.0]: https://gitea.tsmse.fr/admin/gitea-dashboard/compare/v1.3.0...v1.4.0 [1.3.0]: https://gitea.tsmse.fr/admin/gitea-dashboard/compare/v1.2.0...v1.3.0 [1.2.0]: https://gitea.tsmse.fr/admin/gitea-dashboard/compare/v1.1.0...v1.2.0 [1.1.0]: https://gitea.tsmse.fr/admin/gitea-dashboard/compare/v1.0.0...v1.1.0