# Solución de problemas

Esta guía cubre pasos habituales de recuperación para las versiones beta
portables de Cosimo.

## Antes de cambiar archivos

Cierra Cosimo antes de copiar, sustituir o eliminar archivos de mazo y bases de
datos de repaso. La base de datos de repaso es un archivo SQLite, y cerrar
Cosimo evita copiarla mientras hay una escritura en curso.

Para el mazo predeterminado, los archivos principales son:

- `decks/deck.cosimo-deck`
- `decks/deck.reviews.sqlite3`
- `cosimo.ini`
- `backups/index.txt`
- `backups/review-db-index.txt`

Para otro mazo, la base de datos de repaso está junto al mazo y usa el mismo
nombre base. Por ejemplo, `spanish.cosimo-deck` usa
`spanish.reviews.sqlite3`.

## Errores al leer el mazo

Si Cosimo no puede leer un mazo, abre el archivo `.cosimo-deck` en un editor de
texto y comprueba los separadores de las cartas:

- `---` separa la pregunta de la respuesta.
- `=número=` termina una carta y conserva su historial de repaso.
- Los finales de carta antiguos `===` se aceptan, pero Cosimo los actualiza a
  finales numerados cuando puede abrir y guardar el mazo.

Cada carta necesita una pregunta no vacía y una respuesta no vacía. Si una
pregunta o una respuesta contiene accidentalmente una línea separadora por sí
sola, Cosimo la interpreta como estructura del mazo, no como texto de la carta.

## Restaurar el texto de las cartas

Las copias automáticas del mazo contienen solo texto de cartas. No contienen
historial de repaso.

Para restaurar texto de cartas:

1. Cierra Cosimo.
2. Abre `backups/index.txt`.
3. Busca el archivo de copia cuya ruta original coincida con el mazo que quieres
   restaurar.
4. Copia ese archivo de copia encima del archivo `.cosimo-deck` activo.
5. Inicia Cosimo otra vez.

Si también necesitas el historial de programación, restaura el archivo
`.reviews.sqlite3` correspondiente desde una copia de seguridad externa o desde
la copia retenida de la base de datos de repaso de Cosimo.

## Errores de integridad y coherencia de la base de datos

Cosimo comprueba la base de datos de repaso con SQLite cuando abre un mazo. Si
la base de datos falla la comprobación de integridad, Cosimo se detiene antes de
migrar o escribir el mazo.

Cosimo también comprueba si la base de datos de repaso es lógicamente coherente
con el mazo que se está abriendo. Por ejemplo, rechaza enlaces rotos a repasos
de una pasada, valores almacenados de valoración o programación que no son
válidos, y cartas reversibles activas cuya respuesta está duplicada por otra
carta activa. El historial antiguo de cartas eliminadas, incluidas cartas
inversas eliminadas, puede permanecer inactivo.

Para recuperarla:

1. Cierra Cosimo.
2. Localiza la base de datos de repaso activa. Para el mazo predeterminado es
   `decks/deck.reviews.sqlite3`.
3. Si el error menciona una respuesta duplicada en una carta reversible, edita
   el mazo para que la respuesta de la carta reversible activa sea única, o
   restaura una versión del mazo anterior a la duplicación. Si Cosimo todavía
   puede abrir el mazo, el filtro `Respuestas duplicadas` de la lista inicial
   puede ayudar a encontrar las cartas en conflicto.
4. Para otros errores de integridad o coherencia, aparta el archivo
   `.reviews.sqlite3` dañado.
5. Restaura un archivo `.reviews.sqlite3` correcto.
6. Inicia Cosimo otra vez.

Si las copias de la base de datos de repaso están activadas,
`backups/review-db-index.txt` relaciona el archivo de copia retenida con la ruta
de la base de datos original. Copia la copia correspondiente encima del archivo
`.reviews.sqlite3` dañado.

Si no tienes ninguna copia utilizable de la base de datos de repaso, puedes
eliminar el archivo `.reviews.sqlite3` dañado. Cosimo creará una base de datos
de repaso nueva, pero se perderán las valoraciones anteriores, la programación y
el historial de repaso.

## Opciones de copia de seguridad

Las copias del mazo se configuran en `Archivo -> Opciones`:

- `Completas` conserva todas las copias automáticas del contenido del mazo.
- `Solo la última` conserva solo la copia automática más reciente del contenido
  del mazo para cada ruta de mazo original.
- `Ninguna` desactiva las copias automáticas del contenido del mazo.

Las copias de la base de datos de repaso se configuran por separado:

- `Al comenzar sesión` actualiza una copia retenida de la base de datos de
  repaso cuando comienza una pasada.
- `Desactivadas` desactiva las copias de la base de datos de repaso.

La copia retenida de la base de datos de repaso es independiente de las copias
numeradas del contenido del mazo.

## Estado de ejecución

Cosimo guarda el estado portable de la aplicación en `cosimo.ini`, junto al
ejecutable. Este archivo contiene opciones y la ruta del último mazo abierto.

Las versiones beta antiguas usaban `cosimo-settings.txt` y
`cosimo-last-open-deck.txt`. Si Cosimo encuentra cualquiera de esos archivos,
escribe su contenido en `cosimo.ini` y después elimina los archivos antiguos.

Si Cosimo abre el mazo equivocado al iniciarse, cierra Cosimo y edita o elimina
la entrada `last_open_deck` en `cosimo.ini`.

## Archivos bloqueados o de solo lectura

Si Cosimo no puede guardar un mazo, un archivo de opciones, un informe, una
copia de seguridad o un cambio en la base de datos de repaso:

- Asegúrate de que el archivo no esté abierto en otro programa.
- Comprueba que la carpeta permita escritura.
- En instalaciones portables, evita ejecutar Cosimo desde una ubicación de solo
  lectura.
- Cierra Cosimo antes de copiar archivos desde `decks` o `backups`.

Cosimo bloquea las sobrescrituras del mazo cuando fallan las copias obligatorias
del mazo o la escritura del índice de copias. Si esto ocurre, corrige el
problema de permisos del archivo o de la carpeta e intenta editar la carta otra
vez.

Si no se puede registrar una respuesta durante un repaso, Cosimo deja la carta
actual en la pasada para que la respuesta no se pierda en silencio. Si no se
puede registrar el resumen de la pasada, es posible que las respuestas de las
cartas individuales sí se hayan guardado, pero que falten datos para análisis
posteriores por pasada.

## Cosimo se inicia sin poder abrir un mazo

Si Cosimo se inicia sin ningún mazo abierto, el mensaje inicial debería indicar
el archivo de mazo y la base de datos de repaso que intentó usar. Esto puede
ocurrir cuando no se puede crear la carpeta `decks` predeterminada, no se puede
leer el mazo seleccionado, o no se puede abrir o crear la base de datos de
repaso.

Para recuperarte:

1. Cierra Cosimo.
2. Comprueba que se pueda escribir en la carpeta indicada y que no esté en un
   medio de solo lectura.
3. Cierra otros programas que puedan estar usando el mazo o la base de datos de
   repaso indicados.
4. Si la base de datos de repaso está dañada y tienes una copia, restáurala.
5. Inicia Cosimo otra vez, o abre otro mazo.

## Notas para lectores de pantalla

La lista de preguntas de la pantalla inicial puede anunciar dos veces el
elemento seleccionado con algunas combinaciones de lector de pantalla y
wxWidgets. Es un comportamiento conocido del control nativo. Una vez que el foco
está dentro de la lista, la navegación con las flechas debería funcionar
normalmente.

## Informes de errores

Cuando informes de un problema, incluye:

- Versión de Cosimo.
- Versión del sistema operativo.
- Lector de pantalla y versión, si el problema afecta a la accesibilidad.
- Si el mazo es el predeterminado u otra ruta de mazo.
- El mensaje de error exacto.
- Si existen `cosimo.ini`, `backups/index.txt` o
  `backups/review-db-index.txt`.
- Los pasos que llevaron al problema.
