v1.11.0

28 de agosto de 2026

Esta versão adiciona estimativas de tempo de conclusão do HowLongToBeat à visualização de detalhes do jogo e reforça os efeitos Holo dos cards para bibliotecas grandes: um deadlock no cache de máscaras é corrigido, todos os caches Holo têm limite LRU, e a desmontagem do WebKit é assíncrona e debounced, então não congela mais a grade durante a rolagem. Rolar por uma coleção Holo com mais de 50 cards agora é fluido. O assistente de configuração ganha uma visualização Holo nativa ao vivo que corresponde ao efeito no app, gerenciamento de biblioteca com várias pastas e reconciliação de remoções, e um seletor de região mais nítido.

Observação: Os efeitos Holo ainda estão em testes beta. São experimentais e podem mudar ou ser refinados em versões futuras.

Destaques

  • Tempos de conclusão do HowLongToBeat: A visualização de detalhes do jogo mostra estimativas Principal, Principal + Extras e Completista do HowLongToBeat, com correspondência automática para ROMs com título e uma folha de busca para seleção manual.
  • Passe de desempenho Holo: A decomposição de máscaras Holo só executa no hover real, o HoloSaliencyService agora é protegido por um único lock (corrige um deadlock durante a rolagem), e todos os caches Holo têm limite LRU.
  • Rolagem mais fluida na grade Holo: O estado de rolagem da biblioteca só é republicado em mudanças reais, os cards não observam mais o serviço global de saliência, e a desmontagem do WebKit é assíncrona e debounced para não interromper o gesto de rolagem.
  • Assistente de configuração v2: Uma HoloPreviewCard nativa ao vivo no seletor de região, gerenciamento de biblioteca com várias pastas e reconciliação com o banco de dados, bezel movido para Recursos Opcionais, e um seletor de região mais nítido baseado em Zelda OoT.

Mudanças detalhadas

  • Integração HowLongToBeat — ROMMetadataEntry ganha campos HLTB (ID do jogo, título correspondente, estimativas de tempo de conclusão), HLTBWebSearchSheet para seleção manual, HowLongToBeatCard com correspondência automática e manual, e integração na visão geral da visualização de detalhes do jogo.
  • Correção de deadlock na saliência Holo — HoloSaliencyService agora usa um único OSAllocatedUnfairLock para as entradas e a ordem LRU; o design anterior com dois locks podia travar durante a rolagem.
  • Caches Holo com LRU — HoloFoilTileCache (32), HoloPatternStore (64/32/32), HoloSaliencyService (100), HoloBumpRenderer (16); DetailBoxArtComponents quantiza os tamanhos de renderização em blocos de 0.5pt para evitar fragmentação.
  • Correções de lag de rolagem Holo — LibraryScrollState.isScrolling só é republicado em mudanças reais; HoloGameCardView não observa mais HoloSaliencyService (cada card usa @State local para seu próprio progresso); a decomposição de máscaras é gatilhada por hover para não executar em todos os cards visíveis.
  • HoloWebCardView — WKWebView só é criado quando isActive é verdadeiro; a desmontagem usa um scheduleUnmount com debounce (0.35s, cancelável ao passar o cursor de novo) mais um deinit totalmente assíncrono; todas as webviews dos cards compartilham um único WKProcessPool; loadKey usa blocos de quadro quantizados a 0.5pt para parar as recargas constantes.
  • HoloFoilLayers — mascaramento por luminância para um efeito metálico mais preciso.
  • Assistente — HoloPreviewCard agora usa o pipeline nativo HoloFoilLayers + HoloSheenEffect + HoloScratchLayer, ciente da proporção de tela e do hover; máscaras de herói pré-incluídas para o seletor de região; lista de biblioteca com várias pastas e reconciliação com o banco de dados; bezel movido para Recursos Opcionais.
  • BoxArt — BoxArtLayers não subtrai mais o título do blob do herói (a dica de título removia um entalhe em forma de título em resolução total); o seletor de região do assistente usa amostras de Zelda OoT US/EU/JP para exercitar a variação de proporção de tela.
  • Localização — tempo total de jogo, partidas, última partida e conquistas traduzidos em en/es/pt/ja; entradas de funcionalidade de bezel localizadas; novas traduções Holo.
  • GameListRowView — ação onPlay adicionada para iniciar jogos.
  • GameCardView — dimensionamento de imagem alterado de scaledToFit para scaledToFill com recorte para uma apresentação mais ajustada da capa.
  • Versão de marketing atualizada para 1.11.0 e número de build para 34 em project.yml, ambos os Info.plist e docs/_config.yml.