Le petit point vert peu visible est remplacé par le bandeau d'angle
d'origine (vert nature, texte blanc), découpé dans le coin de la couverture.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- XSS stocké (critique) : sanitisation bluemonday sur tous les endpoints
d'articles (List, ListByFeed, Favorites, Search, Get), pas seulement Get
- SSRF (élevé) : nouveau utils/safehttp.go (ValidateExternalURL + client durci
via Dialer.Control, bloque IP privées/loopback/link-local/metadata,
anti-DNS-rebinding et limite de redirections) appliqué à l'extracteur et au parser
- WebSocket CSWSH (élevé) : politique same-origin + override WS_ALLOWED_ORIGINS
- rate-limiting (moyen) : token-bucket en mémoire sur /auth/*
- token de session retiré du corps JSON (json:"-"), livré uniquement par le
cookie HttpOnly
- cookie Secure correct derrière un reverse-proxy (X-Forwarded-Proto +
override COOKIE_SECURE)
- admin : interdiction de supprimer son propre compte
- en-têtes de sécurité (nosniff, X-Frame-Options, Referrer-Policy,
Permissions-Policy)
Note : backend non compilé localement (pas de toolchain Go) ; à valider via Docker.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Refonte de toutes les vues en conservant l'identité magazine/vert nature,
avec un système de design cohérent et accessible.
- index.css : tokens sémantiques, échelle radius/ombres, classes réutilisables
(btn-*, chip, surface-card, magazine-content), :focus-visible,
prefers-reduced-motion, grain papier affiné
- nouveaux composants AuthShell (auth split-screen) et MobileTopBar
(navigation mobile, auparavant absente)
- framer-motion sur toutes les vues ; AddFeedModal expose l'import OPML ;
Sidebar ajoute déconnexion + identité utilisateur
- corrections : text-gold cassé -> nature, arithmétique Date -> getTime(),
suppression de App.css mort, ProtectedRoute en Tailwind,
snapshot du deck Focus conforme aux règles React
Frontend : npm run lint + build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>