Historique des versions

Les versions sont classées de la plus récente à la plus ancienne, une puce par changement, et chaque version se termine par les renvois vers les pages qui décrivent en détail ce qu’elle a apporté. Une puce qu’une version ultérieure a défaite porte la mention de celle qui l’a remplacée : elle raconte l’histoire du logiciel, elle ne décrit pas la version installée.

Après une mise à jour

La migration du schéma de la base est automatique à l’ouverture, et sans retour : une base migrée n’est plus lisible par une version antérieure de blunderDB, d’où la sauvegarde préalable (Annexe: Schéma de la base de données). Le reste ne se fait pas tout seul, parce qu’aucune de ces données n’est rétroactive :

  • Réanalyser les positions périmées (0.38.0, 0.40.0). Une analyse gammonNet écrite avant la version 0.40.0 l’a été par un moteur antérieur (gammonNet v1.7.0 depuis) : blunderdb analyze --stale, ou la ligne Analyses gammonNet périmées de l’onglet Maintenance, la récrit. Une analyse importée n’est jamais touchée.

  • Réimporter les fichiers source pour obtenir la chance (0.33.0). Les matchs importés avant portent un tiret dans la colonne Chance, et un tiret n’est pas un zéro. Les formats qui ne transportent pas la chance (BGF, Jellyfish .mat) n’en fourniront jamais.

  • Réimporter les fichiers XG pour obtenir les marques (0.30.0). Les marques posées dans eXtreme Gammon rejoignent la base au réimport, sans toucher aux commentaires ni aux analyses existants.

  • Lancer le rattrapage d’analyse gammonNet (0.34.0), depuis l’interface, par blunderdb analyze ou en mode serveur : il comble les positions qui n’ont aucune analyse, sans jamais écraser une analyse importée.

  • Relancer le rattrapage d’analyse gammonNet (0.39.0). La migration efface les verdicts gammonNet d’une prise ou d’un refus, calculés comme une décision du receveur ; le rattrapage les récrit comme la décision du doubleur avant le double.

  • Réparer les matchs dont les joueurs ont été inversés (0.40.0). Avant 0.40.0, l’inversion remplaçait les positions du match par d’autres, sans analyse : blunderdb match repair --list trouve les matchs qui diffèrent de leur fichier source, et match repair --id ou le bouton ⟲ de la fiche les réécrit depuis ce fichier.

0.44.0 (2026-10-19)

  • L’exercice Ouverture choisit entre deux modes : Catégories XG (Money, DMP, Gammon save et Gammon go, combinables) ou Match en 5, qui tire un score à égalité parmi les vingt-cinq scores d’un match en 5 points, DMP et parties Crawford compris, sans score à choisir. La grille des scores de match en 7 disparaît.

  • Le livre d’ouverture embarqué tient les vingt-cinq scores d’un match en 5 : 2-4, 4-2, 2-5, 5-2, 3-5, 5-3 et les parties Crawford 1-3, 3-1, 1-5 et 5-1 s’ajoutent ; blunderdb openingbook et les routes openingbook.* du serveur les servent comme les autres scores.

  • Côté serveur : search.find trie par compte de pips et par date, analyses.queueStatus décrit la file d’analyse, les statistiques se filtrent par adversaire, positions.setIndividuallyImported lève la marque « apportée à la main » d’une position, et matches.lastVisited rend le dernier match visité, non plus le dernier importé ; blunderdb stats prend --opponent.

  • Voir Panneau Entraînement, openingbook — Quel coup à ce score ? et Contrat d’API.

0.43.0 (2026-10-18)

  • L’exercice Ouverture tire par catégories : Money, DMP, Gammon save (l’ouvreur à 1 away Crawford, le répondeur à 2 away) et Gammon go (l’inverse), une catégorie à égalité avec les autres puis un de ses scores ; la consigne nomme la catégorie à côté du score. La grille des scores de match en 7 reste une option, décochée d’emblée, parce que de 4 à 7 away les meilleurs coups changent à peine d’un score à l’autre.

  • Le livre d’ouverture embarqué tient la partie d’argent et le DMP : blunderdb openingbook et les routes openingbook.* du serveur les servent comme les autres scores.

  • Voir Panneau Entraînement, openingbook — Quel coup à ce score ? et Livre d’ouverture : écart, IC 95 % et égalité.

0.42.0 (2026-10-17)

  • Quel coup à ce score ? L’exercice Ouverture : l’onglet Entraînement pose le coup d’ouverture (1st roll) ou la réponse (2nd roll) d’une partie à un score, joué au plateau et jugé contre un livre d’ouverture embarqué, calculé par les rollouts de blunderDB sur vingt scores ; tout coup à égalité avec le meilleur est juste, et en 2nd roll le coup d’ouverture déjà joué est tiré parmi ceux-là. Le verdict est une marque juste ou faux et le tableau des candidats du livre. train opening, blunderdb openingbook et les routes openingbook.* du serveur en sont les autres formes.

  • ENTRÉE enchaîne les questions d’entraînement : pendant une Décision ou une Ouverture, ENTRÉE valide le coup joué au plateau, où que soit le focus hors d’un champ, d’un bouton ou d’une fenêtre, puis passe à la question suivante, ou termine la séance, une fois le verdict affiché ; deux appuis rapprochés ne notent pas la réponse deux fois.

  • Côté serveur : la route matches.byPosition liste les matchs où un coup a été joué sur une position, et l’import d’un fichier XG dans une base PostgreSQL fait deux fois moins de requêtes par position et va deux fois plus vite.

  • Corrections notables : un fichier de match dont une position porte seize pions d’un camp est refusé par le serveur comme invalide, et non plus par une erreur interne.

  • Voir Panneau Entraînement, Raccourcis clavier, openingbook — Quel coup à ce score ?, Livre d’ouverture : écart, IC 95 % et égalité et Contrat d’API.

0.41.0 (2026-10-16)

  • Lire une position depuis une capture d’écran : coller, glisser ou ouvrir une capture du plateau d’eXtreme Gammon sur le plateau d’édition en lit les pions, les dés, le videau et le score, sans modèle appris ; les lectures douteuses sont cerclées sur le plateau et rien n’est enregistré avant le geste habituel. blunderdb capture et la route positions.fromImage du serveur en sont les autres formes.

  • Le joueur principal et la fenêtre Gérer les joueurs : l’étoile d’un joueur le désigne comme joueur principal, placé au siège 1 à l’import, et propose d’inverser en une fois les matchs où il joue en face ; la fenêtre liste les joueurs avec leurs alias (× défait une fusion) et leurs nombres de matchs, qui ouvrent ces matchs. blunderdb players main et players matches ainsi que les routes players.main.* en sont les autres formes. Dans le panneau Tournois, le PR et le MWC d’une ligne sont ceux du joueur principal dès qu’il y a joué.

  • Importer une base reprend aussi les matchs : avec leurs parties, coups, analyses et origine, les tournois (avec leur Direction et leur Rencontre), les brouillons de transcription et les alias de joueurs, sans doublon et sans rien changer au réimport du même fichier ; une collection vivante ou un filtre enregistré qui désigne des lignes par leur numéro est renuméroté pour la base qui reçoit. blunderdb import --type database et le serveur font de même.

  • Un aperçu avant d’exporter : la fenêtre d’export compte, famille par famille, ce que le fichier contiendra, avant de l’écrire ; blunderdb export --plan et la route exports.plan en donnent le même compte. Un tournoi choisi emporte toujours ses matchs, et la Direction et la Rencontre d’un tournoi partent avec lui.

  • Annuler la dernière révision Anki : le bouton Annuler de la révision, ou la touche u, reprend la dernière note de la séance et remontre la carte ; blunderdb anki card --action undo et la route anki.undoReview du serveur font le même geste.

  • La recherche gammonNet s’étale sur les cœurs libres : gammonNet v1.8.0 découpe une recherche à 2 plis et plus sur plusieurs cœurs, avec les mêmes chiffres que sur un seul ; tous les calculs d’un processus (analyse, lot, panneaux, serveur) puisent dans un seul budget de cœurs, et le serveur compte à une unité le temps de chaque cœur qu’elle occupe.

  • Cocher les joueurs dans la légende des graphes d’un match : décocher un joueur masque ses marques dans les trois graphes, et le survol, le clic et les flèches ne visent plus que l’autre ; le réglage est retenu par match.

  • Les comptes des statistiques ouvrent leurs positions : les panneaux Biais, Avant/après et Temps ajoutent à chaque compte de décisions une colonne Positions qui ouvre les positions distinctes concernées.

  • Une transcription plus lisible : la touche chiffrée dit son effet par un indicateur de mode (Saisie ou Édition) et l’effet d”Entrée ; les flèches du plateau suivent le coup écrit dans la décision sous le curseur, en gris, et un pas illégal est dessiné en rouge pointillé ; choisir la première ligne de l’analyse remplace la décision.

  • La vidéo ne fige plus l’application : le volet vidéo reprend sa lecture après un saut qui n’aboutit pas, ne recharge jamais une vidéo en pause, et nomme les greffons GStreamer manquants ; un fichier .webm ou .mkv mal multiplexé est annoncé à l’ouverture avec la commande ffmpeg qui le répare sans réencodage.

  • Corrections notables : un coup joué est apparié à ses candidats par le plateau où il arrive et non par sa notation, de sorte que deux coups de même forme mais de prises différentes ne sont plus confondus ; une capture d’écran à échelle fractionnaire est lue juste ; une vidéo en pause n’est plus rechargée.

  • Voir Manuel, Raccourcis clavier, Interface en ligne de commande (CLI), Mode headless (serveur) et Contrat d’API.

0.40.0 (2026-10-12)

  • La recherche gammonNet à 3 et 4 plis va plusieurs fois plus vite : une seule réplique par nœud intérieur, et une racine étagée qui ne pousse à la pleine profondeur que les meilleurs candidats d’un classement à 2 plis ; le moteur passe à gammonNet v1.7.0. Toute analyse gammonNet écrite avant est périmée et se récrit par la ligne Analyses gammonNet périmées de l’onglet Maintenance ; un rollout dont la politique joue à 3 plis ne donne plus les mêmes chiffres.

  • Une analyse gammonNet s’annule en cours de recherche : la barre d’état affiche sa profondeur et sa progression, et son bouton d’annulation interrompt aussi une recherche profonde déjà commencée, dans l’interface, la ligne de commande et le serveur.

  • L’onglet Maintenance de la configuration montre l’état de santé de la base, une ligne par opération (positions sans analyse, analyses gammonNet périmées, matchs sans statistiques, espace récupérable…) avec son compte, sa dernière exécution et son action ; rien n’y est lancé tout seul, et blunderdb maintenance et les routes maintenance.* du serveur en sont les autres formes. Ouvrir une base n’y écrit plus rien : les statistiques d’un match se calculent à leur première lecture ou depuis cet onglet.

  • Une seule opération longue écrit dans la base à la fois : pendant une opération de maintenance, une analyse gammonNet ou un rollout, une autre action est refusée avec le nom de celle qui occupe la base, et une analyse automatique (après un import, une transcription ou un Duel) attend son tour.

  • L’export Anki .apkg : un paquet d’étude ou une collection s’écrit en paquet Anki .apkg, que l’application Anki importe sur ordinateur ou téléphone (AnkiDroid, AnkiMobile) ; chaque position devient une carte, le plateau, le score, le videau et les dés au recto, le meilleur coup ou la bonne décision de videau, son équité et l’erreur du coup joué au verso. Le bouton d’export du panneau Anki, blunderdb anki export et la route anki.exportApkg du serveur en sont les trois formes, et un réexport met les cartes à jour dans Anki au lieu de les dupliquer.

  • Le Duel part d’où l’on veut : la bande d’en-tête du panneau Duel règle le Départ — la position initiale, ou le plateau édité comme dans le panneau Eval, son score et les champs du score ne faisant qu’un —, joue les dés du plateau ou les fait relancer, et place la décision de videau avant ou après le lancer ; Une seule partie arrête le Duel à la fin de sa première partie, pour s’entraîner à un score. blunderdb duel create prend --away, --reroll, --after-cube et --single-game.

  • Les cadences en minutes par point : Standard (2 min par point + 12 s), Speed (0,4 min par point + 10 s) ou une cadence enregistrée sous un nom ; la réserve de chaque joueur se rapporte à la longueur du match, ou à ce qui reste à jouer depuis un score de départ.

  • Le pipcount masqué pendant un Duel : décoché au lancement, il reste caché même par le bouton de la barre d’outils ou P, et revient à la sortie du Duel.

  • Faire pivoter la vidéo : le bouton ⟳ de la barre vidéo, présent aussi dans la barre du mode théâtre, ou la touche o tourne la vidéo d’un quart de tour, fichier local comme lien YouTube ; l’angle est retenu pour le brouillon, sur cet ordinateur.

  • La date d’un tournoi déduite de ses matchs : un tournoi sans date prend celle de son plus ancien match, affichée en grisé et proposée par le formulaire d’édition, sans être écrite dans la base ; chaque ligne du panneau Tournois commence par # et Date comme dans le panneau Matchs, et la Progression range les tournois dans l’ordre chronologique.

  • La fiche du match dans le panneau Tournois : un clic sur un match d’un tournoi affiche sous la table la fiche du panneau Matchs, avec ses onglets, et un champ de filtre restreint la liste des tournois à la frappe.

  • Toute la bibliothèque s’exporte de la même façon partout : la nouvelle fenêtre d’export — une ligne par famille avec son compte, le fichier choisi en dernier —, blunderdb export --type database et le serveur emportent les mêmes familles : matchs avec leurs brouillons de transcription et les alias de leurs joueurs et événements, collections, tournois, paquets Anki avec ou sans leur historique de révision (--anki-history, cartes suspendues comprises), chacune pouvant être retirée ou restreinte à des identifiants (--match-ids, --tournament-ids…). Une collection vivante ou un filtre enregistré qui désigne des positions, des matchs ou des tournois par leur numéro est renuméroté pour le fichier, et une collection vivante y est évaluée sous le plafond de 5 000 positions ; le fichier source et la vidéo locale d’un match partent réduits à leur nom, une URL de vidéo sans les identifiants qu’elle porte. Une liste filtrée n’exporte que les matchs où ses positions ont été jouées, chacun avec toutes ses positions.

  • Réparer un match depuis son fichier source : le bouton ⟲ de la ligne Fichier source de la fiche, ou blunderdb match repair, relit le fichier et réécrit les positions, les analyses et les erreurs du match comme un import neuf, en gardant ce qui a été saisi depuis (tournoi, noms, inversion des joueurs, commentaires, transcription, vidéo et repères) et les analyses plus profondes ; match repair --list trouve les matchs qui diffèrent de leur fichier, et la route matches.repair fait le même geste sur le serveur.

  • Le panneau Stats : un seul filtre, partagé par tous les onglets, avec un champ joueur qui cherche à la frappe ; le filtre de dates compte son dernier jour en entier, et le filtre Moteur est un menu des moteurs présents dans les analyses de la base (blunderdb stats engines). Chaque tableau se trie et se filtre par colonne (>500, 3-7…), et son tri est retenu. Chaque compte ouvre exactement ce qu’il compte — matchs, tournois, positions, blunders —, la ligne d’un joueur le place dans le filtre, et l’en-tête d’un match, la barre d’analyse et un tournoi ouvrent Stats sur eux ; blunderdb stats matches et stats tournaments donnent les matchs et les tournois qu’un chiffre compte. Le classement quitte l’onglet Corpus pour l’onglet Joueurs, trié par PR (stats ranking le donne toujours en ligne de commande) ; la ligne survolée d’un tableau est teintée.

  • La fenêtre Fusion de joueurs reste ouverte entre deux fusions ; Fermer ou ÉCHAP la referme.

  • La danse se saisit d’une touche dans la Transcription : quand le joueur au trait est sur la barre, f saisit un jet qui ne le fait pas rentrer — le premier, non-doubles d’abord — et la main passe sans coup à taper ; hors de la barre, ou si tous les jets rentrent, rien n’est saisi et la barre d’état le dit.

  • L’abandon se saisit d’une touche dans la Transcription : r ouvre le choix du niveau (simple, gammon, backgammon) ; dans le mode théâtre, une petite fenêtre le propose, et les touches 1, 2 et 3 le valident.

  • Le coup se joue sur le mini-plateau du mode théâtre : mêmes gestes que sur le plateau, clic droit pour reprendre le coup ; les flèches du coup précédent s’effacent dès le premier pas.

  • La case Post-Crawford de la Transcription apparaît au score de départ quand un joueur est à L-1 ; chaque marque d’incohérence de la transcription affiche sa raison.

  • L’échelle de l’interface se règle au clavier : Ctrl++, Ctrl+- et Ctrl+0 l’agrandissent, la réduisent et la rétablissent, comme dans un navigateur ; l’interface zoomée occupe toute la fenêtre.

  • Le rollout passe sur MAJ-R ; r reste la position aléatoire.

  • Corrections notables : inverser les joueurs d’un match, en 0.39.0 et avant, remplaçait ses positions par d’autres, sans analyse, et retirait ses décisions du PR, de la MWC et de L₇ ; l’inversion ne touche plus qu’aux noms et aux sièges et garde les analyses et les chiffres au bit près, et un match déjà abîmé se répare depuis son fichier source par match repair ou le bouton ⟲ de sa fiche. gammonNet ne déborde plus sur un doublet aux très nombreux coups, qui faisait échouer un rollout non tronqué ; la courbe « PR par match » s’affiche sous Linux ; un compte de positions du panneau Stats quitte le mode match avant d’ouvrir sa liste ; ouvrir un tournoi depuis Stats le sélectionne dans le panneau Tournois ; la carte d’un export .apkg nomme la partie Crawford et post-Crawford ; le mini-plateau du mode théâtre suit l’orientation du plateau principal ; un clic sur l’historique de la transcription n’est plus déplacé par la vidéo qui joue, et les sauts vidéo sont bornés et sérialisés ; une correction ne laisse plus de pions surnuméraires, et la chaîne des positions suivantes est recalculée après une modification.

  • Voir Manuel, Interface en ligne de commande (CLI) et Mode headless (serveur).

0.39.0 (2026-10-10)

  • La vidéo d’un match : un fichier local ou un lien YouTube s’attache à un match, et le panneau Matchs ouvre la vidéo une seconde avant le jet de la décision étudiée (icône de la ligne ou touche v).

  • La vidéo à côté du plateau : la zone du plateau se partage entre la vidéo et le plateau, de part et d’autre d’une poignée dont la place est retenue ; ⇄ ou la poignée choisit le côté de la vidéo, [ et ] règlent sa vitesse, qu’un grand indicateur affiche au centre de la vidéo.

  • La Transcription suit une vidéo : le volet vidéo pose les repères de chaque action (instant du jet, instant de l’action), ESPACE, MAJ avec les flèches, v et MAJ-V pilotent la lecture et les repères, un clic sur une cellule amène la vidéo à son repère, et le Curseur suit la vidéo pendant la lecture.

  • La durée de chaque coup se lit dans une colonne de la transcription, déduite des repères ; un coup sans instant d’action a une durée estimée, affichée comme les autres.

  • La barre de la Transcription se lit en trois groupes : les brouillons, la saisie avec le menu Vidéo (fichier local, lien YouTube, retirer la vidéo), puis Terminer, Abandonner et un menu ⋯ qui tient le texte et l’export .mat.

  • Le mode théâtre : F11 passe la fenêtre en plein écran avec la vidéo, un mini-plateau flottant par-dessus, le clavier de saisie restant actif.

  • La fiche d’un match en onglets : l’en-tête et la synthèse du bilan par joueur restent en haut, et dessous les onglets Transcription, Graphes, À revoir, Détails, Infos et Stats défilent chacun seul ; l’onglet choisi est retenu, et les graphiques se partagent la hauteur de l’onglet Graphes.

  • Le bilan du match : les décisions à revoir, le résultat ajusté de la chance converti en MWC, le rythme des erreurs (précipitées ou réfléchies, à la médiane des durées du joueur) et le PR et la perte L₇ avec leurs intervalles ; blunderdb match --format summary et la route stats.matchReview le donnent aussi.

  • La perte MWC rapportée à un match en 7 points (L₇) se lit à côté du PR dans la liste des matchs, les statistiques du match, les tournois, le tableau de bord et la progression, ainsi que dans blunderdb stats, stats progression et match.

  • La difficulté de chaque décision et l”erreur évitable : la transcription et le graphique de perte les montrent, et l’en-tête du match donne par joueur la difficulté, l’excès, le ratio et le nombre d’erreurs évitables.

  • Un intervalle à 95 % accompagne le PR et chaque cellule des ventilations, rééchantillonné par matchs.

  • Le bilan d’un tournoi : le bouton Bilan du panneau Tournois compare le tournoi d’un joueur à son niveau habituel, ventilé par ronde, par rang de décision, aux scores de pression et par rythme, puis par familles d’erreurs ; blunderdb stats tournament et le serveur le donnent aussi.

  • La carte Plan d’étude du tableau de bord classe les familles d’erreurs par MWC récupérable, et chacune alimente la file d’étude, un quiz ou un paquet Anki ; blunderdb stats plan en est la forme en ligne de commande.

  • Avant/après l’étude et biais signés : le tableau de bord mesure si ce qui a été étudié coûte moins en match, et dans quel sens le joueur se trompe ; blunderdb stats effect et stats biases les donnent aussi.

  • Les positions de référence : le bouton Proposer… du panneau Collections propose les positions à étudier sur une portée (base, match en cours, tournoi, filtre des Statistiques), pour en faire une collection, un paquet Anki ou un quiz ; blunderdb collection suggest en est l’autre forme.

  • Un match passe par la corbeille : supprimé, il se restaure à l’identique, avec son numéro, sa date d’import, ses parties, ses analyses et ses positions ; blunderdb trash delete --kind match fait le même geste.

  • Une page Métriques donne la définition, la formule et les limites de chaque mesure : erreur, PR, perte MWC, difficulté, intervalles, bilans, plan d’étude, positions de référence, avant/après et biais.

  • Un coup se saisit au plateau de la même façon partout : dans le Duel, l’Entraînement, la réponse au damier d’Anki et la Transcription, un clic sur un pion le joue avec le dé de gauche encore libre, un clic sur les dés intervertit leur ordre puis valide le coup achevé, comme ENTRÉE, et le clic droit reprend le coup en cours ; la saisie source puis destination disparaît.

  • Anki et l’Entraînement valident au plateau : ENTRÉE ou un clic sur les dés juge le coup joué, à la place du bouton Valider.

  • La Transcription demande les dés avant le coup : sans dés saisis, le damier ne joue rien ; les deux dés saisis, le coup se joue au plateau comme dans les autres modes.

  • Évaluer dans un nouvel onglet : le clic droit sur le plateau ouvre une vue Variante de #n dans le panneau Eval, sur la position affichée, et la vue d’origine garde sa position, sa liste et son analyse ; chaque vue retrouve son propre plateau d’Eval.

  • Le défi : le bouton Défi de la barre d’outils (touche m) recouvre l’analyse du panneau Analyse jusqu’à un clic, à chaque changement de position ; en revue de match, il masque aussi les marques, les pertes et la difficulté de la liste des coups.

  • Chaque compte de positions s’ouvre d’un clic : les colonnes Positions et Bourdes des ventilations, les familles du plan d’étude (devenu une liste d’actions Étudier, Quiz, Anki), les compteurs d’un paquet Anki (dues, nouvelles, en cours, en révision), le compte d’un tournoi et les marques d’une partie chargent exactement les positions comptées.

  • Les panneaux partagent une même bande d’en-tête : titre, compteur et filtres à gauche, action primaire au bout droit (Rechercher, Démarrer, Jouer…) ; la Recherche range Critères, Historique et Enregistrés dans sa bande.

  • Une collection vivante se crée avec sa requête : blunderdb collection create --query et la route collections.create ; collection evaluate la lit entière jusqu’à 5 000 positions en donnant le total réel, et un paquet Anki tiré d’une collection vivante rejoue sa requête à chaque séance.

  • Le formulaire Metadata de la Transcription occupe le corps du brouillon, en deux colonnes quand la largeur le permet, la transcription restant visible ; le même bouton ou ÉCHAP rend la saisie.

  • La recherche de l’aide compte et surligne les occurrences à la frappe.

  • Schéma 2.41.0 : la source vidéo du match et les repères de chaque coup ; chaque coup porte l’erreur de sa propre décision, et le PR des matchs déjà en base se recalcule selon les règles d’eXtreme Gammon. La migration depuis 2.36.0 est automatique à l’ouverture et sans retour possible (Annexe: Schéma de la base de données).

  • Corrections notables : gammonNet analyse une prise ou un refus comme la décision du doubleur avant le double, rollouts compris, et la migration efface les verdicts gammonNet périmés de ces positions ; le PR compte les coups forcés, les décisions de videau et les erreurs non notées comme eXtreme Gammon ; un fichier .xg tronqué est refusé avec le code invalid ; le son coupé et le volume de la vidéo survivent à un changement de vitesse ; un glissé parti d’une boîte de dialogue et relâché sur le fond ne la ferme plus ; chaque onglet de la configuration garde sa position de défilement.

  • Voir Manuel, Métriques et outils d’étude, Interface en ligne de commande (CLI) et Mode headless (serveur).

0.38.0 (2026-10-06)

  • Le Duel : un match entier se joue contre le Bot, qui joue la politique de gammonNet, sous l’arbitrage de blunderDB — dés tirés d’un germe dont l’empreinte SHA-256 est publiée à la création, règles, score et horloges tenus par l’application. Un onglet Duel, le bouton « Jouer » de la barre d’outils et le mode DUEL ; match de 1 à 25 points ou session en argent, départ de la position initiale, de la position au plateau ou d’un score choisi, Duel suspendu puis repris. blunderdb duel et les routes duels.* du serveur en sont les deux autres formes.

  • Le Duel se joue au plateau : avant le lancer, un clic sur le plateau ou sur les dés les lance et un clic sur le videau propose de doubler ; un clic sur un pion le joue, un clic sur les dés intervertit leur ordre ou valide le coup, comme ENTRÉE ou ESPACE, et le clic droit reprend le coup en cours ou ouvre le menu du Duel (Pile, abandon, suspension, arrêt).

  • La Cadence et la durée de décision : une réserve par joueur et un délai gratuit à chaque tour, le temps écoulé étant noté ou faisant perdre le match. Chaque décision d’un Duel porte sa durée, que la revue affiche (colonne Durée, résumé par joueur, graphique), que la recherche filtre avec tm>x, combinable avec E>x, et que l’onglet Statistiques croise avec l’erreur.

  • L’origine d’un Match joué ici se relit en tête de sa transcription : départ, cadence, perte au temps ou arrêt, niveau du Bot et version de gammonNet dont il a joué la politique, germe révélé et son SHA-256, de quoi recalculer chaque lancer sans faire confiance à blunderDB.

  • La Pile : la touche b, le marque-page de la barre d’outils ou un double-clic hors du plateau met la position affichée de côté, dans tous les modes, et le même geste l’en retire ; un marque-page au coin du plateau le montre. blunderdb collection pile fait le même geste.

  • Les rollouts se lancent d’un clic droit, depuis la table des coups du panneau Analyse comme depuis le panneau Eval, sur une sélection de coups (Ctrl+clic, Maj+clic) ou sur la décision de videau, avec un réglage — Rapide, Standard ou Libre — conservé d’une session à l’autre. Le même menu copie la position avec son analyse, ou avec les coups sélectionnés.

  • Sans base ouverte, le panneau Eval pose, colle, évalue, roule et copie une position, l’onglet Entraînement offre Scores, Pions, Bearoff et Évaluation, et import XGID=… pose la position sur le plateau brouillon.

  • Le clic droit hors du plateau propose Effacer la position et Position de départ en édition et en Eval ; sur un coup joué au plateau (quiz, Transcription), son menu commence par Recommencer.

  • Les invites du Duel se posent au milieu de la moitié droite du plateau, à l’échelle typographique de l’application ; le joueur 1 reste en bas quel que soit le joueur au trait, et l’empreinte du germe se lit en infobulle de la ligne d’invite.

  • Abandonner, suspendre, annuler : le menu du Duel abandonne le match, le met en pause ou l’annule ; en argent, l’abandon perd la partie en simple à la valeur du videau. Un match en points ne s’enregistre qu’entier, et le germe d’un Duel en suspens ne sort par aucun export.

  • Le sélecteur de niveau du Bot dit la profondeur de chaque niveau, lue dans la table de gammonNet.

  • Le Duel se joue contre un Côté externe : un Côté externe déclare le Bot qui joue derrière lui (--side external:<configuration>@<engine>, sides[i].declared), l’origine du Match le relit comme déclaré par le client et non attesté ; avec le germe combiné (--combined-seed, duel contribute, duels.contribute), l’apport de chaque Côté externe s’ajoute au germe scellé et les lancers en sortent, formule publiée.

  • Plusieurs Duels ouverts à la fois : ouvrir un Duel n’en suspend aucun autre, et un Duel ouvert fait courir ses horloges jusqu’à ce qu’on le suspende, arrêt ou plantage du processus compris ; le bureau garde un seul Duel au plateau et suspend celui qu’il quitte, sans toucher à ceux qu’un serveur ou la ligne de commande tient ouverts sur la même base.

  • La transcription d’un match gagne les colonnes Videau, Jeu et Horloge ; la cadence et la banque de temps figurent dans les informations du match, et une case de temps sans durée porte un tiret.

  • La barre d’état : le lien des blunders lance la recherche, et ses deux chiffres sont des liens distincts, les blunders de la liste à l’écran et ceux de la bibliothèque entière.

  • Le moteur passe à gammonNet v1.6.0 (réseau strehl-prob5-512-512-256-256) ; les coups légaux sortent dans l’ordre de l’amont, petit dé d’abord.

  • Matérialiser une transcription d’un seul appel, en mode strict : blunderdb transcribe --materialize et la route transcriptions.materialize écrivent le Match, ou refusent la première Action fautive en donnant son rang et son motif, sans rien écrire.

  • Schéma 2.36.0 : les tables du Duel, la durée de chaque décision, le Bot déclaré, les apports des Côtés externes et l’état ouvert de chaque Duel. La migration depuis 2.31.0 est automatique à l’ouverture et sans retour possible (Annexe: Schéma de la base de données).

  • Corrections notables : un fichier d’import illisible est refusé avec le code invalid, internal restant réservé aux pannes ; sous Windows, un compactage rétrécit bien le fichier, ou dit pourquoi il n’a pas pu ; CTRL-C n’est plus disputé par la copie du navigateur intégré, et CTRL-X CTRL-X copie l’évaluation gammonNet en mode EVAL.

  • Voir Manuel, Interface en ligne de commande (CLI) et Mode headless (serveur).

0.37.0 (2026-10-05)

  • La transcription d’un match papier : un onglet et un mode TRANSCRIBE où le match se saisit coup par coup — dés, triangle des 21 jets, coup joué au plateau ou tapé en notation, videau, correction en place, brouillon durable repris après un plantage. blunderdb transcribe et les routes transcriptions.* du serveur en sont les deux autres formes.

  • La Direction de tournoi : un tournoi de club se mène depuis le panneau Tournoi — annuaire des joueurs, propositions d’appariements confirmées d’un geste, grille des tables et fiches de résultat, arbres et tableau des vies, classement, prix et dotation, page murale de la salle, feuilles imprimables, Rencontres à plusieurs épreuves dans une salle partagée. blunderdb tournament et serve --direction en sont les deux autres formes.

  • L’entraînement : un onglet Entraînement (Scores, Pions, Bearoff, Évaluation, Décision) et son journal, un mode quiz dont le PR est sur l’échelle du jeu réel, les questions ratées reprises en paquet ou en collection, une file d’étude des blunders non traités, l’explication de l’erreur au dos de la carte Anki, des cartes de score et des décisions de videau en deux cartes.

  • Les Leçons : un parcours rédigé au bureau, lu depuis l’application, la ligne de commande (blunderdb lesson) ou le serveur, exporté avec la base ; la progression ne s’écrit que sur un geste explicite de l’élève.

  • La recherche interroge un corpus : jetons de joueur, d’adversaire, de tournoi, de ronde, de longueur, de date et de PR, like qui classe les positions semblables, plan de jeu gt:, vocabulaire de tags, phrase en toutes lettres traduite en jetons, filtres favoris épinglés, palette de commandes floue (CTRL-MAJ-P), planche-contact en mini-plateaux et collections vivantes.

  • Le panneau Stats gagne l’onglet Corpus (face-à-face, PR par fenêtre, classement, alias de joueurs et d’événements, doublons probables), deux joueurs côte à côte, les erreurs récurrentes par plan de jeu, le découpage par phase, étiquette et score, un objectif de progression, un rapport HTML autonome et l’export CSV ; un match importé sans analyse obtient un PR.

  • L’évaluateur passe à gammonNet v1.4.0 — filtre de coups en triplet, beaver et raccoon en money game seulement — et gagne des rollouts tronqués, cubeful et reproductibles, stockés comme seconde analyse, les moteurs côte à côte, la matrice du videau à tous les scores d’un match, et une table d’équité de match importée d’un .xml gnubg, propre à chaque base.

  • L’import devient parallèle, avec un mode masse pour les gros lots, un journal et la reprise d’un lot interrompu, un dossier surveillé, les matchs HedgeHog .ogxm, l’OGID d’OpenGammon et les métadonnées d’en-tête XG (Elo, transcripteur, commentaires) ; un doublon exact apporte ses analyses plus profondes.

  • Les commentaires sont signés : le réglage « Votre nom » (--author en ligne de commande) nomme leur auteur, qui voyage à l’export.

  • Dans l’interface : un écran d’accueil, quatre thèmes nommés, l’image du plateau en SVG, une aide où l’on cherche, une suppression annulable, des seuils d’erreur réglables par bibliothèque, et une bibliothèque, une recherche et une liste de matchs parcourues par fenêtres, sans tout charger.

  • Un assistant par MCP : l’application et le serveur offrent leurs outils à un assistant (Model Context Protocol). Côté serveur : une file d’analyse partagée entre tenants, des quotas (dont un quota d’octets stockés), le flux d’événements /v1/events, une page web de consultation, le partage de paquets Anki et de collections entre tenants, et un client Python engendré.

  • Schéma 2.31.0 : dates en entiers, position et analyse en binaire, libellés d’action codés — une base plus légère. La migration depuis 2.18.0 est automatique à l’ouverture et sans retour possible (Annexe: Schéma de la base de données).

  • Corrections notables : un .mat tronqué ou un .txt BGBlitz sans position est refusé au lieu d’entrer à moitié, les marques XG d’un doublon sont gardées, un verdict gammonNet garde les coups joués, sous PostgreSQL un refus d’écriture ne révèle plus ce qu’un autre tenant détient, et le bouton de la page murale de la Direction l’ouvre dans le navigateur du système, un échec étant signalé.

  • Voir Manuel, Interface en ligne de commande (CLI) et Mode headless (serveur).

0.36.0 (2026-09-05)

  • Le binaire maigrit de 7,3 Mo : les tables de sortie ne sont plus embarquées ni téléchargées, mais calculées à la première ouverture, en arrière-plan et en silence — identiques octet pour octet à celles de gnubg, empreinte SHA-256 vérifiée. La table étendue TS-06-11 se calcule dans l’onglet Bearoff au lieu d’un téléchargement de 1,2 Go.

  • Les tournois se remplissent à l’import : un match entre dans le tournoi que son fichier nomme, créé au besoin ; un match déjà rangé n’est jamais déplacé.

  • Une seule grammaire de recherche, désormais lisible depuis la ligne de commande (blunderdb search --query) autant que depuis l’application.

  • La ligne de commande gagne --format json sur neuf commandes, la complétion pour bash, zsh et fish, la commande repair et les sous-commandes anki card et anki log.

  • Les onglets Raccourcis et Commandes de l’aide intégrée sont engendrés depuis les pages du manuel qui les décrivent : ils ne peuvent plus prendre de retard sur elles, et deviennent des tableaux, sans encarts. L’onglet Manuel de l’aide reste un résumé, distinct du manuel complet en ligne. Trois visites guidées de plus (Eval, Anki, Stats).

  • Un binaire Linux arm64, livré en archive, .deb, .rpm et paquet AUR.

  • Le panneau Eval retrouve le plateau sur lequel on l’a quitté, distingue l’équité money de l’équité match, et se parcourt au clavier.

  • Côté serveur : contrat d’API engendré du code (openapi.yaml et son annexe, 135 routes), identifiant de corrélation par requête, métriques de travail en vol, compression des flux NDJSON (13,5 % de la taille), et les deux appels qui dépassent le tenant — vidange et purge — passent sous /ops/.

  • Schéma 2.18.0 : Jacoby et beaver quittent l’identité de la position, si bien qu’une même position d’argent n’entre plus deux fois par des portes différentes. La migration est automatique à l’ouverture et sans retour possible (Annexe: Schéma de la base de données).

  • Corrections notables : le volet de détail du panneau Matchs n’occupe plus la moitié de l’écran quand rien n’est sélectionné, la première partie d’un transcript se replie comme les autres, MAJ-J et MAJ-K changent de vue depuis n’importe quel panneau, et huit raccourcis « afficher/cacher » cachent enfin.

  • Voir Interface en ligne de commande (CLI), Mode headless (serveur) et Manuel.

0.35.0 (2026-09-02)

  • La ligne de commande gagne deux familles : blunderdb collection (lister, afficher, créer, renommer, supprimer, exporter une collection) et blunderdb anki (paquets, statistiques, prévision des révisions, resynchronisation d’un paquet).

  • Le mode serveur est publié en image Docker (ghcr.io/kevung/blunderdb-serve, amd64 et arm64), gagne la route maintenance.vacuum et filigrane ses exports avec l’identité d’émetteur du serveur (--identity-dir).

  • L’évaluateur gammonNet value ses feuilles avec le videau : au score, les verdicts de la recherche se rapprochent de ceux d’eXtreme Gammon.

  • Chaque release livre désormais les manifestes winget et Homebrew et un bundle Flatpak, en plus des paquets Debian, RPM et AUR.

  • Dans l’interface, la bibliothèque est paginée (une base de 50 000 positions ne charge plus tout en mémoire à chaque rafraîchissement), les fenêtres modales partagent un même socle (focus, Échap, accessibilité), le plateau ne redessine que ce qui change, et la police japonaise embarquée est réduite à son sous-ensemble utile (5,5 Mo de moins).

  • Corrections notables : une base importée par « Importer une base » gardait des positions invisibles aux filtres et dédoublées au second import (réparé à l’ouverture), le bouton Fusionner de la fenêtre de fusion des joueurs restait grisé, l’export du serveur était vide, et sous Windows la suppression de la base bearoff téléchargée et create --force échouaient.

  • Voir Interface en ligne de commande (CLI), Mode headless (serveur) et Manuel.

0.34.0 (2026-09-02)

  • Un évaluateur embarqué : gammonNet, porté en Go et compilé dans blunderDB, évalue n’importe quelle position hors ligne, sans XG ni gnuBG — réseau de neurones, recherche 0 à 2-ply avec élagage, décision de videau selon Janowski et la table d’équité de match de blunderDB, et une recherche qui honore le score du match.

  • Le panneau Bearoff devient le panneau Eval : il présente les faits de la position (chances de gain, gammon et backgammon des deux camps, équité) puis la seule décision que le plateau demande, sur une grille stable et sans défilement ; les équités de match sont normalisées et le verdict « trop bon pour doubler » redevient visible.

  • L’évaluation est progressive : 0-ply immédiat au geste, puis 2-ply au repos, annulable par tout nouveau geste, l’étiquette de profondeur disant toujours celle qui a produit le chiffre.

  • Le plateau entier, les dés et le score s’y éditent, au clic comme au clavier, et une position de la bibliothèque entre dans le panneau et en ressort.

  • Sur une course au-delà de la base bi-face, un troisième régime évalué fournit le verdict de videau au score que le panneau ne donnait pas.

  • Un onglet gammonNet de la configuration sépare la profondeur d’affichage de la profondeur d’analyse.

  • Après un import, un lot d’analyse borné, visible, annulable et reprenable comble les positions sans aucune analyse, sans jamais écraser une analyse importée ; le rattrapage d’une bibliothèque existante se lance depuis l’interface, par la nouvelle commande blunderdb analyze ou en mode serveur.

  • Corrections notables : la réponse à un videau importée d’eXtreme Gammon héritait de l’analyse du doubleur sans être retournée, la notation des coups des Blancs et des entrées de barre suit gnuBG et XG, la profondeur d’une analyse gnuBG est lue correctement, et la taille du panneau latéral est mémorisée.

  • Voir Panneau Eval, Manuel et Interface en ligne de commande (CLI).

0.33.0 (2026-08-26)

  • Le panneau Stats gagne un onglet Joueurs : les trois onglets précédents décrivent un joueur, celui-ci les compare tous, une ligne par joueur de la base — matchs, victoires/défaites, décisions comptées, PR global / pions / videau, Snowie Error Rate, blunders et chance. Le tableau se trie par n’importe quelle colonne, se restreint aux dates d’une compétition par les filtres habituels, et un clic sur une ligne bascule sur le détail du joueur. Un tiret y signale une valeur jamais mesurée, jamais un zéro. Le tableau est également disponible en ligne de commande (blunderdb list --type players, en texte, JSON ou CSV) et en mode serveur.

  • La chance de chaque lancer est désormais conservée en base et affichée : chance moyenne par lancer, en millièmes de point, signée. Elle est lue à l’import depuis les fichiers eXtreme Gammon comme depuis gnuBG. Elle n’est pas rétroactive — les matchs importés auparavant portent un tiret, et il faut réimporter les fichiers source pour la récupérer ; les formats qui ne la transportent pas (BGF, Jellyfish .mat) n’en fourniront jamais.

  • L’onglet Erreurs indique désormais dans quel sens se trompent les décisions de videau, et non plus seulement combien elles coûtent : une ligne Offrir (doubles manqués, doubles prématurés) et une ligne Répondre (passes à tort, prises à tort), les deux séparées à dessein puisqu’un même joueur peut doubler tard et prendre large. Chaque case porte son nombre, l’infobulle l’équité perdue, et le clic charge les positions correspondantes.

  • Nouvelle commande Compacter la base, qui récupère l’espace laissé par les suppressions : bouton dans les paramètres et sous-commande blunderdb vacuum. Elle ne se déclenche jamais toute seule.

  • Ergonomie : les actions destructives demandent confirmation, une recherche en cours est signalée, une commande inconnue reçoit un message au lieu du silence, et les onglets, panneaux dockés et petites fenêtres se pilotent entièrement au clavier. La recherche est par ailleurs sensiblement plus rapide.

  • Corrections notables : les non-doubles étiquetés « Double No » par gnuBG étaient comptés comme des doubles, ce qui faussait le PR videau (une base déjà constituée se répare sans réimport, en mode serveur) ; le filtre joueur rétrécissait à tort le dénominateur du Snowie Error Rate ; les exports écrivaient un schéma périmé ; et blunderdb vacuum ouvrait l’interface graphique au lieu de compacter la base.

  • Voir Panneau Stats et Interface en ligne de commande (CLI).

0.32.0 (2026-08-09)

  • Le panneau EPC devient le panneau Bearoff et gagne l’analyse de course complète. (Renommé panneau Eval en 0.34.0.)

  • Sur une position de bearoff pur, il affiche — en plus de l’EPC, du pip count, du wastage et du nombre moyen de lancers de chaque joueur, désormais présentés en tableau avec une ligne Δ signée — les probabilités de gain des deux joueurs et les équités money (cubeless, sans double, double/prend, double/passe, avec l’écart de chaque décision à la meilleure) ainsi que la meilleure décision de videau.

  • Deux régimes clairement distingués : exact (lecture dans une base two-sided ; base TS-06-06 de GNUbg intégrée, couvrant jusqu’à 6 pions par joueur) et estimé (convolution calibrée, marge d’erreur affichée — le verdict de videau n’est jamais estimé).

  • La base étendue TS-06-11 (verdict exact jusqu’à 11 pions par joueur, 1,2 Go) se télécharge depuis le nouvel onglet Bearoff de la configuration, avec vérification d’intégrité et reprise des téléchargements interrompus ; un fichier .bd two-sided quelconque de gnubg peut aussi être désigné. (Remplacé en 0.36.0 : la table se calcule sur la machine, plus aucun téléchargement.)

  • Mode défi pour l’entraînement : les résultats se masquent à chaque modification et se révèlent zone par zone, d’un clic.

  • Édition entièrement au plateau : pions des deux jans, joueur au trait (clic sur le rectangle sortie/score) et position du videau (clic sur le videau).

  • Le clic sur le plateau est désormais exact à toute échelle d’interface (un clic sur le point 1 pouvait atterrir sur le point 2).

  • Nouvelle commande blunderdb epc en ligne de commande et option --bearoff-ts du mode serveur.

  • Une nouvelle section du manuel, « Méthodologie et hypothèses du panneau Bearoff », énonce exhaustivement les hypothèses derrière chaque valeur affichée. (Section renommée avec le panneau en 0.34.0.)

  • Voir Panneau Eval et Méthodologie et hypothèses du panneau Eval.

0.31.0 (2026-08-04)

  • Diffusion d’une base à des tiers : deux mécanismes indépendants, tous deux facultatifs et choisis au moment de l’export.

  • Le filigrane d’origine inscrit dans le fichier ce qu’il est et d’où il vient, signé par une identité d’émetteur créée toute seule au premier usage ; la marque est infalsifiable, se lit en tête du panneau Métadonnées (ou par blunderdb info, sans jamais écrire dans le fichier) et ne consigne rien du côté de celui qui reçoit la base — aucun journal, aucun suivi.

  • La protection par mot de passe produit un fichier .dbx chiffré (AES-256-GCM, clé dérivée par Argon2id), vérifié à chaque ouverture, dont l’en-tête reste lisible en clair ; l’identité s’exporte et s’importe en un seul fichier depuis les préférences.

  • Fenêtre d’export refondue : un seul écran au lieu de quatre, rappel de ce qui part réellement (les positions affichées), part couverte de chaque collection signalée en rouge lorsqu’elle est partielle, tournois exportables seulement avec leurs matchs — et un export trois fois plus rapide.

  • Fenêtre de configuration réorganisée en trois onglets (Interface, Couleurs du plateau, Identité d’émetteur), de taille et de position stables.

  • Panneau Métadonnées redisposé en une seule grille.

  • Le panneau Journal, qui ne recevait que l’écho des commandes, est retiré.

  • Corrections notables : un mot de passe erroné n’ouvre plus une base protégée, les champs des fenêtres modales ne perdent plus le focus au clic, le calcul des indicateurs PR/MWC ne plante plus sur une partie d’argent, et les fichiers temporaires (-wal, -shm, verrou) sont nettoyés à la fermeture.

  • Voir Diffuser une base : origine et mot de passe et Manuel.

0.30.0 (2026-07-26)

  • Recherche par commentaire : le filtre « Texte de recherche » devient le filtre « Commentaire » et propose trois modes exclusifs — contient le texte (comportement précédent, jeton t""mot1;mot2""), a un commentaire (jeton co) et sans commentaire (jeton xco) — pour retrouver d’un geste les positions annotées, ou au contraire celles qu’il reste à commenter.

  • Positions marquées dans eXtreme Gammon : les marques (flags) posées lors de l’analyse d’un match XG sont désormais lues à l’import et retrouvables par le filtre « Marquée » (jeton fl), combinable avec tous les autres critères ; une décision de videau marquée donne deux positions marquées, le double et la prise/passe.

  • Le marquage n’étant pas rétroactif, il suffit de réimporter le fichier .xg concerné pour que ses marques rejoignent la base, sans toucher aux commentaires ni aux analyses existants.

  • Corrections notables : le PR affiché sur le badge d’un tournoi se rapporte au joueur de référence et non plus au cumul des deux joueurs, les paquets Anki fondés sur une recherche respectent de nouveau les filtres de cette recherche au lieu de reprendre toute la base, et un blocage de la recherche combinant certains filtres (texte, date, erreur du coup joué) est corrigé.

  • Voir Liste des commandes et Manuel.

0.29.0 (2026-07-18)

  • Export d’un match au format Jellyfish/gnubg (.mat) depuis l’interface (panneau Matchs) comme en ligne de commande, avec la route serveur correspondante — pratique pour rejouer un match dans un autre logiciel de backgammon.

  • Recherche : nouveau discriminateur « dés exclus » (jeton xD65, plusieurs autorisés) qui écarte les positions dont le lancer correspond à un jet donné.

  • Ouverture concurrente sécurisée : une base déjà ouverte en écriture dans une autre fenêtre de blunderDB s’ouvre désormais en lecture seule (navigation, recherche et analyse possibles, modifications désactivées, mention « [lecture seule] » dans la barre de titre) au lieu de risquer une corruption.

  • Provenance des positions : hors mode match, la barre d’informations au-dessus du plateau indique le match — et son tournoi — d’où provient la position étudiée, avec un badge « +N » lorsqu’elle apparaît dans plusieurs matchs.

  • Robustesse accrue face à l’environnement : repli automatique lorsqu’une police, le presse-papier ou la dernière base ouverte ne sont pas disponibles.

  • Un rechargement explicite de la bibliothèque (CTRL-R, bouton de la barre d’outils ou commande e) rouvre le panneau d’analyse de la position affichée.

  • Corrections notables : suppression d’un blocage à l’export de grosses bases, bouton « Aucun » de l’export qui n’exportait pas réellement aucun match, filtre par commentaire multi-mots, dédoublonnage de l’événement et du tournoi dans la barre d’informations, et divers ajustements d’affichage.

  • Voir Liste des commandes, Panneau Matchs et Manuel.

0.28.0 (2026-07-15)

  • Panneau de recherche : filtre unifié « Matchs & Tournois » remplaçant les champs de saisie d’identifiants par une fenêtre de sélection (listes à cocher filtrables par texte, boutons Tout/Aucun, cocher un tournoi coche ses matchs membres) — plus rapide sur les grosses bases, l’onglet Matchs et la vue Tournois ne recalculent plus les indicateurs PR/MWC que pour les matchs affichés ; cli list --type tournaments comble l’écart de parité correspondant.

  • Nouveau filtre « Importée individuellement » (case à cocher du groupe Autre, ou jeton i en ligne de commande, s i ; disponible aussi en CLI via --individual) pour retrouver une position enregistrée ou importée seule plutôt que noyée dans un import de match.

  • Correction d’une perte de données : la suppression d’un match ne supprime plus les positions individuellement importées, mises en collection ou intégrées à un paquet Anki que ce match contenait aussi.

  • Mode serveur (headless) : six nouvelles méthodes pour le planificateur Anki à répétition espacée — journal des révisions (anki.reviewLog), prévision des cartes dues (anki.forecast), suspension / mise en veille / suppression de carte (anki.suspendCard, anki.buryCard, anki.removeCard) et ajustement automatique du taux de rétention visé d’un paquet vers son taux de réussite observé (anki.optimizeParams, remplacé en 0.36.0 par anki.retention, qui mesure le taux observé sans jamais écrire la cible) ; nouvelle méthode tenant.purge pour supprimer définitivement les données d’un tenant sur un déploiement PostgreSQL multi-utilisateurs ; nouvelles méthodes matches.list (filtrage/tri/pagination) et stats.matchBadges (indicateurs PR/MWC bornés à une liste de matchs).

  • Distribution Linux native : paquets .deb/.rpm, qui conservent le bit d’exécution perdu lors du téléchargement du binaire brut.

  • Import : après l’import d’un match, l’onglet Matchs s’affiche et les positions importées sont immédiatement visibles ; après l’import d’une position isolée (fichier XGP, position BGBlitz, fichier de position texte, position collée ou lot de positions), l’onglet Analyse s’ouvre directement sur la position importée, au lieu de l’onglet Matchs ; correction du collage d’une analyse eXtreme Gammon en français ou en allemand depuis macOS, qui restait vide (accents décomposés par le presse-papier du système).

  • Voir Mode headless (serveur), Liste des commandes et Téléchargement et installation.

0.27.0 (2026-06-13)

  • Panneau Anki : ajout d’un mode « entraînement libre » (cram), accessible par le bouton Cram à côté de Study, qui présente des positions aléatoires du paquet sans modifier le planning de révision espacée — idéal pour s’échauffer avant un tournoi ou réviser intensément un paquet sans en perturber l’ordonnancement.

  • Recherche : nouvelle commande blunders (alias bl) qui charge directement les pires erreurs (équité/MWC) dans la vue d’analyse, avec un nombre optionnel pour en choisir la quantité (bl 50) ; nouveau filtre par joueur pl'nom' qui retrouve toutes les positions issues d’un match impliquant un joueur donné, sur l’un ou l’autre camp ; et des info-bulles, au survol de chaque filtre du panneau de recherche, indiquant le jeton de commande correspondant.

  • Mode serveur (headless) : nouvelles méthodes matches.movesByMatch (tous les coups d’un match en un seul appel) et positions.epc (Effective Pip Count des deux joueurs).

  • Voir Panneau Anki et Liste des commandes.

0.26.0 (2026-06-09)

  • Réglages d’affichage de l’interface dans la fenêtre de configuration : un curseur d’échelle pour agrandir ou réduire l’ensemble de l’interface, et un choix de position des panneaux (en bas, sur le côté ou automatique) afin de mieux exploiter les écrans larges.

  • Ajout d’une barre d’informations au-dessus du plateau rappelant les joueurs et le contexte du match (événement, lieu, ronde, date, longueur).

  • À l’ouverture d’une base, le panneau des matchs est affiché d’emblée et la revue débute sur la première position.

  • Les raccourcis clavier sont désormais indépendants de la disposition du clavier (AZERTY, QWERTY, QWERTZ…).

  • Correction du décodage XGID (indicateurs Jacoby/Beaver et valeur du videau).

  • Ajout des onglets de vues multiples : plusieurs espaces de travail indépendants (liste de positions, position courante, recherche) avec les raccourcis CTRL-T (nouvelle vue), CTRL-W (fermer), CTRL-PageUp/CTRL-PageDown (changer de vue) et renommage par double-clic sur l’onglet.

  • Voir Configuration et Onglets de vues.

0.25.0 (2026-06-07)

  • Mode serveur (headless) : deux nouvelles méthodes pour reconstruire une position sans l’enregistrer — positions.fromXGID décode une chaîne XGID en position, et positions.fromXGP lit un fichier de position unique .xgp.

  • Voir Mode headless (serveur).

0.24.0 (2026-06-06)

  • Ajout d’une image conteneur (Docker) pour le mode headless : un point d’entrée dédié serve et un Dockerfile.serve produisant un binaire statique sans interface graphique, afin de déployer le moteur de blunderDB comme service derrière un reverse-proxy.

  • Voir Mode headless (serveur).

0.23.0 (2026-06-05)

  • Ajout de visites guidées de l’interface (tour général, recherche, matchs, tournois), rejouables depuis la barre d’outils ou la commande tour, et d’une base d’exemple chargeable par la commande demo pour découvrir l’outil sans importer ses propres parties.

  • Personnalisation des couleurs du plateau (fond, bordure, flèches, pions, dés, videau) depuis la fenêtre de configuration.

  • Autocomplétion de la ligne de commande (touche TAB).

  • Panneau de recherche : contrôle explicite du type de décision (Pions / Videau), avec un sous-type Double / Pas de double ou Prise / Passe pour les décisions de cube, synchronisé avec le plateau ; le videau proposé est affiché au centre du plateau pour les décisions de prise/passe.

  • Recherche d’une position par son identifiant (filtre id).

  • Correction de l’attribution de l’erreur de videau au joueur 1.

  • Voir Visites guidées et base d’exemple.

0.22.0 (2026-06-02)

  • Ajout d’un mode headless (serveur), avancé et facultatif, qui complète l’application de bureau : un démon serve exposant le moteur en HTTP + JSON, un backend PostgreSQL multi-utilisateur avec cloisonnement par tenant (et Row-Level Security en option), une commande migrate pour transférer une base SQLite vers PostgreSQL, et un dispatcher générique call donnant accès en ligne de commande à toutes les opérations de stockage.

  • Import de positions uniques depuis de nouveaux formats (eXtreme Gammon .xgp, BGBlitz texte, bibliothèque native .db) avec enrichissement des doublons entre formats.

  • Corrections : les panneaux ne provoquent plus d’erreur lorsqu’aucune base n’est ouverte et le panneau Commentaires ne boucle plus à l’ouverture.

  • Voir Mode headless (serveur).

0.21.0 (2026-06-01)

  • Internationalisation de l’interface : l’intégralité de blunderDB (barre d’outils, panneaux, messages, aide) peut désormais être affichée au choix en anglais, français, allemand, italien, espagnol, finnois, japonais, grec ou russe.

  • Ajout d’une fenêtre de configuration, accessible par un bouton en forme de rouage dans la barre d’outils, permettant de sélectionner la langue.

  • Le choix de la langue est conservé d’une session à l’autre.

  • Voir Configuration.

0.20.0 (2026-05-31)

  • Ajout de la structure d’exclusion Except au panneau de recherche : exclut les positions contenant l’un des pions dessinés, avec marqueur « doit être vide » (double-clic) et nombre de pions par point non limité (commande x).

  • Ajout de l’option « premier dé uniquement » au filtre de lancer de dés (variante D1, option CLI –dice).

  • Panneau Commentaires : focus automatique du champ de saisie à l’ouverture et boutons éditer / supprimer toujours visibles.

  • Correction du filtre « Search Text » qui ne trouvait pas tous les tags de commentaires.

0.19.0 (2026-05-07)

  • Ajout du panneau Stats : indicateurs PR (Performance Rating), Snowie Error Rate et MWC cost (Match Winning Chance cost), barre de filtre (joueur, tournoi, dates, type de décision, longueur de match), onglet Dashboard avec cartes de niveau / PR glissant / top blunders, onglet Progression avec courbe par tournoi et scatter plot par match, onglet Erreurs avec répartition par action de videau et histogramme des magnitudes.

  • Drill-down interactif vers les positions / matchs / tournois depuis tous les indicateurs.

  • Toggle PR / MWC instantané.

  • Commande CLI list –type stats.

  • Alignement des indicateurs PR / Snowie ER / MWC sur eXtremeGammon et gnuBG (seuil 0.16 d’équité pour les cubes proches).

  • Correction du calcul de cube_error pour les décisions Double/Pass.

  • Documentation du modèle de statistiques (Annexe : Modèle de statistiques — alignement XG / gnuBG / blunderDB).

  • Voir Panneau Stats.

0.18.0 (2026-04-20)

  • Refactoring majeur du code : découpage de db.go (10k lignes) en 19 fichiers spécialisés, extraction de 7 modules de service depuis App.svelte (4888→469 lignes), consolidation des stores modaux/panneaux.

  • Migration complète vers Svelte 5 runes.

  • Remplacement de 9 modales de tableau par un composant générique DataTableModal.

  • Ajout d’ESLint + Prettier + vitest (125 tests frontend) avec CI.

  • Conformité WCAG 2.1 AA (focus visible, rôles ARIA, navigation clavier).

  • Passage du mutex Database en RWMutex pour un meilleur parallélisme en lecture.

  • Documentation CLI complète (CLI_USAGE.md + Sphinx FR/EN).

  • Réécriture du README.

  • Correction de tous les avertissements ESLint (46→0) et Vite (6→0).

0.17.0 (2026-04-20)

  • Optimisation du stockage : compression zlib des données d’analyse (~80% de réduction), encodage compact des positions (~90% de réduction de la taille).

  • Ajout de 5 index manquants pour améliorer les performances de recherche.

  • Correction de la recherche par erreur de cube.

  • Correction du mode EDIT après une recherche sans résultats.

  • Restauration de l’état du panneau de recherche lors du changement d’onglets.

  • Suppression de 62 instructions de débogage des chemins critiques.

0.16.0 (2026-04-18)

  • Schéma de base de données v2.0.0 : déduplication des positions via hash Zobrist, colonnes de filtrage dénormalisées, préfiltre de motifs bitboard, journalisation WAL (Annexe: Schéma de la base de données).

  • Import par lot >=3x plus rapide, recherche filtrée <=100 ms sur 10k+ positions.

  • NOTE : les fichiers DB créés avec la v0.16.0 ne peuvent pas être ouverts par les versions plus anciennes ; les anciennes DB sont migrées automatiquement sur place (faire une sauvegarde d’abord).

0.15.0 (2026-03-31)

  • Export de la position en image PNG dans le presse-papier (board seul via Ctrl+X, ou board avec analyse via Ctrl+X Ctrl+X).

0.14.0 (2026-03-30)

  • Panneau Anki dédié pour l’étude par répétition espacée (algorithme FSRS).

  • Import des commentaires depuis les fichiers XG.

0.13.0 (2026-03-28)

  • Simplification de l’interface : la navigation dans les matchs et les collections se fait directement via les panneaux.

  • Ligne de commande intégrée dans la barre d’état.

  • Panneau Console renommé en panneau Log. (Panneau retiré en 0.31.0.)

  • Panneau Bearoff dédié dans le panneau inférieur.

  • Copier/coller de position dans le panneau de recherche.

  • Glisser-déposer pour réordonner les collections, les positions dans les collections, et les matchs dans les tournois.

  • Colonne tournoi dans le panneau des matchs avec édition inline.

  • Affichage automatique du panneau d’analyse après une recherche.

0.12.0 (2026-03-19)

  • Import de fichiers de position eXtreme Gammon (XGP) avec analyse.

0.11.0 (2026-03-06)

  • Filtre de recherche dans les positions courantes.

  • Ajout de filtres par match et par tournoi.

  • Effacement automatique du plateau lors de l’ouverture du panneau de recherche.

0.10.0 (2026-02-25)

  • Import de matchs depuis eXtreme Gammon (XG/XGP), GNUbg (SGF), Jellyfish (MAT/TXT) et BGBlitz (BGF/TXT).

  • Navigation dans les matchs : parcours des coups d’un match importé, avec mise en évidence du coup joué.

  • Panneau des matchs : liste, tri, édition inline, permutation des joueurs, assignation de tournoi.

  • Import par dossier récursif et import par glisser-déposer.

  • Calculateur EPC (Effective Pip Count) avec base de données de bearoff GNUbg intégrée. (Remplacé en 0.36.0 : la table est calculée sur la machine, plus aucune n’est embarquée.)

  • Collections : regroupement personnalisé de positions.

  • Tournois : regroupement de matchs par événement.

  • Sauvegarde et restauration de l’état de session (dernière recherche, position courante).

  • Migration automatique du schéma de base de données.

  • Affichage multi-moteurs dans l’analyse.

  • Filtre d’erreurs/blunders du joueur 1 dans les recherches.

  • Export de la base de données avec sélection granulaire (matchs, collections, tournois, coups joués).

  • Bouton de navigation dans les matchs.

  • Compte de course (pipcount) dans la navigation des matchs.

  • Interface en ligne de commande (CLI) complète.

  • Réouverture automatique de la dernière base de données.

  • Amélioration de la barre d’outils et des icônes.

0.9.0 (2025-11-02)

  • Correction de bug de la bibliothèque de filtres.

  • Import/export de base de données.

  • Affichage de flèches pour les coups sélectionnés.

  • Raccourcis clavier pour l’import/export.

0.8.0 (2025-05-03)

  • Possibilité de cacher le compte de course.

  • Chargement d’une position aléatoire.

0.7.0 (2025-02-16)

  • Prise en charge du japonais et de l’allemand dans les exports de XG.

0.6.0 (2025-02-13)

  • Ajout de la bibliothèque de filtres.

  • Affichage de la version de la base de données dans les métadonnées.

0.5.0 (2025-02-04)

  • Ajout de nouveaux filtres (miroir, non contact, jan blot, outfield blot).

0.4.0 (2025-02-03)

  • Résolutions de bugs divers.

  • Ajout d’une icône pour blunderDB.

  • Corrections de filtres.

  • Ajout du support de MacOS.

0.3.0 (2025-01-27)

  • Résolutions de bugs divers.

  • Sauvegarde automatiquement le dimensionnement de la fenêtre.

  • Importe les éventuels commentaires depuis XG.

0.2.0 (2025-01-06)

  • Résolutions de bugs divers.

  • Ajout de tables de matchs/TP/GV.

  • Ajout de filtres de recherche (coups, décision de videau, date).

  • Ajout de métadonnées sur les positions.

  • Fonction d’import/export entre instances de blunderDB.

  • Ajout de fonction de métadonnées sur les bases de données.

  • Introduction des numéros de versions (base de données et application).

0.1.0 (2024-12-31)

  • Création version bêta.