v1.8.3

24 de julho de 2026

Versão de patch que corrige duas regressões — falhas silenciosas ao apagar saves e notificações falsas de atualização na versão atual — mais uma passagem de confiabilidade de carregamento de jogos no Modo TV e uma ampla limpeza de avisos do Swift 6.

Destaques

  • Apagar saves funciona de novo: Os handlers de exclusão em ModernSaveStateSlotView e no menu de contexto de thumbnail progressiva agora constroem a mesma chave composta displayName__ usada pelo caminho de save (#27).
  • Sem notificação falsa de atualização na versão atual: A disponibilidade de atualização em AppUpdateService não é mais condicionada a #if LOG_DEBUG, então instalações limpas não se reportam mais como desatualizadas (#25).
  • Confiabilidade do Modo TV: A inicialização da biblioteca foi refactorada para que os jogos carreguem de forma determinística no Modo TV, e entrar no Modo TV agora dispara uma passagem de entrada em tela cheia para manter o controle focado.
  • Limpeza de avisos do Swift 6: Removidos ~20 avisos de isolamento de actor, bindings não usados e APIs deprecadas para manter o log de build acionável.

Mudanças detalhadas

  • Corrigidos os handlers de exclusão para usar a chave composta displayName__ — ver BaseRunner.swift:1150 e GameDetailView.swift:426 para o caminho de save canônico (Corrige #27)
  • Removida a condicional #if LOG_DEBUG da disponibilidade de atualização em AppUpdateService; o caminho real de comparação de versão agora roda sempre (Corrige #25)
  • Refactorada a inicialização da biblioteca de ROMs para que os jogos carreguem no Modo TV em vez de depender de efeitos colaterais
  • Adicionada lógica de entrada em tela cheia ao ativar o Modo TV para que a janela ativa ganhe foco na transição
  • Atualizadas as configurações de build e flags de log para documentar o escopo de LOG_DEBUG/LOG_EXTREME
  • Adicionado log de depuração para operações de time machine e outros componentes
  • Limpeza de avisos do Swift 6: await redundante em chamadas síncronas, bindings system/port/existing não usados, onChange(of:perform:) deprecado de um parâmetro, argumentos padrão com isolamento de actor e corpos de trailing-closure ambíguos
  • Revisados os links de assets e cortadas seções desatualizadas no README.md