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
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
> release record.
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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.
- Optional rather than ecosystem-wide dependency.
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
5 changes: 4 additions & 1 deletion src/ESPressio_SerializationTraversal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,10 @@ namespace ESPressio::Serializable::Detail {
} else if constexpr (IsMapLike<T>) {
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;
}
}

Expand Down
Loading