diff --git a/.github/workflows/host-tests.yml b/.github/workflows/host-tests.yml index 9292fb9..86f468c 100644 --- a/.github/workflows/host-tests.yml +++ b/.github/workflows/host-tests.yml @@ -4,7 +4,7 @@ on: push: branches: - main - - feature/10-timing-2.2.3-dependency-refresh + - feature/12-timing-2.2.4-dependency-refresh pull_request: branches: - main @@ -53,13 +53,13 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Timing - ref: 2.2.3 + ref: 2.2.4 path: deps/ESPressio-Timing - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: 0.2.2 + ref: 0.2.3 path: deps/ESPressio-Units - uses: actions/checkout@v4 diff --git a/.github/workflows/security-integration-tests.yml b/.github/workflows/security-integration-tests.yml index bdd118d..8fd3b8b 100644 --- a/.github/workflows/security-integration-tests.yml +++ b/.github/workflows/security-integration-tests.yml @@ -2,7 +2,7 @@ name: Security Integration on: push: - branches: [feature/security-integration, feature/10-timing-2.2.3-dependency-refresh, main] + branches: [feature/security-integration, feature/12-timing-2.2.4-dependency-refresh, main] pull_request: branches: [main] @@ -43,12 +43,12 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Timing - ref: 2.2.3 + ref: 2.2.4 path: deps/ESPressio-Timing - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: 0.2.2 + ref: 0.2.3 path: deps/ESPressio-Units - uses: actions/checkout@v4 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index ddb6073..21d7ffb 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.5.2 — 2026-08-21 + +### Changed +- Raised the required ESPressio Timing baseline from 2.2.3 to 2.2.4, carrying the Units 0.2.3 / Serializable 0.10.2 dependency refresh downstream. +- Preserved the required ESPressio Observable baseline at `>=3.0.1 <4.0.0`. +- Preserved Command >= 0.3.0 < 1.0.0 and Security >= 0.2.0 < 1.0.0 as opt-in integration baselines. +- Kept Event as an opt-in compatible 5.x integration rather than introducing a hard Event 5.8.2 dependency. +- Updated package, compile-time version metadata, README and dependency documentation to 0.5.2. +- Preserved the documented dependency-cycle resolution direction: ESP-Now-specific Event bridge code belongs downstream with ESP-Now's Event integration. + +### Compatibility +- ESP-NOW transport, clock synchronization, Event Transport, Command Transport, Security integration, and Observable APIs remain source-compatible with 0.5.1. +- Event remains opt-in; no new mandatory Event dependency is introduced. + ## 0.5.1 — 2026-08-20 ### Changed diff --git a/ESPRESSIO_DEPENDENCY_CHART.md b/ESPRESSIO_DEPENDENCY_CHART.md index eaec180..66bb40a 100644 --- a/ESPRESSIO_DEPENDENCY_CHART.md +++ b/ESPRESSIO_DEPENDENCY_CHART.md @@ -1,12 +1,12 @@ -# ESPressio Dependency Chart — ESP-Now 0.5.1 +# ESPressio Dependency Chart — ESP-Now 0.5.2 ESPressio ESP-Now keeps its core dependencies small and exposes higher-level integrations only when explicitly selected. ```text -ESPressio ESP-Now 0.5.1 +ESPressio ESP-Now 0.5.2 | -+-- required --> ESPressio Timing >= 2.2.3 < 3.0.0 ++-- required --> ESPressio Timing >= 2.2.4 < 3.0.0 | +-- required --> ESPressio Observable >= 3.0.1 < 4.0.0 | @@ -21,7 +21,7 @@ ESPressio ESP-Now 0.5.1 ``` The Event baseline intentionally remains a compatible 5.x range here rather -than creating a hard ESP-Now 0.5.1 -> Event 5.8.1 release dependency. Event is +than creating a hard ESP-Now 0.5.2 -> Event 5.8.2 release dependency. Event is optional and, importantly, Event 5.8 currently also contains an ESP-Now-specific Observer bridge. Strengthening both edges would make the reciprocal dependency more difficult to remove. @@ -29,10 +29,10 @@ more difficult to remove. ## Transitive Timing chain ```text -ESP-Now 0.5.1 - -> Timing 2.2.3 - -> Units 0.2.2 - - - -> Serializable >= 0.10.1 < 1.0.0 +ESP-Now 0.5.2 + -> Timing 2.2.4 + -> Units 0.2.3 + - - -> Serializable >= 0.10.2 < 1.0.0 only for Serializable Unit representations -> Observable 3.0.1 ``` @@ -75,7 +75,8 @@ Applications explicitly select the relevant integration headers. ## Circular-dependency audit -The current ecosystem contains one reciprocal optional relationship: +The current ecosystem contains two reciprocal optional relationships involving +Event integrations: ```text ESP-Now - - -> Event @@ -85,8 +86,18 @@ Event - - -> ESP-Now ESPNowTransportEventBridge ``` -This is not the desired long-term dependency direction. The preferred hierarchy -is: +and, separately: + +```text +Sockets - - -> Event + socket Event transports + +Event - - -> Sockets + SocketWorkerEventBridge + SocketSecuritySessionEventBridge +``` + +For ESP-Now, the preferred hierarchy is: ```text Event @@ -111,8 +122,8 @@ Core: ```ini lib_deps = - https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.1 - https://github.com/Flowduino/ESPressio-Timing@^2.2.3 + https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.2 + https://github.com/Flowduino/ESPressio-Timing@^2.2.4 https://github.com/Flowduino/ESPressio-Observable@^3.0.1 ``` diff --git a/README.md b/README.md index be73c88..1728042 100755 --- a/README.md +++ b/README.md @@ -4,15 +4,15 @@ ESP-NOW transport and distributed ESPressio implementations for the Flowduino ES ESPressio ESP-Now provides a reusable ESP-NOW transport foundation for ESP32-family applications, distributed System Clock synchronization, optional Event and Command transports, and optional transport-neutral authenticated encryption through ESPressio Security. -## Current Version — 0.5.1 +## Current Version — 0.5.2 -ESPressio ESP-Now **0.5.1** is a dependency-maintenance patch over 0.5.0. It retains the Observable transport/peer lifecycle API while raising the required Timing baseline to 2.2.3. +ESPressio ESP-Now **0.5.2** is a dependency-maintenance patch over 0.5.1. It retains the Observable transport/peer lifecycle API while raising the required Timing baseline to 2.2.4. Current dependency model: ```text Required - ESPressio Timing >= 2.2.3 < 3.0.0 + ESPressio Timing >= 2.2.4 < 3.0.0 ESPressio Observable >= 3.0.1 < 4.0.0 Optional Event Transport @@ -27,11 +27,11 @@ Optional Secure Transport `ESPNowTransport` exposes observable initialization, shutdown, peer-add/remove, and send success/failure lifecycle information. Protocol receive handlers remain the authoritative data-delivery mechanism. -The Event relationship deliberately remains a compatible 5.x opt-in range rather than being tightened to Event 5.8.1: Event currently also hosts an ESP-Now-specific Observer bridge. Strengthening both directions would reinforce a circular optional dependency. The preferred future architecture moves `ESPNowTransportEventBridge` downstream into ESP-Now's optional Event integration, or into a dedicated integration package. +The Event relationship deliberately remains a compatible 5.x opt-in range rather than being tightened to Event 5.8.2: Event currently also hosts an ESP-Now-specific Observer bridge. Strengthening both directions would reinforce a circular optional dependency. The preferred future architecture moves `ESPNowTransportEventBridge` downstream into ESP-Now's optional Event integration, or into a dedicated integration package. ## Compatibility -ESPressio ESP-Now `0.5.1` targets the ESP32 family under Arduino-ESP32 and requires C++17. +ESPressio ESP-Now `0.5.2` targets the ESP32 family under Arduino-ESP32 and requires C++17. The common ESP-NOW transport uses Espressif ESP-NOW/Wi-Fi APIs plus FreeRTOS queues/tasks. The initial ESPressio wire format remains within the classic 250-byte ESP-NOW payload limit for broad compatibility, while higher-level Event, Command, and Security integrations provide their own bounded fragmentation where required. @@ -52,17 +52,17 @@ ESPressio and its component libraries are licensed under the **Apache License 2. ## ESPressio Library Dependencies -### Required for 0.5.1 +### Required for 0.5.2 ```text -ESPressio Timing >= 2.2.3 < 3.0.0 +ESPressio Timing >= 2.2.4 < 3.0.0 ESPressio Observable >= 3.0.1 < 4.0.0 Arduino-ESP32 ``` -Timing 2.2.3 carries Units 0.2.2 downstream. Serializable remains optional through selected Serializable Unit/Event facilities and is not a core ESP-Now dependency. +Timing 2.2.4 carries Units 0.2.3 downstream. Serializable 0.10.2 remains optional through selected Serializable Unit/Event facilities and is not a core ESP-Now dependency. -### Optional for 0.5.1 +### Optional for 0.5.2 ```text Event Transport @@ -110,8 +110,8 @@ Core ESP-NOW/Timing usage: ```ini lib_deps = - https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.1 - https://github.com/Flowduino/ESPressio-Timing@^2.2.3 + https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.2 + https://github.com/Flowduino/ESPressio-Timing@^2.2.4 https://github.com/Flowduino/ESPressio-Observable@^3.0.1 build_flags = @@ -126,7 +126,7 @@ Add Security when selecting the secure adapter: ```ini lib_deps = - https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.1 + https://github.com/Flowduino/ESPressio-ESP-Now@^0.5.2 https://github.com/Flowduino/ESPressio-Security@^0.2.0 ``` @@ -360,11 +360,11 @@ ESPNowSecurityProtocol Security-protocol tests cover protocol allocation, fragmentation, out-of-order reassembly, duplicate fragments, malformed frames, and maximum envelope bounds. -The 0.5.1 candidate validates the native transport observer contract and the refreshed Timing/Units/Observable dependency generation. GitHub Actions also compile real ESP32 examples against the coordinated dependencies. +The 0.5.2 candidate validates the native transport observer contract and the refreshed Timing/Units/Observable dependency generation. GitHub Actions also compile real ESP32 examples against the coordinated dependencies. ## Compatibility -0.5.1 is a backward-compatible dependency-maintenance patch: +0.5.2 is a backward-compatible dependency-maintenance patch: - core `ESPNowTransport` APIs are unchanged from 0.5.0; - clock synchronization APIs are unchanged; diff --git a/component.mk b/component.mk index 6ed77f3..2b96c6b 100755 --- a/component.mk +++ b/component.mk @@ -5,5 +5,5 @@ COMPONENT_REQUIRES := ESPressio_Timing CXXFLAGS += -DESPRESSIO_ESPNOW CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_MAJOR=0 CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_MINOR=5 -CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_PATCH=1 -CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_STRING=\"0.5.1\" +CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_PATCH=2 +CXXFLAGS += -DESPRESSIO_ESPNOW_VERSION_STRING=\"0.5.2\" diff --git a/library.json b/library.json index fdf4550..48ef9d9 100755 --- a/library.json +++ b/library.json @@ -16,14 +16,14 @@ "type": "git", "url": "https://github.com/Flowduino/ESPressio-ESP-Now.git" }, - "version": "0.5.1", + "version": "0.5.2", "license": "Apache-2.0", "frameworks": "arduino", "platforms": "espressif32", "dependencies": [ { "name": "ESPressio-Timing", - "version": ">=2.2.3 <3.0.0", + "version": ">=2.2.4 <3.0.0", "url": "https://github.com/Flowduino/ESPressio-Timing.git", "platforms": "espressif32" }, diff --git a/library.properties b/library.properties index e2aee16..b32a1de 100755 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Flowduino ESPressio-ESPNow -version=0.5.1 +version=0.5.2 author=Simon J. Stuart maintainer=Flowduino.com sentence=ESP-NOW transport and distributed ESPressio integrations for ESP32 @@ -8,4 +8,4 @@ category=Communication url=https://github.com/Flowduino/ESPressio-ESP-Now architectures=esp32 includes=ESPressio_ESPNow.hpp -depends=Flowduino ESPressio-Timing (>=2.2.3 && <3.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0) +depends=Flowduino ESPressio-Timing (>=2.2.4 && <3.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0)