From e95ec13b56dd96a77538caf59b1f6ac7e963d11b Mon Sep 17 00:00:00 2001 From: James Senecal Date: Tue, 20 Oct 2026 10:05:10 -0400 Subject: [PATCH] release: prepare OpenHomeB 2.0.5 --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 4 +++- RELEASE_NOTES_2.0.5.md | 22 ++++++++++++++++++++++ VALIDATION.md | 12 ++++++++++++ assets/manifest.json | 2 +- scripts/prepare-release.sh | 2 +- src/homebridge.rs | 2 +- test/test_package_contract.py | 12 ++++++------ 10 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 RELEASE_NOTES_2.0.5.md diff --git a/CHANGELOG.md b/CHANGELOG.md index e979176..0b38490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.0.5 — 2026-10-20 + +- Update tokio from 1.53.2 to 1.53.3. +- Update serde_json from 1.0.151 to 1.0.154. +- Preserve existing action identifiers and saved-settings format. + ## 2.0.4 — 2026-10-14 - Update rustls to 0.23.46 and quinn-proto to 0.11.18 to address security advisories. diff --git a/Cargo.lock b/Cargo.lock index 068fb3c..896230e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -618,7 +618,7 @@ dependencies = [ [[package]] name = "openhomeb" -version = "2.0.4" +version = "2.0.5" dependencies = [ "anyhow", "log", diff --git a/Cargo.toml b/Cargo.toml index 81f4818..a911670 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "openhomeb" -version = "2.0.4" +version = "2.0.5" edition = "2024" authors = ["Infamous Pattern"] description = "A Linux-native OpenDeck plugin for discovering and controlling Homebridge accessories, including brightness." diff --git a/README.md b/README.md index d9a2055..5df2d86 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A Linux-native OpenDeck/OpenAction plugin for discovering and controlling accessories exposed by Homebridge Config UI. -**Current version: 2.0.4** +**Current version: 2.0.5** ![OpenHomeB overview](docs/screenshots/overview.png) @@ -17,6 +17,8 @@ A Linux-native OpenDeck/OpenAction plugin for discovering and controlling access +Version 2.0.5 includes maintenance updates to tokio 1.53.3 and serde_json 1.0.154. + Version 2.0.4 updates rustls and quinn-proto to address security advisories, and includes maintenance updates to log, tokio, and openaction. Upgrading is recommended. Version 2.0.2 adds automatic startup and reconnect recovery so OpenHomeB refreshes itself when Fedora networking or Homebridge becomes available after OpenDeck starts. It also retains the complete 2.0 feature set: dedicated brightness controls, shared discovery caching, proactive authentication renewal, richer device metadata, compatibility parsing, and configurable button labels. diff --git a/RELEASE_NOTES_2.0.5.md b/RELEASE_NOTES_2.0.5.md new file mode 100644 index 0000000..2070ac2 --- /dev/null +++ b/RELEASE_NOTES_2.0.5.md @@ -0,0 +1,22 @@ +# OpenHomeB 2.0.5 + +OpenHomeB 2.0.5 is a dependency maintenance release. + +## What changed + +- Updated tokio from 1.53.2 to 1.53.3 (PR #14). +- Updated serde_json from 1.0.151 to 1.0.154 (PR #15). +- Retained the security fixes delivered in 2.0.4. +- Includes x86_64 and aarch64 Linux binaries and the universal plugin package. + +## Installation + +Download `openhomeb-2.0.5-linux-universal.streamDeckPlugin` and install it through OpenDeck's Plugins screen. Restart OpenDeck after replacing the older build. + +Action identifiers and the project's saved-settings format are unchanged. No action reassignment is required when upgrading from 2.0.4. + +## Validation + +Automated Rust, JavaScript, Python API/package, dependency-review, CodeQL, and security-audit checks must pass before publication. Both Linux packages and their checksums are verified before publication. Live OpenDeck/Homebridge interaction has not been retested for this maintenance release. + +The existing allowed warning for yanked `chacha20 0.10.1` remains in the optional QUIC dependency chain. diff --git a/VALIDATION.md b/VALIDATION.md index 7f65779..07d2d8e 100644 --- a/VALIDATION.md +++ b/VALIDATION.md @@ -1,3 +1,15 @@ +# Validation status — version 2.0.5 + +## Local checks — 20 October 2026 + +- Rust formatting, 13 Rust tests, and Clippy with warnings denied passed with locked dependencies. +- JavaScript syntax/behavior checks and all 22 Python API/package tests passed. Python emitted existing HTTPError cleanup warnings; no tests failed. +- Version metadata, HTTP user agent, release helper, and contract expectations are aligned at 2.0.5. +- The combined dependency updates passed GitHub CI, Security Audit, and CodeQL on main. The release preparation PR is checked again before tagging. +- Live OpenDeck/Homebridge interaction was not retested. Both architecture packages and checksums are verified before public publication. + +## Previous release validation + # Validation status — version 2.0.4 ## Local checks — 14 October 2026 diff --git a/assets/manifest.json b/assets/manifest.json index cdda7c9..a5968db 100644 --- a/assets/manifest.json +++ b/assets/manifest.json @@ -2,7 +2,7 @@ "Name": "OpenHomeB", "Description": "OpenHomeB controls Homebridge accessories from OpenDeck on Linux with live state, brightness, caching, and token management.", "Author": "Infamous Pattern", - "Version": "2.0.4", + "Version": "2.0.5", "CodePaths": { "x86_64-unknown-linux-gnu": "x86_64-unknown-linux-gnu/bin/openhomeb", "aarch64-unknown-linux-gnu": "aarch64-unknown-linux-gnu/bin/openhomeb" diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh index a36acab..af173d7 100755 --- a/scripts/prepare-release.sh +++ b/scripts/prepare-release.sh @@ -2,7 +2,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -VERSION="${1:-2.0.4}" +VERSION="${1:-2.0.5}" PLUGIN_ID="com.infamous-pattern.openhomeb" BINARY="openhomeb" ASSET_DIR="${ROOT_DIR}/release-assets" diff --git a/src/homebridge.rs b/src/homebridge.rs index 80ae501..7e58638 100644 --- a/src/homebridge.rs +++ b/src/homebridge.rs @@ -85,7 +85,7 @@ impl HomebridgeClient { let client = Client::builder() .connect_timeout(Duration::from_secs(5)) .timeout(Duration::from_secs(20)) - .user_agent("OpenHomeB/2.0.4") + .user_agent("OpenHomeB/2.0.5") .build() .context("could not create the Homebridge HTTP client")?; diff --git a/test/test_package_contract.py b/test/test_package_contract.py index a6496e9..e7c59d8 100644 --- a/test/test_package_contract.py +++ b/test/test_package_contract.py @@ -24,7 +24,7 @@ def test_manifest_exposes_version_2_action_set_and_linux_targets(self): self.assertEqual(manifest["Name"], "OpenHomeB") self.assertEqual(manifest["Category"], "OpenHomeB") self.assertEqual(manifest["Author"], "Infamous Pattern") - self.assertEqual(manifest["Version"], "2.0.4") + self.assertEqual(manifest["Version"], "2.0.5") self.assertEqual(manifest["OS"], [{"Platform": "linux"}]) self.assertIn("x86_64-unknown-linux-gnu", manifest["CodePaths"]) self.assertIn("aarch64-unknown-linux-gnu", manifest["CodePaths"]) @@ -183,16 +183,16 @@ def test_characteristics_use_uuid_first_with_type_fallback(self): self.assertIn("function characteristicKey", inspector) self.assertIn("characteristicUuid", inspector) - def test_version_2_0_4_is_consistent_across_release_metadata(self): + def test_version_2_0_5_is_consistent_across_release_metadata(self): cargo = (ROOT / "Cargo.toml").read_text() manifest = json.loads((ROOT / "assets" / "manifest.json").read_text()) homebridge = (ROOT / "src" / "homebridge.rs").read_text() release_workflow = (ROOT / ".github" / "workflows" / "release.yml").read_text() - self.assertIn('version = "2.0.4"', cargo) - self.assertEqual(manifest["Version"], "2.0.4") - self.assertIn('OpenHomeB/2.0.4', homebridge) - self.assertTrue((ROOT / "RELEASE_NOTES_2.0.4.md").is_file()) + self.assertIn('version = "2.0.5"', cargo) + self.assertEqual(manifest["Version"], "2.0.5") + self.assertIn('OpenHomeB/2.0.5', homebridge) + self.assertTrue((ROOT / "RELEASE_NOTES_2.0.5.md").is_file()) self.assertNotIn("RELEASE_NOTES_2.0.0.md", release_workflow) self.assertIn('RELEASE_NOTES_${version}.md', release_workflow)