FS.GG.Game.Render.Kitty 0.24.0

Prefix Reserved
dotnet add package FS.GG.Game.Render.Kitty --version 0.24.0
                    
NuGet\Install-Package FS.GG.Game.Render.Kitty -Version 0.24.0
                    
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="FS.GG.Game.Render.Kitty" Version="0.24.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FS.GG.Game.Render.Kitty" Version="0.24.0" />
                    
Directory.Packages.props
<PackageReference Include="FS.GG.Game.Render.Kitty" />
                    
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 FS.GG.Game.Render.Kitty --version 0.24.0
                    
#r "nuget: FS.GG.Game.Render.Kitty, 0.24.0"
                    
#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 FS.GG.Game.Render.Kitty@0.24.0
                    
#: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=FS.GG.Game.Render.Kitty&version=0.24.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.Game.Render.Kitty&version=0.24.0
                    
Install as a Cake Tool

Kitty renderer and terminal reference client

This .NET renderer exports a shared Scene through the public SVG document API, validates the owned SVG, rasterizes it with Svg.Skia, and transfers PNG chunks through the Kitty graphics protocol. KittyClient.run owns the reusable TTY/input/capability/resize/teardown loop and serialized callback boundary. The separate executable is src/ReferenceGame.Terminal; it uses the reference game's update/view functions and a standard input guest with authoritative admission and settlement.

The portable HostBackend, HostSceneSurface, HostSceneRenderers, HostRegistry and HostRenderer APIs live in Game.Render. A host explicitly registers its ready default. Existing browser APIs and their SVG default remain unchanged. The shared internal selection/lifecycle engine performs switching, fallback and disposal for both facades.

A game provides a pure bounded context identity for its exact view state; stale displayed contexts refuse input before guest/authority mapping, including game-specific keys. Cancellation is independent of that context. The terminal package consumes public Scene 0.33.1, Svg.Skia 5.2.3 and SkiaSharp 4.148.0. Native dependencies stay outside browser/Fable packages. The plain-Scene SVG adapter calls the fixed public exporter directly; raw Scene node colors survive without a Game normalization shim. Pixel controls check the actual resulting PNG.

The reference executable supports Linux with an exclusive interactive terminal, stty, Kitty graphics, cell-pixel replies and negotiated keyboard flags 11. It requires a capable graphical Kitty host. Redirected streams fail before terminal setup. Keys: n starts, arrows/Tab navigate, Enter/Space activates, d tries a door, p/r pause/resume, and q or Ctrl+C exits. v supplies the reference fixture's vault-clear effect. Pointer input uses SGR cell coordinates and the exact acknowledged frame's hit regions; image padding is not a hit.

The initial renderer supports at most 960×540 raster pixels, 512×256 image-placement cells plus one separate status row, 1 MiB owned SVG, 8 MiB PNG, one outstanding upload and one coalesced newest frame. It preserves aspect within the placement. Only server-confirmed owned image IDs are deleted. Capability and upload acknowledgements each have a one-second deadline; cancellation has a bounded late-reply drain before restoring modes. Status text is bounded to avoid bottom-row wrapping or control injection.

Owned SVG resources must be self-contained supported vector geometry. External resources, scripts, CSS, processing instructions, entities, missing/cyclic references and excessive graph expansion are refused. Native rasterization runs in process; this API is for validated owned game artifacts. Text uses explicit embedded producer-owned Noto Sans Regular2.008 TTF bytes (569,208 bytes, SHA256 b85c38ecea8a7cfb39c24e395a4007474fa5a4fc864f6ee33309eb4948d232d5), with OFL notice and protected Rendering provenance. No ambient font lookup is used. The regular400 upright profile accepts Noto Sans/sans-serif, sizes up to256 document units and4096 text scalars; unsupported families, styles, weights or uncovered codepoints refuse the frame. The earlier approved WOFF2 profile was rejected by the actual native decoder and was superseded by the legitimate producer TTF.

Run source controls with scripts/test-kitty-source.sh Release after restore. Run the declared source performance route with dotnet run -c Release --project tests/Render.Kitty.Tests/FS.GG.Game.Render.Kitty.Tests.fsproj. These source controls use simulated terminal replies. The actual reference Kitty-side milestone is accepted separately from the retained failed harness outcome. Browser comparison, production performance, FourD, template uptake, publication/readback and consumer acceptance remain open under Game#841. See docs/performance/kitty-client-intent.json and docs/performance/kitty-host-qualification.md.

Producer patch uptake: Rendering#1523 supplied public Scene 0.33.1. The temporary generated-presentation normalization is removed, with actual colored PNG controls passing through the public exporter. Original Scene0.33 failure evidence remains diagnostic history. The scoped reference host milestone does not close full delivery acceptance.

The native client opens a separate nonblocking output description and preserves inherited descriptor flags. All graphics, mode and status output uses the same serialized writer, with one second for an entire batch; cancellation is checked while waiting for writable capacity. A failed or partly cancelled batch refuses further output, so cleanup reports that failure and still attempts independent terminal-mode restoration. Error reporting to supported terminal/pipe sinks has its own 250ms bound; unsupported regular-file/device sinks are skipped and the failure exit code remains authoritative. Reporting cannot wait behind a blocked stdout writer. Source controls use isolated pipes to verify partial writes, non-draining backpressure, EAGAIN/EPIPE, cancellation and inherited flags; they do not qualify a live terminal.

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.24.0 57 11/11/2026
0.23.0 68 11/11/2026