iOS has not shipped any of the 2026-09-01 fixes #8

Open
opened 2026-09-01 21:45:18 +00:00 by paulhitt · 2 comments
paulhitt commented 2026-09-01 21:45:18 +00:00 (Migrated from gitlab.com)

Everything fixed on iOS on 2026-09-01 exists only on the developer's simulator:

  • ordinary text messages being discarded between two iOS devices (fnc prefix check)
  • key-transparency check passing fnid: nil, making contacts unreachable and accusing
    them of tampering
  • foreground notification banners for the app's own protocol traffic
  • EXIF/GPS stripping on the legacy photo upload and story videos
  • the story lifetime setting, and the two sign-out doors

Android shipped as 0.8. iPhone users get none of it until an archive is uploaded.

⚠️ The iOS→iOS message bug in particular means two iPhone testers currently cannot hold a
conversation on any shipped build.

Everything fixed on iOS on 2026-09-01 exists only on the developer's simulator: - ordinary text messages being discarded between two iOS devices (`fnc` prefix check) - key-transparency check passing `fnid: nil`, making contacts unreachable and accusing them of tampering - foreground notification banners for the app's own protocol traffic - EXIF/GPS stripping on the legacy photo upload and story videos - the story lifetime setting, and the two sign-out doors Android shipped as 0.8. **iPhone users get none of it** until an archive is uploaded. ⚠️ The iOS→iOS message bug in particular means two iPhone testers currently cannot hold a conversation on any shipped build.
paulhitt commented 2026-09-07 01:57:05 +00:00 (Migrated from gitlab.com)

Verified 2026-09-06: all five fixes are on main. This is a release gap, not a code gap.

Checked each item against main rather than against memory:

fnc prefix check (iOS→iOS text discarded) present — isUnknownControl
key-transparency passing fnid: nil present — KeyLog.logSubject
foreground banners for protocol traffic present
EXIF/GPS on legacy upload and story video present — both route through ImagePrep
story lifetime, two sign-out doors present

So the payload is ready and has been for some time. What is missing is an archive upload, which is not something that can be done from the repository.

⚠️ The public pages are honest about it, which is the part that would have been worth fixing first if it were not already true — the homepage reads "Android is ready to install today. The iPhone version is still being reviewed."

Two things worth doing in the same sitting as the upload, both already written down elsewhere:

  • 🔴 FN_APNS_ENV=production on the relay, or no iPhone receives any push. relay!71 now makes a wrong setting diagnose itself instead of failing as BadDeviceToken, but the setting still has to be flipped.
  • ios#7's device pass — one call, one message, one voice note, one backgrounded notification, between two physical iPhones. None of those three can be exercised on a simulator, and all three produced real bugs on 09-01.
## Verified 2026-09-06: all five fixes are on `main`. This is a release gap, not a code gap. Checked each item against `main` rather than against memory: | | | |---|---| | `fnc` prefix check (iOS→iOS text discarded) | present — `isUnknownControl` | | key-transparency passing `fnid: nil` | present — `KeyLog.logSubject` | | foreground banners for protocol traffic | present | | EXIF/GPS on legacy upload and story video | present — both route through `ImagePrep` | | story lifetime, two sign-out doors | present | So the payload is ready and has been for some time. What is missing is an archive upload, which is not something that can be done from the repository. ⚠️ **The public pages are honest about it**, which is the part that would have been worth fixing first if it were not already true — the homepage reads "Android is ready to install today. The iPhone version is still being reviewed." Two things worth doing in the same sitting as the upload, both already written down elsewhere: - 🔴 **`FN_APNS_ENV=production`** on the relay, or no iPhone receives any push. relay!71 now makes a wrong setting diagnose itself instead of failing as `BadDeviceToken`, but the setting still has to be flipped. - **ios#7's device pass** — one call, one message, one voice note, one backgrounded notification, between two physical iPhones. None of those three can be exercised on a simulator, and all three produced real bugs on 09-01.
paulhitt commented 2026-09-09 21:29:48 +00:00 (Migrated from gitlab.com)

Checked against production rather than from memory:

  • The TestFlight invite https://testflight.apple.com/join/SZF8uKU6 returns 200.
  • /get describes the iPhone build as a TestFlight beta and says plainly it is not the App Store.

The premise of this issue — that the 2026-09-01 fixes exist only on a developer's simulator — no longer holds: they are installable. Leaving it open rather than closing it, since whether "shipped" means TestFlight or App Store is the reporter's call.

Checked against production rather than from memory: - The TestFlight invite `https://testflight.apple.com/join/SZF8uKU6` returns **200**. - `/get` describes the iPhone build as a TestFlight beta and says plainly it is not the App Store. The premise of this issue — that the 2026-09-01 fixes exist only on a developer's simulator — no longer holds: they are installable. Leaving it open rather than closing it, since whether "shipped" means TestFlight or App Store is the reporter's call.
Sign in to join this conversation.