Skip to content

Claude/audit interface utilisateur dg3wmk - #1888

Merged
glloq merged 4 commits into
mainfrom
claude/audit-interface-utilisateur-dg3wmk
Aug 5, 2026
Merged

Claude/audit interface utilisateur dg3wmk#1888
glloq merged 4 commits into
mainfrom
claude/audit-interface-utilisateur-dg3wmk

Conversation

@glloq

@glloq glloq commented Aug 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

claude added 4 commits August 5, 2026 09:28
Audit de la SPA frontend et de son intégration au backend WebSocket.

Validations automatisées toutes vertes: typecheck, lint (0 erreur),
1096 tests backend, 1411 tests frontend, build Vite.

Constats clés:
- Sens UI -> backend sain: 100% des commandes emises par le frontend
  ont un handler backend; 190/190 fichiers JS charges; navigation et
  modals tous cables; aucune action utilisateur cassee.
- Asymetrie inverse: ~84 des 268 commandes backend n'ont aucune surface
  UI (sous-systemes legacy route_*/latency_*/preset_*/session_* et
  fonctionnalites reelles non exposees: seek/tempo/volume/transpose,
  admin systeme).
- 5 evenements diffuses sans ecouteur (system_lag, midi_event, ...).
- 1 gap fonctionnel vivant: identite SysEx affichee mais non persistee.
- Code mort: 3 modules orphelins + ~1000 lignes legacy inline dans
  index.html (modale instrument + liste #deviceList).
- i18n: 28 locales aux ensembles de cles identiques (2812); ~36 cles
  utilisees mais absentes des locales.

Recommandations priorisees incluses. Aucun code applicatif modifie.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U3SJ8ncMpjGvrdmLrvVPzv
Fix 4 — Expose les capacités de lecture temps réel du backend, jusque-là
non câblées, dans la barre de transport principale:
- BackendAPIClient: seekPlayback / setPlaybackTempo / setPlaybackVolume /
  setPlaybackTranspose (commandes playback_seek / playback_set_tempo /
  playback_set_volume / playback_transpose).
- Barre de progression du header rendue cliquable (seek à la position).
- Popover 🎛️ (tempo/volume/transposition) avec sliders, thème clair/sombre,
  fermeture au clic extérieur/Échap, synchro du tempo depuis playback_status.
Smoke test navigateur (Chromium) OK: éléments présents, méthodes câblées,
popover fonctionnel, aucune exception JS.

Fix 3 — Ajoute les 35 clés i18n référencées dans le code mais absentes des
locales (+ 5 clés ui.* pour le popover), sur les 28 langues, en préservant
l'invariant d'ensembles de clés identiques (test audit-i18n). en.json en
anglais; les 27 autres locales reçoivent le texte français (locale de
fallback) — aucune régression, en attente de traduction.

Tests: frontend 1411 ✅, typecheck ✅, lint ✅ (0 erreur).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U3SJ8ncMpjGvrdmLrvVPzv
Fix 2 (sûr, partiel) — Suppression de deux fichiers réellement orphelins,
chargés en poids mort mais jamais référencés (hors commentaires) ni étendus :
- public/js/features/settings/SettingsModalContent.js (mort auto-documenté,
  exposait un objet vide)
- public/js/features/midi-editor/MidiEditorToolbar.js (classe jamais
  instanciée ; méthodes dupliquées par MidiEditorEditActions/Viewport/ChannelOps)
Balises <script> correspondantes retirées d'index.html. Parité fichiers/scripts
maintenue (188/188).

NON supprimé (correction de l'audit) :
- PianoRollRenderer.js n'est PAS orphelin : c'est la classe de base dont hérite
  CanvasPianoRollRenderer (le retirer casserait le piano-roll).
- La « modale d'instrument legacy ~1000 lignes » d'index.html s'est révélée être
  des branches mortes ENTRELACÉES dans des fonctions vivantes (loadDevices a 8
  appelants ; window.showInstrumentSettings est un proxy vivant). Suppression
  reportée à un refactor délibéré plutôt qu'automatisée.

Rapport docs/audit/ mis à jour : section « Correctifs appliqués », correction du
finding SysEx (auto-persisté côté backend) et de l'orphelin PianoRollRenderer,
recommandations réordonnées.

Validation : frontend 1411 tests, build, smoke test navigateur — tous verts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U3SJ8ncMpjGvrdmLrvVPzv
…nter-fichiers

Tentative de nettoyage du code « legacy » inline d'index.html (modale
d'instrument). La vérification inter-fichiers (grep sur public/js/**, pas
seulement index.html) a révélé AVANT tout commit que ce code n'est PAS mort :
le composant vivant InstrumentSettingsModal (InstrumentSettingsModal.js,
instrument-settings/ISMSections.js, ISMListeners.js) en dépend via des globals
inter-fichiers — 17 des 52 fonctions du « bloc legacy » sont référencées
depuis des .js externes (sélecteur de plage de notes initPianoKeyboard/
navigatePiano/renderPianoKeyboard/setNoteSelectionMode/clearPianoRange…,
helpers GM onGmProgramChanged/gmProgramToSelectValue…).

Le retirer casserait le sélecteur de plage de notes et la sélection GM de la
modale de réglages. index.html a donc été restauré intégralement (aucun
changement de code applicatif dans ce commit).

Le rapport est mis à jour : la migration inline→composant est incomplète ; un
vrai nettoyage exige d'abord d'internaliser ces globals dans le composant
(chantier substantiel, hors suppression automatisée). Seuls les 2 fichiers-
modules réellement orphelins (déjà supprimés) étaient retirables sans risque.

Validation : frontend 1411 tests, smoke test navigateur — verts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U3SJ8ncMpjGvrdmLrvVPzv
@glloq
glloq merged commit 825c1ad into main Aug 5, 2026
5 checks passed
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.

2 participants