# 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`
- `decks/deck/`, si usas audio de repaso
- `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.

Al añadir cartas nuevas directamente en un editor de texto, usa `===` en vez
de escoger tu propio número de carta. Conserva los finales `=número=` que ya
tengan las cartas existentes.

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.

## Restaurar un paquete completo de mazo

Usa `Archivo -> Restaurar mazo completo` para restaurar un paquete comprimido
en el directorio `decks` de Cosimo. Cosimo comprueba el zip antes de restaurar
y muestra el nombre del archivo de mazo, el número de cartas, el recuento de
archivos de audio, el recuento total de archivos y si el paquete contiene
historial de repaso.

Si la restauración sobrescribiría un mazo existente, Cosimo pide confirmación y
escribe una copia completa comprimida del mazo de destino actual antes de
reemplazar archivos. Esa copia incluye la base de datos de repaso de destino
cuando existe. Si se sobrescribirían archivos auxiliares pero no existe un mazo
de destino que pueda copiarse, Cosimo rechaza la restauración en lugar de
sobrescribir esos archivos.

Restaurar un paquete puede causar pérdida de datos. Puede reemplazar texto de
cartas más reciente, archivos de audio más recientes, un `audio-manifest.tsv`
más reciente, o historial de programación y valoración más reciente en el
archivo `.reviews.sqlite3`. Los paquetes creados con `Exportar mazo completo` o
`Copia completa del mazo` no contienen la base de datos de repasos; los
paquetes creados con `Exportar mazo completo con historial` sí la contienen. Si
una restauración falla porque la base de datos de repaso está bloqueada, cierra
otras ventanas de Cosimo u otras herramientas que usen esa base de datos y
vuelve a intentarlo.

## 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 intentos
de una sesión, valores almacenados de valoración o programación que no son
válidos, y cartas reversibles activas cuya respuesta entra en conflicto con
otra carta reversible 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 respuestas duplicadas en cartas reversibles activas,
   usa una copia del mazo o una reparación manual de la base de datos para que
   como máximo una carta de ese grupo de respuestas duplicadas tenga una carta
   inversa generada activa. 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.

## El audio de repaso no se reproduce

El audio de repaso admite archivos Opus y retrocede a archivos WAV antiguos.
Comprueba que `Herramientas -> Opciones -> Audio durante el estudio` no esté
configurado como `Sin audio`, y que el archivo esté en el directorio con el
mismo nombre base junto al mazo.

Por ejemplo, la carta `1` de `decks/Indonesian.cosimo-deck` usa:

- `decks/Indonesian/1.prompt.opus`
- `decks/Indonesian/1.response.opus`

Los archivos `.wav` antiguos con los mismos nombres, como
`decks/Indonesian/1.prompt.wav`, siguen reproduciéndose si no existe un archivo
`.opus` equivalente.

Las cartas inversas generadas reutilizan esos archivos con pregunta y respuesta
intercambiadas. Las copias automáticas del contenido del mazo y de la base de
datos de repaso no incluyen estos archivos de audio; las copias completas del
mazo sí los incluyen. Los paquetes de Windows incluyen `voice.exe`, que puede
generar archivos Opus usando voces OneCore o SAPI instaladas; consulta la guía
de usuario para el flujo de consola. El modo examen puede usar el audio de la pregunta mientras
respondes. Durante la corrección del examen o la revisión de respuestas de un
examen exacto, `Herramientas -> Opciones -> Reproducir audio automáticamente durante
la corrección y revisión de examen` controla si Cosimo reproduce
automáticamente la pregunta, la respuesta esperada, ambas o ninguna; `Ctrl+P`
reproduce el audio de la pregunta seguido del audio de la respuesta cuando esos
archivos existen.

La generación de audio actual crea archivos ausentes en el formato de
generación seleccionado, que por defecto es Opus. Si ya existe un archivo
`.opus` o `.wav` antiguo equivalente y no está registrado en
`audio-manifest.tsv`, `voice.exe` lo trata como audio del usuario y lo deja
intacto. El audio generado y registrado en el manifiesto puede regenerarse o
convertirse cuando cambia el texto de la carta, la voz, o el formato de
generación seleccionado. Conserva tu propia copia de seguridad de los archivos
de audio grabados o editados a mano, o usa una copia completa del mazo, porque
las copias automáticas del contenido del mazo y de la base de datos de repaso
de Cosimo no los incluyen.
Para mazos cuyo audio mantienes manualmente, activa `Mazo de audio manual
(proteger contra generación automática de audio)` en `Mazo -> Editar metadatos
del mazo`. Esto escribe `audio_generation=disabled`, desactiva
`Herramientas -> Generar audio`, y hace que `voice.exe` se niegue a generar
audio para ese mazo.

## Opciones de copia de seguridad

Las copias del mazo se configuran en `Herramientas -> 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 sesión de estudio.
- `Desactivadas` desactiva las copias de la base de datos de repaso.

Las copias completas automáticas se configuran por separado:

- `Diarias` escribe una copia comprimida retenida por cada ruta de mazo cuando
  Cosimo arranca o abre un mazo, si la copia retenida tiene más de 24 horas.
  Incluye el archivo del mazo, el directorio auxiliar y la base de datos de
  repaso.
- `Desactivadas` desactiva las copias completas automáticas.

La copia retenida de la base de datos de repaso y la copia completa retenida
son independientes de las copias numeradas del contenido del mazo.

Una política cotidiana equilibrada es copias del mazo en `Solo la última` o
`Ninguna`, copias de la base de datos de repaso en `Al comenzar sesión`, copias
completas automáticas en `Diarias`, y sincronización frecuente cuando usas más
de un dispositivo. Esto concentra la protección automática en el historial de
repaso y el audio auxiliar, sin acumular muchas copias redundantes del texto del
mazo.

En memorias USB, tarjetas SD y otros medios flash con escrituras limitadas,
evita el historial completo de copias del mazo y los paquetes manuales
completos repetidos salvo que los necesites. Cosimo conserva deliberadamente
escrituras duraderas para las respuestas de repaso y la sustitución de archivos,
así que reducir la actividad de copias es la forma más segura de reducir
desgaste.

`Herramientas -> Borrar directorio de copias` vacía todo el directorio
`backups` después de un aviso. Elimina archivos y carpetas aunque Cosimo no los
haya generado ni indexado, así que úsalo solo después de copiar fuera cualquier
cosa que todavía necesites.

## 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`.
- Haz copia de cualquier directorio de audio junto al mazo por tu cuenta, o usa
  una copia completa del mazo. Las copias automáticas del contenido del mazo y
  de la base de datos de repaso no incluyen archivos de audio.

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 una sesión de estudio, Cosimo deja la carta
actual en la sesión para que la respuesta no se pierda en silencio. Si no se
puede registrar el resumen de la sesión, es posible que las respuestas de las
cartas individuales sí se hayan guardado, pero que falten datos para análisis
posteriores por sesión.

## 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.

Cosimo debería ofrecer entonces abrir otro mazo o salir. Si eliges abrir otro
mazo, puedes seleccionar un archivo `.cosimo-deck` existente o elegir una ruta
nueva y dejar que Cosimo cree allí un mazo vacío. Si eso también falla, Cosimo
muestra el nuevo error y vuelve a ofrecer la misma opción de abrir o salir.

Para recuperarte:

1. Intenta abrir otro mazo desde el aviso de inicio.
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. Reinicia Cosimo después de corregir el problema de archivo o carpeta.

## 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.
