Skip to content

Changelog — page 2

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

GitHub

2.24.0 (2026-10-17)

Features
  • modeling: add optional affixes to model and graph loads (GitHub)

    Preserve existing overload defaults and alias resolution while allowing callers to supply literal repository identities. Keep current and coherent batch loading boundaries and custom repository dispatch intact.

GitHub

2.23.0 (2026-10-17)

Features
  • modeling: select mutation targets by alias property (#529) (GitHub)

    Keep compatibility defaults and generic primary-first reads unchanged. Add negotiated identity reads and atomic alias observations, preserve canonical replay bindings, and validate missing or mixed selectors against effective staged state.

GitHub

2.22.2 (2026-10-17)

Upgrade warning: This fix can change access in either direction by discovering previously missed package annotations and selecting the nearest package policy. Review application and dependency package-info declarations and allowed and denied requests before upgrading. See the package policy migration guidance.

Bug Fixes
  • authentication: enforce package policies (review access rules before upgrading) (#500) (GitHub)

    Upgrade warning: discovering previously missed package annotations and selecting the nearest package policy can change access in either direction. Review application and dependency package-info declarations and allowed and denied requests before upgrading.

    Resolve ancestor authorization policies in the payload or handler module and defining loader, preserving deterministic policy selection across application classloaders. Keep type and method overrides and the combined requirements of the selected policy.

    Recheck access per invocation and propagate silent refusal without producing successful null responses. Preserve prepared local handling, avoid redundant identity lookup and temporary role collections, and retain deferred completion, cancellation, context, mirroring and custom interceptor contracts.

    See https://fluxzero.io/docs/guides/messaging/role-based-access-control/#role-annotations-support-nesting-and-overrides for the package policy migration.

GitHub

2.22.1 (2026-10-17)

Bug Fixes
  • modeling: validate after-handler assertions against final operation state (GitHub)

    Defer ordinary Model after-handler assertions until all split outputs and automatic deletions have been composed. Preserve each assertion context and existing conflict policies while rejecting the complete operation when a final-state check fails.

GitHub

2.22.0 (2026-10-17)

Features
  • modeling: support collection-valued parent relationships (#526) (GitHub)

    Resolve collection elements as ordinary Graph edges across model writes, ancestor validation and schedule ownership. Preserve scalar behavior and existing lifecycle policies.

GitHub

2.21.4 (2026-10-17)

Bug Fixes
  • tracking: include topic in position metrics (GitHub)

    Carry the endpoint topic in StorePosition so document collections and custom streams can be identified in metrics. Keep unscoped entry points, routing and endpoint-owned storage semantics compatible.

Tests
  • common: synchronize backlog collection boundaries (GitHub)

    Control the collection wait explicitly so items arrive during the collection phase regardless of worker scheduling. Preserve the public factory path and exact batch assertion with bounded cleanup.

GitHub

2.21.3 (2026-10-17)

Bug Fixes
  • web: document implicit root routes as slash (GitHub)

    Normalize documentation paths with the existing router convention so implicit roots and absolute origins without a path produce valid OpenAPI. Preserve route composition and operation origins.

GitHub

2.21.2 (2026-10-17)

Bug Fixes
  • tracking: wake peers reassigned during a concurrent claim (GitHub)

    Compare segment assignments within the atomic cluster transition so a tracker joining during a claim cannot miss its wakeup. Notify only reassigned peers outside the cluster mutation, preserving stable waits and active reservations.

GitHub

2.21.1 (2026-10-17)

Bug Fixes
  • modeling: preserve active member lookup and removal (GitHub)

    Resolve affixed member identities in the active aggregate context while retaining functional IDs and alias precedence. Keep the updated owner when removing a built-in member so the existing root commit lifecycle persists the change without altering custom entity overrides.

  • modeling: allow dynamic creation after nullable absence reads (#518) (GitHub)

    * test(modeling): characterize dynamic creation after nullable reads

    Capture the distinction between unread identities and resolved absent read targets without changing runtime behavior. These cases describe the current rejection while its intended contract is being established.

    * fix(modeling): allow dynamic creation after nullable absence reads

    Treat a resolved empty target as a valid creation target while retaining its absence or deletion revision. Existing read-only models remain protected by the same write-target rules.

GitHub

2.21.0 (2026-10-17)

Features
  • web: add opt-in origin limits and safe retries (GitHub)

    Isolate outbound execution capacity per origin and support explicit retry safety and jitter within the existing timeout budget. Keep legacy retries and disabled limits as the defaults, and clamp disallowed retries for older proxies.

GitHub

2.20.6 (2026-10-17)

Bug Fixes
  • testing: preserve fixture spies and restore document performance (#512) (GitHub)

    Keep explicit fixture spies effective inside handlers and reduce document reconstruction costs without changing stored formats or serializer contracts.

  • testing: wait consistently for test worker termination (GitHub)

    Use the bounded millisecond join to wait on the same liveness condition as teardown assertions. Preserve release gates, timeout cleanup, and propagation of unobserved worker failures.

  • testing: preserve fixture spies in handler context (GitHub)

    Bind handlers to the complete fixture wrapper so gateway verification and store stubbing remain effective in synchronous and asynchronous fixtures. Keep the native web request fixture wrapper underneath the spy decorator.

Performance Improvements
  • search: integrate document reconstruction improvements (GitHub)

    Reduce document reconstruction costs while preserving stored data, extension points, and explicit fixture spy activation.

  • search: reduce document payload reconstruction allocations (GitHub)

    Avoid materializing ignored metadata paths and per-leaf stream pipelines when reconstructing stored payloads. Reuse a bounded set of short path segments within each conversion while preserving validation, duplicate entries, escaped paths, and the stored format.

  • search: inspect invalidation markers without rebuilding metadata (GitHub)

    Document notifications only need the presence of the Model invalidation marker. Inspect its stored paths directly so large search-exclusion metadata is not reconstructed for ordinary documents, while retaining marker presence semantics and the original stored payload.

Tests
  • testing: guard explicit fixture spy activation (GitHub)
Chores
  • integration: align fixture performance fixes with main (GitHub)
GitHub

2.20.5 (2026-10-17)

Bug Fixes
  • tracking: wake peers when waiting releases segment ownership (GitHub)

    A tracker joining during the first scan can wait without a segment while the original tracker still reserves the full range. Notify waiting peers when that reservation changes so available work does not stall until another publication or the long-poll deadline.

  • serialization: restore constant-specific enum round trips (GitHub)

    Use the declaring enum type and revision when Jackson cannot read a constant-specific subclass. Accept historical subclass envelopes after aliases and upcasters while preserving working custom subtype, key and container codecs.

Tests
  • network: bind local servers directly to ephemeral ports (GitHub)

    Remove fixed ports and released port reservations from real-network tests. Use matching loopback client addresses and verify the actual listening socket so unrelated local services cannot intercept test requests.

  • web: correlate socket replies with their own requests (GitHub)

    Capture the request sent by each fixture so concurrent socket allocations cannot redirect its reply. Preserve the success and failure scenarios with an intervening unrelated request.

GitHub

2.20.4 (2026-10-17)

Bug Fixes
  • modeling: end Graph revision history at creation (#509) (GitHub)

    Exclude the empty pre-creation state consistently across retained and reconstructed Graph history. Preserve deletion revisions, provisional values, metadata-only navigation and the legacy Entity contract.

Documentation
  • auth: clarify provider requirements for user fixtures (#508) (GitHub)
GitHub

2.20.3 (2026-10-17)

Bug Fixes
  • modeling: preserve lookups for absent legacy members (#505) (GitHub)

    Return typed empty member lookups without treating members as persistent aggregate roots. Retain configured validation, replay suppression, inherited root markers and rejection of standalone unmarked writes.

    Preserve typed IDs passed as Object and treat unavailable historical root types as unknown data so event-sourcing failures keep their existing contract.

GitHub

2.20.2 (2026-10-17)

Bug Fixes
  • logging: exclude private web metadata from console diagnostics (GitHub)

    The socket failure log passes through the console appender, which previously copied headers, query values and session metadata. Retain only method and bounded path while preserving correlation, explicit application diagnostics and original causes, including malformed requests.

  • logging: preserve stable diagnostic message patterns (GitHub)

    Keep diagnostic text as log arguments so grouping remains stable while retaining the original exception and FZ report through socket and console error handling.

  • web: limit SDK error disclosure while preserving diagnostics (GitHub)

    Keep generated authorization details and technical deserialization or socket failures out of caller-facing messages. Preserve explicit functional messages, field validation and original diagnostic causes, and identify socket failures without copying request or response bodies into logs.

GitHub

2.20.1 (2026-10-17)

Bug Fixes
  • tracking: bound controlled shutdown and quiet ingress monitoring (GitHub)

    Apply the shared tracker stop deadline to active batches as well as blocked reads, while deferring interceptor cleanup until worker exit. Announce shutdown before application drain so late ingress progress cannot report stalls, recovery or close an otherwise usable connection.

GitHub

2.20.0 (2026-10-17)

Consumer filtering and fifteen-minute idle reads are enabled automatically with supporting runtimes. Upgrade requirement: persistent legacy aggregate roots and implicit aggregate value parameters must declare or inherit @Aggregate, including calls to loadAggregate. See the 2.x migration guide.

For route filtering, upgrade every Runtime storage reader before enabling native-v2 writes. Filtering can be disabled independently while retaining v2 readers and old-client compatibility; see the tracking and rollout guide.

Features
  • tracking: enable consumer blueprint filtering (#501) (GitHub)

    Enable conservative consumer filtering and longer idle reads on supporting peers, with compatible route envelopes and synchronous fixture admission. Require aggregate markers for persistent legacy roots as documented in the 2.x migration guide.

  • tracking: project consumer routes into message envelopes (GitHub)

    Separate logical route selection from payload serialization and opaque message metadata. Negotiate native routed envelopes per transport session and retain existing object formats for older peers.

  • testing: apply consumer filters in synchronous fixtures (GitHub)

    Reuse effective consumer preparation and header-only serialization descriptions so ordinary fixture expectations expose overly restrictive delivery filters. Preserve synchronous execution, validation order, local handler semantics and conservative admission for unknown contracts.

  • modeling: require markers for persistent aggregate roots (GitHub)

    Reject unmarked roots when loading, creating or persisting aggregates so forgotten annotations fail visibly. Preserve independent Models, members and side-effect-free entity wrappers.

    BREAKING CHANGE: all persistent aggregate roots must declare or inherit @​Aggregate. Empty untyped roots remain available until their type is known, but cannot persist or publish aggregate events without a marked root type.

  • handling: require aggregate markers for implicit value injection (GitHub)

    Derive payload selection from the same explicit argument roles used by the SDK, and remove the aggregate metadata exception from the consumer filter contract.

    BREAKING CHANGE: implicit legacy aggregate value parameters must declare or inherit @​Aggregate. Explicit Entity parameters, entity-context injection and custom resolver overrides retain their resolution paths.

  • tracking: filter consumer delivery on supporting peers (GitHub)

    Project effective handler inputs, legacy migration inputs and compiled web routes into conservative subscription filters. Reuse snapshots across reads and acknowledge selection updates across active connections.

    Enable filtering and fifteen-minute idle waits automatically when the peer advertises support. Preserve legacy delivery, explicit cursors and tracking lifecycle behavior, with application-local overrides.

Bug Fixes
  • web: accept untyped empty JSON responses (GitHub)

    Allow bodyless HTTP replies to retain JSON representation headers while preserving custom deserialization and concrete type errors. Reuse decoded bytes and keep streaming failures on their existing path.

  • tracking: retain shared automatic web routes in consumer filters (GitHub)

    Keep declared helper routes eligible when local registration and grouped consumer preparation choose different owners. Preserve single invocation ownership and explicit HTTP helper precedence.

  • tracking: preserve required inputs in consumer projections (GitHub)

    Project serialized batch transformations before narrowing delivery, keep every refresh listener reachable after failures, and retain proven alias and Graph boundaries. Describe socket lifecycle inputs without broadening unrelated HTTP traffic, including handshakes shared by local and tracked factories.

  • serialization: register caster batches atomically (GitHub)

    Publish a complete caster snapshot only after all candidates pass conflict checks, preventing active inputs outside an acknowledged consumer blueprint. Keep cancellation scoped to the owning registration so it cannot remove a later replacement.

  • tracking: apply cached type filters to payload names (GitHub)

    Use the configured regular expression as the pattern, matching server-side selection. Keep unknown payload types and unfiltered manual reads eligible.

  • web: align filtered root and socket static routes (GitHub)

    Treat omitted web paths as the root in both dispatch and server selection. Preserve static resources on class-registered socket endpoints independently of session lifecycle.

  • tracking: preserve eligible aliases and extended handler inputs (GitHub)

    Keep partial type aliases and custom wrapper matches eligible for server delivery. Export mandatory self-payload boundaries and preserve resolver-specific selection while retaining broad delivery for incomplete type hierarchies.

  • tracking: describe automatic Model command inputs (GitHub)

    Expose the mandatory payload boundary of automatic Model tracking so these consumers participate in server filtering. Keep open targets, arrays and the unrestricted local matcher broad, and retain wrapper-based scheduled command relay.

Documentation
  • tracking: describe online filtering rollback (GitHub)
  • tracking: explain staged route storage activation (GitHub)
  • handling: document aggregate markers in the 2.x upgrade guide (GitHub)
Tests
  • tracking: await scan progress before retargeting aliases (GitHub)

    Append completion only acknowledges storage. Establish the excluded scan position before changing the alias so asynchronous admission cannot reinterpret the earlier message.

  • tracking: cover API reference routes under consumer filtering (GitHub)
  • tracking: preserve implicit legacy entity arguments (GitHub)

    Guard aggregate-state arguments supplied independently of the event payload. This earlier regression coverage was subsequently updated for the final 2.x contract: persistent legacy aggregate roots and implicit aggregate value parameters must declare or inherit the Aggregate annotation.

  • tracking: publish peer reads after cache admission (GitHub)

    Make observing the initial read establish cache and pending-state readiness before deliberately clearing the cache. This prevents the initial admission from racing the reconnect scenario.

  • web: keep route fixture assets in the server module (GitHub)

    Own static test resources alongside the transport contract so registration works with packaged SDK test artifacts as well as reactor directories.

  • tracking: synchronize consumer progress and metric observations (GitHub)

    Retain read observations that precede expected-index publication and deduplicate progress per consumer. Await metric enqueue before snapshot fences so fast reads cannot escape the measured counts.

Chores
  • sdk: integrate current main before consumer filtering release (GitHub)
GitHub

1.292.39 (2026-10-17)

Bug Fixes
  • web: document implicit root routes as slash (GitHub)

    Normalize documentation paths with the existing router convention so implicit roots and absolute origins without a path produce valid OpenAPI. Preserve route composition and operation origins.

Tests
  • proxy: preserve byte parts under reentrant demand (GitHub)

    Use the established JDK publisher for fixed-length test requests so reentrant demand cannot duplicate bytes. Keep the original small parts and HTTP chunking contract.

GitHub

1.292.38 (2026-10-17)

Bug Fixes
  • tracking: include topic in position metrics (GitHub)

    Carry the endpoint topic in StorePosition so document collections and custom streams can be identified in metrics. Keep unscoped entry points, routing and endpoint-owned storage semantics compatible.

GitHub

1.292.37 (2026-10-17)

Bug Fixes
  • tracking: wake peers reassigned during a concurrent claim (GitHub)

    Use the actual atomic cluster transition to find reassigned peers so concurrent tracker registration cannot leave available work waiting for another publication. Keep stable waits and active segment reservations intact.


© 2026 Fluxzero