CI / test (push) Failing after 1m37s
- Dockerfile: copie du code avant installation (le package installé n'est plus vide — I6), utilisateur non-root, HEALTHCHECK - compose: version: obsolète retiré, variables d'auth, healthcheck - pyproject: version 0.2.0, jinja2 <4, config pytest - LICENSE (MIT), CHANGELOG 0.2.0, README réécrit (configuration, sécurité, API, tests), .dockerignore
3.8 KiB
3.8 KiB
Changelog
0.2.0 — 2026-10-11
Consolidation complète à partir d'un audit du code 0.1.0 (chaque correctif marqué « confirmé » avait été reproduit par un test avant correction).
Critiques corrigés
- Perte de données en Docker :
KANBANTE_DB_PATHest enfin lue par le code — la base SQLite atterrit dans le volume/datacomme prévu. - Authentification : Basic Auth optionnelle mais recommandée
(
KANBANTE_AUTH_USER/KANBANTE_AUTH_PASSWORD,KANBANTE_REQUIRE_AUTH=1pour refuser de servir sans), protection CSRF (double-submit) sur tous les POST, avertissement bruyant au démarrage quand l'auth est absente. - Synchro bidirectionnelle : déplacer une carte vers « Terminé » ferme
l'issue dans Gitea, la ressortir la rouvre (
KANBANTE_SYNC_GITEA=0pour désactiver). L'état local est réconcilié à chaque chargement de board (fermées → Terminé, supprimées → purgées).
Importants corrigés
- Classification des projets : fenêtre d'activité glissante configurable
(
KANBANTE_ACTIVE_WINDOW_DAYS, défaut 365) et vrai drapeauarchivedde Gitea — fini l'année codée en dur et l'onglet « Archivés » mensonger. - Pagination complète des appels Gitea (le plafond serveur de 50 réponses par page ne tronque plus les dépôts ni les issues, en silence).
get_board_statene plante plus sur une colonne inconnue ; migration automatique des bases 0.1.0 (colonneposition,notes.updated_at, nettoyage des lignes invalides).- Gitea injoignable → page d'erreur 502 propre (JSON pour l'API) au lieu
d'un 500 brut ;
/api/readinessteste réellement SQLite et Gitea,/api/healthreste un liveness sans dépendance. - Dockerfile : installation après copie du code (le package installé
n'est plus vide), utilisateur non-root,
HEALTHCHECK,.dockerignore.
Ajouts
- Ordre des cartes persisté dans chaque colonne (aller-retour glisser-déposer → rechargement).
- Création d'issues depuis le board (
POST /api/issues). - Vue Focus (
/focus) : tout ce qui est En cours / En révision, tous projets actifs confondus. - Filtres par texte et par étiquette sur le board ; les cartes lient vers l'issue Gitea ; les pull requests ne sont plus affichées comme des issues.
- Suite de tests
pytest(modèles, client Gitea, API, auth/CSRF) et CI Gitea Actions (.gitea/workflows/ci.yml). - Fichier
LICENSE(MIT, annoncé par le README depuis la 0.1.0).
Détails
- Client Gitea entièrement asynchrone (les routes ne bloquent plus la
boucle d'événements), cache mémoire court des listes, en-tête
Authorizationseulement si un jeton est configuré, uid résolu via/user(plus deuid=1ni d'utilisateur codés en dur),.envchargé depuis la racine du projet seulement. - Bibliothèques JS (HTMX, Alpine, SortableJS) vendorées dans
static/vendor/: plus aucune dépendance CDN à l'exécution. - Glisser-déposer : en cas d'échec serveur, la carte est replacée et le toast d'erreur est rouge ; les déplacements envoient l'ordre complet des colonnes source et destination.
- API : codes HTTP corrects (400 colonne invalide, 403 CSRF, 413 note
trop longue — limite configurable),
lifespanFastAPI à la place deon_eventdéprécié, imports nettoyés. - CSS : fond des badges corrigé (
color-mix()remplace l'invalidevar(--accent)20). - Recherche du dashboard : le nom des dépôts passe par un attribut
data-searchéchappé, plus aucune interpolation dans du JS. docker-compose.yml: cléversion:obsolète retirée, variables d'auth exposées, healthcheck.
0.1.0 — 2026-07-07
Version initiale : dashboard des projets Gitea, board Kanban 5 colonnes par dépôt (glisser-déposer SortableJS), notes par projet, état local SQLite, thème sombre, Dockerfile + docker-compose.