Skip to content

v2.0.0

Latest

Choose a tag to compare

@acwright acwright released this 07 Aug 21:40

VT-AC is now a desktop app, a web app, and a CLI. It was an npm package that
opened an SDL window; it is now something you install, or just open in a browser.
And it has learned to speak VT-100.

Install

Platform File
macOS (Apple silicon) VT-AC-2.0.0-mac-arm64.dmg — signed and notarized
Windows (x64) VT-AC-2.0.0-win-x64.exe
Linux (x64) VT-AC-2.0.0-linux-x86_64.AppImage or VT-AC-2.0.0-linux-amd64.deb

Or use it in your browser, with nothing to install:
https://acwright.github.io/VT-AC/

What's new

Two terminal personalities. VT-AC's own protocol is still the default and is
still byte-for-byte v1.3.0. Alongside it is a full VT-100/ANSI compatibility
mode: scroll regions, SGR attributes and colour, the alternate screen, tab stops,
DEC line drawing and terminal reports. vi, htop and ncurses run over a serial
link. Switch from the control bar, the settings panel, vtac --mode vt100, or
ESC 0x03 on the wire.

Conformance is measured rather than claimed — vttest items 1, 2, 3, 6 and 8
pass against the packaged app over a hardware serial loopback. The results, and
the deliberate divergences, are in
docs/VT100-CONFORMANCE.md.

80-column mode. 80 × 60 at 640 × 480 — an exact 2× of the 40 × 30 grid, same
8 × 8 font, same square pixels, same 4:3 screen. Every command keeps its meaning.

A desktop app. Serial port selection, framing, window scale, fullscreen, bell
control and file loading, all from a control bar and a settings panel that
remember what you set. SDL is gone; the terminal renders to a canvas in all three
distributions.

A web build. The same terminal and the same renderer, with serial over the
Web Serial API. Chrome or Edge, over HTTPS.

A vtac command line the app installs itself — Settings → COMMAND LINE →
Install. Every v1 flag still works and now launches the app, plus two new ones:
--mode and --columns.

Native-mode behaviour is unchanged

With default settings — native personality, 40 columns — v2.0.0 processes a
byte stream identically to v1.3.0. v1's test suite runs unmodified against the
new core, and npm run verify:cellmodel compares the two implementations byte
for byte across the whole framebuffer after every byte of 14 streams.

There is exactly one intentional deviation, and it is the extension point v1
reserved for it: 0x1B (ESC) is no longer a no-op. It now introduces five
extensions — 40/80 columns, the VT-100 personality, a query, and a literal ESC.
Any other second byte is parsed as an ordinary byte, exactly as v1 did with the
byte after its no-op ESC.

Upgrading from v1.x

The npm package vtac-terminal is deprecated. It stays published so nothing
that depends on it breaks, but it will not be updated.

npm uninstall -g vtac-terminal

Do run that. npm's bin directory usually comes before /usr/local/bin on
PATH, so with both installed a bare vtac answers 1.3.0 — a correct v2
install that looks broken.

Full documentation: README.