MIT · Built on Ansi

BBS-style screens
on a real grid

Schipper.Io.Tui is menus, prompts, and an editor. Cells, color, diffs, and key decoding stay in Schipper.Io.Ansi. Themes have a hand-tuned 16-color fallback.

3
Catalog themes
16
Color fallback
Diff
Frames
1
Schipper dep

Modals that fit the terminal

Menus scroll. Tiny sessions do not throw. A trailing Escape on a short read is Escape, not Alt+the next character.

TerminalUi

MenuAsync, ReadLineAsync, MessageAsync, ConfirmAsync. Empty menus return −1. All-disabled waits for Escape.

Themes

Seashell, Amber, Matrix. ForDepth picks Fallback16 on basic-16 clients so flush is not an algorithmic palette.

Editor

Long lines wrap on load so Ctrl-S round-trips. MCI color codes render and strip.

Begin. Menu. End.

Call BeginAsync / EndAsync as a pair around the whole UI, including faults.

C#
var view = new TerminalView(terminal);
var reader = new InputReader(terminal);
Theme theme = Theme.Default.ForDepth(view.Depth);

await view.BeginAsync(ct);
int choice = await TerminalUi.MenuAsync(
    view, reader, theme, title: "Workshop",
    items: [ new MenuItem("Enter", 'e'), new MenuItem("Quit", 'q') ],
    cancellationToken: ct);
await view.EndAsync(ct);

Pack Ansi first

TUI restores Schipper.Io.Ansi from the local feed.

Repository Ansi primitives →