v1.7.2

16 de julho de 2026

Versão de rede de segurança sobre a v1.7.1. Embora a v1.7.1 tenha corrigido o bug de perda de dados, a v1.7.2 adiciona um backup automático do seu armazenamento SwiftData e uma tela de recuperação "Modo Atualização do App" para que uma futura migração problemática nunca mais apague seus dados silenciosamente. Se a migração falhar, sua biblioteca, saves, BIOS, cheats e configurações são restaurados de um backup com carimbo de data/hora e o app inicia em um modo limitado que permite instalar uma atualização corretiva.

Destaques

  • Backup pré-migração automático: Antes de abrir o armazenamento SwiftData, a v1.7.2 copia a tríplice SQLite (TruchiEmu.sqlite, -wal, -shm) para ~/Library/Application Support/TruchiEmu/.migrationBackups/ com carimbo de data/hora. No máximo 5 backups recentes são mantidos.
  • Reversão em falha: Se uma migração de esquema falhar, o app restaura o backup pré-migração mais recente no caminho do armazenamento ativo, para que a próxima versão (corretiva) abra sua biblioteca original em vez de um armazenamento vazio.
  • Modo Atualização do App: Quando o armazenamento não pode ser aberto, o app mostra uma tela bloqueada com verificação de atualização em um toque, Time Machine, continuar em modo limitado e sair — seus dados sempre são reportados como intactos.
  • Fallback em memória: A UI continua funcional mesmo quando o armazenamento em disco está indisponível, permitindo que a tela de recuperação seja renderizada.

Alterações detalhadas

  • Adicionado SwiftDataContainer.makePreMigrationBackup() e restoreLatestBackup() (cópia/restauração da tríplice SQLite com limpeza de backups antigos)
  • Adicionado estado launchSchemaError, createdPreMigrationBackup e runningInMemoryFallback para expor falhas de migração
  • Revisado o caminho de falha do ModelContainer: em erro, restaura o backup e então usa um armazenamento em memória — sem exclusões destrutivas
  • Adicionado AppUpdateModeView e conectado como primeira view quando launchSchemaError != nil, com uma notificação .exitAppUpdateMode para dispensá-lo
  • Removido o não mais usado deleteStoreFiles() (seu caminho de excluir-e-repetir foi removido do manipulador de falha)
  • Adicionadas chaves de localização updateMode.* (en/es/pt)