Repository navigation
Releases
RunicArtifex.ReactiveUI.Validation 9.0.0
What's Changed
- Complete generated validation capabilities by @ViktorJannicke in #3
- Publish upstream reviews as artifacts and tracking issues by @ViktorJannicke in #4
- Accept the current generated gate report in the release guard by @ViktorJannicke in #5
- Version releases as 9.0.0-runic.N with Nerdbank.GitVersioning by @ViktorJannicke in #6
- Restore RunicArtifex.DynamicData 10.0.0-runic.118 from nuget.org by @ViktorJannicke in #7
- Publish to nuget.org as RunicArtifex.ReactiveUI.Validation with trusted publishing by @ViktorJannicke in #8
- Release 9.0.0 as the first stable version, on DynamicData 10.0.0 by @ViktorJannicke in #9
Full Changelog: v8.1.0...v9.0.0
RunicArtifex.ReactiveUI.Validation 9.0.0-runic.9
What's Changed
- Restore RunicArtifex.DynamicData 10.0.0-runic.118 from nuget.org by @ViktorJannicke in #7
- Publish to nuget.org as RunicArtifex.ReactiveUI.Validation with trusted publishing by @ViktorJannicke in #8
Full Changelog: v9.0.0-runic.1...v9.0.0-runic.9
Runic ReactiveUI.Validation 9.0.0-runic.1
What's Changed
- Complete generated validation capabilities by @ViktorJannicke in #3
- Publish upstream reviews as artifacts and tracking issues by @ViktorJannicke in #4
- Accept the current generated gate report in the release guard by @ViktorJannicke in #5
- Version releases as 9.0.0-runic.N with Nerdbank.GitVersioning by @ViktorJannicke in #6
Full Changelog: https://github.com/Runic-Artifex/ReactiveUI.Validation/commits/v9.0.0-runic.1
Runic ReactiveUI.Validation 8.1.0-runic.0.790.17.15
Runic ReactiveUI.Validation 8.1.0-runic.0.790.17.15
This release adds explicit observable validation for applications that supply their own observations and typed callbacks. Six new methods are shared by both flavors: four AddObservableRule overloads accept complete-state or value streams on a context or view model, while BindObservableValidationState and BindObservablePropertyValidationState follow explicit model/helper/context selection streams and assign projected results through ordinary delegates.
Full property paths retain error metadata and exclusive matching. Helpers capture their registration context, remove their own rule on disposal and roll back failed registration. Bindings detach replaced/null selections and preserve custom state values. Applications own initial observations, asynchronous cancellation and UI dispatch.
Producer AOT/trim analysis narrows annotation boundaries around generated OAPH constructors, supplied-observable rules and metadata-only selectors. False RequiresDynamicCode annotations are removed; legacy reflection observation and target assignment retain RequiresUnreferencedCode. No blanket IsAotCompatible declaration is added.
Realistic package consumers cover reusable generic fields, nullable nested editors with rich typed targets, independent blocking/advisory cross-field rules, dynamic rows with asynchronous result state, and the existing observable foundation. Application adapters also verify synchronous initial replacement/null, disposal, notification snapshots and cleanup when initial getters or callbacks throw.
Release source: f22d2bb42c30d66df19a59333ed4fa633b241940. The dependency cohort remains .NET 10 / SDK 10.0.401, ReactiveUI and ReactiveUI.Reactive 26.0.1, and matching Runic.DynamicData 10.0.0-runic.5 packages.
Final CI passes 618 core tests per OS (309 per flavor), zero failed/skipped, both package graphs and the strict five-case safe console subset. Actual Linux x64 and Windows x64 NativeAOT consumers pass with zero candidate warnings/errors using that CI run's verified Ubuntu package pair. Local Linux verification also passes standalone full-trim execution. The release workflow passes all five jobs, repeats the complete matrix and publishes its own exact Ubuntu package artifact verified by that run's two native RID jobs. The tag, nuspec source and independently downloaded assets are verified.
A Validation generator is design only; no generator package or MVP ships. The supported scope is these tested console paths and dependency cohort. UI platforms, bridge/browser behavior, other RIDs and untested legacy overloads are outside that claim. Earlier .790.17 release assets and their warning-bearing investigation results remain immutable.
| Published asset | SHA-256 |
|---|---|
Runic.ReactiveUI.Validation.8.1.0-runic.0.790.17.15.nupkg |
17be4c3b5f46e9ff237b5f89bf97c4ff1f47b5dfef9abd250516cc454c57e95f |
Runic.ReactiveUI.Validation.Reactive.8.1.0-runic.0.790.17.15.nupkg |
08d6087dbd86e0ae92f1230275351240d8b2e32b7765e5b6c2b31e8ae47b4fd2 |
Runic ReactiveUI.Validation 8.1.0-runic.0.790.17
Runic ReactiveUI.Validation 8.1.0-runic.0.790.17
Release version/tag: 8.1.0-runic.0.790.17 / runic-v8.1.0-runic.0.790.17.
Published GitHub release on 2026-10-05 at 19:50:16 UTC.
Source/tag target: c9fa501c4d2e9442d85693dae77bb6f727e9eb7a.
The release workflow passed its own 594 tests and all package/example gates.
Bindings now detach replaced or null models/helpers and dispose safely more than
once. Context membership and current validation update synchronously, so adding
or removing a blocking rule changes same-turn command admission correctly.
Both flavors retain their existing API and add 14 methods for explicit
validation contexts and typed state bindings. Keep blocking rules independent
from advisory contexts, and project complete rule states into typed properties
or callbacks. Shared collection recipes cover initial empty state, child edits,
replacement/removal and disposal. An opt-in BenchmarkDotNet solution measures
both flavors; its reports include exact sources and shared-host limitations.
Observable delivery change: public ValidationContext.Validations,
Valid and ValidationStatusChange now deliver on the owning model
context. IsValid and Text remain scheduled presentation properties.
Native/UI consumers must dispatch at their presentation boundary when they need
a different thread or scheduler. Serialize model mutations on their owner.
Supported cohort: .NET 10, SDK 10.0.401, ReactiveUI /
ReactiveUI.Reactive 26.0.1, and released Runic.DynamicData /
Runic.DynamicData.Reactive 10.0.0-runic.5. DynamicData release source:
edd2d175794afc86e964a06cb55329f44793009f. Bootstrap verified both hashes:
| Dependency package | SHA-256 |
|---|---|
| Runic.DynamicData | ebd6e4329af148f8a1b3caa00e1391726e2379872b027a693cce787718055366 |
| Runic.DynamicData.Reactive | 49f3e11fdd62b357b376ee26b45deca94cbfc1a52a918bc228aff09c92fc5268 |
Verification: local Release build passed with zero warnings/errors; 594 tests
passed (297 per flavor), zero failed/skipped. Both ordinary collection examples,
eight negative package-graph tests and both expanded independent package
consumers passed. Consumers verify exact versions, matching flavors, exclusion
of both upstream DynamicData IDs and no System.Reactive in Primitives.
CI run 37363825486
at the exact source above passed both OS jobs in attempt 2: Windows attempt 1
completed all gates, and the Linux-only retry passed every gate at the same
source: 594 tests per OS (297 per flavor), zero failed/skipped, eight guard
tests each, clean builds, both examples and both expanded consumers. The initial
Linux attempt executed no work because a hosted runner was
not acquired. Both OS verification package versions were 8.1.0-runic.0.790.17;
the earlier local pair was .804 because version-tag metadata differed.
The published release identity is recorded above.
No new platform or blanket Native AOT support is claimed. SDK scheduler probes
cover source adapters, rather than end-to-end bridge/browser behavior. Final
benchmarks are provisional throughput measurements, not UI-latency or comparative
performance guarantees.
Published assets were downloaded and verified against API SHA-256 values:
| Release asset | SHA-256 |
|---|---|
Runic.ReactiveUI.Validation.8.1.0-runic.0.790.17.nupkg |
5d3c5261324181b7d8b995cc7b242977adba21a0ad81c361a4d4bd8a163d14df |
Runic.ReactiveUI.Validation.Reactive.8.1.0-runic.0.790.17.nupkg |
e3ba50fa1ad991912bd2d243a923c25055e9d434fb6d7c2eb840cf1ebbd5cb4b |