Releases: wieslawsoltes/Dockyard
Release list
Dockyard 0.2.0
Dockyard 0.2.0 — Real browser-window floating
npm install @wieslawsoltes/dockyard@0.2.0Real browser windows and existing in-page floating now share one DockingManager,
layout model and retained DOM. In-page remains the default. Configure
FloatingWindowMode, override an individual content item, or explicitly call
FloatInBrowserWindow() / FloatInPage(). Familiar .Float(), .Dock(),
capabilities, commands and cancelable events remain available.
This release adds multi-window documents and nested pane groups; cross-window
HTML drag-and-drop; child-aware splitters, menus, keyboard and focus; live
styles/theme/direction; actual screen geometry; safe popup fallback; configurable
native-close recovery; host switching; persisted browser intent and explicit
resume; host/collection lifecycle notifications; native Window handles on
floating controls; content-document change hooks and complete cleanup.
The full playground includes hosting controls and a separate
multi-window example.
API, lifecycle and platform contract.
The release gate runs 66 core tests, strict TypeScript and installed-package
checks on Node 22/24, 34 existing Chromium interaction groups, 21 new
HTTP-origin browser-window groups, and HTTP sample/persistence checks. Immutable
npm/browser/showcase/source archives include SHA-256 checksums. The existing
workflow publishes GitHub Packages, the GitHub release, the public npm package
with provenance, and the GitHub Pages showcase after verification.
Browser permission and same-origin rules still apply. Native OS window chrome,
privileged monitor placement, arbitrary cross-document framework portals,
iframe state preservation across documents, and independent child runtimes are
not promised. Physical multi-monitor and non-Chromium qualification are not
claimed. No WPF runtime or arbitrary .NET API parity is introduced. The Blazor
package retains its independent version and release cycle.
Dockyard Blazor 0.2.2
Dockyard.Blazor 0.2.2
This release hardens the visual component and dynamic Razor root lifetimes while retaining all native docking and advanced interop APIs.
- Concurrent visual component disposal shares one completion task, releases all handles even after native cleanup failure, preserves the failure for repeated callers, and suppresses callbacks queued before removal.
- Template removal waits for an in-flight module import before releasing its handle. Circuit registries reject new registrations after disposal.
- Dynamic template factories return an awaitable disposal fence, coalesce rapid updates, preserve roots during same-turn DOM movement, and release late-created roots and context records.
BrowserComponent.IsReadyandIsDisposedexpose lifecycle state.- Eight new JavaScript lifecycle regressions, managed visual/template lifecycle checks and actual-package browser tests cover moving, updating and recreating real Razor templates in WebAssembly and Interactive Server.
The package targets .NET 8 and .NET 10 and includes local JavaScript/styles, symbols, and runnable sample artifacts. Publication remains gated on validation and complete public NuGet payload comparison. Desktop API, physical GPU, all-browser and WebView qualification are not claimed.
Dockyard Blazor 0.2.1
Blazor 0.2.1 — interop lifetime and identity corrections
- Preserve shared and cyclic native argument graphs without recursive stack overflow or mutation.
- Await asynchronous listener cleanup, and continue cleanup after an individual listener fails.
- Make concurrent native and managed module/subscription disposal calls await the same completion fence; repeated failed disposal retains its error.
- Resolve native callable handles consistently for property access, method invocation and disposal.
- Cancel initialization waits without cancelling another caller's shared initialization; pre-cancelled calls allocate nothing.
- Prevent late constructors and mounts from starting after their owning session is disposed.
- Add
CallFunctionJsonAsync<T>for complete streamed callable results.
Validation includes regression tests, package inspection, managed lifecycle tests and package-restored .NET 8/.NET 10 WebAssembly/Interactive Server browser consumers. Existing engine behavior and compatibility limits are unchanged.
Dockyard Blazor 0.2.0
Dockyard.Blazor 0.2.0
- Self-contained .NET 8/.NET 10 Razor class library with the actual Dockyard JavaScript engine and styles.
- DockingManager, typed document/tool options, native model access, layout persistence and events.
- Real Razor pane templates with scoped registration, shadow-DOM input handling and independent root lifetimes.
- Streamed JSON/binary results and full DTO notifications, opaque native function references and literal application-data arguments.
- WebAssembly and Interactive Server samples, actual-package managed/browser tests, native pane callback regression and non-root hosting.
- Validation-gated NuGet publication, public payload verification, symbols, runnable samples and checksums.
This package wraps the browser engine rather than reimplementing a desktop framework in C#. Generic native interop complements typed APIs. Synchronous native callbacks execute in the browser; see INTEGRATION.md for ownership, template state and hosting contracts. Existing native compatibility limits remain applicable.
Dockyard 0.1.0
Dockyard 0.1.0
First public npm release of the dependency-free docking component:
npm install @wieslawsoltes/dockyard@0.1.0Use ES modules from @wieslawsoltes/dockyard, headless layout models from @wieslawsoltes/dockyard/model, and styles from @wieslawsoltes/dockyard/styles.css. TypeScript declarations and the standalone browser distribution are included.
The release pipeline validates Node 22/24, installed-package behavior and TypeScript, Chromium interactions, HTTP entry points and persistence. It publishes immutable npm/browser/showcase/source archives with SHA-256 checksums, GitHub Packages and a provenance-enabled public npm package, then verifies the public download and a fresh installation.
The live Dockyard demo and existing compatibility documentation remain available. This release preserves the existing AvalonDock-style browser API and its documented platform boundaries.