Files

659 lines
35 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2.2.14 (05/11/2026)
## Améliorations
- Export PDF en trois pages : schéma de principe, vue complète du Mega 2560 Rev3 sur une image de référence et gros plans photographiques des connecteurs.
- Affichage des composants et de leurs bornes sur des fonds colorés à côté des broches utilisées ; textes verticaux pour le connecteur inférieur D22-D53.
- Images intégrées au projet pour permettre la génération du PDF hors ligne, avec attribution des sources.
## Corrections
- Repérage des broches portant les suffixes TX, RX, DATA et CLOCK et recalage des connecteurs sur les images.
- Prise en compte de l'espacement entre A7 et A8 et des deux rangées distinctes du connecteur D22-D53.
- Suppression des longues liaisons superposées dans la vue complète et conservation des liaisons locales dans les gros plans.
# 2.2.13 (05/11/2026)
## Corrections
- Blocage de la broche D13, réservée à la LED intégrée de la carte Arduino, dans la configuration des LED, capteurs IR et moteurs ainsi que lors de l'enregistrement côté serveur.
- Signalement des composants déjà configurés sur D13, avec accès direct à leur modification et possibilité de retirer cette broche sans pouvoir la resélectionner.
- Indication de la raison de réservation pour distinguer D13 des broches de communication TX/RX.
# 2.2.12 (05/11/2026)
## Améliorations
- Schéma de principe des connexions des moteurs, capteurs IR et LED accessible depuis chaque carte Arduino.
- Carte centrale, composants de chaque côté, broches nommées et fils à angles droits reliant les bornes configurées.
- Export PDF vectoriel sur une seule page, avec orientation automatique et texte net au zoom et à l'impression.
## Corrections
- Signalement des broches partagées et absence de liaison supposée pour les broches introuvables.
- Espacement des symboles, adaptation des blocs aux noms sur plusieurs lignes et séparation du pied de carte des dernières broches.
- Actualisation du schéma et de l'index des connexions lors des changements de configuration.
# 2.2.11 (03/11/2026)
## Corrections
- Actualisation des broches disponibles apr?s modification des moteurs, capteurs IR et LED.
- Suppression des ?critures concurrentes de l'occupation des broches depuis le navigateur ; synchronisation assur?e par le serveur apr?s chaque enregistrement ou suppression.
- Rafra?chissement des Arduino apr?s modification d'une LED.
# 2.2.10 (30/10/2026)
## Améliorations
- Broches Arduino TX/RX réservées à la communication : sélection interdite pour les LED, les capteurs IR et les moteurs.
- Alerte pour les composants déjà configurés sur une broche TX/RX, avec accès direct à leur fenêtre de modification.
- Remplacement des broches des moteurs entrée par entrée, avec commandes de retrait compactes, disposition adaptative et mise en évidence des broches réservées.
## Corrections
- Une broche retirée pendant la modification reste sélectionnable lorsqu'elle appartient au composant, sauf s'il s'agit d'une broche TX/RX.
- Réinitialisation des broches sélectionnées lors d'un changement d'Arduino et correction du débordement des affectations dans la fenêtre des moteurs.
# 2.2.9 (29/10/2026)
## Améliorations
- Préparation du mode Surprise pour générer de nouvelles règles cohérentes à chaque lancement côté serveur, en respectant les pistes et le matériel disponible.
- Statuts des scénarios affichés en français et compatibilité des anciens scénarios enregistrés comme brouillons avec le lancement et le contrôle avant départ.
## Corrections
- Calcul des moyennes tour par tour uniquement à partir des courses ayant enregistré le tour concerné.
- Utilisation des compteurs et temps enregistrés dans les indicateurs du dashboard ; prise en charge des anciens chronos et des valeurs invalides.
- Conservation du type de course historique et affichage des chronos par circuit à partir des résultats enregistrés.
# 2.2.8 (29/10/2026)
## Améliorations
- Filtrage des capteurs IR dans l'éditeur en tableau pour alterner les pistes entre deux déclencheurs successifs.
- Filtrage des moteurs et des LED selon la piste du capteur choisi pour le déclencheur, également appliqué à la création des duels.
- Réinitialisation des sélections devenues incompatibles lors d'un changement de piste et validation avant l'enregistrement.
# 2.2.7 (29/10/2026)
## Améliorations
- Nouvel éditeur de scénarios en tableau : une ligne par déclencheur et des sous-lignes modifiables pour les actions et les conditions, avec ajout et suppression directement dans le tableau.
- Création et modification des duels dans le tableau, avec conservation des liens entre leurs déclencheurs et prise en charge des modes de course existants.
- Enregistrement groupé des modifications et conservation du brouillon en cas d'échec ; les éditeurs actuels restent disponibles.
- Saisie et affichage des durées des LED en secondes dans la configuration des scénarios et les récapitulatifs, avec prise en charge des valeurs décimales (par exemple 0,5 s).
- Conversion automatique en millisecondes pour conserver la compatibilité avec le backend et les scénarios existants.
# 2.2.6 (27/10/2026)
## Améliorations
- Regroupement de la configuration et de la calibration des infrarouges : accès à la calibration depuis chaque capteur.
- Regroupement de la configuration et de la calibration des moteurs : accès aux réglages depuis chaque aiguillage.
- Suppression des entrées de menu de calibration séparées et redirection des anciennes adresses vers les pages de configuration.
- Fenêtre de calibration des moteurs plus lisible : carte sur toute la largeur, commandes verticales et champs adaptés aux petits écrans.
## Corrections
- Correction des pages blanches après un rafraîchissement F5 sur une route interne grâce à une base d'URL absolue.
- Arrêt de la lecture infrarouge lors de la destruction du composant de calibration.
# 2.2.5 (26/10/2026)
## Améliorations
- Masquage du bandeau des équipements dans la configuration des circuits lorsqu'aucun capteur ni aiguillage ne reste à placer.
- Le plan des circuits occupe toute la largeur disponible lorsque le bandeau est masqué.
# 2.2.4 (26/10/2026)
## Améliorations
- Numérotation des capteurs IR dans le plan des circuits pour identifier leur ordre de passage, même sur plusieurs lignes.
- Numérotation indépendante par piste et continue entre les zones avant et après l'aiguillage, actualisée lors des déplacements.
# 2.2.3 (26/10/2026)
## Corrections
- Les capteurs IR du plan des circuits reviennent à la ligne lorsque plusieurs capteurs se suivent dans une même zone, sans déborder sur la sortie ou l'aiguillage.
- Les noms longs restent lisibles dans la largeur disponible.
# 2.2.2 (26/10/2026)
## Corrections
- Conservation des RPM, du nombre de pas par révolution et de l'état des moteurs lors des modifications de configuration.
- Conservation de la valeur et des métadonnées des IR lors des modifications ; maintien du contexte d'édition jusqu'à confirmation de sauvegarde.
- Le seuil de calibration affiché n'est modifié qu'après confirmation du serveur ; un échec est signalé et conserve la valeur précédente.
- Conservation de l'état des LED lors des modifications de configuration.
- Tests de non-régression des seuils IR entiers et décimaux, des sauvegardes de calibration et des paramètres matériels.
# 2.2.1 (26/10/2026)
## Corrections
- Conservation du nombre de pas calibré (`nbStepForOpenOrClose`) lors de la sauvegarde de la configuration d'un moteur, au lieu de le remplacer par 512.
- La valeur par défaut de 512 pas reste appliquée aux moteurs sans calibration définie.
# 2.2.0 (23/10/2026)
## Ajouts
- **Mode débug des infrarouges pendant les scénarios**
- Activation avant le lancement ou pendant la course
- Graphique en direct par capteur IR utilisé : mesure en cm, seuil et état de détection
- Historique limité aux 300 dernières mesures par capteur et conservé à l'écran après la course
- Abonnement au flux débug uniquement lorsque les graphiques sont affichés, avec reconnexion automatique
- Compatible avec le matériel et le simulateur Firmata ; backend 2.2.0 requis
# 2.0.0 (06/10/2026)
## Version majeure
- **Circuit Management V2**
- Modes de course automatisés, chronos par circuit, classement et historique permanent
- Mode Fantôme fondé sur les meilleurs temps enregistrés par voiture
- Rôles IR explicites et sélection automatique des circuits, capteurs et aiguillages
- LEDs physiques clignotantes associées aux mouvements des aiguillages
- Commande manuelle extensible au clavier avec protection pendant les courses
- Manuel utilisateur entièrement réécrit selon les exigences retenues
- Suppression des feux tricolores, de la gestion des accidents et des délais de trois secondes
# 1.31.43 (06/10/2026)
## Améliorations
- **Raccourcis d’aiguillages extensibles**
- Sélection directe des neuf premiers aiguillages avec les touches 1 à 9
- Navigation circulaire dans une liste de taille quelconque avec les flèches haut et bas
- Affichage du raccourci disponible dans le tableau de commande
# 1.31.42 (06/10/2026)
## Ajouts
- **Commande manuelle au pavé numérique**
- Touches 1 à 4 pour sélectionner un aiguillage
- Touches + et − pour ouvrir ou fermer l’aiguillage sélectionné
- Mise en évidence de la sélection et protection des champs de saisie
# 1.31.41 (06/10/2026)
## Ajouts
- **Mode Fantôme**
- Référence basée sur le meilleur chrono historique de la même voiture et du même circuit
- Affichage du chrono fantôme et de l’avance ou du retard pendant la course
- Références fictives disponibles en mode simulé
# 1.31.40 (06/10/2026)
## Améliorations
- **Annonces de course**
- Annonce unique du dernier tour et de l’arrivée de chaque voiture
- Annonce du classement final dans l’ordre d’arrivée
- Mise en file des annonces et désactivation automatique si le scénario contient déjà des actions audio
# 1.31.39 (06/10/2026)
## Améliorations
- **Règles de course par mode**
- Saisie d’un objectif de tours ou de passages par circuit
- Arrêt automatique lorsque les deux voitures atteignent l’objectif
- Affichage de l’objectif dans la configuration du scénario
# 1.31.38 (06/10/2026)
## Corrections
- **Chronos en mode simulé**
- Initialisation immédiate des deux voitures dans le suivi de course
- Simulation des entrées et sorties des circuits secondaires I à IV
- Alimentation des chronos actifs, passages, cumuls et classement
- Affichage du tableau des chronos dès le départ de la simulation
# 1.31.37 (06/10/2026)
## Améliorations
- **Historique permanent des chronos**
- Ajout dans le tableau de bord de la liste demandée par le cahier des charges
- Affichage de la date, du pilote, de la voiture, de la voie et du type de course
- Affichage des tours et chronos des circuits principal et secondaires I à IV
- Affichage du cumul et d’une fenêtre de détail par résultat
- Compatibilité avec les anciens résultats incomplets, affichés avec un tiret
# 1.31.36 (06/10/2026)
## Améliorations
- **Affichage des chronos conforme au cahier des charges**
- Tableau des circuits secondaires I à IV pour les deux voitures
- Affichage en minutes, secondes et millisecondes (`mm:ss.SSS`)
- Chronomètre visible pendant le parcours entre l’entrée et la sortie
- Cumul des chronos et nombre de passages par circuit
- Association explicite des capteurs d’entrée/sortie au circuit chronométré
# 1.31.35 (06/10/2026)
## Améliorations
- **Suivi et résultat des courses**
- Affichage en direct du nombre de tours, du dernier tour et du meilleur tour par pilote
- Classement actualisé pendant la course
- Conservation du classement final à l’écran après l’arrêt
- Suppression de la création anticipée de résultats vides au lancement
# 1.31.34 (06/10/2026)
## Corrections
- **Emplacement physique et rôle des capteurs IR**
- Autorisation des capteurs d’entrée ou de sortie secondaire sur le circuit principal
- Suppression du filtrage et des alertes qui associaient à tort un rôle à un type de circuit
- Acceptation de plusieurs entrées ou sorties secondaires sur une même piste
- Présélection des capteurs par rôle fonctionnel, indépendamment de leur circuit physique
# 1.31.33 (06/10/2026)
## Corrections
- **Alertes de rôles IR hérités**
- Prise en compte du type du circuit avant de déduire le rôle d’un ancien capteur
- Priorité donnée aux positions d’entrée et de sortie sur l’ancien indicateur de comptage de tours
- Regroupement des doublons en une seule alerte par circuit, voie et rôle
- Suppression du cumul d’alertes « incompatible » et « doublon » pour le même capteur
# 1.31.32 (05/10/2026)
## Améliorations
- **Rôles explicites des capteurs infrarouges**
- Identification des capteurs de départ/arrivée principal, d’entrée secondaire et de sortie secondaire
- Filtrage des circuits compatibles lors de la configuration
- Déduction des rôles depuis les anciennes propriétés lorsque cela est possible
- Signalement des rôles manquants, dupliqués ou incompatibles
- Utilisation des rôles pour fiabiliser la présélection des équipements des scénarios
# 1.31.31 (05/10/2026)
## Améliorations
- **Modes de course et équipements automatiques**
- Ajout des six modes du cahier des charges et d’un mode personnalisé compatible avec les scénarios existants
- Présélection des circuits, capteurs IR et moteurs selon le mode choisi
- Aperçu des associations proposées avec signalement des équipements manquants ou ambigus
- **LED de mouvement des aiguillages**
- Association optionnelle d’une LED physique à chaque aiguillage
- Allumage pendant les mouvements automatiques, manuels, groupés et de calibration
- Extinction garantie à la fin du mouvement ou lors d’une erreur
# 1.31.30 (04/10/2026)
## Améliorations
- **Cr?ateur de scénario simplifié**
- Saisie manuelle multiligne conservée, avec création directe de l'aperçu puis enregistrement
- Texte conservé aprés génération et aperéu invalidé lors des modifications
- Capteurs IR et moteurs regroupés par circuit ou par piste dans un panneau repliable
- Insertion des équipements en toutes lettres dans le texte par un clic
- Ctrl + Entrée ou Cmd + Entrée pour créer l'aperçu
# 1.31.29 (02/10/2026)
## Sécurité
- **Configuration des sauvegardes réservée au serveur**
- Suppression de l’URI MongoDB, du chemin, de la rétention et du mode debug dans les requêtes du navigateur
- Lancement des sauvegardes avec une requête vide et une configuration contrôlée par le backend
# 1.31.28 (02/10/2026)
## Améliorations
- **Sécurisation des opérations de maintenance**
- Demande de confirmation avant la sauvegarde et la correction des broches Arduino
- Blocage des doubles lancements pendant une opération en cours
- Suivi de la sauvegarde jusqu’à sa fin réelle avec affichage du fichier créé ou de l’erreur rencontrée
- Bilan détaillé de la correction : cartes et broches vérifiées, modifications, équipements et références introuvables
- Rafraîchissement des Arduino sans rechargement complet de l’application
# 1.31.27 (02/10/2026)
## Améliorations
- **Navigation native avec Angular Router**
- Attribution d’une URL dédiée à chaque écran pour permettre les liens directs
- Prise en charge des boutons précédent et suivant du navigateur
- Remplacement du sélecteur manuel d’écrans par un `router-outlet`
- Conservation du chargement différé, de la nouvelle tentative et du préchargement existants
- Redirection des URL inconnues vers l’écran de course
- Réduction de `main.js` de 392 Ko à 299 Ko
# 1.31.26 (02/10/2026)
## Corrections
- **Nettoyage complet des ressources d’écran**
- Arrêt automatique des abonnements persistants de l’ancien écran de course
- Libération systématique des deux chronomètres lors de la fermeture de l’écran
- Annulation des requêtes du dashboard et de toutes ses temporisations de confettis à la destruction
- Audit des écrans différés, des événements socket et des timers restants
# 1.31.25 (02/10/2026)
## Améliorations
- **Fiabilisation des chargements différés**
- Centralisation et mise en cache des imports dynamiques
- Déduplication des chargements simultanés et nouvelle tentative automatique après un échec
- Affichage d’une erreur avec action « Réessayer » lorsqu’un écran ne peut pas être chargé
- Préchargement des écrans en arrière-plan au survol de la navigation
# 1.31.24 (02/10/2026)
## Améliorations
- **Chargement différé de l’aide et des informations**
- Chargement du manuel, du mode d’emploi et du changelog uniquement à leur première ouverture
- Suppression de la requête du changelog et du parseur Markdown au démarrage
- Réduction de `main.js` de 491 Ko à 388 Ko et du bundle initial de 1,65 Mo à 1,56 Mo
# 1.31.23 (01/10/2026)
## Améliorations
- **Allègement du module principal**
- Suppression des dépendances PrimeNG inutilisées au démarrage
- Isolation des anciens composants de course encore conservés pour compatibilité
- Suppression de l’écran de configuration agrégé remplacé par la navigation actuelle
- Réduction de `main.js` de 595 Ko à 491 Ko et du bundle initial de 1,87 Mo à 1,65 Mo
# 1.31.22 (01/10/2026)
## Améliorations
- **Chargement différé de tous les écrans de configuration**
- Création de points d’entrée distincts pour les circuits, Arduino, capteurs, moteurs, LED, voitures et pilotes
- Mutualisation des dépendances UI entre les écrans différés
- Réduction de `main.js` de 799 Ko à 595 Ko et du bundle initial de 2,06 Mo à 1,87 Mo
# 1.31.21 (01/10/2026)
## Corrections
- **Nettoyage automatique des abonnements**
- Arrêt des abonnements aux modèles et aux formulaires à la fermeture des composants
- Prévention des traitements dupliqués après plusieurs changements de section
- Protection des imports différés lorsque l’écran de configuration est fermé pendant leur chargement
- **Stabilité du changelog**
- Suppression de l’erreur Angular `ExpressionChangedAfterItHasBeenCheckedError` au chargement de la page
# 1.31.20 (01/10/2026)
## Améliorations
- **Chargement différé de l’éditeur de scénarios**
- Isolation de l’éditeur et de sa vue tabulaire dans un module fonctionnel différé
- Création d’un chunk dédié de 76 Ko chargé uniquement à l’ouverture de l’éditeur
- Affichage immédiat du dashboard et de l’éditeur dès la fin de leur chargement différé
- Réduction de `main.js` de 975 Ko à 797 Ko et du bundle initial de 2,13 Mo à 2,06 Mo
# 1.31.19 (01/10/2026)
## Améliorations
- **Chargement différé des graphiques**
- Chargement du tableau de bord et de la calibration infrarouge uniquement à leur ouverture
- Extraction de Chart.js dans un chunk partagé différé
- Réduction de `main.js` de 2,24 Mo à 975 Ko et du bundle initial de 2,37 Mo à 2,13 Mo
# 1.31.18 (01/10/2026)
## Améliorations
- **Réduction du bundle CSS initial**
- Remplacement de la feuille PrimeFlex complète par les 134 règles réellement utilisées
- Réduction du CSS initial de 427 Ko à 89 Ko
- Réduction du bundle initial total de 2,71 Mo à 2,37 Mo
# 1.31.17 (01/10/2026)
## Améliorations
- **Suppression des avertissements de budgets CSS**
- Extraction des styles de huit pages volumineuses vers un module global dédié
- Préfixage des sélecteurs par composant pour conserver leur isolation visuelle
- Conservation du budget strict de 4 Ko par feuille de composant
# 1.31.16 (01/10/2026)
## Améliorations
- **Finalisation de l’internationalisation TypeScript**
- Traduction des sauvegardes, scans, corrections de broches et erreurs du tableau de bord
- Traduction du résumé du générateur de scénarios et des notifications Socket
- Suppression complète de la baseline historique, désormais vide
# 1.31.15 (01/10/2026)
## Améliorations
- **Internationalisation du plan de circuit**
- Traduction des confirmations de placement et de dissociation des équipements
- Traduction du titre, du circuit associé par défaut et des erreurs d’enregistrement
- Réduction de 2 entrées supplémentaires de la baseline TypeScript
# 1.31.14 (01/10/2026)
## Améliorations
- **Internationalisation des commandes LED**
- Traduction des avertissements liés aux Arduino déconnectés
- Traduction des erreurs de commande avec le nom de la LED concernée
- Réduction de 4 entrées supplémentaires de la baseline TypeScript
# 1.31.13 (01/10/2026)
## Améliorations
- **Internationalisation du réglage des moteurs**
- Traduction des confirmations de rotation et de mise à jour
- Traduction des erreurs de rotation, de course, de position et de sens
- Réduction de 5 entrées supplémentaires de la baseline TypeScript
# 1.31.12 (01/10/2026)
## Améliorations
- **Internationalisation de l’ouverture manuelle**
- Traduction des états de connexion et de rotation des aiguillages
- Traduction des erreurs de commande, de moteur et de validation du nombre de pas
- Réduction de 6 entrées supplémentaires de la baseline TypeScript
# 1.31.11 (01/10/2026)
## Améliorations
- **Internationalisation du lancement de course**
- Traduction des annonces automatiques de passage et d’action
- Traduction des erreurs audio, des états du départ et du test de synthèse vocale
- Réduction de 11 entrées de la baseline TypeScript
# 1.31.10 (01/10/2026)
## Améliorations
- **Contrôle de l’internationalisation**
- Extension de l’audit aux notifications, erreurs affichées et annonces définies dans les fichiers TypeScript
- Ajout d’une baseline explicite des textes historiques pour empêcher toute nouvelle régression
- Détection des entrées de baseline devenues obsolètes après traduction
- Ajout de tests unitaires exécutés automatiquement par `npm run i18n:check`
# 1.31.9 (30/09/2026)
## Améliorations
- **Internationalisation de l’interface**
- Remplacement des textes statiques des écrans par des clés de traduction
- Centralisation des libellés, aides, infobulles, états vides et attributs d’accessibilité dans le catalogue français
- Ajout d’un contrôle automatisé des textes codés en dur et des clés de traduction manquantes
# 1.31.8 (30/09/2026)
## Améliorations
- **Organisation des styles**
- Extraction des règles de l’éditeur de topologie dans un module global dédié
- Réduction de la feuille racine aux styles communs et aux imports thématiques
- Conservation des styles de topologie hors du composant Circuit pour respecter son budget CSS
# 1.31.7 (30/09/2026)
## Améliorations
- **Suivi de course en temps réel**
- Typage des événements Socket.IO d’action, de capteur, de déclencheur, d’audio et de chronomètre
- Typage des historiques affichés et des références peuplées
- Sécurisation de la résolution des pilotes, voitures et circuits
- Typage explicite des minuteries du chronomètre et du compte à rebours
# 1.31.6 (30/09/2026)
## Corrections
- **Lancement des scénarios**
- Suppression du double pilotage des sélecteurs de pilotes et voitures par `ngModel` et formulaire réactif
- Le formulaire réactif devient l’unique source des participants envoyés au préflight et au lancement
- Suppression des états de sélection redondants
# 1.31.5 (30/09/2026)
## Améliorations
- **Organisation des styles**
- Extraction des styles globaux des pages de scénarios dans un module dédié
- Conservation de ces règles hors des composants pour ne pas aggraver leurs budgets CSS
- Remplacement du sélecteur global `::ng-deep` obsolète appliqué aux cartes PrimeNG
# 1.31.4 (30/09/2026)
## Corrections
- **Calibration des aiguillages**
- Fin de l’indicateur de rotation synchronisée avec la réponse réelle du backend
- Affichage d’un retour explicite après une rotation réussie ou échouée
- Restauration des valeurs précédentes lorsqu’une mise à jour ne peut pas être enregistrée
- Validation des nombres de pas et amélioration de l’accessibilité des commandes de rotation
# 1.31.3 (30/09/2026)
## Corrections
- **Contrats des scénarios**
- Alignement des actions LED et chronomètre avec les paramètres réellement acceptés par le backend
- Typage des actions par catégorie pour empêcher les combinaisons de paramètres invalides
- Prise en charge explicite des circuits peuplés, des chronos et de l’historique d’exécution
- Suppression du champ cible inutile lors de la sérialisation des actions chronomètre
# 1.31.2 (29/09/2026)
## Corrections
- **Navigation et fenêtres modales**
- Correction de la priorité d’affichage du MegaMenu
- Le menu reste au-dessus du contenu des pages sans recouvrir les masques et fenêtres modales PrimeNG
# 1.31.1 (29/09/2026)
## Améliorations
- **Harmonisation de l’interface**
- Uniformisation de toutes les pages actives avec la charte visuelle des écrans Circuit et Distance entre capteurs
- Ajout d’en-têtes, de résumés, d’états vides et de mises en page responsives cohérentes
- Modernisation des formulaires, tableaux, cartes, badges et actions principales
- **Configuration électronique**
- Refonte des écrans Arduino, capteurs infrarouges, calibration IR, aiguillages, calibration moteur et LED
- Clarification de la sélection des broches et des états du matériel
- Correction du débordement de la commande de rotation horaire
- **Courses et participants**
- Harmonisation des écrans Voitures, Pilotes, Scénarios, lancement de course et commande manuelle
- Présentation plus compacte des moteurs et commandes contextuelles plus lisibles
- **Supervision et aide**
- Refonte du Dashboard, du Mode d’emploi et de la fenêtre Version
- Amélioration de la lisibilité des indicateurs, graphiques, informations système et notes de version
# 1.31.0 (29/09/2026)
## Nouveautés
- **Configuration visuelle des circuits**
- Ajout d’un éditeur de disposition pour positionner les circuits sur une grille
- Déplacement des capteurs IR et des aiguillages par glisser-déposer entre les circuits et les pistes
- Ordonnancement des capteurs avant et après les aiguillages
- Configuration des connexions d’entrée et de sortie entre circuits
- Prise en charge des circuits en boucle et affichage de la topologie configurée
- **Scénarios de duel**
- Ajout d’un mode « premier arrivé » entre deux pistes
- Ouverture immédiate de l’aiguillage du premier pilote puis ouverture différée de l’autre aiguillage
- Réarmement automatique du duel pour les scénarios exécutés en boucle infinie
- Ajout d’un assistant de création de duel avec sélection des capteurs et aiguillages par piste
- Affichage des groupes de duel et du capteur adverse attendu dans la configuration des scénarios
- Suppression groupée des deux déclencheurs appartenant au même duel
- **Éditeur en langage humain**
- Reconnaissance des règles symétriques introduites par « mais si »
- Tolérance des articles, de la casse et de formulations légèrement incorrectes
- Mise en évidence des mots-clés, pistes, capteurs et aiguillages pendant la saisie
- **Conditions de scénario**
- Ajout de conditions basées sur le nombre de passages d’un autre capteur
- Configuration manuelle des opérateurs « au moins » et « moins de »
## Backend
- **Modèles de données**
- Ajout des positions de capteurs et de leur zone relative à l’aiguillage
- Ajout des connexions, du mode boucle et de la topologie des circuits
- Ajout des conditions et métadonnées de coordination aux déclencheurs de scénario
- **Moteur de scénario**
- Comptage des passages IR par capteur
- Coordination atomique des déclencheurs d’un duel et validation de leur réciprocité
- Nettoyage des états de duel au lancement et à l’arrêt d’un scénario
- **Tests**
- Ajout de tests sur les conditions de passage et le cycle « premier arrivé puis autre pilote »
# 1.29.3 (25/09/2026)
## Nouveautés
- **Scénarios en cours**
- Affichage de la vitesse moyenne estimée de chaque pilote entre deux capteurs infrarouges
- Calcul à partir de la distance configurée et du temps mesuré entre les passages
- Affichage du tronçon, de la distance et de la durée utilisés pour l’estimation
# 1.29.2 (24/09/2026)
## Corrections
- **Scénarios**
- Libération des abonnements aux scénarios, pilotes et voitures à la fermeture de l'écran de lancement
- Centralisation du verrou d'exécution des scénarios dans le service backend
- Libération des ressources et du verrou lorsqu'un lancement de scénario échoue
- Refus d'arrêter une course lorsqu'un autre identifiant de scénario est demandé
- Validation et confirmation par le backend du signal de départ Socket.IO
- Démarrage du signal « Go » et du chronomètre uniquement après confirmation du serveur
- Annulation du départ lorsque la connexion temps réel est indisponible
- Affichage dans la fenêtre de lancement des erreurs de connexion Arduino retournées par le backend
- **Connexion temps réel**
- Centralisation de l'adresse Socket.IO dans la configuration d'environnement
- Réutilisation de la connexion Socket.IO partagée pendant la calibration infrarouge
- Compatibilité de la calibration avec une installation distante ou derrière un proxy
- Restriction des connexions Socket.IO aux origines autorisées par le serveur
- **Stabilité du serveur**
- Arrêt contrôlé du backend après une erreur fatale
- Fermeture des connexions HTTP, Socket.IO, MongoDB et des cartes Arduino avant l'arrêt
- Conservation du serveur en fonctionnement lorsqu'une carte Arduino signale un timeout après sa fermeture
- Conservation du serveur en fonctionnement lorsque MongoDB est temporairement indisponible
- Journalisation et diagnostic de santé des erreurs de connexion MongoDB sans exposition des informations sensibles
- Fermeture propre des ressources lors de l'arrêt du lanceur ou du système
- Conservation du serveur en fonctionnement lorsqu'un port série Arduino est absent
- Interception précoce des erreurs `firmata-io` pendant l'ouverture d'un port série
- Annulation propre du lancement d'un scénario lorsque son matériel requis est indisponible
- **Sauvegardes MongoDB**
- Masquage des identifiants et mots de passe MongoDB dans les journaux de sauvegarde
- **Validation des données**
- Application des validateurs Mongoose lors des mises à jour des configurations
- **API**
- Uniformisation des erreurs HTTP au format JSON
- Gestion explicite des identifiants invalides, erreurs de validation et doublons
- Masquage des détails internes lors des erreurs serveur
- **Tests**
- Rétablissement de la suite de tests Angular avec la configuration applicative réelle
- Isolation des tests des connexions HTTP et Socket.IO externes
- **Formulaires**
- Suppression du double binding déprécié dans la sélection des circuits d'un scénario de course
- Nettoyage du composant de configuration des scénarios de course
- Nettoyage du composant de configuration des LED
# 1.29.1 (24/09/2026)
## Corrections
- **Restauration MongoDB**
- Correction de l'extraction des sauvegardes ZIP lorsque leur chemin contient des espaces
- **Gestion des LED**
- Vérification de la connexion de l'Arduino avant d'allumer ou d'éteindre une LED
- Désactivation des commandes lorsque l'Arduino associé est déconnecté
- Conservation de l'état courant de la LED en cas d'échec de la commande matérielle
# 1.29.0 (23/09/2026)
## Nouveautés
- **Packages**
- Mise à jours des packages npm
# 1.28.2 (22/09/2026)
## Nouveautés
- **Gestion arduino**
- Gestion des arduinos via un gestionaire unique et centralisé
# 1.28.0 (21/09/2026)
## Nouveautés
- **Calibration infrarouge**
- Ajout d'un overlay pendant la connexion à l'arduino et l'attente des valeurs
- **IR distances**
- Ajout du diagramme des distances entre infrarouge
# 1.27.11 (20/09/2026)
## Nouveautés
- **Scenario**
- Ajout de récapitulatif compréhensibles de la course
- Ajout de synthèse vocale
# 1.27.10 (18/09/2026)
## Mise à jour
- **Scenario**
- Changement du sens de rodation des moteurs
# 1.27.5 - 1.27.9 (17/09/2026)
## Nouveautés
- **Scenario**
- Mise à jour du lancement des scénarios
# 1.27.4 (16/09/2026)
## Nouveautés
- **Installation et Mise à jour**
- Changement de façon d'installation et mise à jour du logiciel
# 1.27.1 (13/09/2026)
## Nouveautés
- **Travail sur les scénarii**
# 1.27.0 (11/09/2026)
## Nouveautés
- **Correction de la connexion Arduino**
- **Correction du temps d'attente de l'ouverture manuelle des moteurs**
- **Correction de la visualisation des led infrarouges**
# 1.26.0 (09/09/2026)
## Nouveautés
- **Correction de la connexion Arduino**
- **Correction de l'initialisation du menu**
- **Correction de l'intialisation du dashboard**
- **Correction de labels flotants de champs**
---
# 1.25.0 (17/09/2025)
## Nouveautés
- **Statuts Arduino**
- Affichage global (pastille de couleur en fonction de la moyenne des connexions).
- Détail des statuts individuels de chaque Arduino dans le menu principal.
---
# 0.0.1 → 1.24.0
## Gestion des composants
- **Arduino**
- Ajout, modification et suppression.
- Vérification de la cohérence des pins (détection des conflits d’occupation).
- **LEDs**
- Création et gestion des LEDs connectées.
- **Capteurs infrarouge**
- Ajout, suppression et édition.
- Calibration et seuils de détection configurables.
- **Moteurs (aiguillages)**
- Ajout, suppression et édition.
- Calibration complète.
- Commande manuelle : ouverture/fermeture directe.
- **Voitures et pilotes**
- Ajout, suppression et édition.
- **Circuits**
- Définition des circuits (nom, numéro, type primaire/secondaire).
- **Scénarios de course**
- Création, modification et suppression.
- Définition des actions avec déclencheurs basés sur capteurs infrarouge, compteurs de passages et moteurs associés.
### Fonctionnalités avancées
- **Mode d’emploi intégré**
- Accès à un guide interactif dans l’application.
- **Visualisation de la version**
- Affichage clair de la version courante de l’application.
- **Sauvegarde de la base de données**
- Export et restauration de l’état complet.
- **Dashboard statistiques**
- Vue globale de l’activité, performances et état des capteurs/moteurs.