blunderDB

blunderDB è un software per creare database di posizioni di backgammon. Il suo punto di forza principale è offrire un unico luogo in cui un giocatore può aggregare le posizioni incontrate (online, in torneo) e poter ristudiare queste posizioni filtrandole secondo diversi filtri combinabili arbitrariamente. blunderDB può anche essere utilizzato per creare cataloghi di posizioni di riferimento.

La presente documentazione è strutturata nel modo seguente:

  • la sezione download e installazione spiega come procurarsi e avviare blunderDB.

  • il manuale descrive il funzionamento generale di blunderDB.

  • la guida utente è un’introduzione pratica per utilizzare rapidamente blunderDB.

  • l’elenco dei comandi e l’elenco delle scorciatoie da tastiera permettono un utilizzo efficiente di blunderDB.

  • la sezione interfaccia a riga di comando (CLI) descrive i comandi disponibili per l’importazione massiva, l’automazione e lo scripting.

  • le FAQ forniscono alcune risposte alle domande più frequenti.

Cronologia delle versioni

Versione

Data

Causa e/o natura delle modifiche

0.1.0

31 dicembre 2024

Creazione versione beta.

0.2.0

6 gennaio 2025

Correzioni di vari bug.

Aggiunta di tabelle match/TP/GV.

Aggiunta di filtri di ricerca (mosse, decisione di cubo, data).

Aggiunta di metadati sulle posizioni.

Funzione di importazione/esportazione tra istanze di blunderDB.

Aggiunta di funzione di metadati sui database.

Introduzione dei numeri di versione (database e applicazione).

0.3.0

27 gennaio 2025

Correzioni di vari bug.

Salva automaticamente le dimensioni della finestra.

Importa gli eventuali commenti da XG.

0.4.0

3 febbraio 2025

Correzioni di vari bug.

Aggiunta di un’icona per blunderDB.

Correzioni dei filtri.

Aggiunta del supporto a macOS.

0.5.0

4 febbraio 2025

Aggiunta di nuovi filtri (specchio, non contatto, jan blot, outfield blot).

0.6.0

13 febbraio 2025

Aggiunta della libreria di filtri.

Visualizzazione della versione del database nei metadati.

0.7.0

16 febbraio 2025

Supporto del giapponese e del tedesco nelle esportazioni di XG.

0.8.0

3 maggio 2025

Possibilità di nascondere il conteggio dei pip.

Caricamento di una posizione casuale.

0.9.0

2 novembre 2025

Correzione di bug della libreria di filtri.

Importazione/esportazione di database.

Visualizzazione di frecce per le mosse selezionate.

Scorciatoie da tastiera per l’importazione/esportazione.

0.10.0

25 febbraio 2026

Importazione di match da eXtreme Gammon (XG/XGP), GNUbg (SGF), Jellyfish (MAT/TXT) e BGBlitz (BGF/TXT).

Navigazione nei match: scorrimento delle mosse di un match importato, con evidenziazione della mossa giocata.

Pannello dei match: elenco, ordinamento, modifica inline, scambio dei giocatori, assegnazione del torneo.

Importazione per cartella ricorsiva e importazione tramite trascinamento.

Calcolatore EPC (Effective Pip Count) con database di bearoff GNUbg integrato.

Collezioni: raggruppamento personalizzato di posizioni.

Tornei: raggruppamento di match per evento.

Salvataggio e ripristino dello stato della sessione (ultima ricerca, posizione corrente).

Migrazione automatica dello schema del database.

Visualizzazione multi-motore nell’analisi.

Filtro per errori/blunder del giocatore 1 nelle ricerche.

Esportazione del database con selezione granulare (match, collezioni, tornei, mosse giocate).

Pulsante di navigazione nei match.

Conteggio dei pip nella navigazione dei match.

Interfaccia a riga di comando (CLI) completa.

Riapertura automatica dell’ultimo database.

Miglioramento della barra degli strumenti e delle icone.

0.11.0

6 marzo 2026

Filtro di ricerca all’interno delle posizioni correnti.

Aggiunta di filtri per match e per torneo.

Cancellazione automatica del tavoliere all’apertura del pannello di ricerca.

0.12.0

19 marzo 2026

Importazione di file di posizione eXtreme Gammon (XGP) con analisi.

0.13.0

28 marzo 2026

Semplificazione dell’interfaccia: la navigazione nei match e nelle collezioni avviene direttamente tramite i pannelli.

Riga di comando integrata nella barra di stato.

Pannello Console rinominato in pannello Log.

Pannello EPC dedicato nel pannello inferiore.

Copia/incolla di posizione nel pannello di ricerca.

Trascinamento per riordinare le collezioni, le posizioni all’interno delle collezioni e i match all’interno dei tornei.

Colonna torneo nel pannello dei match con modifica inline.

Visualizzazione automatica del pannello di analisi dopo una ricerca.

0.14.0

30 marzo 2026

Pannello Anki dedicato per lo studio a ripetizione dilazionata (algoritmo FSRS).

Importazione dei commenti dai file XG.

0.15.0

31 marzo 2026

Esportazione della posizione come immagine PNG negli appunti (solo tavoliere tramite Ctrl+X, oppure tavoliere con analisi tramite Ctrl+X Ctrl+X).

0.16.0

18 aprile 2026

Schema del database v2.0.0: deduplicazione delle posizioni tramite hash Zobrist, colonne di filtraggio denormalizzate, prefiltro di motivi bitboard, journaling WAL. Importazione in batch >=3 volte più veloce, ricerca filtrata <=100 ms su oltre 10k posizioni. NOTA: i file DB creati con la v0.16.0 non possono essere aperti dalle versioni più vecchie; i vecchi DB vengono migrati automaticamente sul posto (eseguire prima un backup).

0.17.0

20 aprile 2026

Ottimizzazione dello storage: compressione zlib dei dati di analisi (~80% di riduzione), codifica compatta delle posizioni (~90% di riduzione della dimensione). Aggiunta di 5 indici mancanti per migliorare le prestazioni di ricerca. Correzione della ricerca per errore di cubo. Correzione della modalità EDIT dopo una ricerca senza risultati. Ripristino dello stato del pannello di ricerca al cambio di scheda. Rimozione di 62 istruzioni di debug dai percorsi critici.

0.18.0

20 aprile 2026

Refactoring importante del codice: suddivisione di db.go (10k righe) in 19 file specializzati, estrazione di 7 moduli di servizio da App.svelte (4888→469 righe), consolidamento degli store modali/pannelli. Migrazione completa a Svelte 5 runes. Sostituzione di 9 modali di tabella con un componente generico DataTableModal. Aggiunta di ESLint + Prettier + vitest (125 test frontend) con CI. Conformità WCAG 2.1 AA (focus visibile, ruoli ARIA, navigazione da tastiera). Passaggio del mutex Database a RWMutex per un migliore parallelismo in lettura. Documentazione CLI completa (CLI_USAGE.md + Sphinx FR/EN). Riscrittura del README. Correzione di tutti gli avvisi ESLint (46→0) e Vite (6→0).

0.19.0

7 maggio 2026

Aggiunta del pannello Stats: indicatori PR (Performance Rate), Snowie Error Rate e MWC cost (Match Winning Chance cost), barra di filtro (giocatore, torneo, date, tipo di decisione, lunghezza del match), scheda Dashboard con schede di livello / PR mobile / top blunder, scheda Progressione con curva per torneo e scatter plot per match, scheda Errori con ripartizione per azione di cubo e istogramma delle magnitudini. Drill-down interattivo verso le posizioni / match / tornei da tutti gli indicatori. Toggle PR / MWC istantaneo. Comando CLI list –type stats. Allineamento degli indicatori PR / Snowie ER / MWC con eXtremeGammon e gnuBG (soglia di equità 0.16 per i cubi marginali). Correzione del calcolo di cube_error per le decisioni Double/Pass. Documentazione del modello statistico (Appendice: modello statistico — allineamento XG / gnuBG / blunderDB). Vedi Pannello Stats.

0.20.0

31 maggio 2026

Aggiunta della struttura di esclusione Except al pannello di ricerca: esclude le posizioni che contengono uno dei pezzi disegnati, con marcatore « deve essere vuoto » (doppio clic) e numero di pezzi per punto non limitato (comando x). Aggiunta dell’opzione « solo primo dado » al filtro di lancio dei dadi (variante D1, opzione CLI –dice). Pannello Commenti: focus automatico del campo di immissione all’apertura e pulsanti modifica / elimina sempre visibili. Correzione del filtro « Search Text » che non trovava tutti i tag dei commenti.

0.21.0

1 giugno 2026

Internazionalizzazione dell’interfaccia: l’intero blunderDB (barra degli strumenti, pannelli, messaggi, aiuto) può ora essere visualizzato a scelta in inglese, francese, tedesco, italiano, spagnolo, finlandese, giapponese, greco o russo. Aggiunta di una finestra di configurazione, accessibile tramite un pulsante a forma di ingranaggio nella barra degli strumenti, che permette di selezionare la lingua. La scelta della lingua viene conservata da una sessione all’altra. Vedi Configurazione.

0.22.0

2 giugno 2026

Aggiunta di una modalità headless (server), avanzata e facoltativa, che completa l’applicazione desktop: un demone serve che espone il motore in HTTP + JSON, un backend PostgreSQL multiutente con compartimentazione per tenant (e Row-Level Security come opzione), un comando migrate per trasferire un database SQLite verso PostgreSQL e un dispatcher generico call che dà accesso a riga di comando a tutte le operazioni di archiviazione. Import di singole posizioni da nuovi formati (eXtreme Gammon .xgp, BGBlitz testo, libreria nativa .db) con arricchimento dei duplicati tra formati. Correzioni: i pannelli non causano più errori quando nessun database è aperto e il pannello Commenti non entra più in loop all’apertura. Vedi Modalità headless (server).

0.23.0

5 giugno 2026

Aggiunta di visite guidate dell’interfaccia (visita generale, ricerca, partite, tornei), ripetibili dalla barra degli strumenti o con il comando tour, e di un database di esempio caricabile con il comando demo per scoprire lo strumento senza importare le proprie partite. Personalizzazione dei colori del board (sfondo, bordo, punte, pedine, dadi, cubo) dalla finestra delle impostazioni. Autocompletamento della riga di comando (tasto TAB). Pannello di ricerca: controllo esplicito del tipo di decisione (Pedine / Cubo), con un sotto-tipo Raddoppio / No raddoppio o Accetta / Passa per le decisioni di cubo, sincronizzato con il board; il cubo proposto è mostrato al centro del board per le decisioni di prendi/passa. Ricerca di una posizione tramite il suo identificativo (filtro id). Correzione dell’attribuzione dell’errore di cubo al giocatore 1. Vedi Visite guidate e database di esempio.

0.24.0

6 giugno 2026

Aggiunta un’immagine container (Docker) per la modalità headless: un punto di ingresso dedicato serve e un Dockerfile.serve che produce un binario statico senza interfaccia grafica, per distribuire il motore di blunderDB come servizio dietro un reverse proxy. Vedi Modalità headless (server).

0.25.0

7 giugno 2026

Modalità server (headless): due nuovi metodi per ricostruire una posizione senza salvarla — positions.fromXGID decodifica una stringa XGID in una posizione e positions.fromXGP legge un file di posizione singola .xgp. Vedi Modalità headless (server).

0.26.0

9 giugno 2026

Impostazioni di visualizzazione dell’interfaccia nella finestra di configurazione: un cursore di scala per ingrandire o ridurre l’intera interfaccia, e una scelta della posizione dei pannelli (in basso, di lato o automatica) per sfruttare meglio gli schermi larghi. Aggiunta di una barra delle informazioni sopra il tavoliere che ricorda i giocatori e il contesto del match (evento, luogo, turno, data, lunghezza). All’apertura di un database, il pannello dei match viene mostrato subito e la revisione inizia sulla prima posizione. Le scorciatoie da tastiera sono ora indipendenti dal layout della tastiera (AZERTY, QWERTY, QWERTZ…). Correzione della decodifica XGID (indicatori Jacoby/Beaver e valore del videau). Vedere Configurazione.

0.27.0

13 giugno 2026

Pannello Anki: una nuova modalità di allenamento libero (cram), accessibile dal pulsante Cram accanto a Study, che mostra posizioni casuali del mazzo senza modificare la pianificazione della ripetizione dilazionata — ideale per scaldarsi prima di un torneo o ripassare intensamente un mazzo senza alterarne l’ordine. Ricerca: un nuovo comando blunders (alias bl) che carica direttamente gli errori peggiori (equity/MWC) nella vista di analisi, con un numero opzionale per sceglierne la quantità (bl 50); un nuovo filtro per giocatore pl'nome' che trova tutte le posizioni di una partita a cui ha partecipato un dato giocatore, su entrambi i lati; e suggerimenti che, passando il mouse su ciascun filtro del pannello di ricerca, mostrano il token di comando corrispondente. Modalità server (headless): nuovi metodi matches.movesByMatch (tutte le mosse di una partita in una singola chiamata) e positions.epc (Effective Pip Count di entrambi i giocatori). Vedere Pannello Anki e Elenco dei comandi.

Indice

Contatti

Autore: Kévin Unger <blunderdb@proton.me>. Puoi anche trovarmi su Heroes con il nickname postmanpat.

Ho sviluppato blunderDB inizialmente per uso personale, per poter individuare schemi ricorrenti nei miei errori. Ma è molto gratificante ricevere riscontri, soprattutto dopo aver dedicato un mucchio di ore a progettazione, programmazione, debug… Quindi non esitare a scrivermi per condividere la tua esperienza. Tutti i riscontri (costruttivi) sono benvenuti.

Ecco diversi modi per discutere:

Fare una donazione

Se apprezzi blunderDB e vuoi sostenere gli sviluppi passati e futuri, puoi

  • offrirmi da bere se abbiamo il piacere di incontrarci!

  • fare una piccola donazione tramite PayPal all’indirizzo blunderdb@proton.me

Ringraziamenti

Dedico questo piccolo software alla mia compagna Anne-Claire e alla nostra cara figlia Perrine. Desidero ringraziare in modo particolare alcuni amici:

  • Tristan Remille, per avermi avviato al backgammon con gioia e benevolenza; per indicare la Via nella comprensione di questo meraviglioso gioco; per continuare a incoraggiarmi nonostante i miei modesti tentativi di giocare meglio.

  • Nicolas Harmand, allegro compagno ormai da più di una decina d’anni in belle avventure, e un fantastico compagno di gioco da quando ha preso il virus del backgammon.