v1.5.2

2 de julho de 2026

Melhorias na captura de tela em jogo, mapeamento de teclas do controle, gerenciamento de saves e sistema de notificações na tela.

Destaques

  • Capturas em jogo: Capture o quadro atual a qualquer momento com um atalho de teclado ou botão do controle. Salva PNGs em ~/Pictures/TruchiEmu//, nomeados pela ROM e timestamp, com flash de confirmação e notificação
  • Mapeamento de teclas do controle: Associe atalhos a botões do gamepad (por identificadores GCController ou índices SDL) diretamente nas configurações de teclas
  • Gerenciador de saves: Ação em massa "Apagar todos os saves" com diálogo de confirmação explícito
  • Ação de teste de notificação: Dispare uma notificação de teste para validar permissões e comportamento
  • Melhorias nas notificações: Visual mais limpo, tempo de descarte mais confiável e melhor fluxo de autorização
  • Textos localizados para teclas: Novas traduções para captura, controles de treino e a nova UI de teclas em inglês, espanhol e português

Mudanças detalhadas

  • Adicionado ScreenshotService para captura textura Metal → PNG, com estrutura por sistema e nomes de arquivo seguros
  • Adicionado flash overlay e ScreenshotPillOverlay com botões "Abrir" / "Mostrar no Finder"
  • Adicionado atalho de ajuda para ⇧⌘S (captura) e textos localizados help.shortcut.screenshot
  • Adicionada entrada no catálogo de configurações para capturas e ação de tecla (.screenshot)
  • Adicionado ControllerHotkeyBinding, ControllerHotkeySource e coordenador de captura para associar atalhos a botões do controle
  • Refatorado HotkeyConfigSettingsView com três superfícies de captura (primário, secundário, controle)
  • Adicionado "Apagar todos os saves" com confirmação segura de duas etapas
  • Adicionada ação "Testar notificação" para validar autorização e renderização
  • Ajustes em tempo, hierarquia visual e descarte explícito de notificações no jogo
  • Atualizados en.json, es.json e pt.json com novas chaves
  • Build: a fase de codesign ocorre de forma confiável em Release; o dylib do librashader vai para Frameworks/ com o install name correto