Skip to content

release: 0.21.0 (declarative device trees + configurable Homie domain) - #63

Merged
dcj merged 1 commit into
mainfrom
release/0.21.0
Aug 20, 2026
Merged

release: 0.21.0 (declarative device trees + configurable Homie domain)#63
dcj merged 1 commit into
mainfrom
release/0.21.0

Conversation

@dcj

@dcj dcj commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Bumps __version__ to 0.21.0 (single source of truth), promotes [Unreleased] to [0.21.0], and adds the tag link definition. No code changes.

What's in the release

Issue Change
#58 PropertySpec property-level parity: round_to, initial_value, retained, internal_only, conditionally_settable, and the source_id / model_group identity splits
#57 DeviceSpec + DeviceTreeBuilder: tree-aware incremental builder over an externally-owned model, late-bound device ids, depth-first teardown
#61 Device(homie_domain=...): publish a tree under any Homie 5 domain

Minor rather than patch: three additive features. Not major: nothing breaks.

The one behavior change is in #58. bind_property_to_homie now binds a non-retained property on-set rather than on-change. It affects only event properties, which previously could not emit a repeated event at all, because the observable model's change gate sat above the Homie layer and swallowed the repeat before the publish-on-change exemption could apply. Retained properties are untouched, and a twin that does not answer retained() is treated as retained.

Verification

  • 653 tests pass (600 at 0.20.1, 53 added across the three features)
  • ruff check and ruff format --check clean; markdownlint clean on all 7 tracked .md files
  • python -m build produces ebus_sdk-0.21.0.tar.gz and ebus_sdk-0.21.0-py3-none-any.whl; wheel METADATA reads Version: 0.21.0 and carries all 14 modules
  • Version agrees across all three readers: ebus_sdk.__version__, pyproject.toml's dynamic attr, and the setup.py regex shim

After merge, tagging v0.21.0 triggers publish.yml, which re-checks that the tag equals v + __version__ before publishing anything.

🤖 Generated with Claude Code

Bumps __version__ to 0.21.0 (single source of truth), promotes Unreleased
to [0.21.0], and adds the tag link definition.

Three additive features, no breaking changes:

  #58  PropertySpec reaches property-level parity: round_to,
       initial_value, retained, internal_only, conditionally_settable,
       and the source_id / model_group identity splits.
  #57  DeviceSpec + DeviceTreeBuilder, a tree-aware incremental builder
       over an externally-owned model, with late-bound device ids and
       depth-first teardown.
  #61  Device(homie_domain=...): a tree can publish under any Homie 5
       domain, making this a Homie 5 library that defaults to eBus rather
       than an eBus-only one.

One behavior change, in #58: bind_property_to_homie binds a non-retained
property on-set rather than on-change. It only affects event properties,
which previously could not emit a repeated event at all, because the
observable model's change gate swallowed it above the Homie layer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dcj
dcj merged commit bbd1c5c into main Aug 20, 2026
5 checks passed
@dcj
dcj deleted the release/0.21.0 branch August 20, 2026 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant