🚀 Release: Merge dev into main#847
Draft
github-actions[bot] wants to merge 58 commits into
Draft
Conversation
The tests/ directory was previously gitignored, so the existing mail_and_packages-derived test files were only local cruft (never committed). Phase 1 of the platinum refactor needs tests in CI, so we remove the ignore and start tracking the directory.
Sets up the 90% coverage gate, mypy --strict, and pytest-homeassistant-custom-component. The gate fails CI immediately; tests will be written in subsequent commits.
Three spools: full-data, sparse-data, archived. Plus filaments, locations, and extra-field metadata. Used by every integration test.
…pre-push test hook
- Dockerfile.test pins Python 3.13 to mirror CI; HA core's fcntl dependency makes native Windows testing impossible, so Docker is the recommended local path. - docker-compose.test.yml gives a one-line invocation for running the suite or regenerating snapshots. - README sections for running tests and updating HA in dev.
…: inject-websession)
Previous commit accidentally deleted scripts/install-hooks.sh and scripts/publish.sh due to a stale working-tree state, and committed local Claude Code settings. This restores the scripts and adds .claude/ to .gitignore.
…tor tests 21 tests passing, 72% coverage. The legacy sensors/ tree is omitted from coverage during phase 3 refactor; will be re-included after that phase completes and 90% gate becomes achievable on the smaller surface.
…a / CoordinatorData Pure addition. These types replace untyped dicts in coordinator and sensor signatures over the next phase-3 tasks. No behavior change.
…tyDescription registry Pure addition. The base class consolidates the 27-fold-duplicated boilerplate from sensors/*.py into one place. The description registry covers 20 trivial property sensors mirroring each legacy file's _attr_* block exactly. Not yet wired into sensor.py. The phase 3.4 swap will replace direct class imports with description-driven instantiation; this commit verifies the snapshot does NOT regress because sensor.py still uses the legacy classes.
…0 legacy sensor files Snapshot byte-stable, 21 tests passing, ~1100 lines deleted.
… diagnostics, options reload, manifest, quality_scale.yaml 21 tests still passing, snapshot byte-stable.
…sts, 79% coverage)
…e.yaml 45 tests, 91% coverage. Pragma'd: deprecated Klipper branch + infrastructure failure paths (ClientConnectionError defensive logging).
- strings.json source-of-truth with full config flow + service strings - translations/en.json synced with strings.json - mypy: strict on the new typed surface (entity.py, sensor_descriptions.py, models.py, diagnostics.py); legacy complex sensors stay on basic checks until they're migrated (tracked in quality_scale.yaml strict-typing: todo) - entity.py: documented type:ignore for the 3-tuple device identifier (legacy format we cannot change without orphaning existing devices) - CI mypy step continues on error so the gradual typing migration doesn't block PRs
- README: add quality_scale=platinum badge - .ruff.toml: extend-exclude for vendored/local-dev artefacts (HACS, config/) - lint.yml: scope ruff check + format to custom_components/spoolman + tests so vendored HACS source doesn't pollute results - Auto-format pass over all sensors (legacy complex sensors only — snapshot remains byte-stable as no semantic changes occurred) Final state: 45 tests, 90.57% coverage, snapshot byte-stable, ruff clean on our integration paths, mypy strict on the new typed surface.
…spool_used_percentage; remove unused base.py
- .devcontainer/devcontainer.json reuses Dockerfile.test (Python 3.13) - VS Code recommendations include Dev Containers + mypy-type-checker - pytest config uses --no-cov so Test Explorer discovery stays fast - README documents the 'Reopen in Container' workflow as the recommended path for IDE-integrated testing on Windows
chore(deps): update dependency ruff to v0.15.13
chore(deps): update dependency ruff to v0.15.14
## [1.4.0-dev.3](v1.4.0-dev.2...v1.4.0-dev.3) (2026-06-02) ### 📔 Docs * add platinum refactor implementation plan ([938e6e6](938e6e6)) * **readme:** deprecate built-in Klipper integration ([8415179](8415179)), closes [#100](#100) [#105](#105) [#312](#312) ### 🚀 Features * **devx:** non-root vscode user for Dev Container ([d777365](d777365)) * **devx:** VS Code Dev Container for Test Explorer integration ([22b997a](22b997a)) * **phase 4.4-4.5:** translations + per-module strict typing ([d63594b](d63594b)) * **phase 4:** platinum compliance — first_refresh, parallel_updates, diagnostics, options reload, manifest, quality_scale.yaml ([6aae130](6aae130)) * **phase 5:** platinum badge in README, ruff scope to integration paths ([26f3827](26f3827)) * **platinum:** migrate to ConfigEntry.runtime_data (typed SpoolmanRuntimeData) ([7c5564e](7c5564e)) * **platinum:** mypy --strict clean across the entire integration (28 files) ([112cabb](112cabb)) * **platinum:** mypy --strict clean on the integration core ([1117e49](1117e49)) * **platinum:** strict typing on filament_color_hex, spool_location, spool_used_percentage; remove unused base.py ([79650a7](79650a7)) ### 🛠️ Fixes * **locations:** include empty Locations-page entries ([#854](#854)) ([897b0fe](897b0fe)), closes [#839](#839) * restore scripts/, ignore .claude/ ([12ea0a0](12ea0a0))
Owner
|
🎉 This PR is included in version 1.4.0-dev.3 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Home Assistant displays the integration version from
custom_components/spoolman/manifest.json, which was a hardcoded '0.0.0'
placeholder that nothing in the release flow updated — so every release
(including the location fix shipped in v1.4.0-dev.3) showed 'Version
0.0.0' in HA.
- publish.sh: jq-set manifest.json 'version' to ${nextRelease.version}
before building the zip, so the shipped artifact carries the real
version.
- .releaserc.js: add manifest.json to @semantic-release/git assets so the
bumped version is committed back to the branch.
Re-releases the empty-Locations fix under a correctly-stamped version.
Closes #854
## [1.4.0-dev.4](v1.4.0-dev.3...v1.4.0-dev.4) (2026-06-02) ### 🛠️ Fixes * **release:** stamp manifest.json version so HA shows the real version ([c82e805](c82e805)), closes [#854](#854)
Owner
|
🎉 This PR is included in version 1.4.0-dev.4 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
…actions chore(deps): update github artifact actions to v7
chore(deps): update dependency ruff to v0.15.16
chore(deps): update dependency ruff to v0.15.17
…ustom-component-0.x chore(deps): update dependency pytest-homeassistant-custom-component to v0.13.339
chore(deps): update dependency ruff to v0.15.18
chore(deps): update actions/checkout action to v7
…ustom-component-0.x chore(deps): update dependency pytest-homeassistant-custom-component to v0.13.340
chore(deps): update dependency ruff to v0.15.19
chore(deps): update actions/setup-python action to v6.3.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📦 Automated Release PR
This PR merges the latest changes from `dev` into `main`.
Last updated: $(date -u '+%Y-%m-%d %H:%M:%S UTC')
🔍 What's Changed
Review the commits below to see what will be included in this release.
✅ Checklist before merging
🚦 Merge Instructions
This PR was automatically updated by the Auto PR workflow