Arlecchino.Core 2026.8.5

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

Arlecchino

NuGet Downloads Build Target frameworks MIT

The cell grid the Arlecchino terminal UI framework draws on, packaged on its own: a double-buffered surface, ANSI styling, flow and canvas layout, text measured in grapheme clusters, and the atoms that hold state with an undo history. No dependency injection, no hosting, no views — those are the Arlecchino package, and it brings this one with it.

Writing an application? Install Arlecchino instead. This package is for code that wants the renderer and nothing else: a tool that draws one screen, a widget library, a host of its own.

Quick start

dotnet add package Arlecchino.Core

A Surface composes a frame in memory and sends it to a terminal:

using Arlecchino;
using Arlecchino.Rendering;

var surface = new Surface(new SystemTerminal());

surface.StartFrame();
surface.AppendLine("hello", Theme.Header, Align.Center);
surface.Build();

StartFrame reads the terminal size and clears every cell; nothing reaches the terminal until Build, which writes only what changed since the last frame — an idle frame writes nothing at all. SetFixedSize pins the size instead of asking the terminal, which is what makes headless rendering possible.

Anything larger than a stack of lines is drawn into a region:

var (left, right) = surface.Content.SplitLeft(surface.FrameWidth / 2);

var pane = left.Border(Theme.Accent, "files").Flow();
pane.AppendLine("README.md", Theme.Default);
pane.AppendLine("CHANGELOG.md", Theme.Muted);

right.Fill(Theme.Default);

A SurfaceRegion splits, insets, borders and clips; Flow() turns one into a cursor that appends lines and knows how many it has left. The region is a struct over the same grid — carving a layout up allocates nothing.

What is in it

  • Surface, SurfaceRegion, PaneFlow — the double-buffered grid, region arithmetic and the flow cursor, plus WriteTableRow and ListWindow for lists that scroll.
  • Theme, ThemePalette, TermColor, Rgb — one look per process, either of the two built-in palettes or one of your own; colours are written once and degrade to what the terminal has.
  • TerminalCapabilities — truecolor, 256 colours or none, detected from NO_COLOR, TERM and COLORTERM, and overridable.
  • TextWidth — width, truncation, padding and wrapping measured in grapheme clusters, so emoji, combining marks and East Asian characters do not tear the grid.
  • AtomsAtom<T>, AtomsList<T> and AtomsMap<TKey, TValue> in a tracked and a local flavour, Computed<T> that follows what it reads, and AtomHistory with Undo, Redo and Group. Writing an atom notifies whatever reads it and marks the frame stale.
  • IArlecchinoTerminal and SystemTerminal — the seam the surface writes through, and the implementation over System.Console. A terminal of your own is fourteen members.
  • FrameThread — the single thread every write is checked against, so background work that touches state is caught rather than tolerated.

Every type is trimming- and Native AOT-compatible, and the framework's own build publishes a native binary each run and asks it for a frame.

Packages

Package Contents
Arlecchino.Core this one — the renderer, no DI, and atoms with their undo history
Arlecchino views, navigation, modals, commands, hosting, DI, async stores, and the generator
Arlecchino.Pictures PNG, JPEG, BMP, Netpbm, QOI and Targa read into pixels
Arlecchino.Testing ArlecchinoTestHost — the headless host applications write their tests against

They ship together and always carry the same version.

Documentation · Rendering · Changelog · Source and issues

MIT.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Arlecchino.Core:

Package Downloads
Arlecchino

Terminal UI framework for .NET: view navigation with history, modals, a command palette and a file picker, wired through Microsoft.Extensions.DependencyInjection and IHostedService.

Arlecchino.Pictures

Image decoders for Arlecchino: PNG, JPEG, BMP, PNM, QOI and TGA read into the pixels the Picture widget draws. Managed, with no dependency beyond the renderer.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.8.5 105 8/19/2026
2026.8.4 138 8/16/2026
2026.8.3 133 8/16/2026
2026.8.2 133 8/16/2026
2026.8.1 145 8/14/2026
5.0.0 157 8/8/2026
4.0.0 190 8/3/2026
3.1.0 150 8/2/2026
3.0.0 166 8/1/2026
2.13.0 134 7/29/2026
2.12.0 145 7/29/2026
2.11.0 135 7/29/2026
2.10.0 137 7/29/2026
2.9.0 137 7/29/2026
2.8.0 149 7/29/2026
2.7.0 130 7/29/2026
2.6.1 154 7/29/2026
2.6.0 136 7/28/2026
2.5.0 135 7/28/2026
2.4.1 127 7/28/2026
Loading failed