From 7761bf18eb358151cf2ee069dd6f168c8fb43663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Mon, 14 Sep 2026 12:57:11 +0200 Subject: [PATCH] Adopt validated Blazor component/template lifetime fixes and release 0.2.2 --- README.md | 2 +- blazor/README.md | 6 +++++- blazor/RELEASE.md | 13 ++++--------- blazor/Version.props | 8 +++++++- blazor/runtime-source | 2 +- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 60dde28..5f0ccbf 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The [complete JavaScript guide](README.web.md) retains all existing API examples ## Blazor ```sh -dotnet add package DynamicDataWeb.Blazor --version 0.2.1 +dotnet add package DynamicDataWeb.Blazor --version 0.2.2 ``` The .NET 8/.NET 10 package bundles the real engine and RxJS for interactive WebAssembly and Server, without a consumer npm/CDN dependency. It provides typed `SourceCache` and `SourceList`, full collection notifications, `DynamicDataProvider`, and `DynamicDataView` with Razor rendering. Native object/function handles also expose advanced operators. diff --git a/blazor/README.md b/blazor/README.md index 7c85b8f..19bc45d 100644 --- a/blazor/README.md +++ b/blazor/README.md @@ -1,6 +1,6 @@ # DynamicDataWeb.Blazor -Install `DynamicDataWeb.Blazor` 0.2.1 for .NET 8/.NET 10. The package includes the actual JavaScript engine and RxJS as local static assets for interactive WebAssembly and Server. +Install `DynamicDataWeb.Blazor` 0.2.2 for .NET 8/.NET 10. The package includes the actual JavaScript engine and RxJS as local static assets for interactive WebAssembly and Server. ## Collections and Razor views @@ -21,3 +21,7 @@ Create the cache after provider `Ready`, and keep it in the parent as shown in t `ConnectAsync` returns the real change stream. Use native method calls and the bundled `Rx` namespace through `BrowserModule`; returned operator functions use `InvokeReferenceAsync` and can be passed into native pipelines without losing identity. Selectors/comparers required synchronously by the engine must execute as browser callbacks, not Server .NET delegates. See [INTEGRATION.md](INTEGRATION.md) for hosting, optional native Razor factories, streaming and ownership. The package is self-contained; its pinned shared source is not a Dockyard runtime dependency. The wrapper complements typed helpers with native API access and retains the engine's documented compatibility limits. + +## Lifecycle in 0.2.2 + +The shared runtime adds deterministic visual/template cleanup, callback suppression after removal, late-import cleanup and awaitable Razor factory disposal. Independent template roots retain state during synchronous DOM movement and coalesce parameter updates. New managed and JavaScript regressions plus actual-package WebAssembly/Server movement/update/recreation tests run alongside collection and RxJS checks. diff --git a/blazor/RELEASE.md b/blazor/RELEASE.md index 36f64a4..92fceb9 100644 --- a/blazor/RELEASE.md +++ b/blazor/RELEASE.md @@ -1,12 +1,7 @@ -# DynamicDataWeb.Blazor 0.2.1 +# DynamicDataWeb.Blazor 0.2.2 -Updates the pinned interop runtime to the tested Dockyard revision `1c895b7184451071e1c7131063249d2d9eb145b9`, without introducing a Dockyard runtime dependency. +Adopts validated shared runtime c833be49d472583b6f56225862e0aa7d201c1da7 from merged Dockyard PR #5. Fixes concurrent visual disposal, late Razor imports/creation, queued callbacks after removal and retained cleanup failures. Includes awaitable template teardown, coalesced updates and lifecycle state properties. -- Preserve cyclic/deep native argument graphs and shared callback identity without mutating inputs. -- Await concurrent native/module/subscription cleanup and asynchronous unsubscribe; continue cleanup after individual failures. -- Preserve property, method and disposal access through native callable handles. -- Honor initialization-wait cancellation without cancelling other callers; prevent disposed owners from starting late native work. -- Add `CallFunctionJsonAsync` for complete streamed callable results. -- Run expanded shared JavaScript and managed regressions against actual .NET 8/.NET 10 package consumers. +Typed SourceCache/SourceList services, full DTO notifications, native RxJS operators and live Razor views remain intact. Root and package guides identify the new version. Eight shared JavaScript lifecycle cases, managed visual/template tests and package-restored template movement/update/recreation run on .NET 8/.NET 10 in WebAssembly and Interactive Server. -Typed caches/lists, RxJS pipelines, live Razor views, complete collection notifications and all native interop APIs remain available. WebAssembly and Interactive Server samples are validated before publication; downloaded public NuGet payloads are compared before creating the versioned release. +NuGet publication remains validation-gated with complete public-payload verification and package/symbol/sample release artifacts. No runtime Dockyard/npm/CDN dependency is introduced. Native callback and engine compatibility contracts remain unchanged. diff --git a/blazor/Version.props b/blazor/Version.props index 37ccc7a..623d46f 100644 --- a/blazor/Version.props +++ b/blazor/Version.props @@ -1 +1,7 @@ -0.2.18.0.2810.0.10 + + + 0.2.2 + 8.0.28 + 10.0.10 + + diff --git a/blazor/runtime-source b/blazor/runtime-source index 16a244c..c833be4 160000 --- a/blazor/runtime-source +++ b/blazor/runtime-source @@ -1 +1 @@ -Subproject commit 16a244c6ab8ac286b0a4a5bfd41b5645393680ef +Subproject commit c833be49d472583b6f56225862e0aa7d201c1da7