Skip to content

v1.2.14 - Bedtime/school time window swap fix (#151) + set_daily_limit by child_id (#148) + ChromeOS bonus (#141)

Latest

Choose a tag to compare

@noiwid noiwid released this 25 Aug 11:57
· 11 commits to main since this release

Promotes v1.2.14-rc1 (ChromeOS time bonus fix, #141, confirmed on-device by @digitalrealism) to stable and fixes two reported regressions.

Bedtime and school time windows no longer swapped (#151, #149)

On some accounts Google keys the appliedTimeLimits window rows by a per-slot UUID instead of the usual CAEQ/CAMQ codes (the format first seen in #74). The parser classified the first window it met as bedtime and the next one as school time. Google does not guarantee that order, so when the school time row came first the two windows traded places: binary_sensor.<device>_schooltime_active turned on in the evening while bedtime_active stayed off, and the next-restriction sensor pointed at the wrong window.

Rows are now classified by the policy id they carry at index [7], which matches the bedtime and school time ids in the timeLimit revisions. Only if that id is unknown does the parser fall back to the hours (a window crossing midnight or starting in the evening is bedtime). The debug log now states which evidence classified each window, so a wrong guess is visible at a glance.

Reported by @lbschenkel, confirmed by @richard-dg.

set_daily_limit accepts a child_id on its own (#148)

Calling the action with only child_id raised "device_id is required", even though the field is documented as an alternative to the entity selector. A child_id given without a device now applies the limit to every device of that child. Reported by @richard-dg.

Time bonuses on ChromeOS (#141)

Previously shipped in v1.2.14-rc1, now promoted to stable. Google uses a different wire shape for Chromebook bonuses (type 6, milliseconds at index [10]) than for Android (type 10, seconds at index [13]). The client now picks the shape per device, reads type-6 overrides back so the active-bonus sensor and the cancel button also work on Chromebooks, and verifies after creation that the bonus is actually applied instead of trusting the HTTP 200.

Upgrading

A full Home Assistant restart is required, not just a reload of the integration. Reloading will not pick up the new code.

Note

The window classification was validated against synthetic UUID-keyed responses in both orders, but not yet against a live response from an affected account. If bedtime and school time still look swapped after upgrading, please open an issue with debug logs enabled:

logger:
  logs:
    custom_components.familylink: debug

and paste the lines containing is bedtime window / is schooltime window.