v1.8.3
Patch release fixing two regressions — silent save-state deletion failures and false-positive update notifications on the current version — plus a TV-mode game-loading reliability pass and a broad Swift 6 warning cleanup.
Highlights
- Deleting save states works again: Delete handlers in
ModernSaveStateSlotViewand the progressive thumbnail context menu now build the same compositedisplayName__key the save path uses (#27). - No false update prompt on the current version: Update availability in
AppUpdateServiceis no longer gated behind#if LOG_DEBUG, so fresh installs no longer report themselves as outdated (#25). - TV Mode reliability: Library initialization was refactored so games load deterministically in TV mode, and entering TV mode now triggers a fullscreen entry pass to keep the controller focused.
- Swift 6 warning cleanup: Removed ~20 actor-isolation, unused-binding, and deprecated-API warnings across Swift sources to keep the build log actionable.
Detailed Changes
- Fix save-state delete handlers to use the composite
displayName__key — seeBaseRunner.swift:1150andGameDetailView.swift:426for the canonical save path (Fixes #27) - Drop
#if LOG_DEBUGgating of update availability inAppUpdateService; the real version-comparison path now runs unconditionally (Fixes #25) - Refactor ROM library initialization so games are loaded in TV mode rather than relying on side-effects
- Add fullscreen entry logic on TV Mode activation so the active window is brought to focus on transition
- Update build configurations and logging flags to document the
LOG_DEBUG/LOG_EXTREMEscoping rules - Add debug logging for time-machine operations and other components
- Cleanup Swift 6 warnings: redundant
awaiton sync calls, unusedsystem/port/existingbindings, deprecated single-parameteronChange(of:perform:), default actor-isolation arguments, and confusable trailing-closure bodies - Revise asset links and trim outdated sections in
README.md