v1.7.10
Reloading the integration alone is not enough: a version update changes the
integration's Python code, which Home Assistant only picks up on a full
restart. After updating, restart Home Assistant and confirm that
manifest.json shows 1.7.10.
This release makes re-authentication far less trigger-happy, keeps polling from
running faster than you configured, adds automatic recovery from a stuck Find My
push session, and hardens a corrupt-input edge case. It also adds
diagnostics-only reporting that finally explains why a re-authentication was
requested. Nothing is removed for existing working installs, and the config
schema is unchanged.
Highlights
A network hiccup no longer throws away a valid login and asks you to sign in again
- A transient network or gateway error can no longer discard a perfectly valid,
still-cached login and force a needless re-authentication. Previously the
code that decides whether a login was really rejected matched too broadly: any
error text that merely contained401,403,unauthorizedorforbidden
was treated as a hard credential rejection, even when it was just a passing
network blip. In the field this produced a confusing loop reported by an
affected user: a valid, cached token was thrown away, the integration stopped
receiving fresh locations, and Home Assistant prompted for re-authentication
even though the credentials were completely intact and no real denial had
happened. - Genuine credential rejections are now recognized by their structured type,
not by guessing from message text, so a real "signed out" situation is still
handled correctly and promptly.
A genuinely rejected login now stops retrying instead of hammering forever
- When Google returns a definitive credential rejection whose message is
HTTP-generic only (e.g.HTTP 403 Forbidden), it is now classified correctly
and stops. Before, that case could be treated as retryable, so a rejected
token stayed cached and was retried indefinitely instead of triggering a clean
re-authentication.
Polling no longer runs faster than you configured
- Adaptive predictive polling can no longer pull the effective interval down
toward the 60-second safety floor. The predictive pre-fetch now respects your
configuredlocation_poll_interval; the 60-second minimum stays purely an API
safety limit, not a target. If you configured a slower cadence to save battery
or quota, it is honored again.
Automatic recovery from a stuck Find My push session
- A "zombie" push-session failure mode now heals itself. In this transient
state the Find My push connection reports itself as started and keeps
heartbeating, yet never delivers a single new location, which previously forced
a manual reload of the integration roughly every two hours. A liveness watchdog
now detects the starvation and performs a single, cooperative reconnect with
backoff (bounded by a maximum retry ceiling), so the connection recovers on its
own.
You can finally see why a re-authentication was requested
- The diagnostics download now records a structured reason code for each
re-authentication (transient network-adjacent, stale shared key, or a
permanent Nova/Spot auth failure), so the cause is distinguishable instead of
opaque. This is diagnostics-only and does not change behavior.
Under the hood
- Corrupt
ignored_atvalues are dropped instead of raising. A non-finite or
non-numeric value written by a corrupt.storageedit no longer breaks the
drop-invalid, never-raise contract; it is simply ignored. - Re-auth provenance labels are now stable. The internal
originlabels that
used to drift with source line numbers were replaced with stable qualified
function names, and a redaction-safe DEBUG probe was added so a missed rejection
becomes observable in the field without ever logging raw error text (no token or
email can leak). - Every fixed behavior ships with regression tests, including mutation-sharp
tests for the reauth classification on both OAuth paths, the polling-cadence
contract, the corrupt-input guard, and the push-session watchdog. The coverage
floor was raised from 72 % to 73 %. Each contributing change was CI-green and
reviewed before it was merged. - No breaking changes for existing installs: the
config_entryschema version
is unchanged, and diagnostics remain strictly redacted.
Reminder: restart Home Assistant after updating, then verify the version is
1.7.10 under Settings -> Devices & Services -> Google Find My.
Full Changelog: v1.7.9...v1.7.10