+7
−0
+6
−6
+12
−2
Loading
The version was marked "already prompted" the moment the check found it,
so an app killed before the alert rendered burned the one invitation that
version ever gets — silently, and for good. I hit exactly that while
testing: a launch happened behind a frozen simulator screen and the
prompt never came back.
Recording now happens in dismiss(), and the alert's presentation binding
is the single path that calls it. Both buttons only do their own work, so
neither can race the other in marking the version as seen.
Verified against the published appcast on an iOS 26 simulator, building
0.4.0 so the check fires: the alert offers 1.0.0; killing the app without
answering brings it back on the next launch; answering "Plus tard" writes
update.lastPromptedVersion = 1.0.0 and the next launch stays quiet.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>