Skip to content

2026.7.1-pre1

Pre-release
Pre-release

Choose a tag to compare

@Hankanman Hankanman released this 07 Jul 12:11
c7212a5

Adjacent Areas arrives — plus four long-standing fixes

This is a pre-release. It's soaking on the maintainer's own installation before GA. If you run pre-releases (HACS → integration → ⋮ → Redownload with "Show beta versions" enabled), feedback is very welcome — especially diagnostics exports from homes where the new adjacency learning is active.

New: Adjacent Areas (learned next-door room influence)

Rooms that are physically connected — a hallway and a bedroom, a kitchen and a dining room — can now influence each other's occupancy (#431, #454). Two effects, both driven by learned transition history, not a knob you tune:

  1. Boost: if your history shows leaving room A usually means arriving in room B, B's probability is nudged up when that pattern is under way.
  2. Slower decay: if a room's only usual exit has been quiet since its last motion, the room decays more slowly — nobody used the only known way out, so the person is probably still there. A bedroom whose hallway stays silent overnight keeps its occupancy through the stillest hours.

Configure it per area (Adjacent Areas multi-select — symmetric, so setting it from either side covers both). Then be patient: the integration must observe real transitions before anything changes, so expect days of normal use before effects appear. Everything it learns is visible in the diagnostics export under current.adjacency.

Docs: Adjacent Areas (user guide) and Transition Learning (how the learning works). This feature is new and its tuning constants are first-pass values — treat it as a candidate until it has proven itself on real homes.

What's fixed

1. Prior probability pinned at 0.99 (#483)

The learned baseline ("this room is occupied X% of the time") systematically inflated: whenever an area had been quiet for over an hour, the calculation dropped that known-unoccupied time from its denominator, and every overnight recalculation ratcheted the prior upward until it hit the 0.99 ceiling — even for rooms genuinely occupied ~30% of the time. The observation window now always extends to the present. Inflated priors self-correct on the first analysis cycle after upgrading — no manual action needed. Credit to @mscharwere for the precise root-cause analysis.

2. Custom decay half-life ignored for Bedroom areas (#481)

Bedrooms have a sleep/awake split: long half-life during your configured sleep window, a shorter one during waking hours so the room clears once everyone is up. The bug: that switch applied even when you'd set a custom half-life, silently replacing your 10-second setting with ~10 minutes during the day. A custom half-life now wins around the clock; bedrooms left on auto behave exactly as before.

3. Sleep sensor never triggered for people without a device tracker (#464)

A person entity with no device trackers reports unknown — which the sleep-presence check treated as "away", so sleep was never detected. Unknown presence now defers to your sleep sensors directly; a person who is definitively away still blocks detection. Thanks @laszlojakab for tracing this to the exact line.

4. Deprecation warnings on every config flow (#487)

HA deprecated the advanced-mode toggle for config flows (removal in Core 2027.6). The four formerly advanced-gated fields (motion probabilities, decay half-life, minimum prior override) now always appear, tucked into their collapsed sections. Thanks @Ecronika.

Recorder load: two community contributions

Both from @Ecronika, both backed by measurements from a live 6-area install (#467):

  • Diagnostic sensors start disabled on newly added areas (#488). They updated every 10 seconds and dominated recorder writes (~16k rows in 3 hours) while almost nobody looked at their history. Existing areas keep their current enabled/disabled state; enable any of them per-entity in the UI when you need them.
  • New global "Sensor state precision" setting (#486), 0–2 decimals (default 2 = unchanged). At 0 decimals the recorder only writes on whole-percent changes — measured 55–79% fewer recorder rows, with zero effect on occupancy decisions (all decision logic runs on internal full-precision values).

Under the hood

  • Development/test environment moved to Python 3.14 + HA 2026.7.1; dependency refresh cleared 123 of 133 security alerts (the remaining 10 are a PyJWT pin inherited from HA core itself).
  • Shipped code remains Python 3.13 compatible for installs on HA ≤2026.5 — now guarded by an explicit lint target so toolchain upgrades can't silently break older runtimes.
  • CI hygiene: one pinned interpreter and one ruff version everywhere; stale branch references removed from workflows and CONTRIBUTING; CHANGELOG.md formally superseded by these release notes.
  • The repo now ships an institutional knowledge base under .claude/skills/ — 16 maintainer-grade runbooks (debugging playbook, failure archaeology, architecture contract, math reference, and more) so future contributors and AI-assisted sessions inherit the project's full context.

Upgrade notes

No configuration changes required. No config-entry migration. Inflated priors from #483 self-correct within an hour of upgrade. If you use the new Adjacent Areas feature, give it a few days of normal household movement before judging it.