v1.12.0
Esta versão adiciona uma folha de teste de controle ao vivo com visualizador do pad na tela, remapeamento, deadzone e calibração; traz as notas do OpenCritic para a visualização de detalhes do jogo; refatora o seletor de ordenação da biblioteca com novas ordens "Tempo jogado" e "Mais longo para terminar"; e dá polimento ao pipeline de efeitos holo: a transparência do foil reverso agora é visível corretamente, o alinhamento da arte ajustada é corrigido para capas não verticais, ajustes Holo obsoletos são removidos, e o modo TV ganha um efeito de pivô 3D nas linhas da lista além de um holo automático estilo assistente para o tile em foco e o herói selecionado. Um cabeçalho mágico CD001 espúrio do PC Engine é removido para que imagens DOS CD não sejam mais identificadas incorretamente como PCE.
Destaques
- Folha de teste de controle ao vivo: Uma folha auto-apresentada ao conectar novos gamepads (e uma entrada manual "Testar controle" em configurações) mostra o mapeamento atual em um layout Xbox desenhado em SwiftUI, permite remapear botões frontais/ombros/gatilhos/sticks/dpad, ajustar deadzones dos sticks e executar uma sessão de calibração dos sticks. Conflitos são destacados em amarelo.
- Integração com OpenCritic: A visualização de detalhes do jogo agora mostra nota da crítica, tier, percentual recomendado, contagem de análises e um link direto. Os resultados são cacheados em
ROMMetadata; a chave de API e o teste de conectividade ficam em Configurações, e tudo está localizado em en/es/ja/pt. - Refatoração da ordenação da biblioteca + novas ordens: A antiga ordenação de dois booleanos é substituída por um único enum
LibrarySortOrder, com "Tempo jogado" (portotalPlaytimeSeconds) e "Mais longo para terminar" (porhltbMainStoryHours) adicionados no popover "Outros" da barra de chips. As pills agora ciclam inativo → descendente → ascendente com setas direcionais. - Polimento dos efeitos Holo: A transparência do foil reverso fica visível corretamente nos tons médios brilhantes (novo shader Metal
ReverseHoloMaskcom gating por luminância), a capa ajustada e o foil Holo ficam centralizados no card desfocado de todos os jogos, nove ajustes Holo obsoletos são removidos, e o modo TV ganha um efeito de pivô 3D nas linhas da lista mais um holo automático no tile em foco e no herói selecionado.
Mudanças detalhadas
- Folha de teste de controle — novo enum
PadButtoncobrindo todo o layout Xbox (frontais, ombros, gatilhos, sticks, dpad, share, 8 direções de stick);ControllerInputObserverpossui um único conjunto de cadeiasvalueChangedHandler(ou callbacks de observer SDL) e sintetiza eventos de pressionamento de direção de stick a partir de eixos analógicos para que a captura de remapeamento funcione para qualquer fonte de entrada;SDLInputManagerganhastartButtonObservation/startTriggerObservationespelhando o padrão de eixo de slot único existente; lógica de deduplicação deupdateMappingremovida (duplicatas são permitidas; a folha de teste destaca conflitos em amarelo);ControllerService.updateMapping/stopObservingagora transmitem uma notificaçãocontrollerInputObserverStoppedpara queStickVisualizerViewreanexe seus handlers quando a folha de teste fecha;NewGamepadPresenterauto-apresenta a folha para nomes de vendor não vistos após um warm-up de 2s na inicialização e quando nenhum jogo está rodando; o contexto de gamepad deNavBlockerengole ações de navegação da biblioteca enquanto a folha está aberta para que A/Start não iniciem jogos acidentalmente. - OpenCritic — novo
OpenCriticService(RapidAPI) com busca, detalhes e teste de conexão; UI de Configurações para a chave de API com feedback de conectividade e logging; nova seção OpenCritic na visualização de detalhes do jogo mostrando nota, tier, percentual recomendado, contagem de análises e link; resultados persistidos emROMMetadata; refresh reutiliza o game ID em cache para cortar o uso de API de 2 hits para 1 no refresh; localizado settings.openCritic.* e openCritic.* em en/es/ja/pt. - Refatoração da ordenação da biblioteca — substitui as chaves AppSettings
sortByLastPlayed/sortByLastAddedpor um único enumLibrarySortOrdermais um flagsortAscending; novoLibrarySortPickerrenderiza tanto o menu Ordenar do macOS (linhas NSMenu + submenu "Outros") quanto a barra de chips de filtro (chips em cápsula); novas ordens "Tempo jogado" e "Mais longo para terminar" no popover "Outros" (entradas não jogadas / sem HLTB afundam para o final); ciclo de clique da pill: inativo → descendente → ascendente → inativo; a ordenação "Nome" padrão é implícita (sem pill);FilterChipViewganhou um parâmetrofillsWidthpara linhas "Outros" em largura cheia; as chaves legadas são lidas uma vez na primeira execução e deixadas no disco (inertes) para rollback seguro. - Alinhamento Holo — centraliza a capa ajustada e o foil/brilho holo no card desfocado de todos os jogos para que a arte não vertical não fique mais ampliada/cortada para preencher e a máscara não desvie mais do centro; invariantes de capa Holo documentados em
AGENTS.md. - Foil Holo reverso — novo shader Metal
ReverseHoloMask: o foil reverso é transparente no escuro máximo e no brilho máximo, e mais visível nos tons médios brilhantes, com a varredura claro/escuro gatilhada pela máscara de luminância em cada modo para que a transparência seja de fato visível. - Poda de ajustes Holo — removidos nove ajustes Holo consumidos apenas por um ramo de fallback morto em
HoloFoilLayers.body(intensidade e padrão de título/chrome/herói/fundo, maismaskDeviationChance); removidosholofoilRareBeamStrength,randomFoilSize, os flagsheroHolo/titleBackgroundHolo/chromeBackgroundHolo, o sidecarHoloMaskMeta, e a fiação dewriteMeta/metaFileURL; Configurações → Holo agora expõe apenas o toggle de mostrar botão de play na seção Holo Levels (intensidade e padrão são dirigidos pela rolagem de variante por cartão deHoloCardRandomization). - Pivô 3D modo TV — as linhas da lista agora apresentam um efeito de pivô 3D sobre sua capa.
- Holo automático modo TV —
TVModeHoloBoxart: holo automático estilo assistente (luz autodirigida + movimento do card, variante aleatória ponderada do usuário) aplicado ao tile em foco da linha de jogos e ao boxart do herói do jogo selecionado. - Fix cold-start modo TV — pula o
initialEntryIDpadrão.recentao retomar do cold-start e adia a restauração do filtro persistido até a biblioteca carregar. - Fix de arte obsoleta modo TV — o download obsoleto de arte de detalhe não sobrescreve mais o ROM herói atual (o download é tratado apenas pela visualização de detalhe).
- Fix MainActor modo TV — ler
auto_generate_holo_masksno main actor. - Identificador de ROM — removido o cabeçalho mágico
CD001espúrio do sistemapce(era o marcador genérico do Primary Volume Descriptor ISO 9660 presente em qualquer imagem de CD cozinhada, não só em discos PC Engine); HuCards verdadeiros de PC Engine ainda casam pela assinatura "PC ENGINE" no offset 0; CD-ROMs de PC Engine são tratados pelo sistema dedicadopcecd. - Assets de capa — adicionados
zelda_oot_usa_chrome.pngezelda_oot_usa_title.pngpara The Legend of Zelda: Ocarina of Time (USA). - Limpeza do projeto — removidas as referências a
TestWrite.swiftda configuração do projeto. - Versão de marketing atualizada para 1.12.0 e número de build para 35 em
project.yml, ambos osInfo.plistedocs/_config.yml.