- Replace MixBlend/MixDirection with bool fromSetup/add/out in all timeline apply() signatures
- Remove MixBlend.h and MixDirection.h (no longer used)
- Add Timeline::_additive and _instant fields
- Replace TrackEntry holdPrevious/interruptAlpha/mixBlend with additive/keepHold
- Rewrite AnimationState hold system with bitmask (Subsequent/First/Hold/HoldFirst)
- Rewrite applyMixingFrom alpha computation
- Rename Skin::AttachmentMap::Entry::_name to _placeholderName
- Fix SkeletonBinary::readLong() sign extension bug truncating 64-bit hashes
- Fix SkeletonSerializer sequence and bones null/empty parity with Java
- Add transition frame testing to HeadlessTest
- Port all doc updates from spine-libgdx
- Implement comprehensive C++ serializer generator (tests/generate-cpp-serializer.ts)
- Direct transformation of Java SkeletonSerializer to C++ header-only implementation
- Handle all C++-specific API differences:
* Field access patterns (obj.field → obj->field, private fields → obj->_field)
* Null check removal for reference-returning methods (getBones, getEdges)
* Nested array null check elimination (getVertices, getDrawOrders)
* Enum serialization via switch statements replacing .name() calls
* Custom function replacement system for C++-specific implementations
- Add specialized C++ implementations:
* writeColor: handle public Color fields (r,g,b,a without underscore)
* writeSkin: iterate AttachmentMap::Entries and call writeSkinEntry
* writeSkinEntry: handle AttachmentMap::Entry instead of Java SkinEntry
- Auto-generate both pointer and reference versions of all write methods
- Create JsonWriter.h as header-only port of Java JsonWriter
- Update HeadlessTest.cpp to use generated SkeletonSerializer
- Add comprehensive type analysis and enum mapping from analysis-result.json
- Implement exclusion system for filtering unwanted types/methods
- Fix Java generator nested array null checks that were incorrectly hardcoded
Generated C++ serializer produces identical JSON output to Java reference implementation.
- spine-cpp/spine-cpp was moved into spine-cpp directory, so spine-cpp/spine-cpp/src -> spine-cpp/src, spine-cpp/spine-cpp/include -> spine-cpp/include
- Added scaffold for DebugPrinter to be used by runtime comparison tests
- Added build.sh