Skip to content

fix(a11y): passe accessibilité, théming & performance (tous modules)#12

Merged
D4kooo merged 1 commit into
mainfrom
fix/a11y-audit
May 31, 2026
Merged

fix(a11y): passe accessibilité, théming & performance (tous modules)#12
D4kooo merged 1 commit into
mainfrom
fix/a11y-audit

Conversation

@D4kooo
Copy link
Copy Markdown
Contributor

@D4kooo D4kooo commented May 31, 2026

Quoi

Passe transversale accessibilité / théming / performance sur ~45 composants UI, issue d'un audit interne (WCAG, anti-patterns, perf). Aucun changement fonctionnel produit.

Principaux changements

Accessibilité

  • aria-current sur la navigation active (sidebar / settings / admin)
  • Live-regions scopées — le chat ré-annonçait chaque token streamé
  • Sémantique listes/tables : <ul role="list">, scope, <caption>, role="progressbar"
  • aria-describedby sur les aides de formulaire ; aria-invalid au login
  • prefers-reduced-motion sur les animations infinies / springs
  • Statuts encodés par texte + icône (plus uniquement la couleur)
  • Primitive Spinner : role="status" sur un wrapper + motion-safe

Théming

  • Surlignage de citation → token --highlight (jaune codé en dur, cassé en dark mode)
  • Bugs : gradient oklch(oklch()) qui ne rendait rien ; maskColor du MiniMap codé en dur

Performance

  • React.memo sur le rendu Markdown : les messages historiques ne re-rendent plus à chaque token streamé

Vérification

tsc --noEmit ✓ · eslint ✓ · next build ✓ · vitest (77 tests) ✓

Suivi

Items différés tracés dans la roadmap #11 (virtualisation du chat #5, cibles tactiles #7, …).

Systematic audit-driven fixes across 7 module groups (UI surface),
verified with tsc + lint + production build (all green).

Criticals:
- Chat: scope the streaming live-region (was re-announcing every token)
- Board: gate infinite edge animation + node pulse behind reduced-motion;
  add text/icon status badges (was color-only)
- Settings: drop invalid CutoutCard role="button" wrapping nested
  interactives; add explicit "Configurer" trigger + hoist delete dialog

Systemic:
- aria-current on active nav (sidebar / settings / admin)
- Spinner primitive: role=status on wrapper, sr-only label, motion-safe
- form helper text wired via aria-describedby
- citation highlight -> --highlight token (was hardcoded yellow)
- list/table semantics: ul/li, scope, caption, role=progressbar, dl metrics
- reduced-motion gating on spring/infinite animations
- dead "Bientot" controls removed; emoji -> @tabler icons
- print footer contrast; admin stats no longer hidden on mobile

Bugs:
- broken oklch(oklch()) vignette gradient (rendered nothing) -> color-mix
- hardcoded black MiniMap maskColor -> token (dark-mode correct)

Perf:
- React.memo on assistant markdown rows via stable onOpenDoc, so historical
  messages stop re-rendering/re-linkifying on every streamed token
@D4kooo D4kooo merged commit c69ea94 into main May 31, 2026
5 checks passed
@D4kooo D4kooo deleted the fix/a11y-audit branch May 31, 2026 12:29
D4kooo added a commit that referenced this pull request Jun 2, 2026
…tomization

Conflits résolus en faveur de notre branche (sur-ensemble) : elle contient
déjà le travail onboarding/a11y que dataring a squashé (#4/#12), plus le
sprint et la personnalisation du Board. Aucune fonctionnalité dataring perdue
(les lignes divergentes étaient les versions antérieures de lignes que nos
commits ont fait évoluer : focus-ring ring-2→ring-3, copie « v0.3 » corrigée,
FolderRow/auto-refresh enrichis).

Vérifié post-merge : tsc, lint, 117 tests, build prod OK.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant