@simon_he/vue-tui 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -20
- package/dist/{TSelect-HzILuti9.js → TSelect-DR0FomSu.js} +1 -1
- package/dist/{TTree-ChOot2Bh.js → TTree-kzhlB5P0.js} +3 -3
- package/dist/agent.js +2 -2
- package/dist/cli.cjs +1081 -166
- package/dist/cli.d.cts +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +846 -164
- package/dist/core/buffer/buffer.d.ts +2 -2
- package/dist/core/types.d.ts +0 -4
- package/dist/core.cjs +20 -5
- package/dist/core.js +1 -1
- package/dist/{create-terminal-C2oiWFJU.js → create-terminal-DBFNYr8f.js} +15 -6
- package/dist/{dom-renderer-BqGijQID.js → dom-renderer-BniJSQyX.js} +1 -1
- package/dist/index.cjs +20 -5
- package/dist/index.js +4 -4
- package/dist/renderer/cli/index.d.ts +1 -1
- package/dist/renderer/cli/stdout-renderer.d.ts +50 -7
- package/dist/renderer-dom.js +2 -2
- package/dist/vue.cjs +20 -5
- package/dist/vue.js +4 -4
- package/package.json +28 -10
package/README.md
CHANGED
|
@@ -1,18 +1,47 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="./docs/public/brand/vue-tui-logo-on-dark.svg">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="./docs/public/brand/vue-tui-logo-on-light.svg">
|
|
5
|
+
<img alt="Vue TUI" src="./docs/public/brand/vue-tui-logo-on-light.svg" width="360">
|
|
6
|
+
</picture>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
1
9
|
# @simon_he/vue-tui
|
|
2
10
|
|
|
3
|
-
|
|
11
|
+
[](https://www.npmjs.com/package/@simon_he/vue-tui)
|
|
12
|
+
[](https://www.npmjs.com/package/@simon_he/vue-tui)
|
|
13
|
+
[](https://github.com/Simon-He95/vue-tui/actions/workflows/ci.yml)
|
|
14
|
+
[](https://github.com/Simon-He95/vue-tui/actions/workflows/runtime-compat.yml)
|
|
15
|
+
[](https://github.com/Simon-He95/vue-tui/actions/workflows/security.yml)
|
|
16
|
+

|
|
17
|
+

|
|
18
|
+
[](./license)
|
|
19
|
+
|
|
20
|
+
[Docs](https://vue-tui.pages.dev/) | [npm](https://www.npmjs.com/package/@simon_he/vue-tui) | [GitHub](https://github.com/Simon-He95/vue-tui) | [Issues](https://github.com/Simon-He95/vue-tui/issues)
|
|
21
|
+
|
|
22
|
+
Vue TUI is a Vue 3 terminal UI toolkit for building terminal-style interfaces that render to browser DOM, real CLI stdout, and headless tests.
|
|
23
|
+
|
|
24
|
+
Use it to build browser terminal dashboards, Vue-powered CLI apps, streaming markdown transcripts, log viewers, virtual lists, and AI agent consoles with one shared component model.
|
|
25
|
+
|
|
26
|
+
## Why Vue TUI?
|
|
27
|
+
|
|
28
|
+
- **Vue component model for terminal UIs**: build with `TerminalProvider`, `TBox`, `TInput`, `TList`, `TTable`, and more.
|
|
29
|
+
- **Browser + CLI renderers**: render the same UI model to browser DOM or real stdout.
|
|
30
|
+
- **High-throughput surfaces**: virtual lists, append-only logs, streaming markdown, and agent transcripts.
|
|
31
|
+
- **Clear host boundaries**: browser-safe root entrypoint, CLI-only APIs under `/cli`, sanitized links, and explicit host permissions.
|
|
32
|
+
|
|
33
|
+
## Agent UI Showcase
|
|
34
|
+
|
|
35
|
+
A real agent console built on `@simon_he/vue-tui` can stream agent output, markdown content, tool-call status, and input chrome in one terminal surface.
|
|
4
36
|
|
|
5
|
-
|
|
37
|
+
[](./docs/public/agent-console-rendering.mp4)
|
|
6
38
|
|
|
7
|
-
|
|
8
|
-
- CLI apps that use Vue component composition instead of imperative stdout drawing.
|
|
9
|
-
- Shared UI code that can run against a DOM renderer, a stdout renderer, or headless tests.
|
|
10
|
-
- Large terminal surfaces such as virtual lists, append-only logs, markdown transcripts, and agent console UIs.
|
|
39
|
+
[Watch the rendering demo](./docs/public/agent-console-rendering.mp4)
|
|
11
40
|
|
|
12
41
|
## Install
|
|
13
42
|
|
|
14
43
|
```bash
|
|
15
|
-
pnpm add @simon_he/vue-tui
|
|
44
|
+
pnpm add @simon_he/vue-tui vue
|
|
16
45
|
```
|
|
17
46
|
|
|
18
47
|
Vue is a peer dependency. The current package supports Vue `>=3.3.0 <4`.
|
|
@@ -217,19 +246,25 @@ This table is a category overview. The generated API reference for root, `/vue`,
|
|
|
217
246
|
|
|
218
247
|
## Documentation
|
|
219
248
|
|
|
220
|
-
| Page
|
|
221
|
-
|
|
|
222
|
-
| [Docs home](./docs/index.md)
|
|
223
|
-
| [
|
|
224
|
-
| [
|
|
225
|
-
| [
|
|
226
|
-
| [
|
|
227
|
-
| [
|
|
228
|
-
| [
|
|
229
|
-
| [
|
|
230
|
-
| [
|
|
231
|
-
| [
|
|
232
|
-
| [
|
|
249
|
+
| Page | Purpose |
|
|
250
|
+
| ------------------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
251
|
+
| [Docs home](./docs/index.md) | Product overview and reading path |
|
|
252
|
+
| [Vue Terminal UI](./docs/guide/vue-terminal-ui.md) | English landing page for terminal-style Vue interfaces |
|
|
253
|
+
| [Vue CLI UI](./docs/guide/vue-cli-ui.md) | CLI app model with Vue component composition |
|
|
254
|
+
| [CLI stdout renderer](./docs/guide/cli-stdout-renderer.md) | Stdout renderer, stdin driver, cleanup, and terminal output |
|
|
255
|
+
| [Terminal log viewer](./docs/guide/terminal-log-viewer.md) | Append-only logs, retained windows, wrapping, links, and search |
|
|
256
|
+
| [Markdown transcripts](./docs/guide/markdown-transcript.md) | Static and streaming markdown transcript rendering |
|
|
257
|
+
| [Examples index](./docs/examples.md) | Browser, terminal, and smoke example commands |
|
|
258
|
+
| [Core API](./docs/api.md) | Terminal, renderer, events, runtime, planes, and scheduler contracts |
|
|
259
|
+
| [Terminal UI best practices](./docs/terminal-ui-best-practices.md) | Cell layout, input focus, render invalidation, transcripts, tests |
|
|
260
|
+
| [Performance](./docs/performance.md) | Practical performance guidance |
|
|
261
|
+
| [Benchmarks](./docs/benchmarks.md) | Release benchmark budgets, sample results, and comparison boundaries |
|
|
262
|
+
| [OpenTUI Solid comparison](./docs/compare-opentui-solid.md) | Same-scenario comparison protocol and public claim boundaries |
|
|
263
|
+
| [High-throughput rendering](./docs/high-throughput-rendering.md) | Scheduler, dirty rows, mailbox, log, and renderer architecture |
|
|
264
|
+
| [Component acceptance](./docs/components-acceptance.md) | Release readiness checks for component API and behavior |
|
|
265
|
+
| [Agent Console](./docs/agent-console.md) | Streaming transcript example stack |
|
|
266
|
+
| [Release candidate](./docs/release-candidate.md) | 1.0 RC validation, package export checks, and migration notes |
|
|
267
|
+
| [Security policy](./SECURITY.md) | Vulnerability reporting and terminal permission boundaries |
|
|
233
268
|
|
|
234
269
|
Run the docs locally:
|
|
235
270
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getPlaneTerminal } from "./create-terminal-
|
|
1
|
+
import { getPlaneTerminal } from "./create-terminal-DBFNYr8f.js";
|
|
2
2
|
import { charCellWidth, hasEncodedControl } from "./hyperlink-Bn02UXJb.js";
|
|
3
3
|
import { DialogContextKey, EventZIndexContextKey, ImeAnchorContextKey, LayoutContextKey, RenderPlaneContextKey, RenderStackKey, TInputPluginsContextKey, TerminalContextKey, forEachTextCellSegment, graphemeRangeAt, hasTextWidthAsciiFastPath, intersectRect, padEndByCells$1 as padEndByCells, repeatChar, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, textCellWidth$1 as textCellWidth, translateRect, useLayout, useRenderNode, useRenderStack, useTerminal, useTerminalNode, useVisibility, withTextWidthProvider, wrapByCells } from "./wheel-scroll-vBRaQ7p-.js";
|
|
4
4
|
import { TView } from "./linkify-D_gzn9Xq.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { TERMINAL_RENDER_PLANES, createTerminal, getPlaneTerminal, resetPlaneRowsForRender, scrollPlaneRows } from "./create-terminal-
|
|
1
|
+
import { TERMINAL_RENDER_PLANES, createTerminal, getPlaneTerminal, resetPlaneRowsForRender, scrollPlaneRows } from "./create-terminal-DBFNYr8f.js";
|
|
2
2
|
import { sanitizeDomHref } from "./hyperlink-Bn02UXJb.js";
|
|
3
|
-
import { DOM_RENDERER_CAPABILITIES, createDomRenderer } from "./dom-renderer-
|
|
3
|
+
import { DOM_RENDERER_CAPABILITIES, createDomRenderer } from "./dom-renderer-BniJSQyX.js";
|
|
4
4
|
import { EventZIndexContextKey, ImeAnchorContextKey, LayoutContextKey, RenderStackKey, TInputPluginsContextKey, TPathPickerProviderContextKey, TerminalContextKey, VisibilityContextKey, applyWheelScroll, clearTextCaches, createWheelScrollState, forEachTextCellSegment, formatInlineCellLine, injectionKey, intersectRect, normalizeCellRect, padEndByCells$1 as padEndByCells, resetWheelScrollState, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, textCellWidth$1 as textCellWidth, translateRect, useLayout, useRenderNode, useTerminal, useTerminalNode, useVisibility, withTextRenderPass } from "./wheel-scroll-vBRaQ7p-.js";
|
|
5
5
|
import { TView, TuiThemeContextKey, createFrameMailbox, createTheme, defaultActiveStyle, defaultDimStyle, linkifyTextSegments, tuiDefaultTheme } from "./linkify-D_gzn9Xq.js";
|
|
6
6
|
import { SUPPRESS_TERMINAL_POINTER_DOWN, SUPPRESS_TERMINAL_POINTER_MOVE, SUPPRESS_TERMINAL_POINTER_UP, createEventManager, createRuntime } from "./runtime-rfcZCyJq.js";
|
|
7
7
|
import { createFramePerfStore, createTraceStore } from "./trace-CjzYeIxN.js";
|
|
8
8
|
import { envFlag, envString, firstNonEmptyEnv } from "./env-Cl8qmNFN.js";
|
|
9
9
|
import { createTerminalSelectionController } from "./terminal-selection-DBinO6p5.js";
|
|
10
|
-
import { TBox, TInput, TRenderPlane, TText, clamp, fitCellText, mergeStyle, repeatToCells, resolveOverlayPlacement } from "./TSelect-
|
|
10
|
+
import { TBox, TInput, TRenderPlane, TText, clamp, fitCellText, mergeStyle, repeatToCells, resolveOverlayPlacement } from "./TSelect-DR0FomSu.js";
|
|
11
11
|
import { framePerfNow, mergeFramePerfReason } from "./frame-perf-C6Xfg85O.js";
|
|
12
12
|
import { computed, defineComponent, effectScope, getCurrentInstance, h, inject, nextTick, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, ref, shallowReactive, shallowRef, toRef, watch, watchEffect } from "vue";
|
|
13
13
|
|
package/dist/agent.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./create-terminal-
|
|
1
|
+
import "./create-terminal-DBFNYr8f.js";
|
|
2
2
|
import "./hyperlink-Bn02UXJb.js";
|
|
3
3
|
import "./sgr-BmzxEjAO.js";
|
|
4
4
|
import { forEachTextCellSegment, sanitizeInlineText, sanitizeTextBlock, sliceByCells, spaces, textCellWidth$1 as textCellWidth, useTerminal, withTextWidthProvider } from "./wheel-scroll-vBRaQ7p-.js";
|
|
5
5
|
import { TView } from "./linkify-D_gzn9Xq.js";
|
|
6
6
|
import "./terminal-selection-DBinO6p5.js";
|
|
7
|
-
import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, TText, computeCommandPaletteMatchRanges } from "./TSelect-
|
|
7
|
+
import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, TText, computeCommandPaletteMatchRanges } from "./TSelect-DR0FomSu.js";
|
|
8
8
|
import "./frame-perf-C6Xfg85O.js";
|
|
9
9
|
import "./path-mnSgEpCm.js";
|
|
10
10
|
import { TVirtualMarkdown, createMarkdownBlockSource } from "./block-source-CKUOnkgT.js";
|