Claude/audit interface utilisateur dg3wmk - #1888
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.