Broiler.Layout 0.1.0-preview.22

This is a prerelease version of Broiler.Layout.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Broiler.Layout --version 0.1.0-preview.22
                    
NuGet\Install-Package Broiler.Layout -Version 0.1.0-preview.22
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Broiler.Layout" Version="0.1.0-preview.22" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Broiler.Layout" Version="0.1.0-preview.22" />
                    
Directory.Packages.props
<PackageReference Include="Broiler.Layout" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Broiler.Layout --version 0.1.0-preview.22
                    
#r "nuget: Broiler.Layout, 0.1.0-preview.22"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Broiler.Layout@0.1.0-preview.22
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Broiler.Layout&version=0.1.0-preview.22&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Broiler.Layout&version=0.1.0-preview.22&prerelease
                    
Install as a Cake Tool

Broiler.Layout

A .NET 10 CSS box-model and layout engine over the canonical Broiler DOM and computed styles. The component is graphics-backend independent and is currently integrated with Broiler.HTML through internal compatibility boundaries.

Preview status

This is first-preview software. The API, layout behavior, and integration boundaries may change without compatibility guarantees. Substantial implementation work was AI-assisted. The recorded human review approved a specific 2026-07-01 revision with conditions. The component has changed substantially since that revision, so the approval must not be treated as covering current source or a broader release. Re-review and hardening work is tracked in the current roadmap.

Broiler.Layout is an independent Broiler component. Its integration with Broiler.HTML inherits architectural context from HTML Renderer, but it must not be represented as an official HTML Renderer component or as endorsed by that project's contributors.

Architecture and API boundary

The public seam consists of the host abstractions (ILayoutEnvironment, ILayoutFont, and ILayoutImageLoader), their value types, and the renderer-neutral HTML metadata types used to construct a layout input. The concrete box tree and layout algorithms remain internal. Layout consumes only Broiler.CSS, Broiler.CSS.Dom, Broiler.Dom, the backend-neutral Broiler.Graphics primitive layer, and the BCL; painting, resource acquisition, HTML parsing, and platform UI remain in their owning assemblies.

ILayoutView is also public, but it is a contract a consumer implements and injects, not one this component fills: nothing here — and nothing in any other Broiler component today — implements it. A consumer that injects no view reads no engine geometry.

These assemblies have deliberate access to internal layout state (the InternalsVisibleTo set in Broiler.Layout.csproj is authoritative):

Friend assembly Compatibility need
Broiler.HTML.Dom Parses, serializes, and visits renderer box trees.
Broiler.HTML Implements selection, hit-testing, and context-menu interaction over laid-out boxes.
Broiler.HTML.Orchestration Projects computed style, invokes layout, and builds paint fragments.
Broiler.DevConsole Converts the internal tree into renderer-independent diagnostic snapshots.
Broiler.Cli.Tests Characterizes renderer integration and internal box state during the preview compatibility window.
Broiler.DevConsole.Tests Characterizes diagnostic snapshots with constructed boxes.
Broiler.Layout.Tests Exercises the internal layout kernel directly.
Broiler.Wpt Enables scoped native anchor placement around final WPT renders.
Broiler.HtmlBridge.Dom Supplies the visual-viewport scale around geometry snapshots.

Facade and application assemblies must consume owned projections instead of traversing the internal tree. In particular, Broiler.HTML.Image delegates canvas-background resolution to orchestration, and the WPF app consumes dev-console snapshots. The exact friend set is locked by LayoutArchitectureTests so new grants require an explicit boundary decision and documentation update.

Build and test

Every dependency, the Broiler packages included, restores from nuget.org; no feed credentials are needed. NuGet.config clears whatever sources the machine has configured and maps every package to nuget.org. Versions are pinned in Directory.Packages.props.

dotnet build Broiler.Layout.slnx -c Release
pwsh -File eng/run-tests.ps1 -Configuration Release
node --test eng/resolve-preview-version.test.mjs
pwsh -File eng/pack.ps1

NuGet caches packages by id and version only. A Broiler package that was once restored from a local or retired feed under the same version shadows the one on nuget.org, and the build then reports Broiler types as missing. Delete that version from ~/.nuget/packages/<id>/ and restore again.

Continuous integration and publishing

CI builds and tests Release on Ubuntu and Windows (with a floor on the executed test count), then packs and verifies the package on Ubuntu and attaches it as nuget-packages. Publish (manual, or a v0.1.0-preview.N tag) resolves the next unused preview version, reruns CI with it, verifies a fresh consumer restore from nuget.org, and pushes the validated package and its symbols to nuget.org with the NUGET_TOKEN secret. Every run pushes; CI is the no-push pack and consumer-restore check. The workflows and eng/ scripts are shared with Broiler.CSS, Broiler.DOM and Broiler.Graphics.

Preview numbers are cumulative: the next version is one past the highest preview of the line already on nuget.org, and never below the VersionSuffix floor in Directory.Build.props. That floor carries the numbers the retired GitHub Packages feed already spent (0.1.0-preview.1 through preview.5), which nuget.org cannot see.

License

Broiler.Layout is licensed under the Apache License 2.0. Third-party material, if present, retains the license identified with that material. The license provides the software on an “AS IS” basis, without warranties or conditions.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Broiler.Layout:

Package Downloads
Broiler.HTML.Core

Shared entities, handler contracts, and image download and loading for the Broiler.HTML renderer.

Broiler.HtmlBridge.Core

Shared HtmlBridge DOM models, logging, scripting support, and lightweight bridge infrastructure.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview.23 0 10/11/2026
0.1.0-preview.22 94 10/9/2026
0.1.0-preview.21 174 10/8/2026
0.1.0-preview.20 94 10/8/2026
0.1.0-preview.19 95 10/7/2026
0.1.0-preview.18 507 10/7/2026
0.1.0-preview.17 94 10/7/2026
0.1.0-preview.16 172 10/7/2026
0.1.0-preview.15 548 10/6/2026
0.1.0-preview.14 207 10/6/2026
0.1.0-preview.13 242 10/4/2026
0.1.0-preview.12 122 10/4/2026
0.1.0-preview.11 83 10/4/2026
0.1.0-preview.10 438 9/30/2026
0.1.0-preview.9 223 9/28/2026
0.1.0-preview.8 55 9/25/2026
0.1.0-preview.7 144 9/25/2026
0.1.0-preview.6 616 9/23/2026