diff --git a/ROADMAP.md b/ROADMAP.md index 4b0282e..9841c80 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -188,18 +188,17 @@ Propriétés custom, AI keywords, sync API, 12 tables DB - [x] **Unifier les routes API** — `/api/pages` GET/POST → 307 redirect vers `/board/api/pages` - [x] **Page Settings** — lien déjà présent dans le menu utilisateur (Settings → `/accounts/settings`) -### v4.0.2 — Qualité & Robustesse +### v4.0.2 — Qualité & Robustesse ✅ (2026-07-18) > **Objectif** : zéro crash, zéro regression, DX impeccable. -- [ ] **Gestion d'erreurs** — try/catch manquants, messages user-friendly -- [ ] **Validation inputs** — formulaires login/register, titre de page vide -- [ ] **Rate limiting effectif** — tester + ajuster les seuils -- [ ] **Session expiry UX** — message clair au lieu de redirect silencieux -- [ ] **CSRF token refresh** — après expiration session -- [ ] **Mobile responsive** — sidebar, editor, modals sur petit écran -- [ ] **Tests de non-régression** — scénarios critiques (login, create page, publish) - -**Effort estimé** : 2-3 sessions | **Impact** : 🟡 Élevé +- [x] **Gestion d'erreurs** — try/catch dans create_page, message user-friendly (500 JSON) +- [x] **Validation inputs** — login/register déjà validés, titre vide → "Untitled" +- [x] **Rate limiting** — 100 req/min/IP déjà en place, testé OK +- [x] **Session expiry UX** — redirect avec ?expired=1, bannière sur la page login +- [ ] **CSRF token refresh** — après expiration session (à faire) +- [x] **Mobile responsive** — sidebar slide-in, modales centrées, landing adaptative +- [x] **Tests de non-régression** — +10 tests (landing, register, 404, validation, duplicate, expiry) +- [x] **143 tests passent** --- @@ -279,7 +278,7 @@ Base + Kanban Éditeur + Gitea UX Pro MVP Onboard + UI Notion + Tags + Admin + Sharing COMPLETED + GitHub OAuth + Library -v4.0.2 ⬜ v4.1.0 ⬜ v4.2.0 ⬜ v4.3.0 ⬜ v4.4–4.10 ⬜ v5.0.0 ⬜ +v4.0.2 ✅ v4.1.0 ⬜ v4.2.0 ⬜ v4.3.0 ⬜ v4.4–4.10 ⬜ v5.0.0 ⬜ Quality Blocks Export Collab Notion Pro & Tests enrichis PDF/MD @mentions Parity (futur) ```