Global (globals.css):
- prefers-reduced-motion: désactive toutes les animations/transitions
- focus-visible:ring global sur tous les éléments interactifs
Search modal:
- role="dialog" + aria-modal="true" + aria-label
- onClick backdrop ferme la modale
Insights peek:
- DOMPurify.sanitize() sur dangerouslySetInnerHTML (XSS fix)
Login form:
- autoComplete="email" / "current-password"
- htmlFor sur tous les labels
Register form:
- autoComplete="name" / "email" / "new-password"
- htmlFor sur tous les labels
GridCard (notes-list-views):
- Actions visibles sur mobile (opacity-100 sm:opacity-0)
- aria-sort sur colonne triable
- role="button" + tabIndex + onKeyDown sur lignes table
Editorial view:
- role="button" + tabIndex + onKeyDown sur articles
- Menu trigger aria-label + visible mobile
Toolbar:
- aria-label voice i18n
- AI Overview : synthèse IA en haut des résultats de recherche (Ctrl+K)
- Service search-overview.service.ts
- Endpoint /api/ai/search-overview
- Carte 'Réponse IA' avec Sparkles en haut du panneau gauche
- Pur additif, ne modifie pas le classement des résultats
- AI Writer inline : slash menu → 'Écrire avec l'IA' → champ inline
- Mode 'write' dans paragraph-refactor.service.ts
- Streaming paragraphe par paragraphe (120ms delay)
- Nettoyage HTML (espaces vides supprimés)
- Ref synchrone pour éviter fermeture du menu pendant la frappe
- Fix: index slashCommands AI Writer corrigé
- Fix: Loader2 import manquant
- i18n FR/EN
Rend les liens entre notes visibles et persistants (sync NoteLink au save, auto-save, graphe réseau rafraîchi), ajoute living blocks, Memory Echo, recherche globale, consentement IA explicite et consolide les prototypes design en architectural-grid.
Co-authored-by: Cursor <cursoragent@cursor.com>