v1.15.2

September 28, 2026

This patch release repairs the in-app updater (it could install a stray data folder instead of the new app, leaving you on the old version), adds a step-by-step recovery prompt that detects failed updates, and heals Switch classification after a version downgrade.

Update Notice: read this if an update since v1.14.0 never changed your version

A bug in the updater could copy a stray data folder (for example com.apple.WebKit.Networking+com.TruchiEmu.app) into /Applications instead of the new app. The app then restarts on the old version, and a blank app icon may sit in /Applications. This release fixes the updater and detects the damage, but affected users need one manual install:

  1. Quit TruchiEmu.
  2. In Finder, move the stray blank item to Trash. Delete nothing else.
  3. Download TruchiEmu-v1.15.2.zip from the releases page.
  4. Unzip it and move TruchiEmu.app to /Applications with Replace.
  5. Launch from /Applications and check the version in Settings About. One manual install restores auto-update for all later versions.

Highlights

  • In-app updater repair (#40): Updates extract into a unique staging folder, the installer picks TruchiEmu.app by exact name and validates its bundle ID and executable (decoy folders like com.TruchiEmu.app are ignored), copy failures now surface as errors instead of fake success, the app updates where it runs from instead of always writing /Applications, and relaunch goes through NSWorkspace.
  • Update recovery prompt: On launch the app scans /Applications for stray leftovers, broken copies, and split installs, then shows Finder-based step-by-step repair with a reinstall-from-running-copy button. A manual "Update health" check lives in Settings About. Nothing is ever auto-deleted.
  • Switch heal after downgrade: Launching an older build used to wipe Switch classification columns; stale rows are now reclassified at launch.

Detailed Changes

  • Updater — unique staging dir, exact-name bundle pick with CFBundleIdentifier and executable validation, exit-code checks on ditto/hdiutil, install at running location, NSWorkspace relaunch (fixes #40)
  • Recovery — RecoveryPromptView with Finder-only repair, reinstall from running copy, startup hook, Settings About health check, update.recovery.* strings in 4 languages
  • Switch — heal stale classification rows at launch after a version downgrade
  • Bump marketing version to 1.15.2 and build number to 40 across project.yml, both Info.plists, and docs/_config.yml.