About RaceMarshal
Version
v1.25.6
Changelog
v1.25.6 — 2026-05-24
- 3e niveau d'override des conditions de course : chaque manche d'une soirée peut désormais avoir ses propres conditions (météo, durée, vitesse du temps, pneus, carburant). Cas d'usage : soirées d'endurance doublées (jour ensoleillé + nuit orageuse) avec des conditions distinctes par manche.
- Wrapper orange « Conditions de cette manche » visible à l'édition d'une manche existante, juste sous le wrapper vert « Conditions de cette soirée ». Sans saisie, les conditions de la soirée s'appliquent automatiquement.
- Bouton « Réinitialiser tout » côté soirée et côté manche : un clic + confirmation pour repasser tous les overlays du niveau en mode hérité.
- Fil d'Ariane 3 niveaux à l'édition d'une manche (Championnat › Soirée du JJ/MM › Manche N) pour repérer instantanément le niveau d'édition.
- Météo regroupée dans le bloc « Conditions de cette soirée » avec les autres champs (avant, le sélecteur de météo était séparé). Tout est maintenant uniforme.
- Correctif technique : à la création d'une nouvelle soirée, les overrides saisis (pneus, usure, carburant, heure in-game) sont désormais bien sauvegardés. Avant, ils pouvaient être ignorés silencieusement.
v1.25.5 — 2026-05-24
- Édition d'une soirée : la modification d'une condition de course (durée, météo, pneus, vitesse du temps…) reste désormais propre à la soirée et n'impacte plus le championnat. Avant, une modification pouvait remonter au championnat et affecter toutes les autres soirées.
- Indication visuelle claire du niveau d'édition : fond bleu pour les conditions globales du championnat, fond vert pour les conditions d'une soirée. Plus de confusion entre les deux écrans.
- Chaque champ override affiche désormais un badge « hérité » ou « personnalisé » + un bouton « Réinitialiser » pour repasser facilement en mode hérité du championnat.
- Saisir une valeur identique au championnat ne réinitialise plus automatiquement le champ en mode hérité (comportement source de confusion). Utilisez le bouton « Réinitialiser » pour repasser en mode hérité.
- Préparation technique du 3e niveau « manche » (override individuel pour une manche au sein d'une soirée endurance doublée). L'interface dédiée arrivera prochainement.
v1.25.4 — 2026-05-22
- Boutons d'action directement dans la notification push : sur les demandes de licence, demandes d'accès tenant, rappels de confirmation et promotions liste d'attente, deux boutons cliquables apparaissent désormais sur la notification système (« Valider » / « Refuser », « Approuver » / « Refuser », « Confirmer » / « Forfait », « Accepter » / « Décliner »).
- Plus besoin d'ouvrir l'app : l'action est exécutée en un clic depuis la notification, où que vous soyez sur votre téléphone ou votre PC.
- Sur iPhone et iPad, les boutons d'action ne sont pas supportés (limitation Apple) — la notification s'affiche normalement et un clic ouvre l'app pour agir.
- Sécurité : les actions sont signées et expirent au bout de 15 minutes. Si un autre admin a déjà traité la demande, vous recevez un message « Déjà traité ».
- Cette version termine la série v1.25 dédiée aux notifications push.
v1.25.3 — 2026-05-22
- Notifications push proposées automatiquement après votre première connexion : un petit message d'invitation apparaît en bas de votre écran avec un bouton « Activer » direct. Plus besoin d'aller chercher l'option dans votre profil.
- Bannière d'invitation sur la page d'accueil pour les utilisateurs déjà inscrits : un rappel discret pour activer les notifications, fermable d'un clic et qui ne réapparaîtra plus une fois ignoré.
- Le message d'invitation ne s'affiche que si votre navigateur supporte les notifications et que vous n'avez pas encore activé sur cet appareil.
v1.25.2 — 2026-05-22
- Notifications push sur iPhone / iPad : un guide d'installation pas-à-pas (page « /help/install-pwa ») explique comment ajouter RaceMarshal à l'écran d'accueil iOS pour activer les notifications.
- Détection automatique du système : si vous consultez RaceMarshal depuis un iPhone ou iPad sans avoir installé l'app, un message d'aide apparaît dans votre profil avec un lien direct vers le guide.
- Les utilisateurs sous iOS antérieur à 16.4 sont informés que les notifications push nécessitent une mise à jour de leur système.
v1.25.1 — 2026-05-22
- Validation de licences depuis le téléphone : la page admin « Licences » est désormais utilisable mobile. Après réception d'une notification push « Demande de licence », vous pouvez valider ou rejeter directement depuis votre téléphone, sans devoir ouvrir l'ordinateur.
- Validation d'accès tenant depuis le téléphone : même chose pour la page admin « Membres → En attente ». Approuvez ou rejetez les demandes d'accès directement depuis votre téléphone.
- Boutons d'action plus grands sur mobile (minimum 44 pixels) pour une utilisation tactile confortable.
v1.25.0 — 2026-05-22
- Notifications push : activez les notifications de l'application directement sur votre téléphone ou ordinateur, même quand l'app est fermée. Rendez-vous dans votre profil, section « Notifications push », et cliquez sur « Activer sur cet appareil ». Multi-appareils : vous pouvez activer plusieurs téléphones / PC indépendamment.
- Lorsque l'admin valide une licence, qu'un membre est promu sur une liste d'attente, qu'une soirée est reportée, ou tout autre événement important — vous recevez une notification système sur l'écran de verrouillage de votre téléphone et un clic vous ouvre directement la page concernée.
- Sur iPhone : les notifications nécessitent d'installer l'application en l'ajoutant à l'écran d'accueil (limitation Apple). Un guide d'installation sera ajouté prochainement.
- Première livraison de la série v1.25 — d'autres améliorations push (mobile admin, guide iPhone, boutons d'action directs sur la notif) arrivent dans les prochaines versions.
v1.24.2 — 2026-05-21
- Demande de licence : les admins du tenant reçoivent désormais une notification dès qu'un pilote demande une licence saison ou championnat. Avant, la demande dormait dans /admin/settings sans alerte tant qu'aucun admin n'allait consulter l'onglet Licences.
- Agenda : les championnats d'une même simulation se distinguent maintenant visuellement par 3 niveaux de bordure latérale (épaisse / moyenne / fine selon l'ordre de création), tout en conservant la couleur de fond identifiant la simulation. Les soirées Open (événements uniques) gardent le fond de leur simulation et arborent une bordure violette + un badge « OPEN » pour les repérer immédiatement.
- Agenda : mode sombre désormais pleinement supporté (avant : palette claire forcée même en dark mode système). Contrastes ajustés pour une lecture optimale dans les deux thèmes.
v1.24.1 — 2026-05-20
- Conditions de course : correction du bouton Enregistrer. Vos modifications sur la vitesse du temps, la météo, le nombre de pneus, l'usure, la consommation et l'heure de départ in-game sont désormais bien sauvegardées.
- Conditions de course : les nouvelles valeurs s'affichent immédiatement sur les cartes du championnat et sur la page détail (avant : seules les valeurs initiales par défaut étaient affichées même après modification).
- Mise en page : alignement vertical des champs « Pneus », « Usure », « Consommation » et « Heure de départ in-game » dans le formulaire de paramètres.
v1.24.0 — 2026-05-20
- Conditions de course : 4 nouveaux réglages par championnat (nombre de pneus, usure des pneus, consommation carburant, heure de départ in-game) avec possibilité d'override par soirée. Les pilotes voient ces infos en un coup d'œil sur les cartes et la page détail.
- Affichage carte championnat : nouvelle ligne synthétique « 🕐 14:00 · ⏩ ×1 · 🛞 ∞ · ≈ ×1 · ⛽ ×1 » qui résume les 5 conditions. Le symbole ∞ apparaît quand les pneus sont illimités.
- Page détail événement : nouveau panneau « Conditions de course » sur 4 pages (résumé, détail championship, résultats public, résultats admin).
- Mise en page carte : la date de la prochaine manche s'affiche sur une seule ligne « PROCHAINE MANCHE LE 21/04/2026 À 22:00 » (plus compact).
- Layout adaptatif : les cartes championship choisissent automatiquement entre 1, 2 ou 3 colonnes selon la place disponible — toujours lisibles, jamais écrasées.
v1.23.4 — 2026-05-18
- Message de confirmation après duplication d'une soirée : disparaît désormais automatiquement après 3 secondes (auparavant, le message vert restait affiché jusqu'au rechargement de la page). Même comportement pour la régénération de la liste et le replanning de soirée.
- Récupération d'un championnat annulé par erreur : nouveau bouton « Restaurer en brouillon » sur la page de gestion du championnat. Les inscriptions et résultats existants sont conservés ; le championnat redevient invisible aux Members jusqu'à la prochaine publication.
- Récupération d'un championnat publié sans résultats : possibilité de repasser en brouillon pour corriger une faute de frappe ou une erreur de paramétrage, tant qu'aucune manche n'a de résultats publiés. Le bouton est désactivé avec une explication si des résultats existent.
- Auditabilité : chaque restauration en brouillon est tracée dans le journal admin (qui, quand, depuis quel statut).
v1.23.3 — 2026-05-18
- Heures d'événement : correction d'un décalage de 2h. Vous saisissez 20h, l'application affiche bien 20h partout (avant : 18h affichées partout).
- Édition d'une soirée : le formulaire pré-remplit l'heure correcte (avant : 2h de décalage qui provoquait un drift à chaque enregistrement).
- Ajout d'une manche : l'heure proposée (+1h) est désormais cohérente avec celle de la manche précédente.
- Affichage uniforme : My Races, agenda, événements publics et notifications de report montrent toutes les heures en France (avant : heure UTC brute par endroits).
- Création de championnat : nouveaux boutons « Tout sélectionner » / « Tout désélectionner » sur les listes de classes et de voitures. Pour LMU multi-classes : 1 clic au lieu de 50+.
v1.23.2 — 2026-05-16
- Pénalités : désormais appliquées au classement général du championnat (au lieu de la manche seule). Un pilote pénalisé voit son total cumulé baisser même s'il finit dernier — total négatif possible.
- Classement championnat : nouvelle colonne « Pénalités » affichée en rouge si le pilote a des sanctions actives.
- Pop-up d'application de pénalité : liste des sanctions désormais triée par ordre alphabétique (au lieu de par valeur). Recherche facilitée quand le catalogue est long.
- Bonus de course préservés : les points bonus ne sont plus écrasés lorsqu'une pénalité est appliquée (correction d'un bug latent).
v1.23.1 — 2026-05-16
- Bandeau de navigation : image décorative de voiture LMP à droite (desktop uniquement) pour renforcer l'identité visuelle de la plateforme.
v1.23.0 — 2026-05-15
- Améliorations sous le capot — performance, qualité du code, accessibilité (lecteurs d'écran) sur la page de gestion des manches.
v1.22.0 — 2026-05-15
- Page Classes de voitures (admin) : compteur d'utilisation sur chaque modèle (inscriptions + voitures rattachées) — signal clair quand un modèle peut être supprimé sans casse.
- Confirmation visuelle ✓ après chaque sauvegarde inline (ordre, couleur, statut Paid/DLC).
- Sélecteur de classe de remplacement : affichage du logo coloré de chaque classe — plus rapide à scanner.
- Bouton « Réinitialiser la couleur » avec icône claire (rotation) au lieu de l'ancien « × » ambigu, plus tooltip au survol.
- Édition du logo : la fenêtre s'ouvre désormais proche du bouton cliqué (auto-scroll si nécessaire). Plus de fenêtre perdue en bas de page.
- Picto « DLC payant » affiché uniquement quand le toggle Paid est activé (cohérent visuellement).
- Toutes les fenêtres de confirmation du référentiel sont accessibles aux lecteurs d'écran.
v1.20.9 — 2026-05-14
- Publication des résultats : un clic sur Dépublier affiche désormais un message clair (succès ou erreur) au lieu d'un blocage silencieux nécessitant un rafraîchissement.
v1.20.8 — 2026-05-14
- Mode sombre : le contraste des notifications « non lues » du dropdown du bell a été corrigé (texte auparavant illisible sur fond bleu pastel).
- Paddock — résultats de course par classe : sur les championnats multi-classes (type WEC : Hypercar / LMP2 / LMGT3 / LMGTE), la carte « résultats de la dernière course » est désormais décomposée en une carte par classe. Plus de top 5 mixte illisible toutes classes confondues.
v1.20.6 — 2026-05-14
- Renforcement du périmètre Membre : finalisation des protections sur le profil, les courses, les équipes et les notifications (un seul item reste différé — la pagination des classements championship, qui demande une refonte plus profonde).
- Détail Équipe : les 5 fenêtres de confirmation (exclure, transférer, quitter, retirer, supprimer) sont homogènes (mêmes libellés, désactivation pendant traitement, accessibles aux lecteurs d'écran).
- Création / édition d'équipe : formulaire unifié entre les deux pages (mêmes champs, mêmes validations, même expérience).
- Profil : message d'erreur générique affiché (au lieu d'une erreur technique) en cas de problème inattendu lors de la création/édition d'une équipe. L'admin retrouve le détail dans les logs.
- Notifications : « Tout marquer comme lu » suivi d'un rafraîchissement automatique pour intégrer les notifications arrivées entre-temps. Liens nettoyés des espaces parasites avant redirection.
- Navigation : le nom d'utilisateur de secours (quand le pseudo n'est pas renseigné) est désormais traduit dans les 4 langues de l'app.
v1.20.5 — 2026-05-14
- Détail Championnat : page plus réactive, notamment en mode équipe (vérification des licences allégée).
- Détail Championnat mode Relay : chargement de la liste « équipes engageables » plus rapide.
- Accepter une invitation d'équipe : la page de prévisualisation des transferts est plus rapide, surtout quand on a beaucoup d'inscriptions actives.
v1.20.4 — 2026-05-14
- Périmètre Membre : harmonisation visuelle du fond d'arrière-plan des fenêtres (équipe et championnat). Aspect cohérent partout.
- Bandeau d'erreur : icône remplacée par un SVG net (au lieu de l'émoji unicode qui s'affichait inégalement selon les navigateurs).
v1.20.3 — 2026-05-14
- Profil : protection contre les double-clics rapides sur les préférences (langue + 3 toggles notifications email). Pendant l'enregistrement, les contrôles sont désactivés. Plus de risque de double-save accidentel.
- Confirmation rapide d'inscription depuis la liste des championnats : message dédié quand l'inscription a été traitée entretemps par un autre onglet ou annulée par l'organizer (au lieu d'une erreur générique).
- Détail équipe : protection lors du transfert du rôle manager. Si un autre manager a transféré entretemps (depuis un autre appareil/onglet), un message clair s'affiche au lieu d'une erreur technique.
- Détail Championnat (mode Relay) : empêche d'ouvrir la fenêtre d'engagement d'équipe pendant qu'une soumission précédente est en vol.
v1.20.2 — 2026-05-14
- Détail Championnat : onglet Engagés paginé à 25 inscrits par page (anti-surcharge sur les championnats à grosse fréquentation). Le total et la répartition par classe restent affichés en haut.
- Mes Courses : historique des résultats paginé à 25 courses par page. Plus de lag sur les comptes anciens avec long historique.
- Page d'accueil Championnats : la liste de simulations filtres est plafonnée à 100. Au-delà, un message invite à contacter le support.
- Robustesse : si les classes autorisées d'un championnat sont corrompues, la page reste fonctionnelle (filtre ignoré) et l'admin retrouve le problème dans /admin/logs.
v1.20.1 — 2026-05-14
- Sécurité renforcée sur les pages publiques (Championnats, Entryliste, Détail Championnat) : protection contre les accès non autorisés par lien manipulé.
- Profil : un membre ne peut plus modifier le profil d'un autre, même via un lien manipulé. Couvre les 7 actions du profil (nom, avatar, langue, préférences email…).
- Détail Championnat : les actions de paiement et d'inscription sont protégées contre les liens manipulés.
- Avatar de profil : validation renforcée du fichier (PNG/JPG/WEBP uniquement, 1 MB max, déduplication automatique). Bloque les fichiers malveillants déguisés en image.
- Traçabilité étendue : 24 actions du membre désormais tracées dans les logs admin (profil, mes courses, équipes, annonces…).
- Entryliste publique : action attribuée à « Public » dans les logs admin (au lieu de vide).
v1.20.0 — 2026-05-13
- Sécurité des uploads d'images renforcée : tous les uploads admin (logo, favicon, bannières, bibliothèque d'images) passent par une validation en profondeur (extension + contenu réel du fichier). Seuls PNG, JPG, WEBP et ICO sont acceptés. Bloque les fichiers malveillants déguisés en image.
- Paiement HelloAsso plus tolérant aux pannes : en cas de courte indisponibilité côté HelloAsso, le système retente automatiquement jusqu'à 3 fois avec délai croissant. L'utilisateur ne voit rien si la panne se résorbe en quelques secondes. Les erreurs métier (paiement refusé, token invalide) restent immédiates et visibles.
- Octroi manuel de licence : devise configurable. La devise affichée sur les paiements manuels utilise désormais celle paramétrée dans les réglages. Plus de « EUR » imposé en dur.
- Page Paiements : pagination tronquée. Pour les volumes élevés (>25 paiements), la navigation s'affiche en mode « 1 … 9 10 11 … 20 » (max 7 boutons + ellipses) au lieu de la liste complète. Lecture beaucoup plus claire sur les gros historiques.
- Logs : trace de la consultation par un admin. Chaque ouverture de Settings → Logs par un admin est désormais inscrite dans la table elle-même (avec son nom). Empêche un admin malveillant de consulter les logs sans laisser de trace. Bonus : désélectionner « Toutes les saisons » efface aussi les dates remplies automatiquement (plus de « dates fantômes »).
- Performance Admin : page Admin plus réactive sur les gros volumes. Page Paiements : tri des saisons par date la plus récente d'abord (correction d'un bug d'ordre alphabétique).
- Admin Settings : carte « Payment Coming Soon » obsolète retirée, indicateurs verts homogénéisés sur tous les sous-onglets sauvegardés, fenêtre HelloAsso harmonisée. Saisie Email Provider plus robuste. Tâche de fond optionnelle pour nettoyer les fichiers uploadés orphelins.
v1.19.1 — 2026-05-11
- Paddock (encadré classement temps réel à droite de l'écran, desktop large) : pour les championnats multi-classes (type WEC avec Hypercar, LMP2, LMGT3, LMGTE), le classement est désormais décomposé par classe — une carte distincte par classe au lieu d'un classement mixte illisible mélangeant des positions équivalentes entre catégories différentes. Mono-classe inchangé.
- Icônes météo refondues avec un design plus net et cohérent (source officielle Lucide Icons) : les pictos Soleil, Soleil-Nuage, Nuage, Bruine, Pluie, Pluie-Vent, Orage et Goutte sont visibles sur l'encart météo des cards événements et le panel détail de chaque course.
v1.19.0 — 2026-05-10
- Vitesse du temps simulé : nouveau champ « ×N » paramétrable au niveau du championnat (avec override possible par soirée). Affichée sous forme de badge sur les cards des événements et permet d'afficher la durée perçue par les pilotes (ex : « 1h réelle / 12h simulée » pour une course en accéléré ×12).
- Météo qualitative manuelle : l'organisateur peut indiquer la météo annoncée pour son championnat ou une soirée spécifique (Beau, Nuageux, Couvert, Averses, Pluie, Déluge, Orage). Affichée publiquement avec icône distinctive et tag « Saisie organisateur ».
- Prévisions météo automatiques (Yr.no / MET Norway) : un encart météo apparaît sur la page détail de chaque événement à venir, avec température et probabilité de pluie pour la date prévue. Disponible pour les visiteurs publics. Pré-seedé pour 14 circuits LMU emblématiques (Spa, Le Mans, Monza, Imola, Bahrain, Barcelona, Algarve, COTA, Fuji, Interlagos, Lusail, Paul Ricard, Silverstone, Sebring) ; les autres circuits peuvent être complétés via /admin/referential.
- Page détail événement : nouveau panel « Conditions de course » avec icône grande, conditions, température et taux de pluie. Border accent bleu si saisie manuelle organizer. Fail soft : panel absent si aucune donnée.
- Encart météo cliquable : un clic sur l'icône (carte ou panel) ouvre un nouvel onglet vers Yr.no avec graphique horaire complet, alertes officielles et carte interactive — même fournisseur que la prévision affichée pour cohérence stricte.
- Référentiel circuits (admin) : ajout de deux champs Latitude / Longitude éditables depuis /admin/referential. Permet d'activer les prévisions météo sur tout circuit (au-delà des 14 LMU pré-seedés). Saisie en degrés décimaux, sauvegarde automatique.
v1.18.3 — 2026-05-10
- Import des résultats — fenêtre de réconciliation des modèles de voitures : la liste de propositions est désormais regroupée par classe de voiture (un sous-titre par classe : Hypercar, LMP2, GT3…) et triée alphabétiquement à l'intérieur de chaque groupe. Plus de scroll à l'aveugle sur 30+ modèles mélangés.
- Import des résultats — fenêtre de réconciliation des circuits : quand un circuit du fichier correspond à un circuit existant, l'action proposée par défaut devient « Mapper sur une variante existante » au lieu de « Créer une variante ». Si le circuit n'a qu'une seule variante, elle est pré-sélectionnée automatiquement. S'il en a plusieurs avec une « Default », c'est elle qui est pré-sélectionnée. Réduit fortement le risque de créer accidentellement des doublons à l'import.
- Import des résultats — wording clarifié : la fenêtre de réconciliation des classes et modèles parle désormais explicitement de « renommer » plutôt que « mapper », et un message d'aide rappelle que l'entité sélectionnée sera renommée et que toutes les courses passées afficheront ce nouveau nom. Plus de doute sur l'effet rétroactif de l'action.
- Page Organiser : la case « Événements en cours » est désormais cochée par défaut — les championnats actifs apparaissent dès l'ouverture de la page sans avoir à filtrer manuellement à chaque session.
- Sélecteur de circuit (formulaire d'ajout/édition d'une soirée) : largeur du champ augmentée et libellé complet « Circuit · Variante » désormais visible sous le champ après sélection (utile pour les noms longs comme « Autodromo Nazionale Monza · Variante Endurance »). Un tooltip au survol affiche aussi le texte complet sur desktop.
- Import des résultats — fenêtre de réconciliation : le mécanisme « Renommages suggérés » est devenu plus simple et direct. Plus de radio « Mettre à jour / Garder » : chaque renommage est appliqué par défaut (case cochée) et l'admin n'a qu'à décocher les lignes à laisser inchangées. État visuel clair (case cochée vs décochée + barré). Click sur la ligne entière pour basculer.
- Import des résultats — fenêtre de réconciliation des circuits : harmonisation visuelle de l'IHM avec celle des classes/modèles (même style de cartes, espacement et typographie). Les champs Circuit et Variante apparaissent désormais côte-à-côte (au lieu d'empilés) pour gagner en lisibilité. Comportement fonctionnel inchangé.
v1.18.2 — 2026-05-08
- Correction d'un bug bloquant lors de la création ou l'édition d'une soirée de championnat : le bouton « Créer » / « Enregistrer » était inerte (aucune action visible). Désormais le sélecteur de circuit propose la liste hiérarchique « Circuit · Variante » (cohérent avec le reste de l'application post-refonte v1.18.0) et la sauvegarde s'effectue normalement.
v1.18.0 — 2026-05-08
- Refonte des circuits : un même circuit physique (ex: Spa-Francorchamps) regroupe désormais ses différentes variantes courables (Endurance, GP, Default WEC…) dans une hiérarchie claire. L'ancien modèle plat où chaque variante était un circuit distinct disparaît au profit d'une vue plus naturelle : 1 lieu = 1 entrée, N tracés.
- Affichage cohérent partout : « Circuit · Variante » dans les listes (championships, résultats, agenda, mes courses, classements, hall of fame, page d'inscriptions). Si le circuit n'a qu'une seule variante (cas singleton), seul le nom du circuit s'affiche pour éviter le bruit visuel.
- Nouveau picker de circuit dans les formulaires admin : tape les premières lettres et choisis directement la variante voulue, au lieu de jongler entre 2 menus déroulants. Fonctionne sur la création one-shot et l'édition de championnat.
- Page admin /admin/referential refondue : sous-onglet « Circuits » avec hiérarchie pliable (cliquer sur un circuit déplie ses variantes), édition séparée du nom du circuit et de chaque variante, suppression cascade avec confirmation et compteur d'impact (combien de manches/résultats seront affectés).
- Import de résultats plus robuste : si le fichier mentionne une variante non reconnue (ex: « Paul Ricard 1A-V2-Short »), une fenêtre de réconciliation propose 3 actions claires — créer la variante sous le circuit existant, mapper sur une variante existante, ou traiter plus tard.
- Référentiel des classes et modèles de voitures simplifié : un nom unique par classe et par modèle, plus d'aliases multi-noms qui s'accumulaient à chaque import. Si le fichier d'import utilise un nom différent (ex: « Hyper » vs « Hypercar » dans le référentiel), la fenêtre de réconciliation propose désormais de renommer directement votre entrée — affichage rétroactif aligné sur tous vos championnats passés sans toucher aux résultats. Plus simple, plus pérenne.
- Migration data automatique sur déploiement : tous vos championnats existants sont automatiquement migrés vers la nouvelle structure. Les logos, les DLCs assignés et les inscriptions sont conservés à l'identique. ⚠️ Côté admin technique : pg_dump de la prod obligatoire avant déploiement (la migration est non-réversible).
v1.17.4 — 2026-05-06
- Correction d'un bug bloquant à la publication des résultats : sur un événement encore au statut « En cours », cliquer « Publier » ne faisait plus rien (pas de message, pas de feedback) et imposait un rafraîchissement de la page. Désormais l'événement passe automatiquement en « Résultats à publier » puis « Clos » lors de l'action — sémantique cohérente : publier des résultats implique que l'événement est terminé. Un message d'erreur clair s'affiche aussi en cas d'autre problème inattendu.
v1.17.3 — 2026-05-05
- Import des résultats plus fluide et durable : lorsqu'une classe ou un modèle de voiture du fichier (ex: « Hyper » exporté par LMU au lieu de « Hypercar ») n'est pas reconnu, la fenêtre de réconciliation qui s'affiche déjà pour les renommages propose désormais aussi un menu déroulant pour mapper en 1 clic vers une entrée existante du référentiel. Plus jamais d'inscription bloquée silencieusement parce que le fichier utilise un nom différent.
- Mémorisation pérenne : une case à cocher « Mémoriser ce nom pour les imports futurs » (cochée par défaut) adopte le nom du fichier comme alias durable de la classe ou du modèle choisi. Au prochain import du même fichier, ces noms matchent automatiquement et la fenêtre ne s'affiche plus.
- Catalogue LMU enrichi : les alias « Hyper » et « LMP2_ELMS » sont désormais reconnus nativement (formes utilisées par les exports XML LMU).
- Correction d'un bug pré-existant : les renommages mémorisés (alias) sont désormais correctement appliqués lors d'un nouvel import.
v1.17.2 — 2026-05-04
- Nouveau : les organisateurs peuvent désormais inscrire eux-mêmes un membre existant à un championnat. Bouton « + Inscrire un membre » disponible directement sur la page principale du championnat (sous le titre) ainsi que sur la page d'inscriptions d'une soirée. L'inscription est propagée automatiquement à toutes les sessions du championnat, avec choix de la classe et du modèle de voiture.
- Nouveau : les administrateurs peuvent octroyer manuellement une licence (saison ou championnat) à un membre depuis /admin/payments — utile pour gérer les pilotes VIP, les paiements hors plateforme, ou tout cas particulier nécessitant une licence sans passage par le checkout HelloAsso. Chaque octroi laisse une trace dans le journal de paiements avec le motif renseigné.
- Le membre inscrit (ou bénéficiaire d'une licence) reçoit immédiatement une notification + un email pour l'informer de l'action.
v1.17.1 — 2026-05-04
- Correction d'un bug critique : un championnat en brouillon dont une manche avait une date passée voyait silencieusement son statut basculer côté serveur (« Résultats en attente » au lieu de « Planifié »), ce qui masquait les boutons Modifier/Supprimer et bloquait toute édition. Désormais, un brouillon reste 100% éditable quelles que soient les dates saisies — les transitions automatiques s'activent uniquement à partir de la publication.
- Clarté UX : sur la page de gestion des manches, le bouton du haut s'appelle désormais « Ajouter une soirée » (= une nouvelle soirée distincte avec son propre circuit), tandis que le bouton sous chaque soirée reste « Ajouter une manche » (= ajouter une manche supplémentaire dans cette soirée, qui hérite du circuit du parent). Plus de confusion entre les 2 actions.
- Correction d'un défaut de rafraîchissement : après l'ajout d'une simulation depuis le catalogue, les sous-onglets Circuits / Classes de voitures affichaient encore le contenu de la simulation précédemment sélectionnée. Désormais le contenu est immédiatement à jour avec la nouvelle simulation sélectionnée.
v1.17.0 — 2026-05-03
- Logos officiels désormais visibles dans l'app : simulations sur les cards championship, circuits sur les rounds, et premier affichage dédié des classes de voitures (GT3, WRC, Hypercar, etc.) côté admin — déploiement progressif sur les pages publiques dans une prochaine version.
- Rendu cohérent garanti : si un logo officiel manque, un badge automatique avec les initiales et la couleur identité s'affiche à la place — plus jamais de carré vide.
- Pour les admins : nouveau sélecteur visuel pour overrider le logo de chaque circuit ou classe de voiture, via vignettes filtrables des fichiers disponibles (cliquez sur le logo dans /admin/referential).
- Améliorations dark mode : tous les badges fallback respectent les tokens couleurs propres au thème sombre.
- Catalogue à la demande : depuis /admin/referential, nouveau bouton « Ajouter une simulation depuis le catalogue » — l'organisateur charge ACC, AC, AMS2 et les autres simulations d'un clic, sans passer par la commande shell admin.
- Pré-alimentation automatique : la simulation choisie arrive avec son catalogue complet (circuits, classes, voitures, DLCs officiels, logos) en quelques secondes.
- Architecture évolutive pour les DLCs officiels post-sortie : chaque nouveau DLC est livré dans un fichier dédié et apparaît automatiquement sur les simulations déjà chargées, sans toucher au contenu existant.
- Traçabilité : chaque chargement de simulation depuis l'UI laisse une trace dans les logs admin (qui a chargé quoi quand).
v1.16.1 — 2026-05-03
- Préparation interne : la bibliothèque de logos officiels (simulations, circuits et classes de voitures) est désormais reliée automatiquement au catalogue de référence. L'affichage uniforme dans toute l'app arrive dans une prochaine version.
- Pour les admins plateforme : la commande shell d'import du catalogue ingère également les logos en un seul passage.
v1.16.0 — 2026-05-02
- Catalogue de référence pré-rempli pour 8 simulations populaires (Assetto Corsa, ACC, AC Evo, AC Rally, AMS2, Le Mans Ultimate, RaceRoom, rFactor 2) — plus de 129 circuits, 162 voitures et 42 DLCs catalogués
- Identification des DLCs requis pour participer à un championnat — visible directement sur les cartes de championnat (badge cliquable) et sur la page détail (liste complète avec lien vers le store officiel de chaque DLC)
- Gestion des DLCs intégrée dans /admin/referential — Admin et Organizer peuvent créer un DLC en quelques clics et l'assigner aux circuits ou modèles concernés
- Page entrylist enrichie : la section DLCs requis pour la course apparaît juste sous le titre, pour que les pilotes voient en un coup d'œil ce qu'ils doivent posséder avant de s'engager
- Pour les admins plateforme : nouvelle commande shell `seed-reference` permet d'importer ou de mettre à jour le catalogue depuis 8 fichiers JSON éditables — idempotent, ne touche jamais aux ajustements manuels
- Compatible mobile : le badge "DLCs requis" reste lisible sur petit écran, et le panel détail s'adapte automatiquement
v1.15.3 — 2026-04-28
- Reliability: claim rejection and revocation reasons are now persisted as you type, removing a rare race condition where a quickly-clicked Confirm could lose the typed reason on a slow network
- OneShot edit: cleaner layout — Settings on top, Sessions below, Save button anchored at the bottom. The duplicate Duration / MaxDrivers fields are gone (they live on each session now), so saving Settings can no longer accidentally overwrite session 1 while leaving sessions 2..N untouched
- OneShot edit: a sticky Save settings button now follows you down the page and lights up only when you have actual changes to save — clearer signal, no more guessing whether a click did anything
- Reliability fix: real-time notification badge across multiple tabs now actually works — the previous infrastructure had been silently broken since v1.15.0 (badge still updated on next page load, but live cross-tab sync did not)
v1.15.2 — 2026-04-27
- Security hardening: notifications can only be marked as read by their owner — extra check applied even if a notification ID leaks
- Performance: registrations and notifications lists feel snappier — composite indexes on hot-path queries + lighter projections on member stats and attendance reports
- Keyboard accessibility: notification bell, broadcast streams menu, achievement icon picker and image library tiles are now fully usable without a mouse — Escape closes dropdowns, Enter/Space activates focused tiles
v1.15.1 — 2026-04-27
- Notification bell now opens a popover with your 5 latest notifications — quick preview without leaving the page
- Scoring schemes editor: optional multilingual description (EN/FR/DE/ES) — document why a scheme awards what it does, in the language your community speaks
- Achievements stay accurate after claim resolutions: a penalty that shifts the podium now automatically reawards the badges and notifies the drivers who gain or lose a medal
- Notification badge updates in real time across all your open tabs and devices — no more page reload to know you have a new message
v1.15.0 — 2026-04-26
- Robustesse : les transitions d'état (claims, manches, résultats) sont désormais validées en temps réel — les séquences invalides échouent immédiatement au lieu de laisser des incohérences silencieuses.
- Performance : 6 colonnes JSON migrées au format natif PostgreSQL — prépare des recherches plus rapides dans les futures versions.
- Audit : 7 entités (Championship, Member, AdBanner, Notification, licences, Team) tracent désormais automatiquement leur dernière mise à jour — visible dans l'audit log admin.
v1.14.3 — 2026-04-26
- Cancel a championship cleanly: registrations and team enrollments are properly withdrawn together (was missed before), drivers get notified
- New 'Cancel all registrations' button — wipes the registration slate for a published championship without changing its status (handy when you need to reopen sign-ups)
- Send a championship back to Draft without losing any registration: pilots stay registered, ready for republishing instantly
- Locked classes after publishing: you can add new car classes/models on the fly, but you can no longer remove existing ones — protects already-registered drivers
- Reschedule modal redesigned: clearer 'Currently scheduled / New date' layout, recipient counter is now visually prominent (you'll know exactly how many people get notified)
- Live championships now have a subtle pulsing dot on their status badge — easy to spot which one is in progress at a glance
- Action buttons polished with icons (calendar-clock for reschedule, lock for locked-classes hint) — actions are easier to scan
v1.14.2 — 2026-04-26
- You can now reschedule a round of a published or in-progress championship — all sessions of the round shift together while preserving their relative timing
- Registered drivers and teams are notified automatically (in-app + email, opt-out from your profile preferences)
- Out-of-order calendar warning shown if the new date overlaps with another round — non-blocking, your call
v1.14.1 — 2026-04-26
- One-shot events with multiple sessions are now fully editable from the championship page (sessions list visible, add or remove sessions with safety checks)
- Deleting a session no longer asks you to retype its name — a clear confirmation modal is enough
v1.14.0 — 2026-04-25
- Online payments — pay your season or championship license directly via HelloAsso (sandbox or live mode)
- Receipts arrive by email and are accessible from your notification — no more chasing the admin
- New admin Payments page with filters by date, status, member and type — full audit trail
- License revocation now requires a clear reason (refund / abuse / member request / other) and is auto-traced
- Footer redesigned with a discreet 'Support the dev' Ko-fi button (always visible on desktop)
- Test mode banner across the app whenever HelloAsso is in sandbox — no more accidental real charges
- All security credentials are now encrypted at rest (HelloAsso, SMTP, ZeptoMail)
v1.12.1 — 2026-04-25
- Fixed: simulation logo no longer overlaps the round title in the entrylist hero
- New Profile section to choose how your name appears on public entrylists (Auto / pseudo / Steam name / sim name)
- Sim names are picked up automatically from your race result imports
- Live preview shows the chosen name as it will appear on the entrylist before saving
v1.12.0 — 2026-04-25
- New public entrylist pages: every race has its own page in WEC/IMSA-style design with classes, drivers and teams
- Provisional entrylist becomes available 24h before the race, then locks officially at race time
- Quick access to entrylists from championship details, my races, agenda popover and notifications
- Print to PDF directly from the entrylist (A4 landscape) for race day briefings
- Shareable links with social media previews (Discord, Twitter, Facebook)
- Profile: pick your country (flag on entrylist) and opt in to email when entrylist is published
- Enrollment: optional car number with duplicate warning + livery upload (per driver, or per team in relay)
- Admin: assign a color and display order to each car class, plus an optional track layout map
v1.11.2 — 2026-04-24
- One-shot events can now contain up to 5 sessions (e.g. qualifying + race 1 + race 2)
- Each session has its own label and durations — reorderable in the creation wizard
- Results import still works session by session — unchanged for organizers
v1.11.1 — 2026-04-24
- Language switch now takes effect immediately — no more stuck French labels when English is selected
- Duplicate a round in one click (+15 days ahead) — tracks, durations and heats are copied; poster and streams stay empty
- Fixed duplicate 'Allowed classes' label in championship creation wizards
- German and Spanish translations harmonized around Round / Runde / Ronda vocabulary
v1.11.0 — 2026-04-23
- Members page redesigned with 4 tabs: Pending / Active / Revoked / Access
- Live search and column sort on the members list
- Click a username or forum ID to edit it inline
- Green dot on avatars shows who's online
- Access revocation now requires a 2-step confirmation
- Pending requests highlighted with an orange badge
- Permanently delete tracks, car classes or car models — a guided dialog reassigns existing references
- Move a car model to another class without breaking history
- Merge duplicate tracks or car models in one click — pick the master, the rest disappears
- Inline rename: click a track or car name to edit it directly
- Live counts on every referential tab + 'Show disabled' toggle to view archived items
- Per-simulation referential split into Tracks / Car Classes sub-tabs
- Compact 3-panel simulation toolbar — clearer scan, scales to many organizers
v1.10.2 — 2026-04-23
- Activity logs (Settings → Logs) now have a new 'Event type' filter to surface authentication events, access decisions, role changes and system errors at a glance
- SMTP outages, result-file parser failures and background-job crashes now appear directly in the activity log — previously visible only in server-side logs
- Existing entries (login, logout, role change) are now properly tagged so they're filterable by category
- Each typed entry shows a discreet badge next to its source for instant recognition in the listing
v1.10.1 — 2026-04-23
- Championship and team cards redesigned: titles and key stats stand out, status badge moves to the top-right corner, typography unified across all listings
- Team championships now show a clear 2-helmet icon with the mode (Parallel or Relay) in orange — instantly recognizable at a glance
- Cards breathe more on desktop (more padding and spacing), stay compact and legible on phones
- All card listings across the app (events, my races, teams, notifications, feeds, results) share the same visual language — same title size, same date format, same number styling
- Better readability: orange team labels now stand out on both light and dark backgrounds, status badges are announced by screen readers, keyboard focus is clearly visible when tabbing through the page
- Phones: every list reliably switches to a single column, cards get tighter padding to fit the narrower screen
- My Races: upcoming evening cards are more airy between the title, heat list and actions — and the 'Next Start' time is now a green pill that jumps out
v1.10.0 — 2026-04-22
- Teams & Endurance: organizers can now create championships in team mode (Parallel or Relay) from the wizard
- Drivers can create and run teams: invite members, transfer manager role, leave, delete empty team — all from the new My Teams space
- Mode-specific enrollment: Relay = the team manager picks the signature car once and members inherit it; Parallel = each driver enrolls individually and the team is linked on the first member
- Accepting an invitation previews the impact: simple join, transfer to a new team (Relay), or archiving of your Solo registrations — with a dynamic call-to-action, mobile collapsible sections and sticky action buttons. Safety net: if you're removed or leave a Parallel team with active registrations, a personal team is created automatically
- Team claims on Relay championships: team managers file a team-level claim with an optional confidential suspected-driver annotation, the opposing manager can defend in writing, and admin arbitrage renders team-vs-team with the penalty applied on the team result directly
- Relay drivers see an informational banner on My Races when their team receives a penalty (with a subtle highlight animation, respects reduced-motion), with zero impact on their personal stats
- Visual identity everywhere: upload a profile car, pick a country flag from the dropdown, and see logos + flags + colors on team cards, standings (gold/silver/bronze trophies for top 3), Entrylist thumbnails and admin claims
- Championship cards now show a `[TEAMS · PARALLEL/RELAY]` badge and the footer reads 'N teams engaged (M pilots)' instead of just 'M entries'
- Fixed: joining a Parallel-mode championship no longer silently unlinks your registration from your team — team standings and scoring now include every member from day one
- Fixed: the admin Statistics page no longer crashes on championships where rounds inherit the default driver cap
v1.9.0 — 2026-04-20
- Multi-heat evenings: organizers can now schedule two or more heats under the same evening (same track, same practice, same briefing). Evenings with a single heat keep working exactly as before
- Drivers confirm or withdraw for a whole evening in one click — all heats covered at once, with waitlist and capacity handled behind the scenes
- My Races now groups upcoming races by evening with clear status dots per heat. Partial states (e.g. one DNS imported) stay read-only and suggest contacting the organizer
- Admin and public championship pages display heats grouped by evening with a "N HEATS" badge when applicable, plus a podium preview (top 3) for closed heats
- Agenda shows one entry per evening with a numeric badge for multi-heat evenings
- Cancelling an evening: new confirmation modal (type the evening name) that removes the whole evening and notifies every registered driver
- Performance: saving or deleting a round is now near-instant (a 3-second lag on the success toast was blocking the flow across the app)
v1.8.4 — 2026-04-19
- UX polish: confirmation toasts after you enroll in a championship, upload an image, or publish results — no more silent clicks
- Consistency polish: podium medal colors, navbar gradient, validation outlines and error banners all pulled from the design system tokens — same look, cleaner internals
- Image library upload: new dashed drop zone with "Click or drop an image" hint and upload icon
- Claim cards (admin): race context (grid / finish / points) now collapsed by default when you expand a claim — one click to show it, less visual noise
- Race event description: organizers can now add a short markdown note per round (weather, format reminder, briefing link) — shown on the championship page for the active / next round, and on the results page of past rounds
- The organizer note is limited to 500 characters and supports **bold**, _italic_, [links](https://...), lists and quotes — same syntax as championship announcements
- New championship wizard: creating a championship or one-shot event is now a guided 3-step flow (Identity → Format → Rules) with live validation, step preview and a clear progress bar — no more 15-field wall
- Championship poster: upload an image during creation to showcase your championship on the public /events list and on the championship page — reuses the same image library as round posters (upload once, use for championship and/or rounds)
- /events tab default: "All" tab now shown first by default, more relevant at arrival than "Mine" which is a secondary filter
v1.8.3 — 2026-04-18
- Faster page loads on Home and Hall of Fame — leaner database queries
- Better resilience to transient database hiccups — Steam sign-up no longer fails on brief connection blips
v1.8.2 — 2026-04-18
- Claims UX overhaul: claims tab on /admin/championships/{id} refactored into expandable cards with inline accept / reject / revoke
- Race context inside each expanded card — grid position, finish status, points — and a live preview of the standings impact when an organizer picks a penalty
- Quick penalty buttons: the 3 most-used templates appear as one-click shortcuts, full list still available via "Other…"
- Pending claims are sorted by urgency; a J-X / Urgent / Expired badge highlights claims approaching the review deadline
- Revoking a resolution now needs a reason (required text) and a click-again confirmation to prevent accidental clicks
- Accept / Reject / Revoke now notify the claimant (and the target when relevant) — the communication loop is finally closed
- Members can edit or delete their own Pending claim, with a fair-play hint above the form and a success toast after submit
- Target dropdown shows position + car class + finish status, making it easier to pick the right pilot from the results
v1.8.1 — 2026-04-17
- Championship announcements: organizers publish Markdown posts on a championship, notified to all active enrollees (in-app + email)
- Image library: shared track logos and event posters reusable across simulations. Upload once, use many. JPG/PNG/WebP
- Stream URLs: up to 5 streaming links per round (Twitch/YouTube/Kick...) with labels. Broadcast icon on every public surface
- Terms of Use: new /terms page, footer link, upload liability notice on image pickers (takedown contact: benjamin@racemarshal.app)
- Claims fix: submitting a claim now notifies every organizer of the simulation (in-app + email). Deep-link opens the claims page directly
- Pending-claims badge on /admin/championships to spot the moderation workload at a glance, without drilling into every round
- New Claims tab on each championship page: cross-rounds view with inline accept/reject/revoke. 5 clicks → 2 clicks to resolve a claim
v1.7.3 — 2026-04-16
- Paddock: timing tower sidebar (desktop left) showing latest race results per sim (top 5) and championship standings (top 10), auto-scrolling with CSS animation, pause on hover, click to navigate
- Dark/Light theme: automatic system detection via prefers-color-scheme — dark mode 'Dusk' with racing identity (navy background, blue RFRO primary, red/orange accents). Zero JS, zero toggle (follows OS setting)
- Identity refresh: purple #534AB7 replaced by blue RFRO #2563eb across both modes. Bootstrap internals (--bs-body-color, --bs-table-color) wired to var(--rm-*) for automatic propagation
- Full dark mode audit: all hardcoded white/black colors migrated to var(--rm-*) — tables, forms, file inputs, dropdowns, modals, notifications, badges, previews
v1.7.2 — 2026-04-16
- Email: ZeptoMail API integration — alternative to SMTP for PaaS hosting (Railway) where outbound SMTP ports are blocked. Uses HTTPS (port 443) instead of SMTP (port 587)
- Settings: email provider selector (SMTP or ZeptoMail API) with dedicated configuration fields. From-email and from-name shared between both providers
- Automatic routing: if ZeptoMail API key is configured, all notification emails are sent via the HTTP API. If removed, falls back to SMTP transparently
v1.7.1 — 2026-04-16
- Fix: SMTP test button no longer hangs silently in production — 15s timeout added, clear error messages for blocked ports / bad credentials / SSL mismatch
- Fix: SMTP diagnostic logs now visible in Railway (was using NullLogger, now resolved from DI)
- UX: spinner shown immediately on SMTP test click (was frozen during the 15s timeout with no visual feedback)
- UX: test email field now enables the button as you type (was requiring tab-out first)
v1.7.0 — 2026-04-15
- New Agenda view (/agenda): monthly calendar aggregating every round across your championships and the ones you follow. Registered events are marked with a star, others with a circle.
- Color-coded by simulation — each sim gets its own pastel color consistently across the calendar and the filter pills
- Filter pills: click to toggle simulations on/off. Matches the calendar colors so you instantly see which pill controls which events
- Navigate between months (‹/›) or jump back to today with one click. Desktop only — on mobile the view redirects to My Races
- Click an event to jump straight to its round in the championship detail page (anchor support added)
v1.6.2 — 2026-04-15
- Achievements: Hat Trick now supersedes The Double — a driver who scores pole + win + fastest lap in class receives a single Hat Trick medal (the redundant Double medal is filtered out)
- Scoring: same rule applied to bonus points — a Hat Trick no longer cumulates with The Double bonus rule points (coherent with the medals)
- UI: two distinct icons for paid notions — Euro symbol for paid servers (impacts championship cost, orange), shopping bag for paid DLC (informational, sky blue). Icons also surface on Events cards so you can spot a paid simulation or DLC track at a glance
- UI: consistent flex alignment for paid icons across referential, admin, and rounds lists — no more baseline drift on uppercase sim names
v1.6.1 — 2026-04-14
- Quick fixes UAT testeur : corrections d'accents dans les traductions, nettoyage de libellés, correction du calcul d'assiduité.
- Stats: attendance rate now correctly capped at 100% (scope aligned on closed events)
- Race results: Qual column removed (redundant with +/-), new Car model column, pole position badge [P] next to driver name
- Season standings: tooltip on driver name shows the 2 last cars used (desktop); mobile cards get an optional 3rd line with the same info
- RaceResult now stores the actual car model driven (CarModelId), matched from the imported file
- LMU parser: starting grid positions (GridPos, ClassGridPos) now extracted from race files
- Race results: +/- delta is reliable even for drivers who missed qualifying (uses real grid position)
- Qualifying file is now truly optional for LMU — required only for best-lap times and pole-related achievements
- Referential import: stricter fuzzy matching (min 6 chars + max 20% variation) — fixes a bug that could rename GT3 into GTE. Fuzzy matches now default to Match (reversible) instead of Update, and are highlighted in the preview
v1.6.0 — 2026-04-13
- Mobile: multiple improvements (compact results & standings cards, auto-redirect, responsive tables)
- New PWA icons (logo)
v1.5.4 — 2026-04-13
- My Races: inline confirm/decline directly from cards (no more navigation to detail page)
- Responsive round cards on mobile for championship detail and admin manage pages
- Fix: quick-confirm capacity check + unified waitlist promotion notifications
v1.5.3 — 2026-04-13
- Fix: platform access control — new members now correctly blocked in ApprovalRequired, InviteOnly, and InviteOrApproval modes
- Fix: access guard middleware reads AccessMode from DB on each request (no more stale startup cache)
- Fix: Steam callback redirects to /access when member has no platform access
- Fix: /access page no longer shows 'Revoked' for new members — invite code form visible in InviteOnly mode
v1.5.2 — 2026-04-12
- Import UX: single file upload with compact feedback (format, sessions, drivers count), collapsible block
- Import UX: no more Race/Qualifying tabs — automatic session detection, optional qualifying file add
- Reconciliation: tracks and car classes can only be matched/updated — no accidental creation from import
- Reconciliation: fuzzy matching with Levenshtein distance for approximate track/class names
v1.5.1 — 2026-04-12
- Fix: driver matching now persisted for LMU/rF2 results (no SteamId in XML files) — manual match carries over to next rounds automatically
- Fix: unmatched driver combo no longer shows stale values after matching a driver
v1.5.0 — 2026-04-12
- Email notifications: SMTP integration (Zoho, Gmail, any provider), HTML template with platform branding, 14 email-worthy notification types
- Global email toggle (admin) + per-member opt-out in profile
- Championship edit: Settings tab homogenized with 2-column layout, Published championships editable until first round played
- Class reassignment dialog: blocking dialog when removing a class with enrolled members — auto-reassign enrollments + registrations + notify
- Organize page: creation mode hides lists and filters for focused UX
- Season combo hidden for public visitors on /events
- License file resolution fixed for production (Docker/Railway)
v1.4.0 — 2026-04-12
- Championship detail: compact 3-column layout (Registration, Round schedule, Info) with full-width timeline when live
- Event cards redesigned: 3 visual zones, track name highlighted, condensed durations (Q 10' / R 120'), 2-line title clamp
- My Races: visual cards with colored countdown pills, pending section with warning accent, clickable history cards with podium colors, 2-column desktop grid
- Event Results (organizer): tabbed layout (Results / Achievements / Unmatched) with action buttons moved up under summary
- Championship form: compact 2-column layout (identity+classes / config+rules)
- Logs: advanced filters (source, actor, date, season), batch pagination, configurable retention (30-1095 days) with auto-purge at startup
- Fix: auth flash on admin pages eliminated (Authorizing template)
- Fix: Organize filter checkboxes persist across navigation
v1.3.0 — 2026-04-12
- Results UX refonte: tabbed display per class with enriched columns (Laps, Time/Gap, Pits, +/- delta)
- Standings refonte: round-by-round grid with color-coded performance (win/podium/DNF)
- Fastest lap and pole position highlights in results table
- Parser enrichment: laps completed and pit stops extracted from rF2/LMU result files
- Section reorder: Summary, Achievements (Gold/Silver/Bronze), then Results
v1.2.0 — 2026-04-12
- Mobile responsive: hamburger menu, collapsible navbar, mobile-first layouts on all pages
- PWA: installable on Android + iOS home screen (manifest + icons)
- Per-class scoring: each car class has its own podium and points (multi-class endurance support)
- Qualifying import: Race + Qualifying tabs with cross-file fallback for combined sessions
- Auto bonus scoring: pole position, fastest lap, class podium, biggest climber from scheme rules
- Track & Class name reconciliation dialog at import (rename in place or keep local)
- Back-dated import: admin can import historical results with auto-enrollment of matched members
- Ad banners: 4 placements (top bar, championship detail, sidebar, footer) with mobile strategy
- Results display grouped by class with per-class qualifying positions
- Error page localized, notification indicators redesigned (CSS badges)
v1.1.0 — 2026-04-11
- UX design migration: unified design system with CSS variables
- Statistics: attendance, fill rate, championship analysis
- Referential reconciliation: auto-matching drivers, tracks, cars from result files
- Platform access control: invite code, approval workflow, access gate
- DurationMode (Time/Laps), Practice/Briefing fields, event timeline
- AMS2 result parser + per-simulation default parser
- URL rename /championships to /events, cards redesign with class pills
- Declined registration status per round
- Localized notifications in recipient's preferred language (22 types)
- AllowCarChange at round confirmation, one-shot auto-confirm
- Destructive action confirmation dialogs
- CI/CD: GitHub Actions (ci, nightly tests, release)
- Production hardening: security headers, Docker, Railway deployment
v1.0.0 — 2026-04-09
- Initial release
- Platform setup, user profiles, referential
- Championships, results import, claims, achievements
- Season management with auto-transition and grace period
- Public pages, registration, waitlist, licensing
- Dashboard, My Races, Hall of Fame
- Notifications (in-app, 15 types)
- Background job for registration deadlines
License
RaceMarshal — Proprietary License Copyright (c) 2026 RaceMarshal All rights reserved. This software and associated documentation files (the "Software") are the exclusive property of RaceMarshal. Unauthorized copying, modification, distribution, or use of this Software, via any medium, is strictly prohibited without prior written permission from RaceMarshal. The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. For licensing inquiries, contact: benjamin@racemarshal.app
Credits
Developed for the sim racing community