Version 0.2.8
Covers two releases folded together — 0.2.7 was never tagged on its own.
Anything a bridged app animated per frame — synced lyrics, scrubbers, custom
animations — froze solid while mirroring, even though timer-driven UI kept working
fine, which made the damage look app-specific. The cause: a CADisplayLink
created the normal way binds to the phone's own screen, which stays asleep for the
whole drive. Display links are now redirected onto the car screen instead, with a
standby link on the original screen that takes over if the car link goes quiet for
about six frames — so unplugging mid-drive can't strand an app on a dead screen.
Opening a fullscreen modal (YouTube's fullscreen player, for example) and coming back could leave part of the app's own UI stranded off-screen. Apps normally recover from this using rotation, but the car window is a fixed landscape canvas that never rotates, so that recovery never fired. CarSurf now remembers where everything was before the modal appeared and puts back anything still out of place shortly after it's dismissed.
Version 0.2.6
Replaces the YouTube-only fullscreen fix with a general compatibility layer for mirroring. Apps that re-check their own window or root view controller mid-mirror now keep seeing the correct CarPlay UI, instead of just the one app the old YouTube-specific hack was written for.
docs/TODO.md
for details.Version 0.2.1
Packaging only — nothing behaves differently from 0.2.0. Four diagnostic tools that CarSurf never runs are no longer installed; they were only ever used while building it. Installed size drops from 2.0 MB to 1.5 MB.
Version 0.2.0
Your apps are never modified any more. CarSurf used to re-sign an app to get it onto the CarPlay screen. Now nothing is written to the app at all — so an App Store update can't break it, and there is nothing to repair afterwards.
Tested on iOS 18.5 (iPhone 11).