Skip to content

Release digest for week of 2026-05-18 to 2026-05-25

  • Chronicle.TypeScript (Release v0.2.0): Top-level module re-exports from the package entrypoint to support module-style consumption.
  • Chronicle.TypeScript (Release v0.2.0): Explicit top-level subpath exports in Source/package.json for redistributable module access.
  • Chronicle (Release v15.31.0): New Roslyn analyzers CHR0015–CHR0021 for projections, constraints, and event types, with documentation for each rule. (#1669)
  • Chronicle (Release v15.31.0): Replay lifecycle notification hooks for reducers and reactors so handlers can react when a replay or partition replay starts and ends. (#1820)
  • Chronicle (Release v15.31.0): Tail event sequence numbers in observer, reducer, reactor, and projection state APIs. (#587)
  • Fundamentals (Release v7.10.0): Cratis.Traces abstractions and implementations: IActivitySource<T>, IActivityScope<T>, ActivitySource<T>, ActivityScope<T>, and SpanAttribute
  • Fundamentals (Release v7.10.0): Generator support for [Span] methods that start activities and map method parameters to tags
  • Fundamentals (Release v7.10.0): Analyzer CRT0001 to require using disposal semantics for IActivityScope<T> call sites
  • Fundamentals (Release v7.10.0): Documentation/csharp/traces/index.md and Documentation/csharp/traces/roslyn.md for the trace API and generated span support
  • Fundamentals (Release v7.10.0): Expanded runtime, AOT, generator, and analyzer specs for trace behavior and diagnostics
  • Fundamentals (Release v7.10.0): Roslyn spec coverage for generated trace extension methods, including tag generation
  • Arc (Release v20.26.0): Added typed CommandForm radio fields (RadioButtonField, RadioGroupField) with docs, stories, typecheck coverage, and field behavior specs (#2228)
  • Arc (Release v20.26.0): Added regression coverage for generated-style command .use() registration inside CommandScope (#2227)
  • Arc (Release v20.26.0): Added hierarchical messaging primitives in @cratis/arc/messaging, React messenger scope APIs, and scoped messaging docs/specs across Core/React/MVVM (#2231)
  • Components (Release v1.10.2): Introduced dynamic theme switching for PrimeReact components.
  • Arc (Release v20.25.0): Added typed CommandForm radio fields (RadioButtonField, RadioGroupField) with docs, stories, typecheck coverage, and field behavior specs (#2228)
  • Arc (Release v20.25.0): Added regression coverage for generated-style command .use() registration inside CommandScope (#2227)
  • Arc (Release v20.25.0): Added hierarchical messaging primitives in @cratis/arc/messaging, React messenger scope APIs, and scoped messaging docs/specs across Core/React/MVVM (#2231)
  • Narrator (Release v1.0.2): Arrow Left / Arrow Right page the Event Sequence viewer backward / forward, alongside the existing Page Up / Page Down shortcuts. Up / Down still move row-by-row within a page.
  • Narrator (Release v1.0.0): Browse events in a Chronicle event sequence directly from the Explorer. The Sequences folder under each namespace now lists the well-known event sequences (Event Log, Outbox, System); clicking one opens a paged event viewer (50 per page, bi-directional) with Seq #, Occurred, Event Type and Event Source ID columns.
  • Narrator (Release v1.0.0): Details pane on the event viewer with Context / Content tabs, both rendered as key/value property tables.
  • Narrator (Release v1.0.0): Keyboard navigation in the event viewer: Up/Down move between rows (transparently paging across page boundaries), Home/End jump to the page edges, PageUp/PageDown move whole pages.
  • Chronicle (Release v15.30.2): TypeScript contract generation now maps proto int64/uint64 fields to bigint.
  • Arc (Release v20.24.27): Added a packaging integration spec (for_CratisPackage/when_packing_cratis) that packs Cratis and asserts Cratis.Arc.ProxyGenerator.Build is present in the generated nuspec dependencies (#2225)
  • Arc (Release v20.24.26): Added a packaging integration spec (for_CratisPackage/when_packing_cratis) that packs Cratis and asserts Cratis.Arc.ProxyGenerator.Build is present in the generated nuspec dependencies (#2225)
  • Arc (Release v20.24.25): Updated Chronicle package baselines to 15.30.0 for Cratis.Chronicle, Cratis.Chronicle.AspNetCore, and Cratis.Chronicle.Testing.
  • Fundamentals (Release v7.9.19): Added a regression spec covering a local implementation of an interface from a non-global aliased assembly
  • Fundamentals (Release v7.9.18): Added EnsureGeneratedTypeDiscoveryProvidersAreRegistered() to load referenced assemblies and execute module constructors prior to generated DI convention lookup.
  • Fundamentals (Release v7.9.18): Added a dedicated probe test assembly (Fundamentals.Specs.ModuleInitializerProbe) that contributes convention-based bindings via generated type discovery.
  • Fundamentals (Release v7.9.18): Added a regression spec covering the “assembly loaded before module initializer runs” scenario.
  • Fundamentals (Release v7.9.17): Added EnsureGeneratedTypeDiscoveryProvidersAreRegistered() to load referenced assemblies and execute module constructors prior to generated DI convention lookup.
  • Fundamentals (Release v7.9.17): Added a dedicated probe test assembly (Fundamentals.Specs.ModuleInitializerProbe) that contributes convention-based bindings via generated type discovery.
  • Fundamentals (Release v7.9.17): Added a regression spec covering the “assembly loaded before module initializer runs” scenario.
  • Arc (Release v20.24.14): Updated Chronicle package baselines to 15.30.0 for Cratis.Chronicle, Cratis.Chronicle.AspNetCore, and Cratis.Chronicle.Testing.
  • Arc (Release v20.24.8): Added a regression spec for MongoDBClientFactory verifying mongodb://.../?directConnection=true remains effective when MongoDBOptions.DirectConnection is not explicitly set (#3284)
  • Chronicle (Release v15.30.0): IAppendResultForObserverCompletion as a shared append-tail contract across append results, including event-store/namespace/sequence context and tail sequence number (#1845)
  • Chronicle (Release v15.30.0): WaitForCompletion client extension in Cratis.Chronicle.Observation returning AppendResultWaitForCompletionResult with completion status and failed partitions (#1845)
  • Chronicle (Release v15.30.0): IObservers.WaitForCompletion gRPC contract plus request/response messages for observer completion waits (#1845)
  • Chronicle (Release v15.30.0): Documentation for WaitForCompletion usage after both Append and AppendMany operations (#1845)
  • Chronicle (Release v15.30.0): Integration coverage for append/observer workflows with failing and concurrently processing observers to verify active observer processing behavior during failures (#1845)
  • Arc (Release v20.24.6): Added command-scenario coverage proving handlers can take direct ReadModel dependencies in Chronicle command tests. (#2212)
  • Arc (Release v20.24.6): Added Chronicle command-scenario fixtures for the ReadModel dependency test path, including a projection type used for discovery. (#2212)
  • Chronicle (Release v15.29.8): Introduced logging for registration failures.
  • Chronicle (Release v15.29.7): Focused spec coverage ensuring directConnection=true is preserved when building MongoDB client settings in the WithMongoDB path.
  • Chronicle (Release v15.29.6): Added Storage.MongoDB specs covering directConnection=true behavior for Database, read-model database creation, EventStoreDatabase, and EventStoreNamespaceDatabase.
  • Chronicle (Release v15.29.4): Focused spec for ProjectionDefinitionComparer validating that Tags/Nested null and empty forms compare as equivalent.
  • Arc (Release v20.24.0): CommandScenarioChronicleAssertionExtensions — new ShouldHaveAppendedEvent<TCommand, TEvent>() and ShouldHaveTailSequenceNumber<TCommand>() assertion helpers for CommandScenario<TCommand>, using the client-side AppendOperations observable for reliable event capture
  • Arc (Release v20.24.0): AppendedEvents extension property on CommandScenario<TCommand> exposing all events captured during command execution
  • Arc (Release v20.24.0): Integration specs covering EventForEventSourceId and IEnumerable<EventForEventSourceId> handler return types via CommandScenario
  • Arc (Release v20.24.0): Pipeline specs for EventForEventSourceId and IEnumerable<EventForEventSourceId> command handler execution
  • Chronicle.TypeScript (Release v0.2.0): Consolidated the feature work from the open PR branches into this integration PR.
  • Chronicle.TypeScript (Release v0.2.0): Renamed Source module folders from PascalCase to camelCase across the package.
  • Chronicle.TypeScript (Release v0.2.0): Updated internal imports/re-exports to match the new module folder naming.
  • Chronicle.TypeScript (Release v0.2.0): Updated JavaScript/TypeScript AI instructions to state the redistributable package convention: camelCase Source modules plus top-level package exports.
  • Arc (Release v20.26.16): Bumped Cratis.Fundamentals and Cratis.Metrics.Roslyn from 7.9.16 to 7.10.3.
  • Arc (Release v20.26.16): Bumped Testcontainers.MsSql and Testcontainers.PostgreSql from 4.11.0 to 4.12.0.
  • Arc (Release v20.26.16): Bumped Meziantou.Analyzer from 3.0.85 to 3.0.93.
  • Arc (Release v20.26.15): Bumped Cratis.Fundamentals and Cratis.Metrics.Roslyn from 7.9.16 to 7.10.3.
  • Arc (Release v20.26.15): Bumped Testcontainers.MsSql and Testcontainers.PostgreSql from 4.11.0 to 4.12.0.
  • Arc (Release v20.26.15): Bumped Meziantou.Analyzer from 3.0.85 to 3.0.93.
  • Chronicle (Release v15.31.0): Compliance storage documentation now includes Azure Key Vault configuration and authentication guidance. (#685)
  • Chronicle (Release v15.31.0): Event redaction documentation now explains how EventRedacted is delivered to reducers and reactors that also subscribe to the original event type. (#890)
  • Fundamentals (Release v7.10.0): Cratis.Metrics.Roslyn generates trace wrappers alongside existing metrics generation
  • Fundamentals (Release v7.10.0): Typed IMeter<> and IActivitySource<> open generics are registered through DI
  • Fundamentals (Release v7.10.0): Tag generation supports snake_case trace tags, including acronym-aware conversion
  • Fundamentals (Release v7.10.0): The C# documentation table of contents includes the new traces section
  • Fundamentals (Release v7.10.0): Trace documentation and examples now prefer extension-method span declarations and call sites on IActivitySource<T>
  • Arc (Release v20.26.0): Changed CommandForm/generated command usage so the internal command version stays inside CommandForm while public .use() hooks align to the 3-tuple useCommand API (#2227)
  • Arc (Release v20.26.0): Changed Arc root and MVVM wiring to resolve the nearest scoped messenger with root fallback, and updated package exports for new messaging entry points (#2231)
  • Arc (Release v20.26.0): Changed change-stream spec infrastructure to isolate fake subscriptions/query cache state per spec and avoid cross-test leakage (#2227)
  • Components (Release v1.10.2): Improved styling and class names for better consistency.
  • Components (Release v1.10.2): Updated theme import strategy to support dynamic theming.
  • Arc (Release v20.25.0): Changed CommandForm/generated command usage so the internal command version stays inside CommandForm while public .use() hooks align to the 3-tuple useCommand API (#2227)
  • Arc (Release v20.25.0): Changed Arc root and MVVM wiring to resolve the nearest scoped messenger with root fallback, and updated package exports for new messaging entry points (#2231)
  • Arc (Release v20.25.0): Changed change-stream spec infrastructure to isolate fake subscriptions/query cache state per spec and avoid cross-test leakage (#2227)
  • Narrator (Release v1.0.0): Breaking: upgrade @cratis/chronicle.contracts from 15.22.13 to 15.30.2. The contracts now ship bigint sequence numbers and a nice-grpc promise-based client surface in place of the previous grpc-js callback *Client constructors. Anyone forking or embedding ChronicleClientManager will need to adapt accordingly.
  • Narrator (Release v1.0.0): Gateway sequence numbers are converted to number at the boundary, clamping ulong.MaxValue to Number.MAX_SAFE_INTEGER (the Chronicle “no events yet” sentinel). Real event sequence numbers cannot legitimately exceed 2^53, so the clamp has no observable effect on real data.
  • Chronicle (Release v15.30.2): Updated @cratis/chronicle.contracts generation options to use ts-proto with forceLong=bigint.
  • Chronicle (Release v15.30.2): Updated TypeScript package and contributor documentation to reflect bigint handling for 64-bit fields.
  • Arc (Release v20.24.27): Updated Source/DotNET/Cratis/Cratis.csproj to keep ProxyGenerator.Build as a regular project dependency so NuGet emits it as a package dependency and buildTransitive assets flow to consumers again (#2225)
  • Arc (Release v20.24.27): Updated the regressing Chronicle spec setup in when_handler_takes_read_model_dependency to match the IReadModels.GetInstanceById(...) invocation and explicitly register AccountBalanceReadModel in scenario DI (#2225)
  • Arc (Release v20.24.27): Updated .github/workflows/dotnet-build.yml checkout steps to use the PR head SHA on pull_request_target runs instead of implicitly testing the base branch checkout (#2225)
  • Arc (Release v20.24.26): Updated Source/DotNET/Cratis/Cratis.csproj to keep ProxyGenerator.Build as a regular project dependency so NuGet emits it as a package dependency and buildTransitive assets flow to consumers again (#2225)
  • Arc (Release v20.24.26): Updated the regressing Chronicle spec setup in when_handler_takes_read_model_dependency to match the IReadModels.GetInstanceById(...) invocation and explicitly register AccountBalanceReadModel in scenario DI (#2225)
  • Arc (Release v20.24.26): Updated .github/workflows/dotnet-build.yml checkout steps to use the PR head SHA on pull_request_target runs instead of implicitly testing the base branch checkout (#2225)
  • Arc (Release v20.24.25): Reflection binding
  • Arc (Release v20.24.25): ReadModelServiceCollectionExtensions now resolves the generic single-parameter IReadModels.Release<T>(T) method instead of the removed two-parameter overload.
  • Arc (Release v20.24.25): Read model resolution flow
  • Arc (Release v20.24.25): ResolveReadModel now keeps subject-based branching and only invokes release when commandContext.GetSubject() is present.
  • Arc (Release v20.24.25): The release invocation uses the new Chronicle-compatible method shape (Release<T>(T)).
  • Arc (Release v20.24.25): Spec expectations
  • Arc (Release v20.24.25): Updated read model resolution specs to assert single-parameter release calls where subject is present.
  • Arc (Release v20.24.25): Restored the no-subject behavior to return the loaded read model without invoking release.
  • Chronicle (Release v15.30.1): EventSourceType, EventStreamType, and EventStreamId are now string? (nullable) across all EventSequence gRPC contract types; clients send null when unspecified instead of pre-applying defaults (#3259)
  • Chronicle (Release v15.30.1): Required fields (EventStore, Namespace, EventSequenceId, EventSourceId, EventType, Content, etc.) are now annotated with IsRequired = true on their ProtoMember across all EventSequence request/payload contracts (#3259)
  • Chronicle (Release v15.30.1): Kernel service layer (EventSequences.cs) and EventToAppendConverters apply EventSourceType.Default / EventStreamType.All / EventStreamId.Default when null arrives, consistent with the existing GetTailSequenceNumber null-passthrough pattern (#3259)
  • Chronicle (Release v15.30.1): DotNET client resolves defaults locally only for concurrency scope resolution and local event-context notification; the wire values are sent as null when the caller does not specify them (#3259)
  • Chronicle (Release v15.30.1): Cratis.Fundamentals and Cratis.Metrics.Roslyn upgraded to 7.9.19; the updated generator correctly filters non-global aliased assembly contracts, removing the need for the InMemoryKernelEventTypes nested-class workaround
  • Arc (Release v20.24.17): Reflection binding
  • Arc (Release v20.24.17): ReadModelServiceCollectionExtensions now resolves the generic single-parameter IReadModels.Release<T>(T) method instead of the removed two-parameter overload.
  • Arc (Release v20.24.17): Read model resolution flow
  • Arc (Release v20.24.17): ResolveReadModel now keeps subject-based branching and only invokes release when commandContext.GetSubject() is present.
  • Arc (Release v20.24.17): The release invocation uses the new Chronicle-compatible method shape (Release<T>(T)).
  • Arc (Release v20.24.17): Spec expectations
  • Arc (Release v20.24.17): Updated read model resolution specs to assert single-parameter release calls where subject is present.
  • Arc (Release v20.24.17): Restored the no-subject behavior to return the loaded read model without invoking release.
  • Fundamentals (Release v7.9.19): Filter generated contract maps and convention bindings to exclude external contracts from non-global aliased references
  • Fundamentals (Release v7.9.19): Scoped the ModuleInitializerProbe reference and its probe-backed spec to the net10.0 target in Fundamentals.Specs
  • Fundamentals (Release v7.9.19): Made the ModuleInitializerProbe project target framework configuration explicit for Debug and Release builds
  • Arc (Release v20.24.16): Reflection binding
  • Arc (Release v20.24.16): ReadModelServiceCollectionExtensions now resolves the generic single-parameter IReadModels.Release<T>(T) method instead of the removed two-parameter overload.
  • Arc (Release v20.24.16): Read model resolution flow
  • Arc (Release v20.24.16): ResolveReadModel now keeps subject-based branching and only invokes release when commandContext.GetSubject() is present.
  • Arc (Release v20.24.16): The release invocation uses the new Chronicle-compatible method shape (Release<T>(T)).
  • Arc (Release v20.24.16): Spec expectations
  • Arc (Release v20.24.16): Updated read model resolution specs to assert single-parameter release calls where subject is present.
  • Arc (Release v20.24.16): Restored the no-subject behavior to return the loaded read model without invoking release.
  • Arc (Release v20.24.15): Reflection binding
  • Arc (Release v20.24.15): ReadModelServiceCollectionExtensions now resolves the generic single-parameter IReadModels.Release<T>(T) method instead of the removed two-parameter overload.
  • Arc (Release v20.24.15): Read model resolution flow
  • Arc (Release v20.24.15): ResolveReadModel now keeps subject-based branching and only invokes release when commandContext.GetSubject() is present.
  • Arc (Release v20.24.15): The release invocation uses the new Chronicle-compatible method shape (Release<T>(T)).
  • Arc (Release v20.24.15): Spec expectations
  • Arc (Release v20.24.15): Updated read model resolution specs to assert single-parameter release calls where subject is present.
  • Arc (Release v20.24.15): Restored the no-subject behavior to return the loaded read model without invoking release.
  • Fundamentals (Release v7.9.18): TryAddGeneratedBindingsByConvention() now primes generated discovery providers before enumerating GeneratedTypeDiscoveryRegistry.Providers.
  • Fundamentals (Release v7.9.18): TryAddGeneratedSelfBindings() now uses the same priming flow to avoid the same order-dependent miss.
  • Fundamentals (Release v7.9.18): Assembly traversal runs transitively from loaded/entry references and safely ignores non-loadable/non-managed assemblies.
  • Fundamentals (Release v7.9.17): TryAddGeneratedBindingsByConvention() now primes generated discovery providers before enumerating GeneratedTypeDiscoveryRegistry.Providers.
  • Fundamentals (Release v7.9.17): TryAddGeneratedSelfBindings() now uses the same priming flow to avoid the same order-dependent miss.
  • Fundamentals (Release v7.9.17): Assembly traversal runs transitively from loaded/entry references and safely ignores non-loadable/non-managed assemblies.
  • Arc (Release v20.24.14): Reflection binding
  • Arc (Release v20.24.14): ReadModelServiceCollectionExtensions now resolves the generic single-parameter IReadModels.Release<T>(T) method instead of the removed two-parameter overload.
  • Arc (Release v20.24.14): Read model resolution flow
  • Arc (Release v20.24.14): ResolveReadModel now keeps subject-based branching and only invokes release when commandContext.GetSubject() is present.
  • Arc (Release v20.24.14): The release invocation uses the new Chronicle-compatible method shape (Release<T>(T)).
  • Arc (Release v20.24.14): Spec expectations
  • Arc (Release v20.24.14): Updated read model resolution specs to assert single-parameter release calls where subject is present.
  • Arc (Release v20.24.14): Restored the no-subject behavior to return the loaded read model without invoking release.
  • Arc (Release v20.24.8): Changed MongoDBOptions.DirectConnection from bool to bool? to distinguish “unset” from explicit override (#3284)
  • Arc (Release v20.24.8): Updated option documentation to clarify that an unset option preserves connection-string behavior (#3284)
  • Chronicle (Release v15.30.0): AppendResult and AppendManyResult now expose observer wait context through IAppendResultForObserverCompletion for direct use by the wait extension method (#1845)
  • Chronicle (Release v15.30.0): Append result handling now consistently reports operation tail sequence numbers for completion waits (SequenceNumber vs last SequenceNumbers item) (#1845)
  • Chronicle (Release v15.30.0): Observer-completion waiting now scopes failed-partition retrieval to affected observers to reduce unnecessary data reads (#1845)
  • Arc (Release v20.24.6): Updated ChronicleCommandScenarioExtender to register IReadModels and call AddReadModels(...) with Chronicle client artifacts so ReadModel dependencies are convention-resolved in command scenarios. (#2212)
  • Arc (Release v20.24.6): Updated multiple spec helper types/accessibility and related test scaffolding to align with current type discovery generator behavior. (#2212)
  • Arc (Release v20.24.6): Updated build-tooling project settings to suppress TFM support build warnings required for multi-target Release builds. (#2212)
  • Arc (Release v20.24.6): Updated Chronicle testing documentation to describe direct ReadModel dependency support and test-time IReadModels overrides. (#2212)
  • Arc (Release v20.24.6): Rebased the branch onto latest main and resolved resulting merge conflicts in package/version and MongoDB spec helper files while preserving intended behavior. (#2212)
  • Chronicle (Release v15.29.8): Wrapped connection attempts in try-catch to handle exceptions gracefully.
  • Chronicle (Release v15.29.8): Implemented a rollback mechanism for connection state if handler exceptions occur.
  • Chronicle (Release v15.29.7): WithMongoDB now builds shared MongoClientSettings from the configured connection string and reuses them for:
  • Chronicle (Release v15.29.7): Orleans UseMongoDBClient
  • Chronicle (Release v15.29.7): MongoDB health check client creation
  • Chronicle (Release v15.29.7): This aligns Orleans and health-check behavior with the existing Chronicle storage direct-connection behavior.
  • Chronicle (Release v15.29.6): Updated the Docker get-started MongoDB Compose example to use Cratis__Chronicle__Storage__ConnectionDetails=mongodb://mongodb:27017/?directConnection=true.
  • Chronicle (Release v15.29.6): Updated replica set initialization guidance to advertise localhost:27017 and documented why this works for host access and Chronicle-in-container access.
  • Chronicle (Release v15.29.6): Added guidance to reset volumes (docker compose down -v) when reinitializing a replica set previously created with a different host.
  • Chronicle (Release v15.29.5): Startup now reactivates persisted reducer and reactor observers with stored observer state so they reconcile their running state without waiting for a client connection (#1751)
  • Chronicle (Release v15.29.4): Normalized optional metadata fields before projection definition comparison:
  • Chronicle (Release v15.29.4): Tags: normalize ordering and treat empty as unset.
  • Chronicle (Release v15.29.4): Nested: treat empty as unset.
  • Chronicle (Release v15.29.4): Kept structural comparison behavior unchanged for real definition differences.
  • Chronicle (Release v15.31.3): Model-bound projections that reference their own type via [ChildrenFrom] (self-referential or mutually recursive children) no longer crash the client with StackOverflowException during projection discovery.
  • Chronicle.TypeScript (Release v0.2.0): Resolved integration issues caused by mixed module naming and export paths after consolidation.
  • Chronicle.TypeScript (Release v0.2.0): Verified workspace compile succeeds after consolidation and module/export restructuring.
  • Arc (Release v20.26.19): Upgrading Chronicle with fixes for .NET8/9/10 differentiation on versions for some Microsoft.Extensions.* packages
  • Arc (Release v20.26.16): Cratis.dll no longer leaks typeof() references to the build-time ProxyGenerator.Build helper, which caused FileNotFoundException at runtime in consuming applications.
  • Arc (Release v20.26.15): Cratis.dll no longer leaks typeof() references to the build-time ProxyGenerator.Build helper, which caused FileNotFoundException at runtime in consuming applications.
  • Arc (Release v20.26.14): Observable queries no longer drop paging information from result payloads when the underlying observable emits from a thread that the request-scoped QueryContext AsyncLocal does not flow into (notably the MongoDB change-stream thread).
  • Arc (Release v20.26.13): Observable queries no longer drop paging information from result payloads when the underlying observable emits from a thread that the request-scoped QueryContext AsyncLocal does not flow into (notably the MongoDB change-stream thread).
  • Fundamentals (Release v7.10.3): Type discovery no longer emits typeof() references for assemblies loaded from a NuGet package’s tasks/ (MSBuild task helpers such as Cratis.Arc.ProxyGenerator.Build) or analyzers/ folder. Previously, generated SelfBindings would throw FileNotFoundException at runtime because those DLLs are not copied to the consuming project’s output.
  • Fundamentals (Release v7.10.2): CS1705 raised in downstream consumers targeting net8.0 or net9.0 because the produced Cratis.Fundamentals assemblies referenced Microsoft.Extensions.DependencyInjection.Abstractions 10.x for every target framework. Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, and Microsoft.Extensions.DependencyModel are now pinned per TFM (8.0.x for net8.0, 9.0.13 for net9.0, 10.0.8 for net10.0).
  • Arc (Release v20.26.12): Observable queries no longer drop paging information from result payloads when the underlying observable emits from a thread that the request-scoped QueryContext AsyncLocal does not flow into (notably the MongoDB change-stream thread).
  • Chronicle (Release v15.31.0): EventRedacted deserialization now tolerates original event types that are no longer registered on the client. (#1779)
  • Chronicle (Release v15.31.0): Disposing a ChronicleClient now cancels its owned connection so it does not keep reconnecting during shutdown. (#3140)
  • Chronicle (Release v15.31.0): In-memory read model scenarios now preserve identifier mapping from event source IDs and handle repeated use of the same event type across nested mappings more reliably. (#815)
  • Fundamentals (Release v7.10.0): The gap where trace instrumentation required direct System.Diagnostics primitives in application code
  • Fundamentals (Release v7.10.0): The failure mode where span scopes could be created without using, leaving activities unstopped and parent-child chains incomplete
  • Fundamentals (Release v7.10.0): Missing validation coverage for trace generator diagnostics and analyzer failure modes
  • Fundamentals (Release v7.10.0): Repository markdown lint violations surfaced while adding the new trace documentation
  • Narrator (Release v1.0.8): Publish to the VSCode Marketplace no longer fails with Extension failed Virus check. The previous .vscodeignore left .yarn/cache/ (one zip per dependency, ~400 files) and other dev artifacts in the packaged VSIX, which the Marketplace virus scanner flagged. The ignore file now keeps only the bundled runtime — the VSIX drops from 412 entries to 5 (≈189 KB).
  • Arc (Release v20.26.0): Fixed radio field binding inference and wrapper keying so radio values are typed correctly and multiple radio inputs can bind without key collisions (#2228)
  • Arc (Release v20.26.0): Fixed Arc.React CI regressions in useChangeStream/command-related specs caused by shared test state and render-phase update warnings (#2227)
  • Arc (Release v20.26.0): Fixed scoped messenger propagation semantics to default to local publish + recursive trickle-down with explicit opt-in bubbling to parent scopes (#2231)
  • Arc (Release v20.25.0): Fixed radio field binding inference and wrapper keying so radio values are typed correctly and multiple radio inputs can bind without key collisions (#2228)
  • Arc (Release v20.25.0): Fixed Arc.React CI regressions in useChangeStream/command-related specs caused by shared test state and render-phase update warnings (#2227)
  • Arc (Release v20.25.0): Fixed scoped messenger propagation semantics to default to local publish + recursive trickle-down with explicit opt-in bubbling to parent scopes (#2231)
  • Narrator (Release v1.0.0): Sequence browsing under a namespace no longer shows “Sequence browsing requires an event source ID” — actual sequence leaves are surfaced and openable.
  • Chronicle (Release v15.30.2): Eliminates decode failures in TypeScript/Node clients caused by forceLong=number safe-integer limits when receiving sentinel or other large uint64 values.
  • Arc (Release v20.24.27): Restored transitive proxy generation behavior for projects that rely on <PackageReference Include="Cratis" /> + CratisProxiesOutputPath without an explicit Cratis.Arc.ProxyGenerator.Build reference (#2225)
  • Arc (Release v20.24.27): Fixed intermittent CI failures in for_CommandScenario.when_handler_takes_read_model_dependency.and_command_is_executed caused by cross-test read-model registration ordering in Chronicle.Specs (#2225)
  • Arc (Release v20.24.27): Fixed false regression CI failures caused by .NET Build jobs testing origin/main instead of the PR changes in pull_request_target executions (#2225)
  • Arc (Release v20.24.26): Restored transitive proxy generation behavior for projects that rely on <PackageReference Include="Cratis" /> + CratisProxiesOutputPath without an explicit Cratis.Arc.ProxyGenerator.Build reference (#2225)
  • Arc (Release v20.24.26): Fixed intermittent CI failures in for_CommandScenario.when_handler_takes_read_model_dependency.and_command_is_executed caused by cross-test read-model registration ordering in Chronicle.Specs (#2225)
  • Arc (Release v20.24.26): Fixed false regression CI failures caused by .NET Build jobs testing origin/main instead of the PR changes in pull_request_target executions (#2225)
  • Arc (Release v20.24.25): Eliminated the static-constructor failure path (Sequence contains no matching element) caused by looking up a removed Chronicle API overload.
  • Chronicle (Release v15.30.1): Storage.MongoDB build errors (CS0266) caused by DirectConnection changing from bool to bool? after Cratis.Arc.MongoDB upgrade; comparisons updated to == true
  • Chronicle (Release v15.30.1): Testing.Specs runtime assembly load failure; added Cratis.Arc and Cratis.Arc.Core package references so generator-emitted Arc service bindings resolve at runtime
  • Chronicle (Release v15.30.1): Aspire.csproj build error (ASPIREPROBES001) from generator-emitted IResourceWithProbes contract mapping against an evaluation-only Aspire API; suppressed via NoWarn
  • Chronicle (Release v15.30.1): Server.csproj build error (CS0436) from generator-emitted Program self-binding conflicting with the imported Cratis.Chronicle.Api.Program; suppressed via NoWarn
  • Chronicle (Release v15.30.1): Server startup InvalidOperationException caused by Arc 20.24.10+ auto-registering [Singleton]-annotated Storage.Sql classes from all loaded assemblies, overriding the MongoDB IDatabase registration; removed [Singleton] from SQL-specific classes and added explicit registrations to SqlChronicleBuilderExtensions.WithSql
  • Chronicle (Release v15.30.1): Server startup InvalidOperationException in MongoDB mode caused by AddBindingsByConvention() also registering SQL storage implementations (e.g. EventSequenceMigrator) which require ITableMigrator<> — only available in SQL mode; added symmetric removal of Cratis.Chronicle.Storage.Sql.* service registrations in MongoDB mode in Program.cs
  • Chronicle (Release v15.30.1): Integration test timeouts in WaitTillReachesEventSequenceNumber (ProjectionWaitExtensions, ReducerWaitExtensions, ReactorWaitExtensions) caused by exact equality (==) check that never
  • Arc (Release v20.24.17): Eliminated the static-constructor failure path (Sequence contains no matching element) caused by looking up a removed Chronicle API overload.
  • Arc (Release v20.24.17): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
  • Fundamentals (Release v7.9.19): Prevented generated type-discovery metadata from referencing contracts that are only available through a non-global alias
  • Fundamentals (Release v7.9.19): Fixed the root dotnet test --configuration Release build failure caused by the Fundamentals.Specs multi-targeted Release build referencing a net10.0-only probe project
  • Arc (Release v20.24.16): Eliminated the static-constructor failure path (Sequence contains no matching element) caused by looking up a removed Chronicle API overload.
  • Arc (Release v20.24.16): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
  • Arc (Release v20.24.15): Eliminated the static-constructor failure path (Sequence contains no matching element) caused by looking up a removed Chronicle API overload.
  • Arc (Release v20.24.15): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
  • Fundamentals (Release v7.9.18): Fixed order-dependent omission of convention bindings from referenced assemblies whose [ModuleInitializer] had not yet fired at DI registration time.
  • Fundamentals (Release v7.9.18): Fixed equivalent gap for generated self-bindings.
  • Fundamentals (Release v7.9.17): Fixed order-dependent omission of convention bindings from referenced assemblies whose [ModuleInitializer] had not yet fired at DI registration time.
  • Fundamentals (Release v7.9.17): Fixed equivalent gap for generated self-bindings.
  • Arc (Release v20.24.14): Eliminated the static-constructor failure path (Sequence contains no matching element) caused by looking up a removed Chronicle API overload.
  • Arc (Release v20.24.14): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
  • Arc (Release v20.24.13): ProxyGenerator no longer throws NullReferenceException when scanning read model types whose properties implement only the non-generic IEnumerable (without IEnumerable<T>). (#2221)
  • Arc (Release v20.24.12): ProxyGenerator no longer throws NullReferenceException when scanning read model types whose properties implement only the non-generic IEnumerable (without IEnumerable<T>). (#2221)
  • Arc (Release v20.24.11): ProxyGenerator no longer throws NullReferenceException when scanning read model types whose properties implement only the non-generic IEnumerable (without IEnumerable<T>). (#2221)
  • Arc (Release v20.24.10): Adding missing activation for the tenant resolver for Sub domains.
  • Arc (Release v20.24.9): Adding missing activation for the tenant resolver for Sub domains.
  • Arc (Release v20.24.8): Fixed MongoDBClientFactory.CreateImplementation to stop clobbering MongoClientSettings.DirectConnection and only force direct mode when options explicitly set it to true (#3284)
  • Arc (Release v20.24.8): Eliminated the Arc-side regression path that could push startup-time Mongo clients back into replica-set discovery despite directConnection=true in URL (#3287)
  • Chronicle (Release v15.30.0): Observer-completion waiting no longer exits on first failed partition; it now waits until affected observers are complete-or-failed and returns the complete failed-partition set for the operation (#1845)
  • Chronicle (Release v15.30.0): Append and append-many operations now succeed in testing scenarios where observer services are unavailable, preventing spec regressions introduced by observer wait wiring (#1845)
  • Arc (Release v20.24.6): Fixed parity gap where Chronicle command scenarios did not support direct ReadModel dependencies while runtime did. (#2212)
  • Arc (Release v20.24.6): Fixed Release build failures tied to type discovery accessibility and generic discovery/build compatibility in the affected spec/test context. (#2212)
  • Chronicle (Release v15.29.7): Fixed Orleans reminder connectivity failures against single-node replica sets advertising localhost:27017 when Chronicle connects via service DNS with ?directConnection=true.
  • Chronicle (Release v15.29.6): Fixed MongoDB storage configuration so default MongoDBOptions.DirectConnection no longer overrides directConnection=true supplied in the MongoDB connection string.
  • Arc (Release v20.24.4): Cratis NuGet package no longer leaks the build-tool assembly Cratis.Arc.ProxyGenerator.Build as a compile-time reference, fixing runtime FileNotFoundException in consumer apps where Fundamentals’ source-generated GeneratedTypeDiscoveryProvider.SelfBindings referenced types from that assembly.
  • Chronicle (Release v15.29.5): Reducer and reactor observers no longer remain incorrectly active after startup when their previous state was persisted as active but no client is connected (#1751)
  • Arc (Release v20.24.3): Cratis NuGet package no longer leaks the build-tool assembly Cratis.Arc.ProxyGenerator.Build as a compile-time reference, fixing runtime FileNotFoundException in consumer apps where Fundamentals’ source-generated GeneratedTypeDiscoveryProvider.SelfBindings referenced types from that assembly.
  • Chronicle (Release v15.29.4): Prevented false-positive projection definition changes caused by storage/default serialization shape differences.
  • Chronicle (Release v15.29.4): Reduced unnecessary replay/replay-recommendation triggers for projections whose effective definition did not change.
  • Arc (Release v20.24.1): Command response value resolver for `EventForEventSourceId` was using a local version of this type — removing this and making it work with the Chronicle version.
  • Arc (Release v20.24.1): TypeDiscovery generator CS0122 errors caused by `protected` nested types in spec context classes being emitted as contracts in generated code.
  • Arc (Release v20.24.1): TypeDiscovery generator CS0246 error in `InMemoryFluentFind.Cursor` caused by the generated typeof() expression including an unresolvable type parameter name.
  • Fundamentals (Release v7.9.16): TypeDiscovery generator no longer emits `protected` nested types as contracts — such types are inaccessible from generated code at namespace level (CS0122).
  • Fundamentals (Release v7.9.16): TypeDiscovery generator no longer emits types nested inside a generic outer type — their fully-qualified name includes unresolvable type parameter names (CS0246).
  • Chronicle (Release v15.29.3): JsonSchemaGenerator.Generate() no longer crashes with a JsonException when called on a record type that has non-primitive struct properties with default values (e.g. DateTimeOffset OccurredAt = default, Guid Id = default) under .NET 10.
  • Arc (Release v20.26.0): Removed MVVM-owned messenger runtime logic in favor of shared core messaging implementation/re-exports (#2231)
  • Arc (Release v20.26.0): Removed the exposed version element from the public useCommand tuple and generated command hook signatures (#2227)
  • Components (Release v1.10.2): Removed unused theme references and imports.
  • Arc (Release v20.25.0): Removed MVVM-owned messenger runtime logic in favor of shared core messaging implementation/re-exports (#2231)
  • Arc (Release v20.25.0): Removed the exposed version element from the public useCommand tuple and generated command hook signatures (#2227)
  • Narrator (Release v1.0.0): ProtoPatches.ts and its activation. The runtime monkey-patch that clamped BinaryReader.prototype.{uint64, int64, sint64, fixed64, sfixed64} to dodge the ts-proto longToNumber throw is no longer needed — @cratis/chronicle.contracts@15.30.2 was generated with forceLong=bigint and decodes the sentinel cleanly.
  • Chronicle (Release v15.30.2): Removed the kernel-side sequence number saturation approach and related helper/converter changes.
  • Chronicle (Release v15.30.2): Removed specs that only validated the reverted clamping behavior.
  • Arc (Release v20.24.25): Obsolete reflection lookup and invocation path for Release<T>(Subject, T).
  • Arc (Release v20.24.25): Subject-specific release invocation through reflection using the removed overload.
  • Fundamentals (Release v7.10.0): Compile-time enforcement for disposing generated activity scopes, reducing the risk of broken trace lifetimes and incomplete span trees
  • Arc (Release v20.24.27): No security model changes; this PR restores package dependency propagation behavior, stabilizes test setup behavior, and corrects workflow checkout targeting in CI (#2225)
  • Arc (Release v20.24.26): No security model changes; this PR restores package dependency propagation behavior, stabilizes test setup behavior, and corrects workflow checkout targeting in CI (#2225)
  • Arc (Release v20.24.25): No direct security behavior change; this is an API-compatibility and startup-stability fix.
  • Arc (Release v20.24.6): No security-specific changes. (#2212)
  • No updates