Exportar e importar el progreso by SirHegel · Pull Request #6 · SirHegel/bloquitos · GitHub
Skip to content

Exportar e importar el progreso - #6

Merged
SirHegel merged 1 commit into
mainfrom
copia-seguridad
Aug 20, 2026
Merged

Exportar e importar el progreso#6
SirHegel merged 1 commit into
mainfrom
copia-seguridad

Conversation

@SirHegel

Copy link
Copy Markdown
Owner

Por qué

Toda la base de datos vive solo en el navegador. Basta con «borrar datos de navegación», cambiar de equipo o reinstalar el sistema para perder meses de partidas sin ningún aviso. Hasta ahora no había forma de evitarlo.

Ahora se puede guardar un JSON con el historial completo, los logros y los ajustes, y volver a cargarlo. Sigue sin haber servidor ni cuenta: el archivo lo guarda quien juega, donde quiera.

Decisiones

Importar añade, no reemplaza. Perder el progreso actual por cargar un respaldo antiguo sería exactamente el problema que esto intenta resolver.

Sin duplicados. Se descartan las partidas ya presentes comparando fecha y puntuación, así que importar dos veces el mismo archivo no infla el historial.

Los logros se unen, nunca se quitan.

Validación

El archivo lo elige la persona que juega, así que es entrada no confiable:

  • Se comprueba formato y version antes de tocar nada
  • Cada partida pasa por el mismo saneado que las normales (negativos → 0, NaN e Infinity → 0, máximos limitados)
  • Las entradas que no son objetos se saltan sin abortar la importación
  • Los identificadores de logro que no están en el catálogo se descartan en vez de crearse
  • Tope de 8 MB, para no intentar analizar algo desproporcionado

Comprobado

8 pruebas nuevas (60 en total): ciclo completo exportar→importar, doble importación, unión con lo existente, rechazo de archivos ajenos (null, números, texto, arrays, formato desconocido), rechazo de versiones futuras, saneado de partidas corruptas y descarte de logros inventados.

En Chrome: el botón exporta un JSON con la estructura correcta y cero errores en consola.

Toda la base de datos vive solo en el navegador. Basta con "borrar datos de
navegacion", cambiar de equipo o reinstalar el sistema para perder meses de
partidas sin ningun aviso previo. Hasta ahora no habia forma de evitarlo.

Ahora se puede guardar un archivo JSON con todo el historial, los logros y los
ajustes, y volver a cargarlo despues. Sigue sin haber servidor ni cuenta: el
archivo lo guarda quien juega, donde quiera.

Decisiones
- Al importar se ANADE a lo que ya hay, no se reemplaza. Perder el progreso
  actual por cargar un respaldo antiguo seria justo el problema que esto
  intenta resolver.
- Se descartan las partidas ya presentes comparando fecha y puntuacion, asi
  que importar dos veces el mismo archivo no duplica el historial.
- Los logros se unen, nunca se quitan.

Sobre la validacion: el archivo lo elige la persona que juega, asi que es
entrada no confiable. Se comprueba el formato y la version, cada partida pasa
por el mismo saneado que las partidas normales, las entradas que no son
objetos se saltan sin romper la importacion, y los identificadores de logro
que no existen en el catalogo se descartan en vez de crearse. Hay tope de
tamano de archivo para no intentar analizar algo desproporcionado.

8 pruebas nuevas (60 en total) que cubren el ciclo completo, la doble
importacion, la union con lo existente, el rechazo de archivos ajenos, el
rechazo de versiones futuras, el saneado de partidas corruptas y el descarte
de logros inventados.
@SirHegel
SirHegel merged commit d2dfb32 into main Aug 20, 2026
1 check passed
@SirHegel
SirHegel deleted the copia-seguridad branch August 20, 2026 04:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant