Historial de versiones

Las versiones están clasificadas de la más reciente a la más antigua, una viñeta por cambio, y cada versión termina con las referencias a las páginas que describen en detalle lo que aportó. Una viñeta que una versión posterior ha reemplazado lleva la mención de la que la sustituyó: cuenta la historia del software, no describe la versión instalada.

Tras una actualización

La migración del esquema de la base es automática al abrir, y sin vuelta atrás: una base migrada ya no es legible por una versión anterior de blunderDB, de ahí la copia de seguridad previa (Anexo: Esquema de la base de datos). El resto no se hace solo, porque ninguno de estos datos es retroactivo:

  • Reanalizar las posiciones obsoletas (0.38.0, 0.40.0). Un análisis de gammonNet escrito antes de la versión 0.40.0 lo produjo un motor anterior (gammonNet v1.7.0 desde entonces): blunderdb analyze --stale, o la fila Análisis gammonNet obsoletos de la pestaña Mantenimiento, lo reescribe. Un análisis importado nunca se toca.

  • Reimportar los archivos de origen para obtener la suerte (0.33.0). Las partidas importadas antes llevan un guion en la columna Suerte, y un guion no es un cero. Los formatos que no transportan la suerte (BGF, Jellyfish .mat) nunca la proporcionarán.

  • Reimportar los archivos XG para obtener las marcas (0.30.0). Las marcas puestas en eXtreme Gammon se incorporan a la base al reimportar, sin tocar los comentarios ni los análisis existentes.

  • Lanzar la puesta al día de análisis gammonNet (0.34.0), desde la interfaz, mediante blunderdb analyze o en modo servidor: completa las posiciones que no tienen ningún análisis, sin sobrescribir nunca un análisis importado.

  • Volver a lanzar la puesta al día del análisis gammonNet (0.39.0). La migración borra los veredictos de gammonNet de una aceptación o de un rechazo, calculados como una decisión del que recibe el doble; la puesta al día los reescribe como la decisión del que dobla antes del doble.

  • Reparar los partidos cuyos jugadores se invirtieron (0.40.0). Antes de 0.40.0, la inversión sustituía las posiciones del partido por otras, sin análisis: blunderdb match repair --list encuentra los partidos que difieren de su archivo fuente, y match repair --id o el botón ⟲ de la ficha los reescribe desde ese archivo.

0.44.0 (2026-10-19)

  • El ejercicio Apertura elige entre dos modos: Categorías XG (Money, DMP, Gammon save y Gammon go, combinables) o Partido a 5, que sortea con la misma probabilidad uno de los veinticinco marcadores de un partido a 5 puntos, DMP y partidas Crawford incluidos, sin marcador que elegir. La cuadrícula de marcadores de partido a 7 desaparece.

  • El libro de aperturas integrado incluye los veinticinco marcadores de un partido a 5: se añaden 2-4, 4-2, 2-5, 5-2, 3-5, 5-3 y las partidas Crawford 1-3, 3-1, 1-5 y 5-1; blunderdb openingbook y las rutas openingbook.* del servidor los sirven como los demás marcadores.

  • Del lado del servidor: search.find ordena por recuento de pips y por fecha, analyses.queueStatus describe la cola de análisis, las estadísticas se filtran por adversario, positions.setIndividuallyImported quita la marca «aportada a mano» de una posición, y matches.lastVisited devuelve el último partido visitado, ya no el último importado; blunderdb stats acepta --opponent.

  • Véanse Panel Entrenamiento, openingbook — ¿Qué jugada con este marcador? y Contrato de la API.

0.43.0 (2026-10-18)

  • El ejercicio Apertura sortea por categorías: Money, DMP, Gammon save (el que abre a 1 away Crawford, el que responde a 2 away) y Gammon go (a la inversa), una categoría con la misma probabilidad que las demás y luego uno de sus marcadores; el enunciado nombra la categoría junto al marcador. La cuadrícula de marcadores de partido a 7 sigue siendo una opción, desmarcada por defecto, porque de 4 a 7 away los mejores movimientos apenas cambian de un marcador a otro.

  • El libro de aperturas integrado incluye el juego por dinero y el DMP: blunderdb openingbook y las rutas openingbook.* del servidor los sirven como los demás marcadores.

  • Véanse Panel Entrenamiento, openingbook — ¿Qué jugada con este marcador? y Libro de aperturas: diferencia, IC 95 % e igualdad.

0.42.0 (2026-10-17)

  • ¿Qué movimiento con este marcador? El ejercicio Apertura: la pestaña Entrenamiento plantea el movimiento de apertura (1st roll) o la respuesta (2nd roll) de una partida con un marcador, jugado en el tablero y juzgado con un libro de aperturas integrado, calculado por los rollouts de blunderDB en veinte marcadores; todo movimiento que empata con el mejor es correcto, y con 2nd roll el movimiento de apertura ya jugado se elige entre ellos. El veredicto es una marca de correcto o incorrecto y la tabla de candidatos del libro. train opening, blunderdb openingbook y las rutas openingbook.* del servidor son sus otras formas.

  • INTRO encadena las preguntas de entrenamiento: durante una Decisión o una Apertura, INTRO valida el movimiento jugado en el tablero, esté donde esté el foco fuera de un campo, un botón o una ventana, y luego pasa a la pregunta siguiente, o termina la sesión, una vez mostrado el veredicto; dos pulsaciones seguidas no puntúan la respuesta dos veces.

  • Del lado del servidor: la ruta matches.byPosition lista los matches en los que se jugó un movimiento en una posición, y la importación de un archivo XG en una base PostgreSQL hace la mitad de consultas por posición y va el doble de rápido.

  • Correcciones notables: un archivo de match en el que una posición tiene dieciséis fichas de un bando es rechazado por el servidor como no válido, y ya no con un error interno.

  • Véanse Panel Entrenamiento, Atajos de teclado, openingbook — ¿Qué jugada con este marcador?, Libro de aperturas: diferencia, IC 95 % e igualdad y Contrato de la API.

0.41.0 (2026-10-16)

  • Leer una posición desde una captura de pantalla: pegar, arrastrar o abrir una captura del tablero de eXtreme Gammon en el tablero de edición lee las fichas, los dados, el cubo y el marcador, sin modelo entrenado; las lecturas dudosas se rodean con un círculo en el tablero y no se guarda nada antes del gesto habitual. blunderdb capture y la ruta positions.fromImage del servidor son las otras formas.

  • El jugador principal y la ventana Gestionar jugadores: la estrella de un jugador lo designa como jugador principal, colocado en el asiento 1 al importar, y propone invertir de una vez los partidos en que juega en el lado contrario; la ventana lista los jugadores con sus alias (× deshace una fusión) y sus números de partidos, que abren esos partidos. blunderdb players main y players matches, así como las rutas players.main.*, son las otras formas. En el panel Torneos, el PR y el MWC de una fila son los del jugador principal en cuanto ha jugado en ella.

  • Importar una base también incorpora los partidos: con sus juegos, jugadas, análisis y origen, los torneos (con su Dirección y su Encuentro), los borradores de transcripción y los alias de jugadores, sin duplicados y sin cambiar nada al reimportar el mismo archivo; una colección viva o un filtro guardado que designa filas por su número se renumera para la base que recibe. blunderdb import --type database y el servidor hacen lo mismo.

  • Una vista previa antes de exportar: la ventana de exportación cuenta, familia por familia, lo que contendrá el archivo antes de escribirlo; blunderdb export --plan y la ruta exports.plan dan el mismo recuento. Un torneo elegido se lleva siempre sus partidos, y la Dirección y el Encuentro de un torneo viajan con él.

  • Deshacer la última revisión de Anki: el botón Deshacer de la revisión, o la tecla u, retoma la última nota de la sesión y vuelve a mostrar la tarjeta; blunderdb anki card --action undo y la ruta anki.undoReview del servidor hacen el mismo gesto.

  • La búsqueda de gammonNet se reparte entre los núcleos libres: gammonNet v1.8.0 divide una búsqueda a 2 plies o más entre varios núcleos, con las mismas cifras que en uno solo; todos los cálculos de un proceso (análisis, lote, paneles, servidor) toman de un único presupuesto de núcleos, y el servidor cuenta a una unidad el tiempo de cada núcleo que ocupa.

  • Marcar los jugadores en la leyenda de los gráficos de un partido: desmarcar a un jugador oculta sus marcas en los tres gráficos, y el desplazamiento del ratón, el clic y las flechas solo apuntan al otro; el ajuste se recuerda por partido.

  • Los recuentos de las estadísticas abren sus posiciones: los paneles Sesgo, Antes/después y Tiempo añaden a cada recuento de decisiones una columna Posiciones que abre las posiciones distintas afectadas.

  • Una transcripción más legible: la tecla numérica indica su efecto mediante un indicador de modo (Entrada o Edición) y el efecto de Intro; las flechas del tablero siguen la jugada escrita en la decisión bajo el cursor, en gris, y un paso ilegal se dibuja en rojo discontinuo; elegir la primera línea del análisis reemplaza la decisión.

  • El vídeo ya no bloquea la aplicación: el panel de vídeo reanuda la reproducción tras un salto que no llega a término, nunca recarga un vídeo en pausa y nombra los complementos de GStreamer que faltan; un archivo .webm o .mkv mal multiplexado se avisa al abrirlo con el comando ffmpeg que lo repara sin recodificar.

  • Correcciones notables: una jugada realizada se empareja con sus candidatas por el tablero al que llega y no por su notación, de modo que dos jugadas de la misma forma pero con capturas distintas ya no se confunden; una captura de pantalla a escala fraccionaria se lee correctamente; un vídeo en pausa ya no se recarga.

  • Véanse Manual, Atajos de teclado, Interfaz de línea de comandos (CLI), Modo headless (servidor) y Contrato de la API.

0.40.0 (2026-10-12)

  • La búsqueda de gammonNet a 3 y 4 ply va varias veces más rápido: una sola réplica por nodo interior, y una raíz escalonada que solo lleva a plena profundidad a los mejores candidatos de una clasificación a 2 ply; el motor pasa a gammonNet v1.7.0. Todo análisis de gammonNet escrito antes está obsoleto y se reescribe con la fila Análisis gammonNet obsoletos de la pestaña Mantenimiento; un rollout cuya política juega a 3 ply ya no da las mismas cifras.

  • Un análisis de gammonNet se cancela en plena búsqueda: la barra de estado muestra su profundidad y su progreso, y su botón de cancelación interrumpe también una búsqueda profunda ya iniciada, en la interfaz, la línea de comandos y el servidor.

  • La pestaña Mantenimiento de la configuración muestra el estado de salud de la base de datos, una fila por operación (posiciones sin análisis, análisis gammonNet obsoletos, partidos sin estadísticas, espacio recuperable…) con su recuento, su última ejecución y su acción; nada se lanza allí por sí solo, y blunderdb maintenance y las rutas maintenance.* del servidor son las otras formas. Abrir una base de datos ya no escribe nada allí: las estadísticas de un partido se calculan en su primera lectura o desde esta pestaña.

  • Solo una operación larga escribe en la base de datos a la vez: durante una operación de mantenimiento, un análisis de gammonNet o un rollout, otra acción se rechaza con el nombre de la que ocupa la base, y un análisis automático (tras una importación, una transcripción o un Duelo) espera su turno.

  • La exportación Anki .apkg: un mazo de estudio o una colección se escribe como paquete Anki .apkg, que la aplicación Anki importa en ordenador o teléfono (AnkiDroid, AnkiMobile); cada posición se convierte en una tarjeta, con el tablero, el marcador, el cubo y los dados en el anverso, la mejor jugada o la decisión de cubo correcta, su equity y el error de la jugada realizada en el reverso. El botón de exportación del panel Anki, blunderdb anki export y la ruta anki.exportApkg del servidor son sus tres formas, y una reexportación actualiza las tarjetas en Anki en lugar de duplicarlas.

  • El Duelo parte de donde se quiera: la banda de cabecera del panel Duelo fija la Salida — la posición inicial, o el tablero editado como en el panel Eval, formando uno solo su marcador y los campos del marcador —, juega los dados del tablero o los hace relanzar, y sitúa la decisión de cubo antes o después de la tirada; Una sola partida detiene el Duelo al final de su primera partida, para practicar un marcador. blunderdb duel create acepta --away, --reroll, --after-cube y --single-game.

  • Las cadencias en minutos por punto: Standard (2 min por punto + 12 s), Speed (0,4 min por punto + 10 s) o una cadencia guardada con un nombre; la reserva de cada jugador se refiere a la longitud del partido, o a lo que queda por jugar desde un marcador de salida.

  • El pipcount oculto durante un Duelo: desmarcado al iniciar, permanece oculto incluso con el botón de la barra de herramientas o P, y vuelve al salir del Duelo.

  • Girar el vídeo: el botón ⟳ de la barra de vídeo, presente también en la barra del modo teatro, o la tecla o gira el vídeo un cuarto de vuelta, archivo local o enlace de YouTube; el ángulo se recuerda para el borrador, en este ordenador.

  • La fecha de un torneo deducida de sus partidos: un torneo sin fecha toma la de su partido más antiguo, mostrada en gris y propuesta por el formulario de edición, sin escribirse en la base; cada fila del panel Torneos empieza por # y Fecha como en el panel Partidas, y la Progresión ordena los torneos en orden cronológico.

  • La ficha del partido en el panel Torneos: un clic en un partido de un torneo muestra bajo la tabla la ficha del panel Partidas, con sus pestañas, y un campo de filtro restringe la lista de torneos mientras se escribe.

  • Toda la biblioteca se exporta de la misma manera en todas partes: la nueva ventana de exportación — una fila por familia con su recuento, el archivo elegido en último lugar —, blunderdb export --type database y el servidor llevan las mismas familias: partidos con sus borradores de transcripción y los alias de sus jugadores y eventos, colecciones, torneos, mazos de Anki con o sin su historial de repasos (--anki-history, tarjetas suspendidas incluidas), cada una de las cuales puede retirarse o restringirse a identificadores (--match-ids, --tournament-ids…). Una colección viva o un filtro guardado que designa posiciones, partidos o torneos por su número se renumera para el archivo, y una colección viva se evalúa allí bajo el tope de 5 000 posiciones; el archivo fuente y el vídeo local de un partido salen reducidos a su nombre, una URL de vídeo sin las credenciales que lleva. Una lista filtrada exporta solo los partidos en los que se jugaron sus posiciones, cada uno con todas sus posiciones.

  • Reparar un partido desde su archivo fuente: el botón ⟲ de la línea Archivo fuente de la ficha, o blunderdb match repair, vuelve a leer el archivo y reescribe las posiciones, los análisis y los errores del partido como una importación nueva, conservando lo introducido desde entonces (torneo, nombres, inversión de jugadores, comentarios, transcripción, vídeo y marcas) y los análisis más profundos; match repair --list encuentra los partidos que difieren de su archivo, y la ruta matches.repair hace lo mismo en el servidor.

  • El panel Estadísticas: un único filtro, compartido por todas las pestañas, con un campo de jugador que busca al teclear; el filtro de fechas cuenta su último día entero, y el filtro Motor es un menú de los motores presentes en los análisis de la base de datos (blunderdb stats engines). Cada tabla se ordena y se filtra por columna (>500, 3-7…), y su orden se recuerda. Cada recuento abre exactamente lo que cuenta — partidos, torneos, posiciones, blunders —, la fila de un jugador lo coloca en el filtro, y el encabezado de un partido, la barra de análisis y un torneo abren Estadísticas sobre ellos; blunderdb stats matches y stats tournaments dan los partidos y los torneos que cuenta una cifra. La clasificación pasa de la pestaña Corpus a la pestaña Jugadores, ordenada por PR (stats ranking la sigue dando en la línea de comandos); la fila sobre la que está el cursor en una tabla se tiñe.

  • La ventana Fusión de jugadores permanece abierta entre dos fusiones; Cerrar o ESC la cierra.

  • No entrar se introduce con una tecla en la Transcripción: cuando el jugador en turno está en la barra, f introduce una tirada que no le permite entrar — la primera, los no dobles antes — y el turno pasa sin movimiento que teclear; fuera de la barra, o si todas las tiradas entran, no se introduce nada y la barra de estado lo indica.

  • El abandono se introduce con una tecla en la Transcripción: r abre la elección del nivel (simple, gammon, backgammon); en el modo teatro, una pequeña ventana lo propone, y las teclas 1, 2 y 3 lo validan.

  • La jugada se juega en el minitablero del modo teatro: los mismos gestos que en el tablero, clic derecho para deshacer la jugada; las flechas de la jugada anterior se borran desde el primer paso.

  • La casilla Post-Crawford de la Transcripción aparece en el marcador inicial cuando un jugador está a L-1; cada marca de incoherencia de la transcripción muestra su motivo.

  • La escala de la interfaz se ajusta con el teclado: Ctrl++, Ctrl+- y Ctrl+0 la aumentan, la reducen y la restablecen, como en un navegador; la interfaz ampliada ocupa toda la ventana.

  • El rollout pasa a MAYÚS-R; r sigue siendo la posición aleatoria.

  • Correcciones notables: invertir los jugadores de un partido, en 0.39.0 y antes, sustituía sus posiciones por otras, sin análisis, y retiraba sus decisiones del PR, del MWC y de L₇; la inversión ya solo toca los nombres y los asientos y conserva los análisis y las cifras al bit, y un partido ya dañado se repara desde su archivo fuente con match repair o el botón ⟲ de su ficha. gammonNet ya no se desborda ante un doble con muchísimas jugadas, que hacía fallar un rollout no truncado; la curva «PR por partido» se muestra en Linux; un recuento de posiciones del panel Estadísticas sale del modo partido antes de abrir su lista; abrir un torneo desde Estadísticas lo selecciona en el panel Torneos; la tarjeta de una exportación .apkg nombra la partida Crawford y post-Crawford; el minitablero del modo teatro sigue la orientación del tablero principal; un clic en el historial de la transcripción ya no lo desplaza el vídeo en reproducción, y los saltos de vídeo están acotados y serializados; una corrección ya no deja fichas sobrantes, y la cadena de posiciones siguientes se recalcula tras una modificación.

  • Véanse Manual, Interfaz de línea de comandos (CLI) y Modo headless (servidor).

0.39.0 (2026-10-10)

  • El vídeo de un partido: un archivo local o un enlace de YouTube se adjunta a un partido, y el panel Partidas abre el vídeo un segundo antes de la tirada de la decisión estudiada (icono de la fila o tecla v).

  • El vídeo junto al tablero: la zona del tablero se reparte entre el vídeo y el tablero, a ambos lados de un asa cuya posición se recuerda; ⇄ o el asa elige el lado del vídeo, [ y ] ajustan su velocidad, que un gran indicador muestra en el centro del vídeo.

  • La Transcripción sigue un vídeo: el panel de vídeo coloca las marcas de cada acción (instante de la tirada, instante de la acción), ESPACIO, MAYÚS con las flechas, v y MAYÚS-V controlan la reproducción y las marcas, un clic en una celda lleva el vídeo a su marca, y el Cursor sigue al vídeo durante la reproducción.

  • La duración de cada jugada se lee en una columna de la transcripción, deducida de las marcas; una jugada sin instante de acción tiene una duración estimada, mostrada como las demás.

  • La barra de la Transcripción se lee en tres grupos: los borradores, la entrada con el menú Vídeo (archivo local, enlace de YouTube, quitar el vídeo), y luego Hecho, Abandonar y un menú ⋯ que contiene el texto y la exportación .mat.

  • El modo teatro: F11 pone la ventana a pantalla completa con el vídeo, con un minitablero flotante encima, y el teclado de entrada sigue activo.

  • La ficha de un match en pestañas: la cabecera y el resumen del balance por jugador se quedan arriba, y debajo las pestañas Transcripción, Gráficos, A revisar, Detalles, Info y Estadísticas se desplazan cada una por separado; la pestaña elegida se recuerda, y los gráficos se reparten la altura de la pestaña Gráficos.

  • El balance del partido: las decisiones por revisar, el resultado ajustado por la suerte convertido en MWC, el ritmo de los errores (precipitados o meditados, respecto a la mediana de las duraciones del jugador) y el PR y la pérdida L₇ con sus intervalos; blunderdb match --format summary y la ruta stats.matchReview también lo ofrecen.

  • La pérdida MWC referida a un partido a 7 puntos (L₇) se lee junto al PR en la lista de partidos, las estadísticas del partido, los torneos, el panel de control y la progresión, así como en blunderdb stats, stats progression y match.

  • La dificultad de cada decisión y el error evitable: la transcripción y el gráfico de pérdida los muestran, y la cabecera del partido da por jugador la dificultad, el exceso, la razón y el número de errores evitables.

  • Un intervalo del 95 % acompaña al PR y a cada celda de los desgloses, remuestreado por partidos.

  • El balance de un torneo: el botón Balance del panel Torneos compara el torneo de un jugador con su nivel habitual, desglosado por ronda, por rango de decisión, por marcadores de presión y por ritmo, y luego por familias de errores; blunderdb stats tournament y el servidor también lo ofrecen.

  • La tarjeta Plan de estudio del panel de control clasifica las familias de errores por MWC recuperable, y cada una alimenta la cola de estudio, un quiz o un paquete Anki; blunderdb stats plan es su forma en línea de comandos.

  • Antes/después del estudio y sesgos con signo: el panel de control mide si lo estudiado cuesta menos en partido, y en qué sentido se equivoca el jugador; blunderdb stats effect y stats biases también los ofrecen.

  • Las posiciones de referencia: el botón Proponer… del panel Colecciones propone las posiciones por estudiar sobre un ámbito (base, partido en curso, torneo, filtro de las Estadísticas), para hacer con ellas una colección, un paquete Anki o un quiz; blunderdb collection suggest es la otra forma.

  • Un partido pasa por la papelera: eliminado, se restaura idéntico, con su número, su fecha de importación, sus partidas, sus análisis y sus posiciones; blunderdb trash delete --kind match hace el mismo gesto.

  • Una página Métricas da la definición, la fórmula y los límites de cada medida: error, PR, pérdida MWC, dificultad, intervalos, balances, plan de estudio, posiciones de referencia, antes/después y sesgos.

  • Una jugada se introduce en el tablero de la misma manera en todas partes: en el Duelo, el Entrenamiento, la respuesta en el tablero de Anki y la Transcripción, un clic en una ficha la juega con el dado izquierdo aún libre, un clic en los dados invierte su orden y luego valida la jugada completada, como INTRO, y el clic derecho deshace la jugada en curso; la entrada de origen y luego destino desaparece.

  • Anki y el Entrenamiento validan en el tablero: INTRO o un clic en los dados juzga la jugada realizada, en lugar del botón Comprobar.

  • La Transcripción pide los dados antes de la jugada: sin dados introducidos, el tablero no juega nada; con los dos dados introducidos, la jugada se juega en el tablero como en los demás modos.

  • Evaluar en una nueva pestaña: el clic derecho en el tablero abre una vista Variante de #n en el panel Eval, sobre la posición mostrada, y la vista de origen conserva su posición, su lista y su análisis; cada vista recupera su propio tablero de Eval.

  • El desafío: el botón Desafío de la barra de herramientas (tecla m) cubre el análisis del panel Análisis hasta un clic, en cada cambio de posición; en la revisión de un match, también oculta las marcas, las pérdidas y la dificultad de la lista de jugadas.

  • Cada recuento de posiciones se abre con un clic: las columnas Posiciones y Errores graves de los desgloses, las familias del plan de estudio (ahora una lista de acciones Estudiar, Quiz, Anki), los contadores de un mazo de Anki (pendientes, nuevas, en curso, en repaso), el recuento de un torneo y las marcas de una partida cargan exactamente las posiciones contadas.

  • Los paneles comparten una misma banda de cabecera: título, contador y filtros a la izquierda, acción principal en el extremo derecho (Buscar, Iniciar, Jugar…); la Búsqueda coloca Criterios, Historial y Guardados en su banda.

  • Una colección viva se crea con su consulta: blunderdb collection create --query y la ruta collections.create; collection evaluate la lee entera hasta 5 000 posiciones dando el total real, y un mazo de Anki sacado de una colección viva reejecuta su consulta en cada sesión.

  • El formulario Metadatos de la Transcripción ocupa el cuerpo del borrador, en dos columnas cuando el ancho lo permite, quedando visible la transcripción; el mismo botón o ESC devuelve la entrada.

  • La búsqueda de la ayuda cuenta y resalta las apariciones al teclear.

  • Esquema 2.41.0: la fuente de vídeo del partido y las marcas de cada jugada; cada jugada lleva el error de su propia decisión, y el PR de los partidos ya presentes en la base se recalcula según las reglas de eXtreme Gammon. La migración desde 2.36.0 es automática al abrir y sin vuelta atrás (Anexo: Esquema de la base de datos).

  • Correcciones notables: gammonNet analiza un aceptar o un rechazar como la decisión de quien dobla antes del doble, rollouts incluidos, y la migración borra los veredictos de gammonNet obsoletos de esas posiciones; el PR cuenta las jugadas forzadas, las decisiones de cubo y los errores sin marcar como eXtreme Gammon; un archivo .xg truncado se rechaza con el código invalid; el sonido silenciado y el volumen del vídeo sobreviven a un cambio de velocidad; un arrastre iniciado en un cuadro de diálogo y soltado en el fondo ya no lo cierra; cada pestaña de la configuración conserva su posición de desplazamiento.

  • Véanse Manual, Métricas y herramientas de estudio, Interfaz de línea de comandos (CLI) y Modo headless (servidor).

0.38.0 (2026-10-06)

  • El Duelo: se juega un match entero contra el Bot, que juega la política de gammonNet, bajo el arbitraje de blunderDB — dados sacados de una semilla cuya huella SHA-256 se publica en la creación, reglas, marcador y relojes llevados por la aplicación. Una pestaña Duelo, el botón « Jouer » de la barra de herramientas y el modo DUEL; un match de 1 a 25 puntos o una sesión por dinero, salida desde la posición inicial, la posición en el tablero o un marcador elegido, un Duelo suspendido y luego reanudado. blunderdb duel y las rutas duels.* del servidor son las otras dos formas.

  • El Duelo se juega en el tablero: antes de la tirada, un clic en el tablero o en los dados los tira y un clic en el cubo propone doblar; un clic en una ficha la juega, un clic en los dados invierte su orden o valida la jugada, como INTRO o ESPACIO, y el clic derecho deshace la jugada en curso o abre el menú del Duelo (Pila, abandono, suspensión, parada).

  • La Cadencia y la duración de decisión: una reserva por jugador y un plazo gratuito en cada turno, el tiempo agotado anotado o haciendo perder el match. Cada decisión de un Duelo lleva su duración, que la revisión muestra (columna Durée, resumen por jugador, gráfico), que la búsqueda filtra con tm>x, combinable con E>x, y que la pestaña Estadísticas cruza con el error.

  • El origen de un Match jugado aquí se lee al principio de su transcripción: salida, cadencia, pérdida por tiempo o parada, nivel del Bot y versión de gammonNet cuya política jugó, semilla revelada y su SHA-256, lo suficiente para recalcular cada tirada sin fiarse de blunderDB.

  • La Pila: la tecla b, el marcapáginas de la barra de herramientas o un doble clic fuera del tablero aparta la posición mostrada, en todos los modos, y el mismo gesto la retira; un marcapáginas en la esquina del tablero lo indica. blunderdb collection pile hace el mismo gesto.

  • Los rollouts se lanzan con un clic derecho, desde la tabla de jugadas del panel Análisis como desde el panel Eval, sobre una selección de jugadas (Ctrl+clic, Mayús+clic) o sobre la decisión de cubo, con un ajuste — Rápido, Estándar o Libre — conservado de una sesión a otra. El mismo menú copia la posición con su análisis, o con las jugadas seleccionadas.

  • Sin base abierta, el panel Eval coloca, pega, evalúa, hace el rollout y copia una posición, la pestaña Entrenamiento ofrece Puntuaciones, Fichas, Bearoff y Evaluación, y import XGID=… coloca la posición en el tablero borrador.

  • El clic derecho fuera del tablero propone Effacer la position y Position de départ en edición y en Eval; en una jugada hecha en el tablero (quiz, Transcripción), su menú empieza por Recommencer.

  • Los avisos del Duelo se colocan en medio de la mitad derecha del tablero, con la escala tipográfica de la aplicación; el jugador 1 se queda abajo sea quien sea el que tiene el turno, y la huella de la semilla se lee en un globo de ayuda de la línea de avisos.

  • Abandonar, suspender, anular: el menú del Duelo abandona el partido, lo pone en pausa o lo anula; en dinero, abandonar pierde una partida simple al valor del cubo. Un partido a puntos solo se registra entero, y la semilla de un Duelo en suspenso no sale por ninguna exportación.

  • El selector de nivel del Bot indica la profundidad de cada nivel, leída de la tabla de gammonNet.

  • Un Duelo se juega contra un Lado externo: un Lado externo declara el Bot que juega detrás de él (--side external:<configuration>@<engine>, sides[i].declared), y el origen del Partido lo vuelve a leer como declarado por el cliente y no atestiguado; con la semilla combinada (--combined-seed, duel contribute, duels.contribute), la aportación de cada Lado externo se suma a la semilla sellada y las tiradas salen de ella, con la fórmula publicada.

  • Varios Duelos abiertos a la vez: abrir un Duelo no suspende ningún otro, y un Duelo abierto hace correr sus relojes hasta que se suspende, incluso si el proceso se detiene o se bloquea; el escritorio mantiene un solo Duelo en el tablero y suspende el que deja, sin tocar los que un servidor o la línea de comandos mantienen abiertos en la misma base.

  • La transcripción de un partido gana las columnas Cubo, Juego y Reloj; la cadencia y el banco de tiempo figuran en la información del partido, y una casilla de tiempo sin duración lleva un guion.

  • La barra de estado: el enlace de los blunders lanza la búsqueda, y sus dos cifras son enlaces distintos, los blunders de la lista en pantalla y los de toda la biblioteca.

  • El motor pasa a gammonNet v1.6.0 (red strehl-prob5-512-512-256-256); las jugadas legales salen en el orden de origen, dado pequeño primero.

  • Materializar una transcripción en una sola llamada, en modo estricto: blunderdb transcribe --materialize y la ruta transcriptions.materialize escriben el Partido, o rechazan la primera Acción defectuosa indicando su rango y su motivo, sin escribir nada.

  • Esquema 2.36.0: las tablas del Duelo, la duración de cada decisión, el Bot declarado, las aportaciones de los Lados externos y el estado abierto de cada Duelo. La migración desde 2.31.0 es automática al abrir y sin vuelta atrás (Anexo: Esquema de la base de datos).

  • Correcciones notables: un archivo de importación ilegible se rechaza con el código invalid, quedando internal reservado a las averías; en Windows, una compactación reduce de verdad el archivo, o dice por qué no pudo; CTRL-C ya no lo disputa la copia del navegador integrado, y CTRL-X CTRL-X copia la evaluación de gammonNet en modo EVAL.

  • Véanse Manual, Interfaz de línea de comandos (CLI) y Modo headless (servidor).

0.37.0 (05/10/2026)

  • La transcripción de una partida en papel: una pestaña y un modo TRANSCRIBE donde la partida se introduce jugada a jugada — dados, triángulo de las 21 tiradas, jugada realizada en el tablero o tecleada en notación, cubo, corrección in situ, borrador duradero que se recupera tras un fallo. blunderdb transcribe y las rutas transcriptions.* del servidor son las otras dos formas.

  • La Dirección de torneo: un torneo de club se dirige desde el panel Torneo — directorio de jugadores, propuestas de emparejamientos confirmadas con un gesto, cuadrícula de mesas y hojas de resultados, cuadros y tabla de vidas, clasificación, premios y dotación, página mural de la sala, hojas imprimibles, Encuentros de varias pruebas en una sala compartida. blunderdb tournament y serve --direction son las otras dos formas.

  • El entrenamiento: una pestaña Entrenamiento (Puntuaciones, Fichas, Bearoff, Evaluación, Decisión) y su diario, un modo quiz cuyo PR está en la escala del juego real, las preguntas falladas retomadas en un paquete o en una colección, una cola de estudio de los blunders sin tratar, la explicación del error al dorso de la tarjeta Anki, tarjetas de puntuación y decisiones de cubo en dos tarjetas.

  • Las Lecciones: un recorrido redactado en el escritorio, leído desde la aplicación, la línea de comandos (blunderdb lesson) o el servidor, y exportado con la base; el progreso solo se escribe con un gesto explícito del alumno.

  • La búsqueda interroga un corpus: tokens de jugador, de oponente, de torneo, de ronda, de longitud, de fecha y de PR, like que clasifica las posiciones parecidas, plan de juego gt:, vocabulario de etiquetas, frase en lenguaje natural traducida a tokens, filtros favoritos fijados, paleta de comandos difusa (CTRL-MAYÚS-P), hoja de contactos en minitableros y colecciones vivas.

  • El panel Stats gana la pestaña Corpus (cara a cara, PR por ventana, clasificación, alias de jugadores y de eventos, duplicados probables), dos jugadores lado a lado, los errores recurrentes por plan de juego, el desglose por fase, etiqueta y puntuación, un objetivo de progresión, un informe HTML autónomo y la exportación CSV; una partida importada sin análisis obtiene un PR.

  • El evaluador pasa a gammonNet v1.4.0 — filtro de jugadas en triplete, beaver y raccoon solo en money game — y gana rollouts truncados, cubeful y reproducibles, almacenados como segundo análisis, los motores lado a lado, la matriz del cubo a todas las puntuaciones de una partida, y una tabla de equidad de partida importada de un .xml de gnubg, propia de cada base.

  • La importación pasa a ser paralela, con un modo masivo para los lotes grandes, un diario y la reanudación de un lote interrumpido, una carpeta vigilada, las partidas HedgeHog .ogxm, el OGID de OpenGammon y los metadatos de cabecera XG (Elo, transcriptor, comentarios); un duplicado exacto aporta sus análisis más profundos.

  • Los comentarios se firman: el ajuste « Su nombre » (--author en la línea de comandos) nombra a su autor, que viaja con la exportación.

  • En la interfaz: una pantalla de bienvenida, cuatro temas con nombre, la imagen del tablero en SVG, una ayuda en la que se puede buscar, una eliminación cancelable, umbrales de error ajustables por biblioteca, y una biblioteca, una búsqueda y una lista de partidas recorridas por ventanas, sin cargarlo todo.

  • Un asistente por MCP: la aplicación y el servidor ofrecen sus herramientas a un asistente (Model Context Protocol). Del lado del servidor: una cola de análisis compartida entre tenants, cuotas (entre ellas una cuota de bytes almacenados), el flujo de eventos /v1/events, una página web de consulta, el uso compartido de paquetes Anki y de colecciones entre tenants, y un cliente Python generado.

  • Esquema 2.31.0: fechas en enteros, posición y análisis en binario, etiquetas de acción codificadas — una base más ligera. La migración desde 2.18.0 es automática al abrir y sin vuelta atrás posible (Anexo: Esquema de la base de datos).

  • Correcciones destacadas: un .mat truncado o un .txt de BGBlitz sin posición se rechaza en lugar de entrar a medias, se conservan las marcas XG de un duplicado, un veredicto de gammonNet conserva las jugadas realizadas, con PostgreSQL un rechazo de escritura ya no revela lo que posee otro tenant, y el botón de la página mural de la Dirección la abre en el navegador del sistema, señalando cualquier fallo.

  • Véanse Manual, Interfaz de línea de comandos (CLI) y Modo headless (servidor).

0.36.0 (05/09/2026)

  • El binario es 7,3 MB más pequeño: las tablas de bearoff ya no están incrustadas ni se descargan, sino que se calculan en el primer arranque, en segundo plano y en silencio — idénticas byte a byte a las de gnubg, con la huella SHA-256 verificada. La tabla ampliada TS-06-11 se calcula en la pestaña Bearoff en lugar de descargarse (1,2 GB).

  • Los torneos se llenan solos al importar: una partida se clasifica en el torneo que nombra su archivo, creado si hace falta; una partida ya clasificada nunca se mueve.

  • Una sola gramática de búsqueda, ahora legible desde la línea de comandos (blunderdb search --query) tanto como desde la aplicación.

  • La línea de comandos gana --format json en nueve comandos, completado para bash, zsh y fish, el comando repair y los subcomandos anki card y anki log.

  • Las pestañas Atajos y Comandos de la ayuda integrada se generan a partir de las páginas del manual que las describen: ya no pueden quedarse atrás respecto a ellas, y se convierten en tablas, sin recuadros. La pestaña Manual de la ayuda sigue siendo un resumen, distinto del manual completo en línea. Tres visitas guiadas más (Eval, Anki, Stats).

  • Un binario Linux arm64, entregado como archivo comprimido, .deb, .rpm y paquete AUR.

  • El panel Eval recupera el tablero en el que se le dejó, distingue el equity money del equity match y se recorre con el teclado.

  • Del lado del servidor: contrato de API generado a partir del código (openapi.yaml y su anexo, 135 rutas), identificador de correlación por petición, indicadores del trabajo en curso, compresión de los flujos NDJSON (13,5 % del tamaño), y las dos llamadas que van más allá del tenant — vacuum y purge — pasan bajo /ops/.

  • Esquema 2.18.0: Jacoby y beaver salen de la identidad de la posición, de modo que la misma posición de dinero ya no entra dos veces por puertas distintas. La migración es automática al abrir y sin vuelta atrás posible (Anexo: Esquema de la base de datos).

  • Correcciones notables: el panel de detalle de Partidas ya no ocupa media pantalla cuando no hay nada seleccionado, la primera partida de una transcripción se pliega como las demás, MAYÚS-J y MAYÚS-K cambian de vista desde cualquier panel, y ocho atajos «mostrar/ocultar» por fin ocultan.

  • Véanse Interfaz de línea de comandos (CLI), Modo headless (servidor) y Manual.

0.35.0 (2026-09-02)

  • La línea de comandos gana dos familias: blunderdb collection (listar, mostrar, crear, renombrar, eliminar, exportar una colección) y blunderdb anki (mazos, estadísticas, previsión de repasos, resincronización de un mazo).

  • El modo servidor se publica como imagen Docker (ghcr.io/kevung/blunderdb-serve, amd64 y arm64), gana la ruta maintenance.vacuum y filigranea sus exportaciones con la identidad de emisor del servidor (--identity-dir).

  • El evaluador gammonNet valora sus hojas con el cubo: a un marcador de match, los veredictos de la búsqueda se acercan a los de eXtreme Gammon.

  • Cada versión distribuye ahora los manifiestos winget y Homebrew y un paquete Flatpak, además de los paquetes Debian, RPM y AUR.

  • En la interfaz, la biblioteca está ahora paginada (una base de 50 000 posiciones ya no carga todo en memoria en cada actualización), las ventanas modales comparten una misma base (foco, Escape, accesibilidad), el tablero solo redibuja lo que cambia, y la fuente japonesa embebida se reduce a su subconjunto útil (5,5 MB menos).

  • Correcciones notables: una base importada mediante «Importar una base» conservaba posiciones invisibles para los filtros y duplicadas en una segunda importación (reparado al abrir), el botón Fusionar de la ventana de fusión de jugadores seguía en gris, la exportación del servidor estaba vacía, y en Windows la eliminación de la base bearoff descargada y create --force fallaban.

  • Véanse Interfaz de línea de comandos (CLI), Modo headless (servidor) y Manual.

0.34.0 (2026-09-02)

  • Un evaluador integrado: gammonNet, portado a Go y compilado en blunderDB, evalúa cualquier posición sin conexión, sin XG ni gnuBG — red neuronal, búsqueda de 0 a 2-ply con poda, decisión de cubo según Janowski y la tabla de equidad de match de blunderDB, y una búsqueda que respeta el marcador del match.

  • El panel Bearoff se convierte en el panel Eval: presenta los hechos de la posición (probabilidades de victoria, gammon y backgammon de ambos lados, equidad) y luego la única decisión que pide el tablero, en una cuadrícula estable sin desplazamiento; las equidades de match están normalizadas y el veredicto «demasiado bueno para doblar» vuelve a ser visible.

  • La evaluación es progresiva: 0-ply inmediato al gesto, luego 2-ply en reposo, cancelable por cualquier gesto nuevo, con la etiqueta de profundidad indicando siempre la que produjo la cifra.

  • Todo el tablero, los dados y el marcador se editan ahí, con clic o con teclado, y una posición de la biblioteca entra y sale del panel.

  • En una carrera más allá de la base two-sided, un tercer régimen evaluado proporciona el veredicto de cubo al marcador que el panel no daba.

  • Una pestaña gammonNet de la configuración separa la profundidad de visualización de la profundidad de análisis.

  • Tras una importación, un lote de análisis acotado, visible, cancelable y reanudable rellena las posiciones sin ningún análisis, sin sobrescribir nunca un análisis importado; la puesta al día de una biblioteca existente se lanza desde la interfaz, el nuevo comando blunderdb analyze o el modo servidor.

  • Correcciones notables: una respuesta de cubo importada de eXtreme Gammon heredaba el análisis del doblador sin invertirse, la notación de las jugadas de las Blancas y de las entradas de bar sigue ahora a gnuBG y XG, la profundidad de un análisis de gnuBG se lee correctamente, y el tamaño del panel lateral se recuerda.

  • Véanse Panel Eval, Manual y Interfaz de línea de comandos (CLI).

0.33.0 (2026-08-26)

  • El panel Estadísticas gana una pestaña Jugadores: las tres pestañas anteriores describen a un jugador, esta los compara a todos, una fila por jugador de la base — partidas, victorias/derrotas, decisiones contadas, PR global / fichas / cubo, Snowie Error Rate, blunders y suerte. La tabla se ordena por cualquier columna, se restringe a las fechas de una competición con los filtros habituales, y un clic en una fila cambia al detalle del jugador. Un guion señala un valor nunca medido, jamás un cero. La tabla también está disponible en línea de comandos (blunderdb list --type players, en texto, JSON o CSV) y en modo servidor.

  • La suerte de cada tirada se guarda ahora en la base y se muestra: suerte media por tirada, en milésimas de punto, con signo. Se lee al importar tanto de los archivos de eXtreme Gammon como de gnuBG. No es retroactiva — las partidas importadas antes muestran un guion y hay que reimportar los archivos de origen para recuperarla; los formatos que no la transportan (BGF, Jellyfish .mat) nunca la aportarán.

  • La pestaña Errores indica ahora en qué sentido se equivocan las decisiones de cubo, y no solo cuánto cuestan: una fila Ofrecer (dobles perdidos, dobles prematuros) y una fila Responder (pases erróneos, tomas erróneas), separadas a propósito ya que un mismo jugador puede doblar tarde y tomar holgado. Cada casilla lleva su recuento, la información emergente la equidad perdida, y el clic carga las posiciones correspondientes.

  • Nuevo comando Compactar la base, que recupera el espacio dejado por las eliminaciones: botón en los ajustes y subcomando blunderdb vacuum. Nunca se ejecuta por su cuenta.

  • Ergonomía: las acciones destructivas piden confirmación, una búsqueda en curso se señala, un comando desconocido recibe un mensaje en lugar de silencio, y las pestañas, los paneles acoplados y los diálogos pequeños se manejan por completo con el teclado. La búsqueda es además notablemente más rápida.

  • Correcciones notables: los no-dobles etiquetados «Double No» por gnuBG se contaban como dobles, lo que falseaba el PR de cubo (una base ya constituida se repara sin reimportar, en modo servidor); el filtro de jugador reducía indebidamente el denominador del Snowie Error Rate; las exportaciones escribían un esquema obsoleto; y blunderdb vacuum abría la interfaz gráfica en lugar de compactar la base.

  • Véanse Panel Stats y Interfaz de línea de comandos (CLI).

0.32.0 (2026-08-09)

  • El panel EPC se convierte en el panel Bearoff y gana el análisis de carrera completo. (Renombrado a panel Eval en 0.34.0.)

  • En una posición de bearoff puro, muestra — además del EPC, el recuento de pips, el desperdicio y el número medio de tiradas de cada jugador, ahora presentados en una tabla con una fila Δ con signo — las probabilidades de victoria de ambos jugadores y las equidades money (cubeless, sin doblar, doblar/tomar, doblar/pasar, con la diferencia de cada decisión respecto a la mejor) así como la mejor decisión de cubo.

  • Dos regímenes claramente distinguidos: exacto (lectura de una base two-sided; base TS-06-06 de GNUbg integrada, que cubre hasta 6 fichas por jugador) y estimado (convolución calibrada, margen de error mostrado — el veredicto de cubo nunca se estima).

  • La base ampliada TS-06-11 (veredicto exacto hasta 11 fichas por jugador, 1,2 GB) se descarga desde la nueva pestaña Bearoff de la configuración, con verificación de integridad y descargas reanudables; también puede designarse cualquier archivo .bd two-sided de gnubg. (Sustituido en 0.36.0: la tabla se calcula en la máquina, ya no hay ninguna descarga.)

  • Modo desafío para el entrenamiento: los resultados se ocultan en cada modificación y se revelan zona por zona, con un clic.

  • Edición completamente en el tablero: fichas de ambos jugadores, jugador al tiro (clic en el rectángulo bearoff/marcador) y posición del cubo (clic en el cubo).

  • El clic en el tablero es ahora preciso a cualquier escala de interfaz (un clic en el punto 1 podía caer en el punto 2).

  • Nuevo comando blunderdb epc en la línea de comandos y opción --bearoff-ts del modo servidor.

  • Una nueva sección del manual, «Metodología e hipótesis del panel Bearoff», expone exhaustivamente los supuestos detrás de cada valor mostrado. (Sección renombrada con el panel en 0.34.0.)

  • Véanse Panel Eval y Metodología e hipótesis del panel Eval.

0.31.0 (2026-08-04)

  • Difusión de una base a terceros: dos mecanismos independientes, ambos opcionales y elegidos en el momento de la exportación.

  • La filigrana de origen inscribe en el archivo qué es y de dónde viene, firmada por una identidad de emisor creada por sí sola en el primer uso; la marca es infalsificable, se lee en la parte superior del panel Metadatos (o mediante blunderdb info, sin escribir nunca en el archivo) y no registra nada del lado del destinatario — ningún registro, ningún seguimiento.

  • La protección por contraseña produce un archivo .dbx cifrado (AES-256-GCM, clave derivada con Argon2id), verificado en cada apertura, cuya cabecera permanece legible en claro; la identidad se exporta e importa como un único archivo desde las preferencias.

  • Ventana de exportación rediseñada: una sola pantalla en lugar de cuatro, un recordatorio de lo que realmente sale (las posiciones mostradas), la parte cubierta de cada colección señalada en rojo cuando es parcial, torneos exportables solo con sus matches — y una exportación tres veces más rápida.

  • Ventana de configuración reorganizada en tres pestañas (Interfaz, Colores del tablero, Identidad de emisor), con tamaño y posición estables.

  • El panel Metadatos se ha rediseñado en una sola cuadrícula.

  • El panel Registro, que solo recibía el eco de los comandos, se elimina.

  • Correcciones notables: una contraseña incorrecta ya no abre una base protegida, los campos de las ventanas modales ya no pierden el foco al hacer clic, el cálculo de los indicadores PR/MWC ya no falla en una partida money, y los archivos temporales (-wal, -shm, bloqueo) se limpian al cerrar.

  • Véanse Distribuir una base de datos: origen y contraseña y Manual.

0.30.0 (2026-07-26)

  • Búsqueda por comentario: el filtro «Texto de búsqueda» se convierte en el filtro «Comentario» y ofrece tres modos exclusivos — contiene el texto (comportamiento anterior, token t""palabra1;palabra2""), tiene un comentario (token co) y sin comentario (token xco) — para encontrar de un gesto las posiciones anotadas, o al contrario las que quedan por comentar.

  • Posiciones marcadas en eXtreme Gammon: las marcas (flags) colocadas al analizar un match XG se leen ahora en la importación y se pueden recuperar mediante el filtro «Marcada» (token fl), combinable con cualquier otro criterio; una decisión de cubo marcada da dos posiciones marcadas, el doblaje y el toma/pasa.

  • Como el marcado no es retroactivo, basta con reimportar el archivo .xg correspondiente para que sus marcas se incorporen a la base, sin tocar los comentarios ni los análisis existentes.

  • Correcciones notables: el PR mostrado en la insignia de un torneo se refiere ahora al jugador de referencia y no a la suma de ambos jugadores, los mazos Anki basados en una búsqueda vuelven a respetar los filtros de esa búsqueda en lugar de tomar toda la base, y se corrige un bloqueo de la búsqueda al combinar ciertos filtros (texto, fecha, error de la jugada realizada).

  • Véanse Lista de comandos y Manual.

0.29.0 (2026-07-18)

  • Exportación de un match en formato Jellyfish/gnubg (.mat) desde la interfaz (panel Matches) así como desde la línea de comandos, con la ruta de servidor correspondiente — útil para volver a jugar un match en otro software de backgammon.

  • Búsqueda: un nuevo discriminador «dados excluidos» (token xD65, se permiten varios) que descarta posiciones cuya tirada coincide con una dada.

  • Apertura concurrente segura: una base ya abierta para escritura en otra ventana de blunderDB se abre ahora en modo solo lectura (navegación, búsqueda y análisis posibles, modificaciones desactivadas, mención «[solo lectura]» en la barra de título) en lugar de arriesgar una corrupción.

  • Procedencia de las posiciones: fuera del modo match, la barra de información sobre el tablero indica el match — y su torneo — del que proviene la posición estudiada, con una insignia «+N» cuando aparece en varios matches.

  • Mayor robustez frente al entorno: repliegue automático cuando una fuente, el portapapeles o la última base abierta no están disponibles.

  • Una recarga explícita de la biblioteca (CTRL-R, botón de la barra de herramientas o comando e) reabre el panel de análisis en la posición mostrada.

  • Correcciones notables: eliminación de un bloqueo en la exportación de bases grandes, el botón «Ninguno» de la exportación que en realidad no exportaba nada, filtro de comentario multipalabra, desduplicación del evento y del torneo en la barra de información, y varios ajustes de visualización.

  • Véanse Lista de comandos, Panel de Partidas y Manual.

0.28.0 (2026-07-15)

  • Panel de búsqueda: un filtro unificado «Matches y Torneos» que reemplaza los campos de texto de identificadores por una ventana de selección (listas de verificación filtrables por texto, botones Todos/Ninguno, marcar un torneo marca sus matches miembros) — más rápido en bases grandes, la pestaña Matches y la vista Torneos ahora solo recalculan los indicadores PR/MWC para los matches mostrados; cli list --type tournaments cierra la brecha de paridad correspondiente.

  • Nuevo filtro «Importada individualmente» (casilla del grupo Otro, o token i en la línea de comandos, s i; también disponible en la CLI mediante --individual) para encontrar una posición guardada o importada por sí sola en lugar de perdida dentro de una importación de match.

  • Corrección de una pérdida de datos: la eliminación de un match ya no borra las posiciones importadas individualmente, colocadas en una colección o incluidas en un mazo Anki que ese match también contenía.

  • Modo servidor (headless): seis nuevos métodos para el planificador Anki de repetición espaciada — registro de repasos (anki.reviewLog), previsión de tarjetas próximas a vencer (anki.forecast), suspender/aparcar/eliminar una tarjeta (anki.suspendCard, anki.buryCard, anki.removeCard) y ajuste automático de la retención objetivo de un mazo hacia su tasa de éxito observada (anki.optimizeParams, sustituido en 0.36.0 por anki.retention, que mide la tasa observada sin escribir nunca el objetivo); un nuevo método tenant.purge para eliminar definitivamente los datos de un tenant en un despliegue PostgreSQL multiusuario; nuevos métodos matches.list (filtrado/orden/paginación) y stats.matchBadges (indicadores PR/MWC acotados a una lista de matches).

  • Distribución nativa para Linux: paquetes .deb/.rpm, que conservan el bit de ejecución perdido al descargar el binario en bruto.

  • Importación: tras importar un match, la pestaña Matches se muestra ahora y las posiciones importadas son inmediatamente visibles; tras importar una posición aislada (archivo XGP, posición BGBlitz, archivo de posición de texto, posición pegada o un lote de posiciones), la pestaña Análisis se abre ahora directamente en la posición importada, en lugar de la pestaña Matches; corregido el pegado de un análisis de eXtreme Gammon en francés o alemán desde macOS, que quedaba vacío (acentos descompuestos por el portapapeles del sistema).

  • Véanse Modo headless (servidor), Lista de comandos y Descarga e instalación.

0.27.0 (2026-06-13)

  • Panel Anki: un nuevo modo de práctica libre (cram), accesible desde el botón Cram junto a Study, que muestra posiciones aleatorias del mazo sin modificar el calendario de repetición espaciada — ideal para calentar antes de un torneo o repasar intensamente un mazo sin alterar su orden.

  • Búsqueda: un nuevo comando blunders (alias bl) que carga directamente los peores errores (equity/MWC) en la vista de análisis, con un número opcional para elegir cuántos (bl 50); un nuevo filtro por jugador pl'nombre' que encuentra todas las posiciones de una partida en la que participó un jugador dado, en cualquier lado; e información sobre herramientas que, al pasar el ratón por cada filtro del panel de búsqueda, muestra el token de comando correspondiente.

  • Modo servidor (headless): nuevos métodos matches.movesByMatch (todas las jugadas de un match en una sola llamada) y positions.epc (Effective Pip Count de ambos jugadores).

  • Véanse Panel Anki y Lista de comandos.

0.26.0 (2026-06-09)

  • Ajustes de visualización de la interfaz en la ventana de configuración: un deslizador de escala para agrandar o reducir toda la interfaz, y una elección de posición de los paneles (abajo, al lado o automática) para aprovechar mejor las pantallas anchas.

  • Añadida una barra de información sobre el tablero que recuerda a los jugadores y el contexto del match (evento, lugar, ronda, fecha, longitud).

  • Al abrir una base, el panel de matches se muestra ahora de inmediato y la revisión comienza en la primera posición.

  • Los atajos de teclado son ahora independientes de la distribución del teclado (AZERTY, QWERTY, QWERTZ…).

  • Corrección de la decodificación de XGID (indicadores Jacoby/Beaver y valor del cubo).

  • Añadidas pestañas de vistas múltiples: varios espacios de trabajo independientes (lista de posiciones, posición actual, búsqueda) con los atajos CTRL-T (nueva vista), CTRL-W (cerrar), CTRL-PageUp/CTRL-PageDown (cambiar de vista) y cambio de nombre con doble clic en la pestaña.

  • Véanse Configuración y Pestañas de vistas.

0.25.0 (2026-06-07)

  • Modo servidor (headless): dos nuevos métodos para reconstruir una posición sin guardarla — positions.fromXGID decodifica una cadena XGID en una posición, y positions.fromXGP lee un archivo de posición única .xgp.

  • Véase Modo headless (servidor).

0.24.0 (2026-06-06)

  • Añadida una imagen de contenedor (Docker) para el modo headless: un punto de entrada dedicado serve y un Dockerfile.serve que produce un binario estático sin interfaz gráfica, para desplegar el motor de blunderDB como servicio detrás de un proxy inverso.

  • Véase Modo headless (servidor).

0.23.0 (2026-06-05)

  • Añadidas visitas guiadas de la interfaz (recorrido general, búsqueda, matches, torneos), reproducibles de nuevo desde la barra de herramientas o el comando tour, y una base de ejemplo cargable con el comando demo para descubrir la herramienta sin importar las propias partidas.

  • Personalización de los colores del tablero (fondo, borde, flechas, fichas, dados, cubo) desde la ventana de configuración.

  • Autocompletado de la línea de comandos (tecla TAB).

  • Panel de búsqueda: control explícito del tipo de decisión (Fichas / Cubo), con un subtipo Doblar / No doblar o Toma / Pasa para las decisiones de cubo, sincronizado con el tablero; el cubo ofrecido se muestra en el centro del tablero para las decisiones de toma/pasa.

  • Búsqueda de una posición por su identificador (filtro id).

  • Corrección de la atribución del error de cubo al jugador 1.

  • Véase Visitas guiadas y base de ejemplo.

0.22.0 (2026-06-02)

  • Añadido un modo headless (servidor), avanzado y opcional, que complementa la aplicación de escritorio: un demonio serve que expone el motor mediante HTTP + JSON, un backend PostgreSQL multiusuario con compartimentación por tenant (y Row-Level Security opcional), un comando migrate para transferir una base SQLite a PostgreSQL, y un despachador genérico call que da acceso desde la línea de comandos a todas las operaciones de almacenamiento.

  • Importación de posiciones individuales desde nuevos formatos (eXtreme Gammon .xgp, texto BGBlitz, biblioteca nativa .db) con enriquecimiento de duplicados entre formatos.

  • Correcciones: los paneles ya no provocan un error cuando no hay ninguna base abierta, y el panel Comentarios ya no entra en bucle al abrirlo.

  • Véase Modo headless (servidor).

0.21.0 (2026-06-01)

  • Internacionalización de la interfaz: la totalidad de blunderDB (barra de herramientas, paneles, mensajes, ayuda) puede mostrarse ahora, a elección, en inglés, francés, alemán, italiano, español, finés, japonés, griego o ruso.

  • Añadida una ventana de configuración, accesible mediante un botón en forma de rueda dentada en la barra de herramientas, que permite seleccionar el idioma.

  • La elección del idioma se conserva de una sesión a otra.

  • Véase Configuración.

0.20.0 (2026-05-31)

  • Añadida la estructura de exclusión Except al panel de búsqueda: excluye posiciones que contienen una de las fichas dibujadas, con un marcador «debe estar vacío» (doble clic) y un número ilimitado de fichas por punto (comando x).

  • Añadida la opción «solo el primer dado» al filtro de tirada (variante D1, opción CLI --dice).

  • Panel Comentarios: enfoque automático del campo de entrada al abrir, y botones de editar/eliminar siempre visibles.

  • Corrección del filtro «Search Text», que no encontraba todas las etiquetas de comentarios.

0.19.0 (2026-05-07)

  • Añadido el panel Stats: indicadores PR (Performance Rating), Snowie Error Rate y MWC cost (Match Winning Chance cost), barra de filtro (jugador, torneo, fechas, tipo de decisión, longitud del match), pestaña Dashboard con tarjetas de nivel / PR móvil / top blunders, pestaña Progresión con curva por torneo y diagrama de dispersión por match, pestaña Errores con desglose por acción de cubo e histograma de magnitudes.

  • Drill-down interactivo hacia las posiciones / matches / torneos desde todos los indicadores.

  • Alternancia PR / MWC instantánea.

  • Comando CLI list –type stats.

  • Alineación de los indicadores PR / Snowie ER / MWC con eXtremeGammon y gnuBG (umbral de equidad de 0.16 para cubos ajustados).

  • Corrección del cálculo de cube_error para las decisiones Double/Pass.

  • Documentación del modelo de estadísticas (Anexo: Modelo de estadísticas — alineación XG / gnuBG / blunderDB).

  • Véase Panel Stats.

0.18.0 (2026-04-20)

  • Refactorización mayor del código: división de db.go (10 mil líneas) en 19 archivos especializados, extracción de 7 módulos de servicio de App.svelte (4888→469 líneas), consolidación de los stores modales/de panel.

  • Migración completa a las runes de Svelte 5.

  • Sustitución de 9 modales de tabla por un componente genérico DataTableModal.

  • Añadidos ESLint + Prettier + vitest (125 pruebas de frontend) con CI.

  • Conformidad WCAG 2.1 AA (foco visible, roles ARIA, navegación por teclado).

  • Cambio del mutex de Database a un RWMutex para un mejor paralelismo en lectura.

  • Documentación CLI completa (CLI_USAGE.md + Sphinx FR/EN).

  • Reescritura del README.

  • Corrección de todas las advertencias de ESLint (46→0) y Vite (6→0).

0.17.0 (2026-04-20)

  • Optimización del almacenamiento: compresión zlib de los datos de análisis (~80% de reducción), codificación compacta de las posiciones (~90% de reducción de tamaño).

  • Añadidos 5 índices faltantes para mejorar el rendimiento de búsqueda.

  • Corrección de la búsqueda por error de cubo.

  • Corrección del modo EDIT tras una búsqueda sin resultados.

  • Restauración del estado del panel de búsqueda al cambiar de pestaña.

  • Eliminación de 62 instrucciones de depuración de rutas críticas.

0.16.0 (2026-04-18)

  • Esquema de base de datos v2.0.0: deduplicación de posiciones mediante hash Zobrist, columnas de filtrado desnormalizadas, prefiltro de patrones bitboard, registro WAL (Anexo: Esquema de la base de datos).

  • Importación por lotes >=3x más rápida, búsqueda filtrada <=100 ms en más de 10k posiciones.

  • NOTA: los archivos DB creados con la v0.16.0 no pueden abrirse con versiones anteriores; las DB antiguas se migran automáticamente in situ (haga primero una copia de seguridad).

0.15.0 (2026-03-31)

  • Exportación de la posición como imagen PNG al portapapeles (solo el tablero con Ctrl+X, o el tablero con análisis con Ctrl+X Ctrl+X).

0.14.0 (2026-03-30)

  • Panel Anki dedicado para el estudio por repetición espaciada (algoritmo FSRS).

  • Importación de comentarios desde los archivos XG.

0.13.0 (2026-03-28)

  • Simplificación de la interfaz: la navegación por los matches y las colecciones se realiza directamente a través de los paneles.

  • Línea de comandos integrada en la barra de estado.

  • Panel Consola renombrado a panel Log. (Panel eliminado en 0.31.0.)

  • Panel Bearoff dedicado en el panel inferior.

  • Copiar/pegar posición en el panel de búsqueda.

  • Arrastrar y soltar para reordenar las colecciones, las posiciones dentro de las colecciones y los matches dentro de los torneos.

  • Columna de torneo en el panel de matches con edición en línea.

  • Visualización automática del panel de análisis tras una búsqueda.

0.12.0 (2026-03-19)

  • Importación de archivos de posición de eXtreme Gammon (XGP) con análisis.

0.11.0 (2026-03-06)

  • Filtro de búsqueda dentro de las posiciones actuales.

  • Añadidos filtros por match y por torneo.

  • Borrado automático del tablero al abrir el panel de búsqueda.

0.10.0 (2026-02-25)

  • Importación de matches desde eXtreme Gammon (XG/XGP), GNUbg (SGF), Jellyfish (MAT/TXT) y BGBlitz (BGF/TXT).

  • Navegación por los matches: recorrido de las jugadas de un match importado, con resaltado de la jugada realizada.

  • Panel de matches: lista, ordenación, edición en línea, intercambio de jugadores, asignación de torneo.

  • Importación por carpeta recursiva e importación por arrastrar y soltar.

  • Calculadora EPC (Effective Pip Count) con base de datos de bearoff GNUbg integrada. (Sustituido en 0.36.0: la tabla se calcula en la máquina, ya no se incluye ninguna.)

  • Colecciones: agrupación personalizada de posiciones.

  • Torneos: agrupación de matches por evento.

  • Guardado y restauración del estado de la sesión (última búsqueda, posición actual).

  • Migración automática del esquema de la base de datos.

  • Visualización multimotor en el análisis.

  • Filtro de errores/blunders del jugador 1 en las búsquedas.

  • Exportación de la base de datos con selección granular (matches, colecciones, torneos, jugadas realizadas).

  • Botón de navegación por los matches.

  • Conteo de pips (pipcount) en la navegación por los matches.

  • Interfaz de línea de comandos (CLI) completa.

  • Reapertura automática de la última base de datos.

  • Mejora de la barra de herramientas y de los iconos.

0.9.0 (2025-11-02)

  • Corrección de un error en la biblioteca de filtros.

  • Importación/exportación de base de datos.

  • Muestra de flechas para las jugadas seleccionadas.

  • Atajos de teclado para la importación/exportación.

0.8.0 (2025-05-03)

  • Posibilidad de ocultar el conteo de pips.

  • Carga de una posición aleatoria.

0.7.0 (2025-02-16)

  • Compatibilidad con japonés y alemán en las exportaciones de XG.

0.6.0 (2025-02-13)

  • Añadida la biblioteca de filtros.

  • Muestra la versión de la base de datos en los metadatos.

0.5.0 (2025-02-04)

  • Añadidos nuevos filtros (espejo, sin contacto, jan blot, outfield blot).

0.4.0 (2025-02-03)

  • Correcciones de varios errores.

  • Añadido un icono para blunderDB.

  • Correcciones de filtros.

  • Añadido soporte para macOS.

0.3.0 (2025-01-27)

  • Correcciones de varios errores.

  • Guarda automáticamente el tamaño de la ventana.

  • Importa los posibles comentarios desde XG.

0.2.0 (2025-01-06)

  • Correcciones de varios errores.

  • Añadidas tablas de match/TP/GV.

  • Añadidos filtros de búsqueda (jugadas, decisiones de cubo, fecha).

  • Añadidos metadatos en las posiciones.

  • Función de importación/exportación entre instancias de blunderDB.

  • Añadida función de metadatos en las bases de datos.

  • Introducción de números de versión (base de datos y aplicación).

0.1.0 (2024-12-31)

  • Versión beta.