Skip to content

Latest commit

 

History

1,231 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FS.GG.Rendering

An F# desktop UI framework that renders Model-View-Update (MVU) applications with SkiaSharp over OpenGL. You describe a scene of primitives or a tree of semantic controls; the framework measures, lays it out, and paints it — with an interactive render loop, theming, input routing, and a deterministic offscreen path for tests.

The render core is Elmish-free; idiomatic Elmish (Cmd, subscriptions) is an optional adapter layer.

Platform vs. workspace. FS-GG is a platform — a family of repositories, of which this UI framework is one component. The current component/repository inventory lives in the org architecture doc (linked, not restated here). What you scaffold with the platform is a workspace: a generated repo with a runnable app, the .fsgg/ lifecycle, skills, and optional governance. See the platform vocabulary (ADR-0020).

Quick taste

open FS.GG.UI.SkiaViewer

let options : ViewerOptions =
    { Title = "Hello"; InitialSize = size
      PresentMode = ViewerPresentMode.DirectToSwapchain; FrameRateCap = None
      LogicalSize = None }   // Some { Width = 1280; Height = 720 } to letterbox a fixed canvas

// Render a static scene…
Viewer.run options scene |> ignore

// …or drive an interactive MVU window with your own model/msg:
Viewer.runInteractiveViewer options host |> ignore

For semantic controls (Button, TextBox, DataGrid…) with Elmish, use Controls.Elmish.runInteractiveApp. Full walkthrough → docs/usage.md.

Consume it

Source release coordinates: FS.GG.UI.* packages on net10.0 — 17 libraries plus the FS.GG.UI BOM metapackage (current framework version 0.32.1).

The published baseline remains 0.31.0; the 0.32.0 source candidate awaits native qualification and genuine publication authority.

Each release dual-publishes the byte-identical set to public nuget.org (GitHub OIDC Trusted Publishing) and the org GitHub Packages feed. You can also reference the src/*/*.fsproj directly, dotnet pack to a local feed, or scaffold a ready-wired app from the template (dotnet new install . && dotnet new fs-gg-ui). See docs/usage.md for every path and the full package map.

Build & test

dotnet build FS.GG.Rendering.slnx -c Release         # all runtime libs + local tests
DISPLAY=:1 dotnet test FS.GG.Rendering.slnx -c Release   # default local tier (GL via X11)

The offscreen/deterministic tiers run headless; live windowed rendering needs a GL/X11 session. The tiered evidence CLI under tools/Rendering.Harness/ declares what each run proves and what it does not.

Status

Active preview. This repository is the canonical home of the FS-GG rendering component, split out of the archived EHotwagner/FS-Skia-UI (see PROVENANCE.md). Three themes ship today: Light and Dark (FS.GG.UI.Themes.Default) plus an opt-in Ant Design theme (FS.GG.UI.Themes.AntDesign, AntTheme.antLight/antDark; ADR-0006). Further design languages (Fluent, Material), design kits, and the remaining harness tiers are on the roadmap in docs/reports/.

Learn more

License

MIT © 2026 EHotwagner

About

FS.GG rendering/runtime — F# UI framework on SkiaSharp/OpenGL (Elmish/MVU)

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages