Files
vue-tui/packages/runtime/CHANGELOG.md
T
Yunfei He e4f756def2 chore(runtime): prepare 0.1.0 public beta release (#205)
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>
2026-06-20 00:32:56 +08:00

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

  • RenderingcreateApp(component).mount(options?) and a synchronous renderToString().
  • ComponentsBox, Text, Newline, Spacer, Static, Transform.
  • Layout — Yoga flexbox: direction, wrap, align, justify, gap, padding, margin, and borders.
  • Input & focususeInput, usePaste, useFocus, useFocusManager, useStdin.
  • App & environmentuseApp, useStdout, useStderr, useWindowSize, useIsScreenReaderEnabled.
  • Layout & cursoruseBoxMetrics, measureElement, useCursor.
  • Animation — frame-based useAnimation.
  • Accessibility — a screen-reader linearizer and ARIA roles (18-value AriaRole union).
  • 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.