feat(ios): rebuild the first run and connection list for the App Store release - #2980
Merged
Merged
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
Signed-off-by: Ngô Quốc Đạt <datlechin@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuilds the iPhone and iPad first run and connection list, and clears the App Store blockers the audit found before the first submission.
Why the old shape could not be patched
The first run was a root swap to a two-page tour, and the state behind it could not say what a native first run has to ask:
sync()never read the setting, and every edit scheduled a syncIOSSyncCoordinator.sync,scheduleSyncAfterChangeisEnabled), with the Mac's decide/settle generation guard so a running sync cannot overwrite "off"AppPreferences,IOSAnalyticsProviderOnboardingPreferences); the heartbeat starts only after Share Usage DataAppState.persistTableProMobileAppUIWindowat.alert + 1through a SwiftUI scene delegate, with a single-flight unlock shared by every scene.tableprofiles were app-wide state that any iPad window could consume, and an import replaced a half-filled formAppState.pending*ScenePresenterper scene: latest-wins intent, held while a sheet, the lock or the first run is upTableProModels.DatabaseConnectionisSample, read through oneparticipatesInSyncpredicate by push, dirty marks, tombstones, export and HandoffWhat changed
PrivacyInfo.xcprivacy(UserDefaults CA92.1, FileTimestamp C617.1 and 3B52.1, DiskSpace E174.1; Device ID and Product Interaction for Analytics, not linked, no tracking), andprocessing,NSAllowsArbitraryLoadsandNSBonjourServicesremoved from Info.plist with evidence that nothing uses them.licenses.ymlgainsplatforms; a committed iOS projection (scripts/generate-ios-acknowledgements.py) is checked against it byThirdPartyLicenseInventoryTests, which now also scans the iOS version pins. Chinook is attributed (MIT).Before / After
First run. Left: the old two-page tour. Middle and right: the new welcome sheet in light and dark.
Connection list. Left: before, with the leading iCloud button. Middle and right: after, with Settings alone on the leading edge.
New screens (no before): the usage data question, the empty list with the sample database, and Settings top and bottom.
iPad: the welcome sheet as a form sheet over the library.
Verification
FirstRunPlanTests,OnboardingPreferencesTests,SceneIntentTests,ScenePresenterTests,ConnectionListStateTests,SampleDatabaseInstallerTests,AppStateLibraryTests,IOSSyncCoordinatorTests,AcknowledgementsInventoryTests.DatabaseConnectionSampleTests3/3,SyncRecordCacheand metadata suites 18/18. macOS:verify.sh buildPASS,ThirdPartyLicenseInventoryTests11/11.tablepro://connect/<id>/table/Albumopening the table, a link held while Settings is open and delivered on close, an unknown id ignored; iPad form sheet.code-reviewskill (4 findings, all fixed: re-enable during a running sync, deletions resurrected by a token reset, the sample editable from its Info tab, "Checking iCloud" skipped on re-enable) and a security review (no findings).swiftlint --stricton every touched Swift file,docs/scripts/check-writing-style.sh,check-docs-against-source.py.Not automated
The iOS app has no UI test target; adding one is its own change. The flows above were driven by hand in the simulator instead. A trackpad or hardware keyboard on iPad and VoiceOver were not exercised.
For you to decide before submission
ITSAppUsesNonExemptEncryptionstaysNO, but the app ships its own OpenSSL, libssh2 and BoringSSL; answer App Store Connect's export questions for this binary.