Summary
Restructures the iOS verification sheet after bitchat-android's VerificationSheet, using iOS controls in place of Material ones.
- Tabs. A segmented "my QR" / "scan" control under the header replaces the bottom "scan someone else's qr" toggle. Settings and Notices already use the same control. A successful scan returns to my QR, as on Android.
- My QR. The code sits on a white card with a quiet zone, white in every theme so it scans reliably. The nickname and a muted "bitchat" line are under it. The raw
bitchat://verifyURL is no longer printed under the code, as on Android. Long-pressing (right-clicking on macOS) the card copies it, which keeps the Mac app's paste box usable for Macs without a camera; the old sheet allowed this through selectable URL text. - Scan. The camera preview fills the available space, with a reticle and a caption pill on dark material.
- Camera access denied. The scanner explains that camera access is needed and offers open settings, because iOS can't re-prompt once access is denied. iOS no longer says "paste a QR below"; that field only exists on macOS.
- Remove verification. A full-width bordered button with the destructive role. It uses system red: the matrix
alertRedwas too dark to read on black. - Typography. Text goes through
bitchatFont, so it follows Dynamic Type. My QR scrolls at large sizes.
Screenshots
Rendered in the iPhone 17 simulator with mock identity keys.
| Before | After (matrix, dark) | After (matrix, light) |
|---|---|---|
| Liquid glass, dark | Liquid glass, light | Verified DM peer |
|---|---|---|
| Scan tab |
|---|
The simulator has no camera, so the scan tab shows the reticle and caption over an empty preview.
Other changes
SystemSettings.cameraopens the camera privacy pane on macOS and the app's Settings page on iOS.- 5 new strings in all 30 locales:
verification.tab.my_qr,verification.tab.scan,verification.tab.picker_label,verification.scan.camera_permissionandverification.scan.no_camera. open settings reuseslocation_channels.action.open_settings, and remove verification reusesfingerprint.action.remove_verification. The translations are new and could use a native-speaker check. - The old "show my qr", "scan someone else's qr" and "remove verification" labels were literals missing from the string catalog. They're gone.
Testing
swift testpasses: 2198 tests, includingViewSmokeTestsand the localization checks.- The iOS simulator build succeeds with no new warnings. The macOS build succeeds through SwiftPM.
- Rendered both themes in light and dark, the verified-peer state and the scan tab in the simulator (above).
- Not yet checked:
- the live camera on a device
- the camera-denied state and its Settings link
- long-press copy
- the largest Dynamic Type sizes
- the macOS sheet on screen
🤖 Generated with Claude Code
Activity
10Codex Review Summary
This comment shows the latest Codex review activity on this pull request.
| Review | Status | Commit | Review trigger |
|---|---|---|---|
| 📝 Code Review | ✅ Completed 2026-10-25T18:17:49.189123Z | 545df49 | Manual request |
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review" or "@codex security review".
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 545df496cb
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
@codex review
Codex Review: Didn't find any major issues. Keep them coming!
Reviewed commit: 545df496cb
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
tested by scanning bitchat running on a nearby android. verification successful.