Fix Omi Dev startup and recover silent Pendant connections - #12367
Open
Git-on-my-level wants to merge 4 commits into
Open
Fix Omi Dev startup and recover silent Pendant connections#12367Git-on-my-level wants to merge 4 commits into
Git-on-my-level wants to merge 4 commits into
Conversation
Failure-Class: none
Failure-Class: none
Failure-Class: none
Failure-Class: none
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.
What changed and why
Fix the Omi Dev iOS startup crash, then make Pendant connection state and recovery truthful across three failure modes observed on a physical iPhone:
Offlinewhenever it was absent from the latest advertisement scan, even though iOS could still reconnect it by its saved peripheral identifier. The displayedRetryaction had an empty callback. Retry now runs the real forced-connection flow.pairing_lostand tear down the unusable link.The Dart device service still rejects partially initialized connections, and onboarding persists success only after device-specific initialization completes. Omi Dev uses compatible Awesome Notifications packages and the correct dev Profile/Release CocoaPods configurations and bundle identifiers.
The iOS dev configuration deliberately preserves both contributor paths:
Debug-devkeeps watch signing disabled so the established account-free simulator workflow continues to work, whileProfile-devandRelease-devsign the embedded watch app so physical-device bundles are installable. A static contract now locks that split, the single-suffix dev widget identifier, and the dev Profile/Release identity. CocoaPods remains the sole owner of framework search paths.Product invariants affected
none
How it was verified
Authentication is insufficient; the probe observed zero stream-data/audio packets. This isolated that no-transcript incident to the BLE bond/control-write boundary, before websocket or transcription processing.Offline/RetryUI found the scan-only classification and literal no-op callback. Regression coverage now proves Retry invokes the connection callback, while existing provider coverage proves saved non-advertising devices remain visible and are classified separately from scan results.Debug-devbuild passed with watch signing disabled. A physicalProfile-devbuild then passed with watch signing enabled, resolved tocom.friend-app-with-wearable.ios12.development, and passed strict code-sign verification.Tests
bash test.sh— 1,586 passed, 5 skipped.scripts/analyze_ratchet.sh— passed.for test_file in ios/test/*_test.rb; do ruby "$test_file" || exit 1; done— 39 runs, 695 assertions, 0 failures.flutter build ios --simulator --flavor dev --debug -d <paired-simulator-id>— passed.flutter build ios --flavor dev --profile— passed; the resulting device bundle passedcodesign --verify --deep --strict.make preflight— all 17 selected checks passed.Factory reset was not required for these software-side fixes and was not performed. The remaining physical acceptance check is to open the installed Omi Dev build while the phone is unlocked, connect the Pendant, and confirm first RX/audio instrumentation followed by live transcripts.
Failure class (fixes)
Failure-Class: none