Guide
The JSVision guide walks you from a first install to a full classic terminal-UI application.
Placeholder. The Getting Started walkthrough, core concepts, and tutorials land in a later milestone. This page exists so the navigation skeleton has no dead links.
A first taste
Detect what the terminal can do, then adapt — the engine is pure, so this runs the same everywhere:
import { resolveCapabilities } from '@jsvision/core';
const { profile } = resolveCapabilities();
console.log(`Colour depth: ${profile.colorDepth}`);
console.log(`Unicode: ${profile.unicodeLevel}`);Copy the snippet with the button in its top-right corner, paste it into a TypeScript project that depends on @jsvision/core, and run it.
Keyboard & clipboard
Every editable widget — Input, Editor, Memo, ComboBox, History, and anything built on them — supports selection and clipboard out of the box, with no per-widget wiring:
Ctrl+Aselect all ·Ctrl+Ccopy ·Ctrl+Xcut ·Ctrl+Vpaste- The classic DOS aliases
Ctrl+Ins(copy) /Shift+Ins(paste) /Shift+Del(cut) work too. Shift+arrows or a mouse drag extend a selection.
Copy and cut fill a shared in-app buffer, so text copied in one field pastes into another — or between an Input and an Editor. When the terminal supports it, they also write the OS clipboard (OSC-52). Paste works on every terminal via the in-app buffer; no clipboard read is performed.
The application shell installs this by default. Choose which chord sets are bound with clipboardKeys on createApplication (or createEventLoop):
import { createApplication } from '@jsvision/ui';
// 'both' (default) = modern Ctrl+A/C/X/V + the classic Ins/Del aliases.
// Use 'modern', 'classic', or 'none' to free keys for your own bindings — e.g. an
// editor that needs Ctrl-letter chords sets clipboardKeys: 'none'.
const app = createApplication({ clipboardKeys: 'both' });A user-supplied keymap always wins over these defaults on a conflict. To grey a Cut/Copy menu or status item when nothing is selected, bind the reactive Input.hasSelection signal.