Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/host-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/security-integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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]

Expand Down Expand Up @@ -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:
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
37 changes: 24 additions & 13 deletions ESPRESSIO_DEPENDENCY_CHART.md
Original file line number Diff line number Diff line change
@@ -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
|
Expand All @@ -21,18 +21,18 @@ 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.

## 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
```
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
```

Expand Down
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.

Expand All @@ -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
Expand Down Expand Up @@ -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 =
Expand All @@ -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
```

Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions component.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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\"
4 changes: 2 additions & 2 deletions library.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand Down
4 changes: 2 additions & 2 deletions library.properties
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
Loading