Files
gitea-dashboard/CHANGELOG.md
2026-03-13 04:20:36 +01:00

103 lines
4.4 KiB
Markdown

# 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