feat: intégration TikTak #197-200 + scoped tokens, webhooks filtrés, listes mtime/size ; fix e2e-server BUG-112
CI / lint (push) Successful in 3m17s
CI / security (push) Failing after 1m51s
CI / test (push) Successful in 5m14s
CI / build (push) Successful in 1m50s
CI / e2e (push) Successful in 18m18s

This commit is contained in:
2026-10-14 11:42:53 -04:00
parent 2be0b15bcf
commit f783394f09
59 changed files with 3233 additions and 77 deletions
+45 -1
View File
@@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
> **En cours de développement** : les changements à venir sont listés dans la section
> [Unreleased](#unreleased). La dernière version livrée est **2.67.2**.
> [Unreleased](#unreleased). La dernière version livrée est **2.68.0**.
---
@@ -14,6 +14,50 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [2.68.0] — 2026-10-14
### Ajouté
- **#197 - Listes de fichiers : `mtime` + `size` pour réconciliation externe (Gitea #4)**
- `GET /api/vault/{vault}/paths` expose `size`/`mtime`/`mtime_iso` par fichier
(index, même contrat que `list_all_files`) ; `GET /api/browse/{vault}` expose
`modified`/`modified_iso` ; outil MCP `list_directory` aligné.
- `PUT /api/file/{vault}/save` rafraîchit l'index en synchrone (read-after-write).
- Fiche `docs/features/tiktak-integration-197-200.md`, guide API_REST §5, tests
`tests/test_sync_lists.py` (7).
- **#198 - Webhooks : filtre `vault` / `path_prefix` + `file_modified` émis (Gitea #3)**
- Filtres optionnels par webhook (sans filtre = tout, comme avant) ; `POST`/`PATCH`/
`GET /api/webhooks` les gèrent ; `PUT …/save` émet `file_modified`.
- UI : champs filtre + badge, aide intégrée FR/EN à jour ; tests
`tests/test_webhook_filters.py` (10).
- **#199 - Clés API à portée limitée : vaults + périmètre `files` (Gitea #2)**
- `POST /api/auth/tokens` accepte `vaults?` + `scope` (`full`|`files`) ; 403 hors
vault (REST + MCP) et hors périmètre (`TokenScopeMiddleware`, outils
`token_scope_denied`, `list_tools` filtré) ; UI + i18n FR/EN ; clés existantes
inchangées (`full`). Guides API_REST (§2.3) / MCP ; tests
`tests/test_scoped_tokens.py` (13).
- **#200 - Runbook de provisionnement du vault « TikTak » (Gitea #1)** — procédure
d'exploitation + recette `curl` dans la fiche feature (reste à exécuter sur l'hôte).
### Corrigé
- **BUG-112** — `pwsh -File scripts/e2e-server.ps1 2>&1 | head -n 20` ne se
terminait jamais : `Start-Process` laissait uvicorn hériter des handles
stdout/stderr du pwsh parent, le pipe vers `head` restait ouvert tant que le
serveur (immortel par design) vivait. Le serveur, lui, était prêt en ~7 s.
`scripts/e2e-server.ps1` lance désormais uvicorn via `Win32_Process.Create`
(WMI), processus détaché sans handle hérité ; les variables `OBSIGATE_*` sont
passées dans la ligne `cmd /c` via `set "NOM=valeur"` (le processus WMI
n'hérite pas de l'environnement du parent). Vérifié : commande en 6,9 s,
serveur up avec les 2 fixtures, `stop`/`status` OK.
- **#197** — `update_single_file`/`remove_single_file` recevaient des chemins relatifs
au vault alors qu'ils exigeaient un absolu : le rafraîchissement d'index
post-écriture était un no-op silencieux (masqué par le watcher en production).
Les deux formes sont désormais acceptées.
---
## [2.67.2] — 2026-10-10
---