v1.8.3

24 de julio de 2026

Versión de parche que corrige dos regresiones — fallos silenciosos al borrar estados de guardado y notificaciones falsas de actualización en la versión actual — más una pasada de fiabilidad de carga de juegos en Modo TV y una limpieza amplia de avisos de Swift 6.

Destacados

  • Borrar estados de guardado vuelve a funcionar: Los manejadores de borrado en ModernSaveStateSlotView y en el menú contextual de miniatura progresiva construyen ahora la misma clave compuesta displayName__ que usa la ruta de guardado (#27).
  • Sin avisos falsos de actualización en la versión actual: La disponibilidad de actualización en AppUpdateService ya no se condiciona a #if LOG_DEBUG, así que las instalaciones limpias ya no se reportan como desactualizadas (#25).
  • Fiabilidad del Modo TV: Se refactorizó la inicialización de la biblioteca para que los juegos se carguen de forma determinista en Modo TV, y entrar en Modo TV dispara ahora una pasada de entrada a pantalla completa para mantener el mando enfocado.
  • Limpieza de avisos de Swift 6: Eliminados ~20 avisos de aislamiento de actores, bindings no usados y APIs deprecadas para mantener el log de build accionable.

Cambios detallados

  • Corregidos los manejadores de borrado para usar la clave compuesta displayName__ — ver BaseRunner.swift:1150 y GameDetailView.swift:426 para la ruta de guardado canónica (Corrige #27)
  • Eliminado el condicionamiento #if LOG_DEBUG de la disponibilidad de actualización en AppUpdateService; la ruta de comparación real ahora se ejecuta siempre (Corrige #25)
  • Refactorizada la inicialización de la biblioteca de ROMs para que los juegos se carguen en Modo TV en lugar de depender de efectos laterales
  • Añadida lógica de entrada a pantalla completa al activar el Modo TV para que la ventana activa tome foco en la transición
  • Actualizadas las configuraciones de build y banderas de log para documentar el alcance de LOG_DEBUG/LOG_EXTREME
  • Añadido log de depuración para operaciones de máquina del tiempo y otros componentes
  • Limpieza de avisos de Swift 6: await redundante en llamadas síncronas, bindings system/port/existing no usados, onChange(of:perform:) deprecado de un solo parámetro, argumentos por defecto con aislamiento de actores, y cuerpos de trailing-closure ambiguos
  • Revisados los enlaces de assets y recortadas secciones obsoletas en README.md