Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ jobs:
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Timing
ref: 2.2.3
ref: 2.2.4
path: ESPressio_Timing
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Units
ref: 0.2.2
ref: 0.2.3
path: ESPressio-Units
- name: Configure
run: cmake -S ESPressio-Event/tests -B build
Expand All @@ -47,22 +47,22 @@ jobs:
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Units
ref: 0.2.2
ref: 0.2.3
path: project/dependencies/ESPressio-Units
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Timing
ref: 2.2.3
ref: 2.2.4
path: project/dependencies/ESPressio-Timing
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Threads
ref: 3.1.3
ref: 3.1.4
path: project/dependencies/ESPressio-Threads
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-Serializable
ref: 0.10.1
ref: 0.10.2
path: project/dependencies/ESPressio-Serializable
- uses: actions/checkout@v4
with:
Expand All @@ -82,7 +82,7 @@ jobs:
- uses: actions/checkout@v4
with:
repository: Flowduino/ESPressio-ESP-Now
ref: 0.5.1
ref: 0.5.2
path: project/dependencies/ESPressio-ESP-Now
- uses: actions/setup-python@v5
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

## 5.8.2 — 2026-08-21

### Changed
- Raised the required ESPressio Threads baseline from 3.1.3 to 3.1.4.
- Raised the required ESPressio Timing baseline from 2.2.3 to 2.2.4.
- Raised the optional ESPressio Serializable baseline from 0.10.1 to 0.10.2 for Serializable Events, runtime construction and Event Transport integrations.
- Preserved the required ESPressio Observable baseline at `>=3.0.1 <4.0.0`.
- Updated package, ESP-IDF component, README and dependency documentation for Event 5.8.2.
- Preserved Security, Command, Sockets and ESP-Now as opt-in bridge dependencies and did not strengthen the existing Event↔ESP-Now or Event↔Sockets reciprocal optional relationships.

### Compatibility
- No Event, EventThread, listener, Observer, Event Transport, routing, bridge or wire-format API changes are introduced by this dependency-maintenance release.
- Event Transport continues to use the existing ESPB v2 payload representation.

## 5.8.1 — 2026-08-20

### Changed
Expand Down
80 changes: 49 additions & 31 deletions ESPRESSIO_DEPENDENCY_CHART.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# ESPressio Dependency Chart — Event 5.8.1
# ESPressio Dependency Chart — Event 5.8.2

![ESPressio Library Dependency Chart](ESPRESSIO_DEPENDENCY_CHART.png)

## Required dependencies

```text
ESPressio Event 5.8.1
-> ESPressio Threads >= 3.1.3 < 4.0.0
-> ESPressio Timing >= 2.2.3 < 3.0.0
ESPressio Event 5.8.2
-> ESPressio Threads >= 3.1.4 < 4.0.0
-> ESPressio Timing >= 2.2.4 < 3.0.0
-> ESPressio Observable >= 3.0.1 < 4.0.0
```

The transitive required chain is:

```text
Event 5.8.1
-> Threads 3.1.3
-> Timing 2.2.3
-> Units 0.2.2
Event 5.8.2
-> Threads 3.1.4
-> Timing 2.2.4
-> Units 0.2.3
-> Observable 3.0.1
-> Timing 2.2.3
-> Units 0.2.2
-> Timing 2.2.4
-> Units 0.2.3
-> Observable 3.0.1
-> Observable 3.0.1
```
Expand All @@ -31,11 +31,12 @@ Ordinary local Event use does not require Serializable. Serializable Events,
runtime Serializable Event construction, and Event Transport require:

```text
ESPressio Serializable >= 0.10.1 < 1.0.0
ESPressio Serializable >= 0.10.2 < 1.0.0
```

Serializable 0.10.1 preserves the ESPB v2 wire representation while adding
bounded/allocation-free inspection facilities. Event's transport wire format is
Serializable 0.10.2 preserves the ESPB v2 wire representation while retaining
bounded/allocation-free inspection facilities and correcting the strict-build
warning exposed by downstream consumers. Event's transport wire format is
unchanged by this dependency refresh.

## Optional Observer-to-Event bridges
Expand All @@ -57,31 +58,32 @@ do not become mandatory Event dependencies merely because bridge headers exist.
```text
FOUNDATIONAL
├── Observable 3.0.1
├── Serializable 0.10.1
├── Units 0.2.2
├── Serializable 0.10.2
├── Units 0.2.3
├── Security 0.2.0
└── Command 0.3.0

RUNTIME
└── Timing 2.2.3
└── Timing 2.2.4

EXECUTION
└── Threads 3.1.3
└── Threads 3.1.4

TRANSPORT / INTEGRATION
├── Sockets 0.5.0
└── ESP-Now 0.5.1
└── ESP-Now 0.5.2

EVENT
└── Event 5.8.1
└── Event 5.8.2

DIAGNOSTICS / OPERATOR
└── Serial 0.5.1
└── Serial 0.5.1 (release candidate)
```

## Circular-dependency audit

There is one currently known reciprocal optional relationship:
There are two reciprocal optional relationships that should be removed in a
future architecture cleanup:

```text
ESP-Now - - -> Event
Expand All @@ -91,14 +93,25 @@ Event - - -> ESP-Now
ESPNowTransportEventBridge
```

Although neither edge is mandatory, this violates the desired dependency rule:
integration dependencies should cascade downstream and must not point back into
a consumer that already depends on the abstraction.
and:

```text
Sockets - - -> Event
socket Event transports

Event - - -> Sockets
SocketWorkerEventBridge
SocketSecuritySessionEventBridge
```

Although none of these edges is mandatory, each pair violates the desired
dependency rule: integration dependencies should cascade downstream and must not
point back into a consumer that already depends on the abstraction.

### Preferred resolution

Event should remain the upstream, transport-neutral abstraction. The
ESP-Now-specific Observer-to-Event bridge should move downstream:
Event should remain the upstream, transport-neutral abstraction. Transport-
specific Observer-to-Event bridges should move downstream:

```text
Event
Expand All @@ -109,14 +122,19 @@ Event
ESP-Now Event integration
├── ESPNowEventTransport
└── ESPNowTransportEventBridge

Sockets Event integration
├── socket Event transports
├── SocketWorkerEventBridge
└── SocketSecuritySessionEventBridge
```

A dedicated integration package would also be valid if keeping both libraries
completely unaware of one another is preferable.
Dedicated integration packages would also be valid if keeping the core
libraries completely unaware of one another is preferable.

Until that relocation occurs, Event 5.8.1 does not add or strengthen any new
Event -> ESP-Now package-level dependency. The existing bridge remains available
for compatibility only.
Until those relocations occur, Event 5.8.2 does not add or strengthen any new
Event -> ESP-Now or Event -> Sockets package-level dependency. Existing bridge
headers remain available for compatibility only.

## Dependency-direction rule

Expand Down
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ queues, listener/observer registration, priority dispatch,
high-resolution Event timing, optional Observer-to-Event bridges, and
optional transport-neutral Serializable Event routing.

## Current Version — 5.8.1
## Current Version — 5.8.2

ESPressio Event **5.8.1** is a dependency-maintenance patch over 5.8.0. It retains the expanded Observable-to-Event bridge surface while refreshing the validated upstream dependency baselines.
ESPressio Event **5.8.2** is a dependency-maintenance patch over 5.8.0. It retains the expanded Observable-to-Event bridge surface while refreshing the validated upstream dependency baselines.

Current dependency model:

```text
Required
ESPressio Threads >= 3.1.3 < 4.0.0
ESPressio Timing >= 2.2.3 < 3.0.0
ESPressio Threads >= 3.1.4 < 4.0.0
ESPressio Timing >= 2.2.4 < 3.0.0
ESPressio Observable >= 3.0.1 < 4.0.0

Optional Serializable Event / Event Transport
ESPressio Serializable >= 0.10.1 < 1.0.0
ESPressio Serializable >= 0.10.2 < 1.0.0

Optional observer bridge sources
ESPressio Security >= 0.2.0 < 1.0.0
Expand All @@ -34,7 +34,7 @@ Optional observer bridge sources

Security and Command remain valid one-way bridge dependencies: those libraries expose synchronous Observable contracts and do not depend back upon Event.

The dependency audit for 5.8.1 identifies two reciprocal optional relationships that should not be strengthened:
The dependency audit for 5.8.2 identifies two reciprocal optional relationships that should not be strengthened:

```text
Sockets -> Event concrete socket Event transports
Expand Down Expand Up @@ -235,33 +235,33 @@ library:

``` ini
lib_deps =
flowduino/ESPressio-Event@^5.8.1
flowduino/ESPressio-Event@^5.8.2
```

The mandatory dependency graph is:

``` text
ESPressio Event 5.8.1
ESPressio Event 5.8.2
|
+-- ESPressio Threads >= 3.1.3 < 4.0.0
+-- ESPressio Threads >= 3.1.4 < 4.0.0
|
+-- ESPressio Observable >= 3.0.1 < 4.0.0
|
+-- ESPressio Timing >= 2.2.3 < 3.0.0
+-- ESPressio Timing >= 2.2.4 < 3.0.0
```

ESPressio Units 0.2.2 is carried by the Timing dependency stack.
ESPressio Units 0.2.3 is carried by the Timing dependency stack.

**ESPressio Serializable is not a mandatory Event dependency.** It is
required only when an application explicitly opts into Serializable
Events, runtime Serializable Event construction, or Event Transport. The
validated current baseline is:

```text
ESPressio Serializable >= 0.10.1 < 1.0.0
ESPressio Serializable >= 0.10.2 < 1.0.0
```

Security, Command, Sockets and ESP-Now remain optional bridge dependencies only. Event 5.8.1 introduces no new mandatory dependency on any of them.
Security, Command, Sockets and ESP-Now remain optional bridge dependencies only. Event 5.8.2 introduces no new mandatory dependency on any of them.

### Dependency direction and transport-specific bridges

Expand Down Expand Up @@ -392,7 +392,7 @@ directly: the originating libraries expose synchronous Observer
notifications, while ESPressio Event can optionally convert those
notifications into asynchronous Events.

Event 5.8 extends the same model to Security, Command, Sockets, and ESP-Now. The 5.8.1 dependency audit additionally distinguishes valid one-way bridges from transport-specific bridges that should ultimately move downstream to avoid reciprocal optional dependency edges.
Event 5.8 extends the same model to Security, Command, Sockets, and ESP-Now. The 5.8.2 dependency audit additionally distinguishes valid one-way bridges from transport-specific bridges that should ultimately move downstream to avoid reciprocal optional dependency edges.

------------------------------------------------------------------------

Expand Down Expand Up @@ -1091,8 +1091,8 @@ Serializable explicitly:

``` ini
lib_deps =
flowduino/ESPressio-Event@^5.8.1
flowduino/ESPressio-Serializable@^0.10.1
flowduino/ESPressio-Event@^5.8.2
flowduino/ESPressio-Serializable@^0.10.2
```

## `SerializableEvent`
Expand Down Expand Up @@ -1478,7 +1478,7 @@ payload length
```

The payload uses the ESPressio Serializable **ESPB v2 binary wire format**.
Event 5.8.1 validates against Serializable 0.10.1 while preserving the existing wire representation and direct binary transport path, with the archive path retained for compatibility/schema-migration cases.
Event 5.8.2 validates against Serializable 0.10.2 while preserving the existing wire representation and direct binary transport path, with the archive path retained for compatibility/schema-migration cases.

## EventTransportManager observation

Expand Down
4 changes: 2 additions & 2 deletions component.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ COMPONENT_REQUIRES := ESPressio_Threads ESPressio_Observable ESPressio_Timing
CXXFLAGS += -DESPRESSIO_EVENT
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_MAJOR=5
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_MINOR=8
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_PATCH=1
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_STRING=\"5.8.1\"
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_PATCH=2
CXXFLAGS += -DESPRESSIO_EVENT_VERSION_STRING=\"5.8.2\"

CXXFLAGS += -std=gnu++17
6 changes: 3 additions & 3 deletions library.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@
"type": "git",
"url": "https://github.com/Flowduino/ESPressio-Event.git"
},
"version": "5.8.1",
"version": "5.8.2",
"license": "Apache-2.0",
"frameworks": "arduino",
"platforms": "espressif32",
"dependencies": [
{
"name": "ESPressio-Threads",
"version": ">=3.1.3 <4.0.0",
"version": ">=3.1.4 <4.0.0",
"url": "https://github.com/Flowduino/ESPressio-Threads.git",
"platforms": "espressif32"
},
Expand All @@ -41,7 +41,7 @@
{
"owner": "flowduino",
"name": "ESPressio-Timing",
"version": ">=2.2.3 <3.0.0"
"version": ">=2.2.4 <3.0.0"
}
]
}
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-Event
version=5.8.1
version=5.8.2
author=Simon J. Stuart
maintainer=Flowduino.com
sentence=Event-driven development library for ESP32 microcontrollers
Expand All @@ -8,4 +8,4 @@ category=Communication
url=https://github.com/Flowduino/ESPressio-Event
architectures=esp32
includes=ESPressio_Event.hpp,ESPressio_EventThread.hpp,ESPressio_PrecisionEventThread.hpp
depends=ESPressio-Threads (>=3.1.3 && <4.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0),Flowduino ESPressio-Timing (>=2.2.3 && <3.0.0)
depends=ESPressio-Threads (>=3.1.4 && <4.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0),Flowduino ESPressio-Timing (>=2.2.4 && <3.0.0)
Loading