Skip to content

release: 0.18.0 (soc capability fix + ebus-mqtt-client 0.4.0 floor) - #30

Merged
dcj merged 2 commits into
mainfrom
release-0.18.0
Aug 5, 2026
Merged

dcj merged 2 commits into
mainfrom
release-0.18.0

Conversation

@dcj

@dcj dcj commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Two commits: the ebus-mqtt-client 0.4.0 floor + loop-native transport docs, and the 0.18.0 release itself.

Why the transport commit is here and not in #29

#29 was merged into ha-customizer-soc-capability, not into main. It was stacked on #28, and merging it into its stacked base rather than into main left its content stranded on that branch: main still had ebus-mqtt-client>=0.3.0. This cherry-picks that commit (unchanged, same message) onto main so the change actually ships. Nothing is lost; GitHub/ha-customizer-soc-capability can be deleted once this lands.

Version

Minor rather than patch. The release changes what the HA discovery bridge puts on the wire for existing publishers (soc/soe metadata, four meter registers gaining a state_class), removes the invented battery customizer key rather than aliasing it, and raises a dependency floor.

Changelog link-reference tidy (included)

The references had drifted across six releases: 0.12.0 through 0.17.0 had none at all, so their headings rendered as literal brackets, and [Unreleased] still compared from v0.11.0. Now:

  • All 22 version headings resolve; no orphan references.
  • Every GitHub reference points at a tag that exists (verified: all six new URLs return 200).
  • [0.1.2] is repointed at PyPI. It predates this repo's tagging convention (earliest tag is v0.1.4), so v0.1.2 has never existed, and the section's advice to read git log v0.1.2 was unfollowable. The prose is corrected to say so.
  • Two missing blank lines before headings fixed; markdownlint is now clean on this file.

Verification

547 tests pass locally, ruff check and ruff format --check clean, markdownlint clean on CHANGELOG.md and README.md, and import ebus_sdk reports 0.18.0.

After merge: tag v0.18.0 and push it, which runs the publish workflow (it verifies tag == __version__ before publishing via Trusted Publishing).

🤖 Generated with Claude Code

dcj and others added 2 commits August 5, 2026 15:35
…nsport

The bring-your-own-transport seam answers WHICH connection a producer
publishes through, but paho's network loop still has to be pumped somewhere,
and by default that is a background thread: the exact thing the seam's
motivating host forbids. README.md named that constraint ("a host like Home
Assistant ... forbids background threads") without being able to point at an
answer.

ebus-mqtt-client 0.4.0 adds one: MqttClient.asyncio_driver() pumps the network
loop on the caller's asyncio loop (paho socket hooks plus a periodic
loop_misc) instead of paho's thread, mutually exclusive with start() per
client. Document it in the bring-your-own-transport section with a worked
snippet, and raise the floor accordingly.

The SDK does not import the driver and needs nothing from 0.4.0 at runtime:
the full suite passes unchanged against it (verified in an isolated venv). The
floor rises because a consumer following the documented guidance needs it
present, not because the SDK's own code does. The driver module loads lazily
and imports only the standard library plus paho, so a thread-mode consumer or
a constrained build never loads it.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Promote the Unreleased entries under 0.18.0 and bump __version__.

Minor rather than patch: the release changes what the HA discovery bridge puts
on the wire for existing publishers (soc/soe metadata, four meter registers
gaining a state_class), removes the invented `battery` customizer key rather
than aliasing it, and raises the ebus-mqtt-client floor to 0.4.0.

Also tidy the changelog's link references, which had drifted across six
releases: 0.12.0 through 0.17.0 had no reference at all (so their headings
rendered as literal brackets) and [Unreleased] still compared from v0.11.0.
All 22 version headings now resolve, every GitHub reference points at a tag
that exists, and the 0.1.2 reference is repointed at PyPI: it predates this
repo's tagging convention (earliest tag v0.1.4), so the tag it named has never
existed, and the section's advice to read `git log v0.1.2` was unfollowable.
Two missing blank lines before headings are fixed, so markdownlint is clean.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
@dcj
dcj merged commit 99cd3be into main Aug 5, 2026
5 checks passed
@dcj
dcj deleted the release-0.18.0 branch August 5, 2026 22:38
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