feat(app): add resilient Flow recovery and privacy-safe analytics
CI / Validate manifests (push) Has been cancelled
CI / SwiftLint (push) Has been cancelled
CI / iOS / Extension (push) Has been cancelled
CI / macOS (push) Has been cancelled

Unify PiP recovery across startup and foreground transitions, surface actionable status, and add privacy-safe analytics plus the refreshed onboarding and account experience. Update documentation assets and advance the release build to 84.
This commit is contained in:
Rocky
2026-08-20 20:22:20 +08:00
parent ee7de5c934
commit 10bc457c72
69 changed files with 7891 additions and 598 deletions
@@ -62,6 +62,50 @@ final class AppGroupOnboardingStoreTests: XCTestCase {
XCTAssertEqual(store3.onboardingPage, 0)
}
func testOnboardingPracticeWindowExpires() {
let now = Date(timeIntervalSince1970: 1_000)
KeyboardSetupBridge.setOnboardingPracticeActive(
true,
duration: 30,
defaults: defaults,
now: now
)
XCTAssertTrue(
KeyboardSetupBridge.onboardingPracticeIsActive(
defaults: defaults,
now: now.addingTimeInterval(29)
)
)
XCTAssertFalse(
KeyboardSetupBridge.onboardingPracticeIsActive(
defaults: defaults,
now: now.addingTimeInterval(31)
)
)
}
func testDisablingOnboardingPracticeClearsWindow() {
let now = Date(timeIntervalSince1970: 1_000)
KeyboardSetupBridge.setOnboardingPracticeActive(
true,
defaults: defaults,
now: now
)
KeyboardSetupBridge.setOnboardingPracticeActive(
false,
defaults: defaults,
now: now
)
XCTAssertFalse(
KeyboardSetupBridge.onboardingPracticeIsActive(
defaults: defaults,
now: now
)
)
}
// MARK: - App context detection round-trip
func testDetectedAppContextRoundTrip() throws {