Skip to content

Changelog — page 8

New features, improvements, and fixes in the Fluxzero SDK.

GitHub

1.292.0 (2026-09-23)

Dependency updates
  • bump com.github.luben:zstd-jni from 1.5.7-17 to 1.5.7-18 (GitHub)

    com.github.luben:zstd-jni: 1.5.7-17 -> 1.5.7-18

Chores
  • github: assign default code owners (GitHub)
GitHub

Fluxzero 2.0.0-rc.19

This candidate hardens Model concurrency, current Graph reads and polymorphic IDs.

Model concurrency and command results

  • A rejected command no longer closes its enclosing message batch or fails unrelated in-flight Model results.
  • Overlapping asynchronous Model commits coordinate within the tracking batch while independent scopes remain parallel.
  • Commands that read provisional state reevaluate after their predecessors settle, including after a predecessor is rejected. Each command receives its own validation or commit outcome.
  • Ordinary handlers still wait for successful persistence before publishing results derived from provisional state. Genuine batch aborts remain terminal.

Graph reads and aliases

  • Missing aliased companion Models remain absent instead of resolving to an unrelated parent with the same functional ID.
  • Fresh current DOCUMENT-backed Graph reads resolve identity and value coherently during concurrent creation, replacement and deletion, with bounded retries.
  • Historical, already pinned and transactional Graphs retain their read boundary. An explicitly current DOCUMENT root captures its value when the view is created.
  • Simple DOCUMENT mutations acquire an additional transactional read boundary lazily when needed, avoiding an unconditional extra lookup for ordinary writes.

Polymorphic IDs

Ambiguous ID properties such as Id<?> now retain their concrete identity through serialization. Model IDs use {"name":"logical-model-name","id":"functional-id"}; other ID types use @class and id. Parent allowlists and declared type constraints remain enforced. Concrete ID properties keep their scalar representation, and explicit Jackson contracts remain supported. Custom ID subtype deserializers retain their property context; OpenAPI describes polymorphic ID arrays and containers with the same wire shape as individual IDs.

Upgrade readers before writers start emitting the new polymorphic representation. Historical scalar values on an ambiguous polymorphic property cannot be inferred safely; provide an application upcaster where needed.

The candidate includes expanded concurrency, serialization, Graph and transport regression coverage, with matching Java/Kotlin documentation. This is a prerelease, not the final 2.0 release.

GitHub

1.291.0 (2026-09-22)

Bug Fixes
  • handling: preserve enclosing batch on nested failures (GitHub)

    Leave completion callbacks and deferred aggregate commits with the owning message scope when a nested failure is caught. Apply the same ownership boundary to direct, iterable, list and stream handling while preserving escaping errors and cleanup.

Tests
  • websocket: stabilize heartbeat metric synchronization (GitHub)

    Integrate the test-only correction so asynchronous metric deadlines are not mistaken for duplicate heartbeats.

  • websocket: distinguish metric deadline from retained heartbeat (GitHub)

    Synchronize asynchronous metric publication before counting the retained heartbeat. Preserve the existing heartbeat assertions and production behavior.

GitHub

Context isolation, HTTP correctness and lower proxy memory use

  • Restore the physical message context after nested local handling, preventing later dispatches on the same worker from inheriting stale correlation data.
  • Decode path parameters once after route matching, preserving literal plus signs, raw-path routing and safe static-resource resolution.
  • Decompress gzip web responses before typed deserialization and upcasting.
  • Read streamed web responses as raw body bytes, including asynchronous static-file fixtures and JSON streams. Preserve stream ownership during gzip conversion and avoid decompressing empty HEAD responses.
  • Start proxy response headers with an 8 KiB buffer while retaining the separate maximum header size. Add explicit direct/heap output-buffer configuration.
  • Expand guidance on domain structure, local integration commands, auditable outbound HTTP and event transitions versus document reconciliation.
  • Stabilize cache cleanup regression tests and incorporate dependency updates.
Known boundaries

HTTP/1.1 response-header growth retains the documented Jetty persistence limitation; see the buffer guidance.

This is a release candidate, not 2.0 GA. Java 25 or newer is required.

GitHub

1.290.0 (2026-09-21)

Bug Fixes
  • web: decode streamed responses without type resolution (GitHub)

    Treat chunked HTTP bodies as raw bytes while preserving typed responses. Decode local gzip streams only on body conversion and retain empty representation responses without decompression.

Changes
  • Merge pull request #374 from fluxzero-io/fix/static-file-fixture (GitHub)

    fix(web): decode streamed responses without type resolution

GitHub

1.289.0 (2026-09-21)

Bug Fixes
  • handling: restore physical message context (GitHub)

    Keep the payload-first logical message fallback separate from the physical thread-local value restored after nested handling. This prevents stale correlation context from contaminating later dispatches while preserving local batch ownership and prepared dispatch.

GitHub

1.288.0 (2026-09-21)

Features
  • proxy: configure response output buffers (GitHub)

    Start response headers with an 8 KiB buffer while preserving the configured maximum and HTTP connection semantics during growth. Allow deployments to select direct or heap-backed Jetty output buffers.

Bug Fixes
  • proxy: merge response buffer memory improvement (#371) (GitHub)

    Start with smaller response header buffers while retaining the maximum. Track the accepted Jetty persistence limitation in issue #15840.

Documentation
  • proxy: clarify early response coverage during header growth (GitHub)
  • proxy: track Jetty header growth persistence limitation (GitHub)

    Link the upstream issue and describe the explicit-close workaround scope and configuration fallback so deployments can assess the remaining header-growth limitation.

GitHub

1.287.0 (2026-09-21)

Bug Fixes
  • web: decode path parameters after route matching (GitHub)

    Decode captured path values once as UTF-8 while retaining literal plus signs and raw-path routing. Resolve static resources from decoded path data without reinterpreting URI syntax or allowing absolute paths; retain the independent decoding rules of other parameter sources.

Dependency updates
  • bump com.github.luben:zstd-jni from 1.5.7-16 to 1.5.7-17 (GitHub)

    com.github.luben:zstd-jni: 1.5.7-16 -> 1.5.7-17

GitHub

1.286.0 (2026-09-18)

Bug Fixes
  • web: decompress responses before typed deserialization (GitHub)

    Decode gzip at the serialized web response boundary so payload deserialization and upcasting see the original body. Normalize encoding and length headers on the decoded response without changing the published wire message.

GitHub

1.285.0 (2026-09-18)

Dependency updates
  • bump io.fluxzero:lychee-maven-plugin from 0.2.18 to 0.2.19 (GitHub)

    io.fluxzero:lychee-maven-plugin: 0.2.18 -> 0.2.19 changelog

GitHub

Model correctness and embedded members

  • Embedded @Member handlers now participate in their owning Model's atomic update, assertions, dependency tracking and replay. Concrete handlers on open member subtypes are supported when the owner is explicitly addressed.
  • Physical deletion plans retain grandchildren and deeper descendants after a logical cascade, without including previously detached or moved Models.
  • In-memory document updates remain available to consumers that register later. TestFixture tracks pending document revisions independently.
  • Accepted first creations can seed the Model cache while a tracked update page is still processing, avoiding redundant replay reads without weakening fences against later updates or deletion.
  • Expanded storage, publication, lifecycle, member and concurrency contract tests, with updated Java/Kotlin guidance and dependency updates from main.
Existing candidate data

Previously stored events follow the corrected member behavior during replay. If an old snapshot was built while member handlers were skipped, reconstruct the affected state from event history rather than trusting that snapshot. Previously incomplete deletion-lineage metadata is not automatically repaired; verify the selected deletion plan before erasing retained candidate data.

This is a prerelease. Java 25 or newer is required.

GitHub

1.284.0 (2026-09-17)

Bug Fixes
  • search: retain document updates without active monitors (GitHub)

    Keep in-memory document updates available to later consumers while limiting callbacks to active monitors. Use a per-collection revision lookup to preserve coalescing without scanning the growing stream on every write.

  • testing: retain pending document revisions across batch completion (GitHub)

    Track document revisions independently so batch completion and failed writes cannot discard newer pending updates. Preserve coalescing and compare effective consumer namespaces when applying index bounds.

GitHub

1.283.0 (2026-09-17)

Dependency updates
  • bump io.fluxzero.tools:fluxzero-maven-plugin from 1.18.8 to 1.18.9 (GitHub)

    io.fluxzero.tools:fluxzero-maven-plugin: 1.18.8 -> 1.18.9 changelog

GitHub

2.0.0-rc.16 (2026-09-16)

Bug Fixes
  • modeling: preserve synchronous conflict resolution (GitHub)

    Keep local conflict decisions in the same execution mode as reevaluation while retaining contextual virtual workers for asynchronous handling.

  • modeling: preserve synchronous conflict resolution (GitHub)

    Follow the pipeline execution mode when resolving Model conflicts so local synchronous handling cannot return before its retry completes. Keep asynchronous resolvers on contextual virtual workers and preserve retry bounds and failure mapping.

GitHub

Fluxzero SDK 2.0.0-rc.15

This release candidate fixes command validation and conflict recovery for Models.

  • Targeted Graph updates keep command safeguards. graph.assertAndApply(command) now runs applicable assertions on the effective command even when they read another Model. Their dependencies participate in conflict detection, while writes remain limited to the selected Model.
  • RETRY is the default for both updates and creations. Without an explicit override, changed dependencies trigger a fresh evaluation regardless of fluxzero.defaults.version. Explicit policies retain their precedence.
  • Create-only remains create-only. A factory cannot overwrite a Model created by another writer while the command was being evaluated.
  • Staged Graph updates recover correctly from conflicts. Retry reevaluates update functions against a fresh snapshot and preserves the original absence condition, including chained updates, multiple targets and previously deleted Models.

Java and Kotlin guidance and public API documentation have been aligned with these contracts.

This is a prerelease, not the 2.0 GA release.

Known issue: in synchronous local handling, a Model conflict retry can complete after TestFixture checks its result, causing an intermittent test timeout. A correction has been merged into next/2.0 but is not included in this immutable release.

GitHub

Fluxzero SDK 2.0.0-rc.14

This release candidate hardens Model and Graph reads, mutations and replay.

  • Manual Graph reads inside Model assertions and applies now retain their transaction dependencies, including consumed alias bindings and nested validation references.
  • New detached Graph views observe completed relationship changes regardless of whether the root value, presence or children are read first. Historical views retain their event boundary.
  • Direct Graph creation distinguishes an absent Model head from the Graph snapshot. Concurrent creation and update protection remain intact.
  • Cold replay preserves explicitly selected Model identities and compatible concrete types without collapsing distinct read dependencies or widening explicitly typed parameters.
  • Historical ancestor navigation retains the relationship boundary before deletion or reparenting.
  • Cache reuse keeps ownership and validity checks; ordinary successful cached mutations do not acquire an unconditional freshness request.
  • Java and Kotlin documentation clarify ordered atomic updates and the exact previous-state boundary of cascaded deletions.
  • Embedded test-server interface binding and proxy listener isolation improve concurrent local test execution.

The changes include deterministic regression coverage for creation, cold replay, historical relationships, cache freshness, conflict handling and rollback, plus complete downstream application qualification.

This is a prerelease, not the 2.0 GA release.

GitHub

1.282.0 (2026-09-16)

Dependency updates
  • bump org.apache.maven.plugins:maven-install-plugin (GitHub)

    org.apache.maven.plugins:maven-install-plugin: 3.1.4 -> 3.2.0 changelog

  • bump at.yawk.lz4:lz4-java from 1.11.1 to 1.11.3 (GitHub)

    at.yawk.lz4:lz4-java: 1.11.1 -> 1.11.3 changelog

GitHub

1.281.0 (2026-09-16)

Dependency updates
  • bump org.apache.maven.plugins:maven-deploy-plugin (GitHub)

    org.apache.maven.plugins:maven-deploy-plugin: 3.1.4 -> 3.2.0 changelog

GitHub

1.280.0 (2026-09-16)

Dependency updates
  • bump io.fluxzero.tools:fluxzero-maven-plugin from 1.18.6 to 1.18.8 (GitHub)

    io.fluxzero.tools:fluxzero-maven-plugin: 1.18.6 -> 1.18.8 changelog

GitHub

1.279.0 (2026-09-15)

Dependency updates
  • bump org.codehaus.mojo:build-helper-maven-plugin (GitHub)

    org.codehaus.mojo:build-helper-maven-plugin: 3.6.1 -> 3.6.2 changelog

  • bump org.codehaus.mojo:exec-maven-plugin from 3.6.3 to 3.6.4 (GitHub)

    org.codehaus.mojo:exec-maven-plugin: 3.6.3 -> 3.6.4 changelog


© 2026 Fluxzero