Re-applies the 0.1.0 release prep on top of current main. PR #167's branch (release/runtime-0.1.0) was 35 commits behind main and predated the #173..#204 fix batch (incl. the severe renderer fixes #198/#199), so publishing from it would have shipped a 0.1.0 missing those fixes. - version 0.0.3 -> 0.1.0 (runtime only; testing/cli stay 0.0.x) - add root LICENSE + packages/runtime/LICENSE (MIT) - add packages/runtime/CHANGELOG.md (0.1.0 public API; ./internal is non-semver) - npm metadata: author, repository(+directory), homepage, bugs, keywords - engines.node >=22 -> >=22.18.0 (match the real toolchain floor) - files: ship LICENSE explicitly alongside dist + CHANGELOG - README: reframe to public-beta status; fix useCursor (position-based, not visibility); add useIsScreenReaderEnabled + renderToString to the API docs Verified on this branch: build, type-check, lint (0 warnings), and the full test suite (runtime 1289, cli 364, testing 12, PTY 129) all green. pnpm pack ships LICENSE + CHANGELOG + dist with 0 literal `catalog:` deps; attw resolves types green under node16(ESM) + bundler for `.` and `./internal`. Note: `exports` is auto-generated by `vp pack` (pack.exports: true) as bare strings; attw confirms types resolve via the sibling .d.mts, so no manual types condition is added (it would be wiped by the next build anyway). Supersedes #167. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.3 KiB
Changelog
All notable changes to @vue-tui/runtime are documented here.
This project adheres to Semantic Versioning. While on
0.x, minor versions may include breaking changes.
0.1.0 - 2026-06-19
First public release of @vue-tui/runtime — Vue 3 for the terminal. Build CLI
tools, dashboards, and AI-agent interfaces with <script setup> and reactivity,
laid out by real Yoga flexbox (yoga-layout, the engine behind Ink and React
Native).
This release covers @vue-tui/runtime only; the testing and CLI packages remain
experimental (0.0.x). Not recommended for production yet.
Features
- Rendering —
createApp(component).mount(options?)and a synchronousrenderToString(). - Components —
Box,Text,Newline,Spacer,Static,Transform. - Layout — Yoga flexbox: direction, wrap, align, justify, gap, padding, margin, and borders.
- Input & focus —
useInput,usePaste,useFocus,useFocusManager,useStdin. - App & environment —
useApp,useStdout,useStderr,useWindowSize,useIsScreenReaderEnabled. - Layout & cursor —
useBoxMetrics,measureElement,useCursor. - Animation — frame-based
useAnimation. - Accessibility — a screen-reader linearizer and ARIA roles (18-value
AriaRoleunion). - Kitty keyboard protocol — all 5 progressive-enhancement flags, plus
bracketed paste;
kittyFlags,kittyModifiers, and related types. - Authoring — Vue SFC
<template>, JSX/TSX, and render functions.
Built on Ink, adapted to Vue
Modeled on React Ink (pinned to v7.0.4): every Ink component (6) and hook (13)
has a same-named equivalent, with createApp().mount() replacing Ink's
render(). Parity is verified against real Ink output captured as byte-exact
fixtures (Ink is not a runtime, test, or CI dependency). Where vue-tui differs —
shallowRef reactive state, declarative prop resets, rawMode: 'always', and a
few fixes for verified Ink rendering bugs — it's deliberate and documented in the
divergence log. Parity never outranks correctness.
Internal API (unstable)
The @vue-tui/runtime/internal entry point exposes lower-level host-node, Yoga,
and frame-sink internals for tooling (e.g. the test harness). It is not covered
by semver and may change in any release.