Repository navigation
Conversation
…e paste in the E2E
# Conflicts: # Sources/App/Frontend/IncomingURLHandler.swift # Sources/App/Resources/en.lproj/Localizable.strings # Sources/App/Settings/Kiosk/KioskView.swift # Sources/Shared/Resources/Swiftgen/Strings.swift
…hand-off and the flow's success state
Contributor
There was a problem hiding this comment.
Test coverage of this pull request is below 90%
The unit tests run 86.57% of the lines this pull request
adds or changes (1714 of 1980 coverable lines).
The per-file breakdown, and the changed lines no test runs, are in the
job summary. Adding tests for those lines and pushing dismisses this
review automatically.
Lines that carry no executable code, and files the unit test targets do not
build, are not counted. If the new code genuinely cannot be unit tested, a
maintainer can dismiss this review.
github-actions
Bot
dismissed stale reviews from themself
October 22, 2026 17:46
Patch coverage is now 90.95%, at or above the 90% threshold.
The announcement drops its "What this means" section and is titled "Home Assistant has moved". The welcome notice explains the new App Store listing, the overview's second list is "Set up again manually", the open check asks "Did the old app open?", and the erased screen's button reads "Open the new app".
Brings in the registration ownership from #6088. A transfer carries the existing app's registration records, which name that app's vendor identifier as their owner, so the Open Home Foundation app would treat every transferred server as a restored device's registration, hold back its reports and ask whether to replace the old device. After the import the coordinator now takes those registrations over, keeping the same mobile_app device; the reconnect stays with the push token adoption so the new token is what reaches Home Assistant. The E2E vendor override is left out of the transferred preferences, and the migration UI test's build file gets an ID of its own after colliding with E2EFlow.swift.
…ion E2E With location undecided and an HTTP-only server the app covers the frontend with its location decision, also on a relaunch after onboarding, so the sidebar underneath never opened. The driver now closes that cover first and reaches Settings the way E2EFlow does.
# Conflicts: # Sources/App/Resources/hu.lproj/Localizable.strings
# Conflicts: # Sources/App/Container/OnboardingStateObservable.swift # Sources/App/Settings/Sensors/Permissions/SensorPermissionsViewModel.swift
When the existing app starts the transfer and the new app already holds servers, the new app now opens and verifies the payload, then shows a "Replace this app's setup?" screen instead of wiping itself. Replacing wipes and applies as before; keeping sends /declined to the existing app, which leaves its handed-off screen, reconnects and registers for push again.
# Conflicts: # Sources/HADesignSystem/Sources/Gallery/DesignSystemComponent.swift
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.
AI Policy
Select exactly one option that describes AI usage in this contribution:
Summary
The app moves to the Open Home Foundation Apple account under a new bundle identifier, so users end up with two apps side by side. This adds an in-app transfer between them: the existing app packages its servers, sign-ins, settings and mTLS identities into an encrypted payload, hands it over through the pasteboard and a custom URL scheme, and the new app imports it. The existing app then refuses to set up new servers, points at the new app, and can erase itself once the transfer is verified.
The Apple account is selected through configuration (
Configuration/Account.xcconfig) instead of a branch, so the same code builds either app.Screenshots
Snapshot references for every transfer screen, light and dark, are under
Tests/App/Onboarding/Migration/__Snapshots__/AppMigrationScreens.test/.Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#
Any other notes
Draft while the remaining pieces land:
Configuration/Accounts/ohf.xcconfig: push provider (app-push-provider, needed onio.home-assistant.appandio.home-assistant.app.PushProvider, blocks the TestFlight upload), Critical Alerts on the PushProvider App ID (it currently carries Critical Messaging), Thread network credentials, user-assigned device name. CarPlay is granted.Tests/UI/MigrationE2ETests.swift) run only locally with two installed builds and a reachable server; they are not wired into CI.homeassistant-ohf,homeassistant-nc) with Universal Links.RegistrationOwnershipafter the import.