Logo FS-Skia-UI

Technical Design

FS.Skia.UI is an Elmish-first F# UI toolkit that models UI as immutable scene data, runs application state through explicit messages and effects, and renders through a Vulkan-only SkiaSharp desktop path. This page is the technical design entry point for maintainers and contributors.

Design Map

Document

Purpose

Architecture Overview

Repository, package, runtime, sample, and governance structure, linked to src and build.fsx.

Runtime Design

Viewer program shape, event/effect flow, rendering, screenshots, diagnostics, and supported platform boundary in src/Lib/Library.fsi and src/Lib/Library.fs.

Subsystem Design

Scene model, keyboard input, Controls-owned charts/DataGrid, layout, graph, samples, tests, and template governance linked to their source modules.

Design Decisions

Rationale for the major architectural choices and rejected alternatives.

Agent Consumer Framework Analysis

Timestamped analysis of FS.Skia.UI as a Spec Kit agent-consumed framework, including validation tiers, Controls typing, and build graph recommendations.

Refactoring Analysis

Maintainability hotspots, duplication inventory, and phased cleanup plan for generated evidence, build automation, viewer internals, and compatibility surfaces.

Source Map

Area

Primary source

Compatibility core package

src/Lib/Library.fsi, src/Lib/Library.fs, and src/Lib/KeyboardInput.fsi

Scene primitives

src/Scene/Scene.fsi and src/Scene/Scene.fs

Skia viewer host

src/SkiaViewer/SkiaViewer.fsi and src/SkiaViewer/SkiaViewer.fs

Elmish viewer integration

src/Elmish/Elmish.fsi and src/Elmish/Elmish.fs

Keyboard input package

src/KeyboardInput/KeyboardInput.fsi and src/KeyboardInput/KeyboardInput.fs

Controls, charts, graph views, DataGrid, rich rendering

src/Controls

Controls Elmish adapter

src/Controls.Elmish/ControlsElmish.fsi and src/Controls.Elmish/ControlsElmish.fs

Layout and lower-level graph helpers

src/Layout

Samples

samples

Tests

tests

Build and template workflow

build.fsx, .template.config/template.json, and .template.package/FS.Skia.UI.Template.fsproj

Dependency and drift scripts

scripts/dependency-report.fsx and scripts/template-drift.fsx

Related Operational Documents

Document

What it governs

Build Workflow

FAKE target graph and automation entry points.

Testing Workflow

Test projects, FSI transcripts, sample smoke, and template validation matrix.

Evidence Policy

Required readiness artifacts and evidence boundaries.

Dependency Governance

Central Package Management, package ownership, and validation-only version exceptions.

Template Profile

dotnet new fs-skia-ui profiles, artifact boundaries, and drift classification.

Spec Kit Governance

Generated prompts, task skillist governance, implementation skill loading, and deferred roadmap boundaries.

How To Read This Set

Start with the architecture overview when changing package boundaries, project references, or build targets. Use the runtime design before changing ViewerProgram, ViewerEvent, ViewerEffect, rendering, diagnostics, or screenshot behavior. Use subsystem design when changing Controls-owned chart controls, DataGrid, layout, graph rendering, keyboard input, samples, or template ownership. Record any new cross-cutting choice in the design decision log.

Type something to start searching.