Build & Deploy / build (push) Successful in 20s
Admin.tsx faisait ses 8 appels en relatif (`/admin/users?token=…`), donc vers le nginx du front et non vers l'API. Le fallback SPA répondait index.html en HTTP 200 : le res.json() partait en erreur de parsing — « The string did not match the expected pattern » sous Safari. Les appels passent désormais par API_URL, comme le reste du front. App.tsx ne lisait le user que depuis localStorage, instantané pris au login : une promotion en admin n'y apparaissait jamais et AdminRoute éjectait le compte de /admin jusqu'à reconnexion. Le profil est resynchronisé depuis /me au montage. Restent 404 côté API : /admin/scrapers/logs et /admin/scrapers/run, que la page appelle mais que le backend n'expose pas (les scrapers tournent via le cron hôte). Le panneau affichera une erreur franche au lieu d'une erreur de parsing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>