v1.7.7
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.7.
This release is focused on a lighter, quieter integration. It cuts the
sustained CPU usage that busy multi-device setups were seeing, calms the logs
down when a single location report fails for a moment, and removes one more
class of misleading "please re-authenticate" noise. It also makes support
requests easier to act on. Nothing is removed for existing working installs.
Highlights
Much lower background CPU usage
- The integration no longer recomputes the same cryptographic device
identifiers (EIDs) over and over. On busy setups with many tracked devices
and tags, the elliptic-curve work that the resolver previously repeated on
every refresh is now cached per time window, with a skip-guard and the heavy
path moved off the main loop. The computed identifiers are byte-for-byte
identical, verified by a golden-value test; only the cost of producing them
drops. - This directly targets the high idle CPU usage reported on small hardware
(for example a Raspberry Pi 4), where the EID resolver was the dominant hot
path. We hope this closes #192.
Quieter logs when a single report fails for a moment
- A single transient failure to decrypt one Google location report no longer
triggers a multi-line WARNING cascade. The stateless decryption layer
cannot tell whether such a failure is temporary or persistent, so its
per-report lines and its aggregate "all reports failed" notice now log at
DEBUGand no longer advise re-authentication. The real, cross-cycle verdict
is still made by the stateful parts of the integration, which are unchanged,
so genuine, persistent problems are still surfaced as before.
Fewer misleading re-authentication prompts
- Benign, self-healing token-lifetime recalibration is no longer logged as a
WARNING. When an unplanned token expiry reveals a shorter real lifetime, the
integration safely recalibrates downward with a buffer. That is correct
behavior and now logs atINFO. The neighboring genuine "token expired"
warning is intentionally kept.
Better diagnostics for support requests
- Finer invalid-timestamp counters. The diagnostics now split the
invalid-timestamp counter into two buckets so support can tell genuinely
corrupt timestamps from harmless out-of-order arrivals. The combined counter
is preserved for compatibility. - Crypto acceleration visibility. The diagnostics dump now reports which
big-integer backendpython-ecdsawould use for the legacy EID path, plus the
installedgmpy2/gmpy/ecdsaversions. This is pure, redacted
visibility, with no crypto or behavior change.
Bundled-CLI login fix for first-time users
- The bundled command-line login now documents that it must be run from a flat
(standalone) folder in order to open the Chrome login that creates
secrets.json. Run in place at the nested Home Assistant path it only lists
existing devices, which confused first-time users (issue #193).
Under the hood
- Every fixed behavior ships with a dedicated regression test (11 new test
files), plus an additional config-entry stub guard. The full suite is green
(4560 passed, 20 skipped). - Developer and CI hygiene only, with no runtime impact: pre-commit and CI now
pin the sameruff(0.14.14) and CI fails on unformatted code, after a
one-time, mechanical, semantics-preserving repo-wide format; a
.git-blame-ignore-revskeepsgit blameclean over that format commit; and
the coverage floor was raised from 71 to 72. - Diagnostics remain strictly redacted: only backend names, coarse counters and
library versions are exposed, never tokens, emails, IDs or raw locations. The
config_entryschema version is unchanged, and there are no breaking changes
for existing installs.
Reminder: restart Home Assistant after updating, then verify the version is
1.7.7 under Settings -> Devices & Services -> Google Find My.
Full Changelog: v1.7.5...v1.7.7