@simon_he/vue-tui 1.0.1 → 1.1.1
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 +99 -46
- package/dist/TMermaidText-CXm_L969.js +885 -0
- package/dist/{TSelect-HzILuti9.js → TSelect-CiyMvwl-.js} +60 -81
- package/dist/{TTree-ChOot2Bh.js → TTree-DKGiuIcM.js} +140 -103
- package/dist/agent/mermaid.cjs +2 -0
- package/dist/agent/mermaid.d.cts +2 -0
- package/dist/agent/mermaid.d.ts +2 -0
- package/dist/agent/mermaid.js +1 -0
- package/dist/agent.cjs +31184 -24907
- package/dist/agent.d.cts +11 -1
- package/dist/agent.d.ts +11 -1
- package/dist/agent.js +1700 -13
- package/dist/block-source-5CQp4tF8.js +3230 -0
- package/dist/cli/stdin-buffer.d.ts +1 -1
- package/dist/cli.cjs +5363 -6178
- package/dist/cli.d.cts +5 -1
- package/dist/cli.d.ts +5 -1
- package/dist/cli.js +3569 -302
- package/dist/core/buffer/buffer.d.ts +2 -2
- package/dist/core/buffer/eaw-ranges-unicode-17.d.ts +14 -0
- package/dist/core/perf/instrumentation-noop.d.ts +48 -0
- package/dist/core/perf/instrumentation.d.ts +136 -0
- package/dist/core/terminal/create-terminal.d.ts +1 -0
- package/dist/core/types.d.ts +0 -4
- package/dist/core.cjs +851 -1462
- package/dist/core.js +6 -6
- package/dist/{create-terminal-C2oiWFJU.js → create-terminal-DXuZ2fci.js} +54 -19
- package/dist/debug-logger-ChY_PXVk.js +74 -0
- package/dist/{dom-renderer-BqGijQID.js → dom-renderer-DNzmg2As.js} +2 -2
- package/dist/experimental.cjs +4115 -5928
- package/dist/experimental.d.cts +2 -0
- package/dist/experimental.d.ts +2 -0
- package/dist/experimental.js +1490 -9
- package/dist/frame-perf-BBhE-iuS.js +111 -0
- package/dist/{sgr-BmzxEjAO.js → hyperlink-B35-O-cW.js} +100 -1
- package/dist/index.cjs +5025 -10332
- package/dist/index.js +16 -14
- package/dist/{linkify-D_gzn9Xq.js → linkify-CuuquMQT.js} +32 -3
- package/dist/markdown.cjs +21295 -12691
- package/dist/markdown.d.cts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/markdown.js +211 -51
- package/dist/mermaid-CWto52Wk.js +123 -0
- package/dist/mermaid.cjs +1707 -0
- package/dist/mermaid.d.cts +3 -0
- package/dist/mermaid.d.ts +3 -0
- package/dist/mermaid.js +6 -0
- package/dist/observability/frame-perf-store.d.ts +2 -1
- package/dist/observability/frame-perf.d.ts +33 -0
- package/dist/observability.cjs +106 -107
- package/dist/observability.d.cts +2 -2
- package/dist/observability.d.ts +2 -2
- package/dist/observability.js +3 -3
- package/dist/{path-suggest-BNqcuE3-.js → path-suggest-fPzRsgPv.js} +1 -1
- package/dist/{wheel-scroll-vBRaQ7p-.js → rect-Ng-3eKzF.js} +253 -117
- package/dist/renderer/cli/index.d.ts +1 -1
- package/dist/renderer/cli/stdout-metrics.d.ts +10 -0
- package/dist/renderer/cli/stdout-renderer.d.ts +53 -7
- package/dist/renderer/terminal-graphic-render-queue.d.ts +50 -0
- package/dist/renderer/terminal-graphics-trace.d.ts +53 -0
- package/dist/renderer/terminal-graphics.d.ts +146 -0
- package/dist/renderer-dom.cjs +364 -903
- package/dist/renderer-dom.js +4 -4
- package/dist/runtime/index.d.ts +2 -0
- package/dist/{runtime-rfcZCyJq.js → runtime-D77C03RM.js} +28 -15
- package/dist/runtime.cjs +427 -889
- package/dist/runtime.js +2 -2
- package/dist/{terminal-selection-DBinO6p5.js → terminal-selection-CQYr--26.js} +4 -1
- package/dist/{tlog-theme-CvLFNMwk.js → tlog-theme-CopRt9SC.js} +37 -6
- package/dist/{trace-CjzYeIxN.js → trace-CYHDKM1m.js} +5 -0
- package/dist/vue/agent/create-png-terminal-graphic-renderer.d.ts +19 -0
- package/dist/vue/components/TAgentTerminalGraphic.d.ts +481 -0
- package/dist/vue/components/TCharts.d.ts +1121 -0
- package/dist/vue/components/TFeedback.d.ts +1 -1
- package/dist/vue/components/TFlex.d.ts +389 -0
- package/dist/vue/components/TForm.d.ts +4 -4
- package/dist/vue/components/TLogSearchBar.d.ts +3 -3
- package/dist/vue/components/TLogSearchPager.d.ts +2 -2
- package/dist/vue/components/TMarkdownText.d.ts +162 -4
- package/dist/vue/components/TMermaidText.d.ts +900 -0
- package/dist/vue/components/TVirtualList.d.ts +9 -0
- package/dist/vue/components/TVirtualMarkdown.d.ts +170 -9
- package/dist/vue/components/TVirtualRows.d.ts +9 -0
- package/dist/vue/components/TerminalProvider.d.ts +2 -0
- package/dist/vue/context.d.ts +24 -0
- package/dist/vue/index.d.ts +5 -0
- package/dist/vue/layout/flex.d.ts +67 -0
- package/dist/vue/markdown/ast.d.ts +5 -2
- package/dist/vue/markdown/document.d.ts +5 -0
- package/dist/vue/markdown/image-actions.d.ts +14 -0
- package/dist/vue/markdown/image.d.ts +11 -0
- package/dist/vue/markdown/link-actions.d.ts +14 -0
- package/dist/vue/markdown/math-actions.d.ts +14 -0
- package/dist/vue/markdown/math.d.ts +6 -0
- package/dist/vue/markdown/render.d.ts +28 -0
- package/dist/vue/markdown/types.d.ts +78 -0
- package/dist/vue/mermaid/beautiful-mermaid.d.ts +1436 -0
- package/dist/vue/render/render-manager.d.ts +7 -0
- package/dist/vue.cjs +7215 -12430
- package/dist/vue.js +706 -39
- package/dist/wheel-scroll-CQ22Hcyj.js +106 -0
- package/dist/{hyperlink-Bn02UXJb.js → width-GqllnV8C.js} +166 -111
- package/package.json +107 -18
- package/dist/block-source-CKUOnkgT.js +0 -1663
- package/dist/frame-perf-C6Xfg85O.js +0 -24
- /package/dist/{env-Cl8qmNFN.js → env-DNCzvX8b.js} +0 -0
- /package/dist/{path-mnSgEpCm.js → path-BI9W15Zt.js} +0 -0
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.
|
|
4
32
|
|
|
5
|
-
|
|
33
|
+
## Agent UI Showcase
|
|
6
34
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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.
|
|
36
|
+
|
|
37
|
+
[](./docs/public/agent-console-rendering.mp4)
|
|
38
|
+
|
|
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`.
|
|
@@ -25,20 +54,33 @@ Development, release validation, and documentation builds are run on Node.js 20
|
|
|
25
54
|
|
|
26
55
|
## Entry Points
|
|
27
56
|
|
|
28
|
-
| Import | Stability | Use it for
|
|
29
|
-
| --------------------------------- | ------------ |
|
|
30
|
-
| `@simon_he/vue-tui` | Public | Browser-safe terminal core, DOM renderer, stable Vue components, and input host plugin factory
|
|
31
|
-
| `@simon_he/vue-tui/core` | Public | Terminal core, buffer-facing types, ANSI/theme/path/hyperlink helpers
|
|
32
|
-
| `@simon_he/vue-tui/renderer/dom` | Public | DOM renderer factory and renderer capabilities
|
|
33
|
-
| `@simon_he/vue-tui/vue` | Advanced | Extended Vue components, composables, router helpers, and Vue runtime internals
|
|
34
|
-
| `@simon_he/vue-tui/runtime` | Advanced | Runtime wiring, selection helpers, and clipboard abstraction
|
|
35
|
-
| `@simon_he/vue-tui/observability` | Advanced | Frame perf store, profiler hooks, and trace helpers
|
|
36
|
-
| `@simon_he/vue-tui/cli` | Public | Node-only headless Vue app runtime, stdin driver, stdout renderer, path provider, recording, and terminal clipboard helpers
|
|
37
|
-
| `@simon_he/vue-tui/markdown` | Public | `TMarkdownText`, `TVirtualMarkdown`, markdown parser and layout helpers, streaming markdown block sources
|
|
38
|
-
| `@simon_he/vue-tui/
|
|
39
|
-
| `@simon_he/vue-tui/
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
| Import | Stability | Use it for |
|
|
58
|
+
| --------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
+
| `@simon_he/vue-tui` | Public | Browser-safe terminal core, DOM renderer, stable Vue components, and input host plugin factory |
|
|
60
|
+
| `@simon_he/vue-tui/core` | Public | Terminal core, buffer-facing types, ANSI/theme/path/hyperlink helpers |
|
|
61
|
+
| `@simon_he/vue-tui/renderer/dom` | Public | DOM renderer factory and renderer capabilities |
|
|
62
|
+
| `@simon_he/vue-tui/vue` | Advanced | Extended Vue components, composables, router helpers, and Vue runtime internals |
|
|
63
|
+
| `@simon_he/vue-tui/runtime` | Advanced | Runtime wiring, selection helpers, and clipboard abstraction |
|
|
64
|
+
| `@simon_he/vue-tui/observability` | Advanced | Frame perf store, profiler hooks, and trace helpers |
|
|
65
|
+
| `@simon_he/vue-tui/cli` | Public | Node-only headless Vue app runtime, stdin driver, stdout renderer, path provider, recording, and terminal clipboard helpers |
|
|
66
|
+
| `@simon_he/vue-tui/markdown` | Public | `TMarkdownText`, `TVirtualMarkdown`, markdown parser and layout helpers, streaming markdown block sources |
|
|
67
|
+
| `@simon_he/vue-tui/mermaid` | Public | Optional `beautiful-mermaid` bridge and wrapper for `TMermaidText` |
|
|
68
|
+
| `@simon_he/vue-tui/experimental` | Experimental | `TContributionGraph`, `TLineChart`, `TCandlestickChart`, `TPieChart`, `TVirtualList`, `TTranscriptView`, `TLogView`, TLog search/link/minimap companions, append-only log store, and TLog plugins |
|
|
69
|
+
| `@simon_he/vue-tui/agent` | Experimental | Agent/console transcript, tool-call header, log, markdown, virtual list, render plane, and overlay component aggregation |
|
|
70
|
+
| `@simon_he/vue-tui/agent/mermaid` | Experimental | Agent namespace optional `beautiful-mermaid` bridge and wrapper for `TMermaidText` |
|
|
71
|
+
|
|
72
|
+
The stable surface is terminal core, DOM rendering, CLI runtime, basic Vue components, markdown APIs, and the optional Mermaid bridge. High-throughput log, virtualization, and agent/console aggregation APIs stay under `/experimental` or `/agent` until their public surface settles; keep those imports isolated in application code. Use `/agent/mermaid` when agent code wants the optional Mermaid wrapper without changing the `/agent` main entrypoint.
|
|
73
|
+
|
|
74
|
+
Experimental chart components are imported from the `/experimental` entrypoint:
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
import {
|
|
78
|
+
TCandlestickChart,
|
|
79
|
+
TContributionGraph,
|
|
80
|
+
TLineChart,
|
|
81
|
+
TPieChart,
|
|
82
|
+
} from "@simon_he/vue-tui/experimental";
|
|
83
|
+
```
|
|
42
84
|
|
|
43
85
|
Do not deep import from `@simon_he/vue-tui/dist/...`; only the entry points above are part of the supported package contract.
|
|
44
86
|
|
|
@@ -200,36 +242,46 @@ Unhandled promise rejections stay host-owned by default. Setting `cleanupOnUnhan
|
|
|
200
242
|
|
|
201
243
|
## Components
|
|
202
244
|
|
|
203
|
-
| Area | Import
|
|
204
|
-
| -------------- |
|
|
205
|
-
| Stable layout | `@simon_he/vue-tui`
|
|
206
|
-
| Stable text | `@simon_he/vue-tui`
|
|
207
|
-
| Stable input | `@simon_he/vue-tui`
|
|
208
|
-
| Stable overlay | `@simon_he/vue-tui`
|
|
209
|
-
| Vue extended | `@simon_he/vue-tui/vue`
|
|
210
|
-
| Markdown | `@simon_he/vue-tui/markdown`
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
245
|
+
| Area | Import | Components / APIs |
|
|
246
|
+
| -------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
247
|
+
| Stable layout | `@simon_he/vue-tui` | `TBox`, `TView` |
|
|
248
|
+
| Stable text | `@simon_he/vue-tui` | `TText`, `TLink`, `TLinkifyText` |
|
|
249
|
+
| Stable input | `@simon_he/vue-tui` | `TInput`, `TList`, `TSelect` |
|
|
250
|
+
| Stable overlay | `@simon_he/vue-tui` | `TDialog` |
|
|
251
|
+
| Vue extended | `@simon_he/vue-tui/vue` | `TAnchor`, `TFlex`, `TFlexItem`, `TFlow`, `TRenderPlane`, `TRenderLayer`, `TTransition`, `TInputBox`, `TPathPicker`, `TJsonEditor`, `TMultilineModal`, `TDebugOverlay`, composables, router APIs |
|
|
252
|
+
| Markdown | `@simon_he/vue-tui/markdown` | `TMarkdownText`, `TVirtualMarkdown` |
|
|
253
|
+
| Mermaid | `@simon_he/vue-tui/mermaid` | `beautifulMermaidRenderer`, `TMermaid`, `TMermaidText`, `TBeautifulMermaidText` |
|
|
254
|
+
| Experimental | `@simon_he/vue-tui/experimental` | `TContributionGraph`, `TLineChart`, `TCandlestickChart`, `TPieChart`, `TVirtualList`, `TTranscriptView`, `TLogView`, `TLogSearchBar`, `TLogLinksPanel`, `TLogScrollbar`, `TLogMinimap` |
|
|
255
|
+
| Agent console | `@simon_he/vue-tui/agent` | `TAgentTranscript`, `TToolCallView`, `TToolLogView`, `TVirtualMarkdown`, `TVirtualList`, `TRenderPlane` |
|
|
256
|
+
| Agent Mermaid | `@simon_he/vue-tui/agent/mermaid` | `beautifulMermaidRenderer`, `TMermaid`, `TMermaidText`, `TBeautifulMermaidText` |
|
|
257
|
+
| Runtime | `@simon_he/vue-tui/runtime` | runtime, event, and selection APIs |
|
|
258
|
+
| CLI | `@simon_he/vue-tui/cli` | `createTerminalApp`, `createStdoutRenderer`, `createStdinDriver`, Node host adapters |
|
|
259
|
+
|
|
260
|
+
For streaming Mermaid source, pass `streaming` with `final`. When `streaming=true` and `final=false`, transient renderer errors do not replace the last successfully rendered diagram; if no diagram has rendered yet, `incompleteText` is shown until the source becomes renderable or `final=true` surfaces the final error.
|
|
215
261
|
|
|
216
262
|
This table is a category overview. The generated API reference for root, `/vue`, and `/experimental` components lives in [docs/generated/components-api.md](./docs/generated/components-api.md) for humans and [docs/generated/api-manifest.json](./docs/generated/api-manifest.json) for CI, release checks, and README/docs drift checks; the manifest also tracks package entrypoint exports.
|
|
217
263
|
|
|
218
264
|
## Documentation
|
|
219
265
|
|
|
220
|
-
| Page
|
|
221
|
-
|
|
|
222
|
-
| [Docs home](./docs/index.md)
|
|
223
|
-
| [
|
|
224
|
-
| [
|
|
225
|
-
| [
|
|
226
|
-
| [
|
|
227
|
-
| [
|
|
228
|
-
| [
|
|
229
|
-
| [
|
|
230
|
-
| [
|
|
231
|
-
| [
|
|
232
|
-
| [
|
|
266
|
+
| Page | Purpose |
|
|
267
|
+
| ------------------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
268
|
+
| [Docs home](./docs/index.md) | Product overview and reading path |
|
|
269
|
+
| [Vue Terminal UI](./docs/guide/vue-terminal-ui.md) | English landing page for terminal-style Vue interfaces |
|
|
270
|
+
| [Vue CLI UI](./docs/guide/vue-cli-ui.md) | CLI app model with Vue component composition |
|
|
271
|
+
| [CLI stdout renderer](./docs/guide/cli-stdout-renderer.md) | Stdout renderer, stdin driver, cleanup, and terminal output |
|
|
272
|
+
| [Terminal log viewer](./docs/guide/terminal-log-viewer.md) | Append-only logs, retained windows, wrapping, links, and search |
|
|
273
|
+
| [Markdown transcripts](./docs/guide/markdown-transcript.md) | Static and streaming markdown transcript rendering |
|
|
274
|
+
| [Examples index](./docs/examples.md) | Browser, terminal, and smoke example commands |
|
|
275
|
+
| [Core API](./docs/api.md) | Terminal, renderer, events, runtime, planes, and scheduler contracts |
|
|
276
|
+
| [Terminal UI best practices](./docs/terminal-ui-best-practices.md) | Cell layout, input focus, render invalidation, transcripts, tests |
|
|
277
|
+
| [Performance](./docs/performance.md) | Practical performance guidance |
|
|
278
|
+
| [Benchmarks](./docs/benchmarks.md) | Release benchmark budgets, sample results, and comparison boundaries |
|
|
279
|
+
| [OpenTUI Solid comparison](./docs/compare-opentui-solid.md) | Same-scenario comparison protocol and public claim boundaries |
|
|
280
|
+
| [High-throughput rendering](./docs/high-throughput-rendering.md) | Scheduler, dirty rows, mailbox, log, and renderer architecture |
|
|
281
|
+
| [Component acceptance](./docs/components-acceptance.md) | Release readiness checks for component API and behavior |
|
|
282
|
+
| [Agent Console](./docs/agent-console.md) | Streaming transcript example stack |
|
|
283
|
+
| [Release candidate](./docs/release-candidate.md) | 1.0 RC validation, package export checks, and migration notes |
|
|
284
|
+
| [Security policy](./SECURITY.md) | Vulnerability reporting and terminal permission boundaries |
|
|
233
285
|
|
|
234
286
|
Run the docs locally:
|
|
235
287
|
|
|
@@ -306,6 +358,7 @@ pnpm run release:dry-run
|
|
|
306
358
|
|
|
307
359
|
- The published package ships `dist` only.
|
|
308
360
|
- Root, core, runtime, DOM renderer, observability, Vue, CLI, markdown, experimental, and agent entrypoints are available as ESM, CJS, and type declarations after build.
|
|
361
|
+
- The Mermaid bridge entrypoints ship ESM, CJS, and type declarations.
|
|
309
362
|
- The root browser/core API does not require a Node runtime, but CLI usage expects a Node-like stdout/stdin environment.
|
|
310
363
|
- Terminal emoji and East Asian width behavior still depends on the user terminal and font.
|
|
311
364
|
|