From 56f7efc05a94b5be82d60a9c09af5bcc6d0c6285 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:25:18 +0200 Subject: [PATCH 01/11] ci: add temporary dependency README maintenance helper (#7) --- .../_dependency-readme-maintenance.yml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/_dependency-readme-maintenance.yml diff --git a/.github/workflows/_dependency-readme-maintenance.yml b/.github/workflows/_dependency-readme-maintenance.yml new file mode 100644 index 0000000..1c092fb --- /dev/null +++ b/.github/workflows/_dependency-readme-maintenance.yml @@ -0,0 +1,43 @@ +name: Dependency README maintenance + +on: + push: + branches: + - feature/7-units-0.2.3-dependency-refresh + +permissions: + contents: write + +jobs: + update-readme: + if: github.actor != 'github-actions[bot]' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Update current dependency references + shell: python + run: | + from pathlib import Path + path = Path('README.md') + text = path.read_text() + replacements = { + 'The current version is **2.2.3**.': 'The current version is **2.2.4**.', + '- **ESPressio Units >= 0.2.2 < 1.0.0**': '- **ESPressio Units >= 0.2.3 < 1.0.0**', + 'Version 2.2.3 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.2, which in turn carries the optional Serializable 0.10.1 integration. Timing itself remains independent of ESPressio Serializable.': 'Version 2.2.4 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.3, which in turn carries the optional Serializable 0.10.2 integration. Timing itself remains independent of ESPressio Serializable.' + } + for old, new in replacements.items(): + if old not in text: + raise SystemExit(f'Missing expected README text: {old}') + text = text.replace(old, new, 1) + path.write_text(text) + - name: Commit README update + shell: bash + run: | + if git diff --quiet -- README.md; then + exit 0 + fi + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + git add README.md + git commit -m 'docs: refresh Timing 2.2.4 dependency references (#7)' + git push From 3618bcb007931c0311f069001ff16516248af582 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:25:25 +0200 Subject: [PATCH 02/11] chore: trigger Timing dependency README maintenance (#7) --- .dependency-readme-maintenance-trigger | 1 + 1 file changed, 1 insertion(+) create mode 100644 .dependency-readme-maintenance-trigger diff --git a/.dependency-readme-maintenance-trigger b/.dependency-readme-maintenance-trigger new file mode 100644 index 0000000..5c33b15 --- /dev/null +++ b/.dependency-readme-maintenance-trigger @@ -0,0 +1 @@ +trigger From 3894b7589ddc742aa1a01cad9cfb033be642e106 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 06:25:32 +0000 Subject: [PATCH 03/11] docs: refresh Timing 2.2.4 dependency references (#7) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3aa1d31..78fe97c 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,14 @@ High-resolution system, stopwatch, and RTC clock abstractions with a generic pub ## Latest Stable Version -The current version is **2.2.3**. +The current version is **2.2.4**. ### Current ESPressio dependencies -- **ESPressio Units >= 0.2.2 < 1.0.0** +- **ESPressio Units >= 0.2.3 < 1.0.0** - **ESPressio Observable >= 3.0.1 < 4.0.0** -Version 2.2.3 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.2, which in turn carries the optional Serializable 0.10.1 integration. Timing itself remains independent of ESPressio Serializable. +Version 2.2.4 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.3, which in turn carries the optional Serializable 0.10.2 integration. Timing itself remains independent of ESPressio Serializable. ## Version 2.2.0 From f3f4b9c2db3f395f47b4962c848d06a94ed19fad Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:25:55 +0200 Subject: [PATCH 04/11] chore: prepare Timing 2.2.4 metadata (#7) --- library.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index dcce8f9..132a6f0 100644 --- a/library.json +++ b/library.json @@ -16,14 +16,14 @@ "type": "git", "url": "https://github.com/Flowduino/ESPressio-Timing.git" }, - "version": "2.2.3", + "version": "2.2.4", "license": "Apache-2.0", "frameworks": "arduino", "platforms": "*", "dependencies": [ { "name": "Flowduino ESPressio-Units", - "version": ">=0.2.2 <1.0.0", + "version": ">=0.2.3 <1.0.0", "url": "https://github.com/Flowduino/ESPressio-Units.git", "platforms": "*" }, From 5f02589ce373559e8023c81dfe76e05ee4592434 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:26:06 +0200 Subject: [PATCH 05/11] chore: prepare Timing 2.2.4 Arduino metadata (#7) --- library.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.properties b/library.properties index 3dfacd4..52cd430 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Flowduino ESPressio-Timing -version=2.2.3 +version=2.2.4 author=Simon J. Stuart maintainer=Flowduino.com sentence=Generic high-resolution clocks with synchronization, discipline, and Observer notifications @@ -8,4 +8,4 @@ category=Timing url=https://github.com/Flowduino/ESPressio-Timing architectures=* includes=ESPressio_Timing.hpp -depends=Flowduino ESPressio-Units (>=0.2.2 && <1.0.0),ESPressio-Observable (>=3.0.1 && <4.0.0) +depends=Flowduino ESPressio-Units (>=0.2.3 && <1.0.0),ESPressio-Observable (>=3.0.1 && <4.0.0) From 54ab4bd70948ca4bb070ce31ecc603575c1a0d26 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:26:34 +0200 Subject: [PATCH 06/11] docs: add Timing 2.2.4 changelog entry (#7) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19ee0eb..172d4d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 2.2.4 — 2026-08-21 + +### Changed +- Raised the required ESPressio Units baseline from 0.2.2 to 0.2.3 following the Serializable 0.10.2 dependency refresh. +- Preserved the ESPressio Observable baseline at `>=3.0.1 <4.0.0`. +- Preserved Timing's architecture in which Serializable time representations are supplied through opt-in Serializable Unit types rather than a direct Timing -> Serializable dependency. +- Updated package metadata, README and current dependency documentation for Timing 2.2.4. +- Updated release-candidate validation to exercise the Units 0.2.3 candidate until the corresponding release tag is available. + +### Compatibility +- No Timing public API or runtime behaviour changes are introduced by this dependency-maintenance release. + ## 2.2.3 — 2026-08-20 ### Changed From e38376c32d9140b560c0b3a9c221c7521803840a Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:26:50 +0200 Subject: [PATCH 07/11] docs: refresh Timing dependency chart for 2.2.4 (#7) --- ESPRESSIO_DEPENDENCY_CHART.md | 51 ++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/ESPRESSIO_DEPENDENCY_CHART.md b/ESPRESSIO_DEPENDENCY_CHART.md index a5401c2..be2044e 100644 --- a/ESPRESSIO_DEPENDENCY_CHART.md +++ b/ESPRESSIO_DEPENDENCY_CHART.md @@ -2,24 +2,24 @@ ![ESPressio Library Dependency Chart](ESPRESSIO_DEPENDENCY_CHART.png) -## ESPressio Timing 2.2.3 +## ESPressio Timing 2.2.4 Timing has two required ESPressio dependencies: ```text -ESPressio Timing 2.2.3 - -> ESPressio Units >= 0.2.2 < 1.0.0 +ESPressio Timing 2.2.4 + -> ESPressio Units >= 0.2.3 < 1.0.0 -> ESPressio Observable >= 3.0.1 < 4.0.0 ``` Timing deliberately has **no direct ESPressio Serializable dependency**. Applications may choose Serializable time representations through the opt-in -Serializable Unit types supplied by Units 0.2.2: +Serializable Unit types supplied by Units 0.2.3: ```text Timing -> Units - - - -> Serializable >= 0.10.1 < 1.0.0 + - - -> Serializable >= 0.10.2 < 1.0.0 ``` This keeps the dependency cascade one-way and avoids making serialization part @@ -29,24 +29,21 @@ of the Timing core. ```text Observable 3.0.1 -Serializable 0.10.1 -Units 0.2.2 +Serializable 0.10.2 +Units 0.2.3 (candidate until released) | v -Timing 2.2.3 +Timing 2.2.4 | - +--> Threads 3.1.3 + +--> Threads 3.1.4 (planned downstream refresh) | - +--> ESP-Now 0.5.1 - | - - - -> Event 5.8.1 (Event transport integration) + +--> ESP-Now 0.5.2 (planned downstream refresh) -Threads 3.1.3 - | - v -Event 5.8.1 +Event 5.8.2 is the planned downstream convergence release after Threads and +ESP-Now are refreshed. -Serial 0.5.1 remains a downstream opt-in diagnostics/operator layer. +Serial 0.5.1 remains the final downstream diagnostics/operator release +candidate. ``` Security 0.2.0, Command 0.3.0 and Sockets 0.5.0 remain separate branches of @@ -57,8 +54,8 @@ the integration graph except where their explicit opt-in adapters are selected. A dependency should cascade downstream. An upstream/foundational library should not depend back on a downstream implementation merely to host integration code. -The known Event/ESP-Now reciprocal optional relationship is therefore considered -an architectural exception to resolve: +The known reciprocal optional relationships remain architectural exceptions to +resolve separately: ```text ESP-Now - - -> Event @@ -68,8 +65,20 @@ Event - - -> ESP-Now ESPNowTransportEventBridge ``` +and: + +```text +Sockets - - -> Event + socket Event transports + +Event - - -> Sockets + SocketWorkerEventBridge + SocketSecuritySessionEventBridge +``` + The preferred resolution is to keep Event upstream and transport-neutral and -move the ESP-Now-specific Observer-to-Event bridge downstream into ESP-Now's -Event integration (or a dedicated downstream integration package). +move transport-specific Observer-to-Event bridges downstream alongside each +transport library's Event integration (or a dedicated downstream integration +package). No new reciprocal dependency should be introduced. From 788c448cb4a18f14892271a50daf19d825fadb82 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:27:15 +0200 Subject: [PATCH 08/11] ci: validate Timing 2.2.4 against Units 0.2.3 candidate (#7) --- .github/workflows/dependency-refresh-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dependency-refresh-tests.yml b/.github/workflows/dependency-refresh-tests.yml index a1c4512..3e9579c 100644 --- a/.github/workflows/dependency-refresh-tests.yml +++ b/.github/workflows/dependency-refresh-tests.yml @@ -3,7 +3,7 @@ name: Dependency Refresh Tests on: push: branches: - - feature/5-units-0.2.2-dependency-refresh + - feature/7-units-0.2.3-dependency-refresh pull_request: branches: - main @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: 0.2.2 + ref: feature/4-serializable-0.10.2-dependency-refresh path: project/dependencies/ESPressio-Units - uses: actions/checkout@v4 with: @@ -73,5 +73,5 @@ jobs: void loop() {} EOF - - name: Compile Timing against released Units 0.2.2 + - name: Compile Timing against Units 0.2.3 candidate run: pio run -d project/compile From c20625a315c13aec5c1ac8976850706b9fcd345e Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:27:39 +0200 Subject: [PATCH 09/11] chore: remove temporary Timing README maintenance helper (#7) --- .../_dependency-readme-maintenance.yml | 43 ------------------- 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/_dependency-readme-maintenance.yml diff --git a/.github/workflows/_dependency-readme-maintenance.yml b/.github/workflows/_dependency-readme-maintenance.yml deleted file mode 100644 index 1c092fb..0000000 --- a/.github/workflows/_dependency-readme-maintenance.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Dependency README maintenance - -on: - push: - branches: - - feature/7-units-0.2.3-dependency-refresh - -permissions: - contents: write - -jobs: - update-readme: - if: github.actor != 'github-actions[bot]' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Update current dependency references - shell: python - run: | - from pathlib import Path - path = Path('README.md') - text = path.read_text() - replacements = { - 'The current version is **2.2.3**.': 'The current version is **2.2.4**.', - '- **ESPressio Units >= 0.2.2 < 1.0.0**': '- **ESPressio Units >= 0.2.3 < 1.0.0**', - 'Version 2.2.3 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.2, which in turn carries the optional Serializable 0.10.1 integration. Timing itself remains independent of ESPressio Serializable.': 'Version 2.2.4 is a dependency-maintenance release. It retains the Timing 2.2.x public API and behaviour while updating the required ESPressio Units baseline to 0.2.3, which in turn carries the optional Serializable 0.10.2 integration. Timing itself remains independent of ESPressio Serializable.' - } - for old, new in replacements.items(): - if old not in text: - raise SystemExit(f'Missing expected README text: {old}') - text = text.replace(old, new, 1) - path.write_text(text) - - name: Commit README update - shell: bash - run: | - if git diff --quiet -- README.md; then - exit 0 - fi - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - git add README.md - git commit -m 'docs: refresh Timing 2.2.4 dependency references (#7)' - git push From 92edfa1fb47fc926010e1e77c5fd3f03cf124697 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 08:27:45 +0200 Subject: [PATCH 10/11] chore: remove Timing README maintenance trigger (#7) --- .dependency-readme-maintenance-trigger | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .dependency-readme-maintenance-trigger diff --git a/.dependency-readme-maintenance-trigger b/.dependency-readme-maintenance-trigger deleted file mode 100644 index 5c33b15..0000000 --- a/.dependency-readme-maintenance-trigger +++ /dev/null @@ -1 +0,0 @@ -trigger From e865cfc17b15f880744357bf4ff6e9a65c7db948 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 09:49:31 +0200 Subject: [PATCH 11/11] ci: validate released Units 0.2.3 (#7) --- .github/workflows/dependency-refresh-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dependency-refresh-tests.yml b/.github/workflows/dependency-refresh-tests.yml index 3e9579c..df71d89 100644 --- a/.github/workflows/dependency-refresh-tests.yml +++ b/.github/workflows/dependency-refresh-tests.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: feature/4-serializable-0.10.2-dependency-refresh + ref: 0.2.3 path: project/dependencies/ESPressio-Units - uses: actions/checkout@v4 with: @@ -73,5 +73,5 @@ jobs: void loop() {} EOF - - name: Compile Timing against Units 0.2.3 candidate + - name: Compile Timing against released Units 0.2.3 run: pio run -d project/compile