A safety release for the account lock and the screen-time limits switch, after a full review of the integration.
Fixed
- Locking and unlocking can no longer lose a child's schedule. Lock, unlock and the "screen time limits" switch now run one at a time per child (two quick taps, or an automation plus a tap, could leave the child at zero with no way back). The lock refuses to zero a schedule it could not read back, unlock refuses an unreadable restore point instead of writing a 2 h / 07:00-22:00 default, and the web fallback of the limits switch uses the same guard as the lock.
- A lock is now enforced even when the weekly schedule was switched off in the Family Safety app: the lock turns the schedule's own on/off flag back on, and unlock puts it back as it was. Turning the limits back on also sets that flag, so "limits enabled" means enabled.
- All seven days are written when Microsoft stops answering: the limits switch now stops at the first network failure like lock and unlock do, instead of waiting out up to 14 timeouts.
- Two Microsoft accounts: the
microsoft_family_safety.*actions now go to the integration entry that knows the child, and each entry keeps its own restore points (the shared file is taken over automatically). - First setup: the server-side Family bootstrap now uses the same timeouts and browser hints as a running entry.
- Times sent to Microsoft (schedule reads and writes, platform locks) use Home Assistant's time zone, not the container's.
- The sign-in proxy: a query string starting with the proxy path is no longer exempted from Home Assistant's security filter on other routes; the page used as Referer only changes on navigations; cookie deletions sent with
Expiresare honoured; a malformed host answers 403 instead of 500. Accept-Languagefollows the Home Assistant language instead of German; duplicatehost/.hostcookies are no longer stored;via_device_idreplaces the deprecatedvia_device(warning at startup since Home Assistant 2026.8).
Under the hood
- New tests for the lock, unlock and limits-switch guards.