Sur 401, l'intercepteur n'effaçait que le token localStorage mais pas le
cookie cesizen-auth lu par le middleware -> /connexion redirigeait vers
/dashboard à l'infini quand le JWT (60 min) expirait. On purge désormais
aussi le cookie et l'état Zustand persisté avant de rediriger.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- supprime ThemeToggle orphelin (inerte, forçait le thème sombre)
- remplace les confirm() natifs par ConfirmDialog DSFR sur les 3 pages admin
(utilisateurs, contenus, émotions)
- tooltips Recharts en variables DSFR (lisibles en clair ET sombre)
tsc 0, build OK.
- évolution : courbes monotone (vagues sinusoïdales illisibles) remplacées par
un histogramme empilé par émotion, bien plus lisible
- ajoute une confirmation avant déconnexion dans l'en-tête web
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
L'ancienne implémentation (<dialog> plein écran transparent) rendait la page
inutilisable au clic sur éditer/supprimer : overlay invisible captant tous les
clics, sans fond assombri ni fermeture au clic extérieur. Remplacé par un
overlay React maîtrisé (fond assombri, clic extérieur/Échap/bouton ferment).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- ajoute babel-preset-expo en devDependency (manquant après migration SDK 54,
bloquait le bundling Metro)
- remplace le fr-btns-group du wizard de saisie par un flex simple : les
libellés "Précédent/Suivant/Enregistrer" ne sont plus tronqués
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
.fr-card (flex + height:100% + bordure ::before) débordait quand utilisé comme
conteneur générique (wizard de saisie, journal, rapports, profil, timeline) et
chevauchait le footer. Remplacé par .app-panel (panneau neutre, variables DSFR).
Les vraies cartes structurées (fr-card__body) sont conservées.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- charge le DSFR (CSS/JS officiels) en statique via public/dsfr + postinstall
- en-tête officiel (bloc Marianne « République Française » + nom de service)
- pied de page officiel DSFR (liens institutionnels, licence etalab)
- page d'accueil refondue (hero, fr-card, fr-tile, fr-callout, fr-btn)
- composant Button mappé sur fr-btn
- assets DSFR hors git (régénérés par `npm install`)
Build OK (19 routes). Pages internes encore en Tailwind : conversion à poursuivre.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Suite à la revue par agents :
- EditSaisieModal : réinitialise prevSaisieId à la fermeture (saisie=null) pour
que la réouverture de la MÊME saisie réaffiche ses valeurs d'origine
(régression introduite par le passage de useEffect à l'ajustement d'état)
- corrige le nombre de sous-émotions 28 -> 33 (compte réel du seeder :
6+5+5+5+4+4+4) dans le dossier, les slides, le plan d'oral et CLAUDE.md
- régénère le cahier des charges (19 p.) et le support de soutenance (16 slides)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Mobile (Expo SDK 53) :
- supprime victory-native et react-native-svg (dépendances mortes, non
importées) qui empêchaient l'installation (ETARGET sur svg@~16.0.0 +
conflit de peer reanimated/skia)
- ajoute les peers manquants expo-constants et expo-linking (requis par
expo-router)
- aligne expo-router, react-native et react-native-screens sur le SDK 53
- ajoute package-lock.json (installs reproductibles)
- expo-doctor 18/18, tsc sans erreur
Frontend (Next.js) :
- EmotionChart : remplace 4 `any` par les types Recharts (ValueType/NameType)
- EditSaisieModal : remplace le setState dans useEffect par l'ajustement
d'état pendant le rendu (pattern recommandé par React)
- tsc, eslint et build de production sans erreur
Backend : 15 tests passent (Auth, Admin, Tracker, RGPD).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Added favicon and icon assets for the mobile app.
- Implemented EmotionPicker component for selecting emotions with child options.
- Created hooks for fetching emotions, feeds, and rapport data.
- Established API service for handling requests and authentication.
- Integrated Zustand for state management of user authentication.
- Defined color palette for the application.
- Set up TypeScript types for various entities including User, Emotion, and Feed.
- Configured Babel and TypeScript for the mobile project.
- Added package.json with necessary dependencies for Expo and React Native.