Skip to content

v0.37.0 — ⚠ Breaking: async registration, unified executions

Choose a tag to compare

@hassette-release-please hassette-release-please released this 30 May 14:27
3ee16ee

0.37.0 (2026-05-30)

⚠ BREAKING CHANGES

  • bus registration is now async — add await to every self.bus.on_*() call (on_state_change, on_attribute_change, on_call_service, on_component_loaded, on). name= is now required on every registration (it was optional); omitting it raises ListenerNameRequiredError.

  • scheduler registration is now async — add await to every self.scheduler.run_*() and schedule() call (run_in, run_once, run_every, run_minutely, run_hourly, run_daily, run_cron).

    # before
    self.bus.on_state_change("light.kitchen", handler=self.on_change)
    self.scheduler.run_in(self.task, 5)
    
    # after
    await self.bus.on_state_change("light.kitchen", handler=self.on_change, name="kitchen_light")
    await self.scheduler.run_in(self.task, 5)
  • HandlerInvocation and JobExecution removed — use the unified Execution model with a kind discriminator ("listener" or "job"). The separate read models and their compat wrappers are gone.

  • Subscription.registration_task removed — registration is now synchronous with the database; sub.listener.db_id is a valid integer as soon as the awaited call returns.

  • dropped_no_session removed — the counter is gone from API responses, the dashboard status badge, and the sessions table column.

  • CLI/REST endpoint renamed/api/telemetry/handler/{id}/invocations/api/telemetry/listener/{id}/executions.

Features

  • add automated doc screenshot capture pipeline (#912) (901b81b)
  • redesign telemetry database around a unified executions table (#922) (b97a495)

Refactoring

  • decompose bus_service.py into focused modules (#919) (477e10c)
  • extract Service and RestartSpec from resources/base.py (#921) (69f77e9), closes #813
  • standardize abort handling, extract predicate scaffold, widen Button ref type (#909) (f747ad9)

Documentation

  • add documentation quality rules for voice, structure, and examples (#910) (c489b58)
  • add Svelte-derived voice guide for documentation rewrites (#920) (0174ab9)
  • audit docs against quality rules — voice fixes and snippet migration (#917) (2fa8cfb)
  • fix stale README and add link-check CI (#918) (9361da0)

Miscellaneous

  • remove deprecated license classifier, simplify signal passing, fix starlette CVE (#907) (c9ad12f)