v1.7.1
Critical hotfix: updating from v1.6.0 to v1.7.0 could delete the entire TruchiEmu user-data folder (saves, BIOS, states, cheats, library database). v1.7.1 fixes the migration so user data is preserved.
Highlights
- Data-loss fix: Updating from v1.6.0 to v1.7.0 deleted the entire
~/Library/Application Support/TruchiEmu/folder. v1.7.1 fixes the schema migration for theROMEntry.hasTitleScreenfield so the migration succeeds and user data is preserved. - Defense in depth: The fallback store-recovery path no longer touches the user-data folder — only the three SwiftData SQLite files (
TruchiEmu.sqlite,-wal,-shm). Saves, BIOS, config, cheats, and logs are never deleted by the recovery code path, even on a failed migration.
Detailed Changes
- Changed
ROMEntry.hasTitleScreenfrom a non-optionalBoolto an optionalBool?so SwiftData/CoreData can automatically migrate existing rows from v1.6.0 (existing rows getnil, treated asfalseby all call sites) - Narrowed
SwiftDataContainer.deleteStoreFiles()so it only removes the SQLite triple (TruchiEmu.sqlite/-wal/-shm) and the legacy root-leveldefault.store*files — never the entireTruchiEmu/user-data folder - Coalesced
ROMEntry.hasTitleScreenreads tofalsefor callers that translate between the SwiftData model and the plainROMstruct
If you already updated to v1.7.0 and lost data
v1.7.1 cannot recover data that was already deleted by v1.7.0 on a previous launch. If you were affected, your options are:
- macOS APFS local snapshots: macOS often retains short-lived local snapshots of your disk. Open Time Machine from the menu bar or launch
/System/Applications/Utilities/Time Machine.appand restore~/Library/Application Support/TruchiEmu/from a snapshot predating the v1.7.0 launch. - Time Machine backup: If you have an external Time Machine drive, restore the same folder from your most recent backup predating the update.
- Install v1.7.1 first before restoring: once v1.7.1 is installed, future launches will no longer delete the folder, so a restored folder won't be wiped on the next relaunch.