Repository navigation
Pairing 4/6: share the add-device flow and keep the old band on failed replacement - #694
Draft
mikenrafter wants to merge 7 commits into
Draft
mikenrafter wants to merge 7 commits into
mikenrafter wants to merge 7 commits into
Conversation
Contributor
Pre-merge checks:
|
mikenrafter
force-pushed
the
split/669-add-device
branch
from
November 11, 2026 03:46
5f72149 to
3626480
Compare
This was referenced Nov 11, 2026
mikenrafter
force-pushed
the
split/669-add-device
branch
from
November 11, 2026 03:56
3626480 to
737a895
Compare
… replacement succeeds
mikenrafter
force-pushed
the
split/669-add-device
branch
from
November 11, 2026 04:16
737a895 to
d4594f4
Compare
This branch has not been deployed
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.
Section 4 of the split requested in #669. Draft until preceding sections land. This upstream PR temporarily includes those dependencies; review this section through the link below.
Use one flow for scanned devices and connect-time band discoveries, with an explicit choice before saving a band as a workout sensor. Route Oura and Mi Band authentication to their existing screens.
Replacement now verifies and saves the new band before retiring the old pairing. A cancelled picker or failed bootstrap/save keeps the old primary record; connection failures attempt to reconnect it. The app still uses one primary engine, so the radio connection can briefly interrupt. After success, retire only the exact old ASK band rather than removing every band. Copy describes the failure behavior.
Real-iPhone gate remains open: ASK after FlutterBluePlus scanning, overlapping approvals, exact old-band removal, retry/relaunch/background restore, and replacement during an offload. Releasing the restore central does not prove that no other central is alive. System-selected identity remains the iOS 18+ limit described in section 2.
unpairSessionaborts the current session; it does not wait for all historical data and the final batch ACK. This change does not modify history storage or ACK ordering.Individual section diff.
Validation: local localization generation and full
flutter analyze --no-pubpass. Focused test files pass: ui2_pair_sheets_test, app_state_pairing_confirmation_test, device_picker_test, sensor_cap_test, pair_sensor_test and ui2_tokens_test. Physical iPhone testing remains outstanding.Upstream review order: 1 ready → 2 draft → 3 draft → 4 draft → 5 draft → 6 draft. All target upstream main; draft diffs include preceding dependencies. Use the individual section link above to review this section alone.
Screenshots
Flutter widget renders using fixture data and the bundled Manrope font. Native iPhone testing remains outstanding.