v1.12.0
Esta versión añade una hoja de prueba de mando en vivo con visualizador del pad en pantalla, reasignación, zona muerta y calibración; incorpora las puntuaciones de OpenCritic a la vista de detalle del juego; refactoriza el selector de orden de la biblioteca con nuevos órdenes "Tiempo jugado" y "Más largo de terminar"; y pule el pipeline de efectos holo: la transparencia de la lámina inversa ahora se ve correctamente, se corrige la alineación de la carátula ajustada para carátulas no verticales, se eliminan ajustes Holo obsoletos, y el modo TV obtiene un efecto de pivote 3D en las filas de la lista además de un holo automático estilo asistente para el tile enfocado y el héroe seleccionado. Se elimina un encabezado mágico CD001 erróneo del PC Engine para que las imágenes DOS CD ya no se identifiquen erróneamente como PCE.
Destacados
- Hoja de prueba de mando en vivo: Una hoja auto-presentada al conectar nuevos gamepads (y una entrada manual "Probar mando" en ajustes) muestra la asignación actual sobre un layout Xbox dibujado en SwiftUI, permite reasignar botones frontales/hombros/gatillos/sticks/dpad, ajustar zonas muertas de los sticks y ejecutar una sesión de calibración de sticks. Los conflictos se resaltan en amarillo.
- Integración con OpenCritic: La vista de detalle del juego ahora muestra puntuación de la crítica, tier, porcentaje recomendado, número de reseñas y un enlace profundo. Los resultados se cachean en
ROMMetadata; la clave de API y la prueba de conectividad están en Ajustes, y todo está localizado en en/es/ja/pt. - Refactor del orden de biblioteca + nuevos órdenes: El antiguo orden de dos booleanos se reemplaza por un único enum
LibrarySortOrder, con "Tiempo jugado" (portotalPlaytimeSeconds) y "Más largo de terminar" (porhltbMainStoryHours) añadidos en el popover "Otros" de la barra de chips. Las pills ahora ciclan inactivo → descendente → ascendente con flechas direccionales. - Pulido de efectos Holo: La transparencia de la lámina inversa se ve correctamente en los tonos medios brillantes (nuevo shader Metal
ReverseHoloMaskcon gating por luminancia), la carátula ajustada y la lámina Holo quedan centradas en la tarjeta difuminada de todos los juegos, se eliminan nueve ajustes Holo obsoletos, y el modo TV obtiene un efecto de pivote 3D en las filas de la lista más un holo automático en el tile enfocado y el héroe seleccionado.
Cambios detallados
- Hoja de prueba de mando — nuevo enum
PadButtonque cubre todo el layout Xbox (frontales, hombros, gatillos, sticks, dpad, share, 8 direcciones de stick);ControllerInputObserverposee un único conjunto de cadenasvalueChangedHandler(o callbacks de observador SDL) y sintetiza eventos de pulsación de dirección de stick desde ejes analógicos para que la captura de reasignación funcione con cualquier fuente de entrada;SDLInputManagerobtienestartButtonObservation/startTriggerObservationreplicando el patrón de eje de una sola ranura; se elimina la lógica de deduplicación deupdateMapping(se permiten duplicados; la hoja de prueba resalta conflictos en amarillo);ControllerService.updateMapping/stopObservingahora difunde la notificacióncontrollerInputObserverStoppedpara queStickVisualizerViewvuelva a enganchar sus handlers cuando se cierra la hoja de prueba;NewGamepadPresenterauto-presenta la hoja para nombres de proveedor no vistos tras un warm-up de 2s al arrancar y cuando no hay ningún juego en ejecución; el contexto de gamepad deNavBlockerabsorbe las acciones de navegación de la biblioteca mientras la hoja está abierta para que A/Start no lancen juegos accidentalmente. - OpenCritic — nuevo
OpenCriticService(RapidAPI) con búsqueda, detalles y prueba de conexión; UI de Ajustes para la clave de API con retroalimentación de conectividad y logging; nueva sección OpenCritic en la vista de detalle del juego con puntuación, tier, porcentaje recomendado, número de reseñas y enlace; resultados persistidos enROMMetadata; el refresh reutiliza el game ID cacheado para reducir el uso de API de 2 hits a 1; localizado settings.openCritic.* y openCritic.* en en/es/ja/pt. - Refactor del orden de biblioteca — reemplaza las claves AppSettings
sortByLastPlayed/sortByLastAddedcon un único enumLibrarySortOrdermás un flagsortAscending; nuevoLibrarySortPickerque renderiza tanto el menú Orden de macOS (filas NSMenu + submenú "Otros") como la barra de chips de filtro (chips tipo cápsula); nuevos órdenes "Tiempo jugado" y "Más largo de terminar" en el popover "Otros" (entradas sin jugar / sin HLTB se hunden al final); ciclo de clic de pill: inactivo → descendente → ascendente → inactivo; el orden "Nombre" por defecto es implícito (sin pill);FilterChipViewobtiene un parámetrofillsWidthpara filas "Otros" a ancho completo; las claves legacy se leen una sola vez en el primer arranque y se dejan en disco (inertes) para rollback seguro. - Alineación Holo — centrar la carátula ajustada y la lámina/brillo holo en la tarjeta difuminada de todos los juegos para que el arte no vertical ya no se amplíe/recorte para llenar y la máscara ya no se desplace fuera de centro; se documentan los invariantes de carátula Holo en
AGENTS.md. - Lámina Holo inversa — nuevo shader Metal
ReverseHoloMask: la lámina inversa es transparente en el máximo oscuro y en el máximo brillante, y más visible en los tonos medios brillantes, con el barrido claro/oscuro activado por la máscara de luminancia en cada modo para que la transparencia sea realmente visible. - Poda de ajustes Holo — eliminados nueve ajustes Holo consumidos solo por una rama de fallback muerta en
HoloFoilLayers.body(intensidad y patrón de título/chrome/héroe/fondo, másmaskDeviationChance); eliminadosholofoilRareBeamStrength,randomFoilSize, los flagsheroHolo/titleBackgroundHolo/chromeBackgroundHolo, el sidecarHoloMaskMeta, y el cableado dewriteMeta/metaFileURL; Ajustes → Holo ahora expone solo el toggle "mostrar botón de play" en la sección Holo Levels (la intensidad y el patrón los dirige la tirada de variante por tarjeta deHoloCardRandomization). - Pivote 3D modo TV — las filas de la lista ahora cuentan con un efecto de pivote 3D sobre su carátula.
- Holo automático modo TV —
TVModeHoloBoxart: holo automático estilo asistente (luz autodirigida + movimiento de tarjeta, variante aleatoria ponderada por el usuario) aplicado al tile enfocado de la fila de juegos y al boxart del héroe del juego seleccionado. - Fix cold-start modo TV — se salta el
initialEntryIDpor defecto.recental reanudar desde cold-start y se difiere la restauración del filtro persistido hasta que cargue la biblioteca. - Fix de arte obsoleta modo TV — la descarga de arte de detalle obsoleta ya no sobrescribe el ROM héroe actual (la descarga la maneja únicamente la vista de detalle).
- Fix MainActor modo TV — leer
auto_generate_holo_masksen el main actor. - Identificador de ROM — eliminado el encabezado mágico
CD001erróneo del sistemapce(era el marcador genérico del Primary Volume Descriptor ISO 9660 presente en cualquier imagen CD cocinada, no solo en discos PC Engine); las HuCards verdaderas de PC Engine siguen casando por la firma "PC ENGINE" en el offset 0; los CD-ROM de PC Engine los maneja el sistema dedicadopcecd. - Assets de carátula — añadidos
zelda_oot_usa_chrome.pngyzelda_oot_usa_title.pngpara The Legend of Zelda: Ocarina of Time (USA). - Limpieza de proyecto — eliminadas las referencias a
TestWrite.swiftde la configuración del proyecto. - Versión de marketing subida a 1.12.0 y número de compilación a 35 en
project.yml, ambosInfo.plistydocs/_config.yml.