From d4a150c54129444a5a61c8e08492b2bc86251b48 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 00:43:55 +0200 Subject: [PATCH 1/5] fix: make fallback deserialization control flow explicit (#4) --- src/ESPressio_SerializationTraversal.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ESPressio_SerializationTraversal.hpp b/src/ESPressio_SerializationTraversal.hpp index c5aa592..08663be 100644 --- a/src/ESPressio_SerializationTraversal.hpp +++ b/src/ESPressio_SerializationTraversal.hpp @@ -456,7 +456,10 @@ namespace ESPressio::Serializable::Detail { } else if constexpr (IsMapLike) { if(node.GetType()!=SerializationNodeType::Array){fail();return result;}value.clear();size_t i=0;for(const auto&child:node.ArrayChildren()){std::string ep=path+"["+std::to_string(i)+"]";if(child.GetType()!=SerializationNodeType::Object){result.Add(SerializationErrorCode::TypeMismatch,ep,"Map entry must be an object",options);}else{auto*kn=child.Find("key");auto*vn=child.Find("value");if(!kn||!vn)result.Add(SerializationErrorCode::MalformedInput,ep,"Map entry requires key and value",options);else{typename T::key_type key{};typename T::mapped_type mapped{};auto kr=FromNodeDetailed(*kn,key,ep+".key",options);auto vr=FromNodeDetailed(*vn,mapped,ep+".value",options);result.Merge(kr,"",options);result.Merge(vr,"",options);if(kr&&vr)value.emplace(std::move(key),std::move(mapped));}}if(!result.ShouldContinue(options))break;++i;}return result; } else { - if(!FromNode(node,value))fail(); return result; + if (!FromNode(node, value)) { + fail(); + } + return result; } } From 77b598e2b549cd98427716ba91a0fd12fc35682d Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 00:44:24 +0200 Subject: [PATCH 2/5] chore: prepare Serializable 0.10.2 (#4) --- library.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.json b/library.json index f8bec72..c8e0499 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ESPressio-Serializable", - "version": "0.10.1", + "version": "0.10.2", "description": "Compile-time declarative serialization components for the Flowduino ESPressio Development Platform.", "keywords": [ "serialization", From be1390f87905067a66ea71c7aeb00e1ea84db7d2 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 00:44:31 +0200 Subject: [PATCH 3/5] chore: update Arduino metadata for 0.10.2 (#4) --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 58e9cf7..6cd54f3 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ESPressio Serializable -version=0.10.1 +version=0.10.2 author=Flowduino maintainer=Flowduino sentence=Compile-time declarative serialization components for the ESPressio Development Platform. From 88ee725375ddeb0d95cbe79c8a8fd98a147e53b2 Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 00:44:48 +0200 Subject: [PATCH 4/5] docs: add Serializable 0.10.2 changelog entry (#4) --- CHANGELOG.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41766bb..38430b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,20 @@ Versioning](https://semver.org/). > had little or no release-note detail, the entry is intentionally terse > rather than inferring unsupported intent. +## [0.10.2] - 2026-08-21 + +### Fixed + +- Made fallback detailed-deserialization control flow explicit in + `ESPressio_SerializationTraversal.hpp`, eliminating GCC's + `-Wmisleading-indentation` diagnostic when downstream consumers compile + ESPressio Serializable headers with warnings treated as errors. + +### Compatibility + +- No API, wire-format, or runtime behaviour changes. +- ESPB v2 compatibility is unchanged. + ## [0.10.1] - 2026-08-20 ### Fixed @@ -115,4 +129,4 @@ milestones before the first published GitHub Release at 0.9.0. > release. Earlier 0.x version numbers appeared during repository > development, but are grouped here rather than assigning release dates > or exact contents that are not fully supported by the published -> release record. \ No newline at end of file +> release record. From f3c3ae72c0c0f0042444cb6bbd8b12b8fbc66e7f Mon Sep 17 00:00:00 2001 From: Simon J Stuart Date: Fri, 21 Aug 2026 00:45:12 +0200 Subject: [PATCH 5/5] docs: mark Serializable 0.10.2 as current stable (#4) --- README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6f49daa..42250b5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,16 @@ Development Platform. ## Latest Stable Version -**0.10.1** +**0.10.2** + +### 0.10.2 warning-clean detailed deserialization + +Version 0.10.2 makes the fallback branch in detailed deserialization +unambiguous to compilers, eliminating GCC's `-Wmisleading-indentation` +diagnostic when downstream consumers build ESPressio Serializable headers with +warnings treated as errors. + +There are no API, runtime-behaviour, or wire-format changes in this patch. ### 0.10.1 bounded BinaryArchive decoding @@ -224,4 +233,4 @@ Ordinary usage of those libraries remains serialization-free. - Bounded and allocation-free BinaryArchive inspection where appropriate. - Validation and schema evolution. - Compile-time diagnostics where possible. -- Optional rather than ecosystem-wide dependency. \ No newline at end of file +- Optional rather than ecosystem-wide dependency.