La page d'accueil appelle auth() (cookies → dynamique) donc export const revalidate
ne s'applique pas au rendu. On cache à la place les appels Directus :
- fetchConstitution() → wrappée avec nextCache (unstable_cache)
- revalidate: 300 (5 min) — la constitution évolue peu
- tag 'constitution' — permet revalidateTag('constitution') depuis une API route
pour invalider le cache à la demande lors d'un changement Directus
Les appels API Directus (titres + articles) ne sont plus refaits à chaque requête.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sans ce correctif, l'access token Directus (~15 min) expirait silencieusement,
rendant toutes les requêtes API 401 sans déconnecter l'utilisateur.
- Ajout de refreshDirectusToken() : POST /auth/refresh avec rotation du refresh_token
- accessTokenExpires stocké dès la connexion (expires Directus - marge 60s)
- jwt callback : token valide → pass-through, token expiré → refresh, échec → error flag
- session callback : propagation de session.error = 'RefreshAccessTokenError'
(permet au client de forcer un signOut si le refresh_token est lui-même expiré)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Upgrade Next.js de 14.2.3 vers 15.4.3
- Upgrade React et React DOM vers version 19
- Modification page dynamique [id] pour compatibilité Next.js 15
- Gestion asynchrone des params et searchParams
- Tests de build et développement réussis
- Route app/dashboard/versions/[id]/ pour URLs spécifiques
- Composant VersionPage avec affichage et partage natif
- Support modes comparison/content via paramètre URL