Skip to content

Add Lunet documentation site, package guides, and docs publishing#469

Merged
wieslawsoltes merged 4 commits intomasterfrom
docs/lunet-site
Mar 10, 2026
Merged

Add Lunet documentation site, package guides, and docs publishing#469
wieslawsoltes merged 4 commits intomasterfrom
docs/lunet-site

Conversation

@wieslawsoltes
Copy link
Copy Markdown
Owner

PR Summary: Add Lunet documentation site, package guides, and docs publishing

Overview

This PR adds a Lunet-based documentation site for Svg.Skia, following the same general approach used by Avalonia.Controls.TreeDataGrid, but tailored to the package structure, rendering model, and developer workflows in this repository.

The change covers:

  • Lunet site scaffolding and local authoring scripts
  • GitHub Actions publishing for the generated documentation site
  • project-specific landing page and documentation structure
  • package-level articles for each shippable NuGet package
  • generated API reference integration
  • external API linking for SkiaSharp.* types
  • homepage polish for repository SVG showcase assets

What changed

1. Added Lunet docs tooling and local workflows

The repository now includes the local tools and helper scripts needed to build, validate, and serve the docs site consistently across development environments.

Added:

  • .config/dotnet-tools.json
  • build-docs.sh
  • build-docs.ps1
  • check-docs.sh
  • check-docs.ps1
  • serve-docs.sh
  • serve-docs.ps1

These scripts standardize the common workflows for:

  • generating the site locally
  • validating the content and API generation pipeline
  • previewing the site during authoring

2. Added documentation publishing to CI

The PR introduces a dedicated GitHub Actions workflow:

  • .github/workflows/docs.yml

This workflow publishes the Lunet-generated site so documentation updates can be deployed automatically as part of the repository’s CI/CD process.

3. Added the Lunet site structure and configuration

The site/ directory now contains a complete Lunet documentation site customized for Svg.Skia.

Key additions include:

  • site/config.scriban
  • site/menu.yml
  • site/readme.md
  • site/.lunet/... theme/layout/include overrides
  • site/articles/... authored documentation content
  • site/images/... supporting site assets

The site content is adapted to this project rather than copied verbatim from TreeDataGrid. The home page, navigation, article structure, and package guidance reflect the actual shape of the Svg.Skia ecosystem:

  • core SVG rendering
  • DOM/model packages
  • Avalonia integration packages
  • code generation and source generator packages
  • CLI and conversion workflows

4. Added package-specific documentation coverage

Each shippable NuGet library now has dedicated article coverage under:

  • site/articles/packages/

Package articles were added for:

  • Svg.Skia
  • Svg.Model
  • Svg.Custom
  • ShimSkiaSharp
  • Svg.Controls.Skia.Avalonia
  • Svg.Controls.Avalonia
  • Skia.Controls.Avalonia
  • Svg.Codegen.Skia
  • Svg.SourceGenerator.Skia

These guides provide package-specific entry points so users can choose the correct package and understand:

  • what the package is for
  • where it fits in the overall architecture
  • when to use it
  • related APIs and adjacent packages

5. Improved the landing page to use real project assets

The main landing page was refined to better represent a rendering library instead of showing generic or misleading imagery.

The final homepage showcase now uses two actual repository SVG samples:

  • site/images/hero-tiger.svg
  • site/images/hero-camera.svg

The landing page copy and styling were also adjusted so the page emphasizes:

  • SVG 1.1 rendering support
  • SKPicture output
  • Avalonia integration
  • build-time generation
  • Android VectorDrawable import support

6. Fixed raw HTML rendering issues on the homepage

The homepage originally had raw HTML blocks rendered as visible text because of Markdown/HTML block parsing behavior. The content was corrected so the hero actions and pill row render as intended in the generated site rather than appearing inside a code block.

7. Linked unresolved SkiaSharp.* API references to Microsoft Learn

The Lunet config now maps SkiaSharp external API symbols to the official .NET API documentation on Microsoft Learn.

This change removes unresolved external xref warnings for SkiaSharp.* symbols and gives generated API pages working outbound links for dependent SkiaSharp types.

Implementation notes

.gitignore

This PR includes a small .gitignore adjustment to allow authored docs under:

  • site/articles/packages/

This was necessary because the repository already contained a broader ignore rule matching **/packages/*, which would otherwise have excluded the new documentation articles from version control.

API docs integration

The Lunet site is configured to generate API documentation for the relevant assemblies and integrate it with the authored conceptual docs. This gives the repo both:

  • narrative documentation for package selection and workflows
  • browsable API reference for library consumers

Validation

The documentation pipeline was validated locally with:

  • ./build-docs.sh

Additional repository validation that was run during the broader work:

  • dotnet format --no-restore
  • dotnet build Svg.Skia.slnx -c Release
  • dotnet test Svg.Skia.slnx -c Release

Result:

  • the docs site builds successfully
  • the homepage rendering issues were fixed
  • SkiaSharp.* external xref warnings were resolved via Microsoft Learn mapping

Result

After this PR, Svg.Skia has a maintainable docs site with:

  • a tailored landing page
  • package-level documentation for all shippable libraries
  • API reference generation
  • local authoring/build scripts
  • CI publishing support

This brings the repository closer to a full product-quality documentation workflow rather than a minimal API-only or README-only setup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant