@simon_he/vue-tui 0.0.8 → 1.0.0-rc.0
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 +130 -27
- package/dist/TSelect-BmSkar0D.js +8697 -0
- package/dist/ansi-palette-Bv5Vqr4k.js +1499 -0
- package/dist/ansi-styles.d.ts +200 -0
- package/dist/cli/headless-renderer.d.ts +29 -0
- package/dist/cli/input.d.ts +49 -0
- package/dist/cli/node-file-writers.d.ts +12 -0
- package/dist/cli/node-module.d.ts +2 -0
- package/dist/cli/parse-kitty.d.ts +2 -0
- package/dist/cli/parse-mouse.d.ts +2 -0
- package/dist/cli/parse-utils.d.ts +14 -0
- package/dist/cli/parse-xterm.d.ts +2 -0
- package/dist/cli/path-provider-types.d.ts +1 -0
- package/dist/cli/path-provider.d.ts +4 -0
- package/dist/cli/path-suggest-core.d.ts +1 -0
- package/dist/cli/path-suggest.d.ts +15 -0
- package/dist/cli/recording.d.ts +4 -0
- package/dist/cli/stdin-buffer.d.ts +33 -0
- package/dist/cli.cjs +10664 -0
- package/dist/cli.d.cts +22 -0
- package/dist/cli.d.ts +22 -0
- package/dist/cli.js +9521 -0
- package/dist/core/ansi/capability.d.ts +20 -0
- package/dist/core/ansi/colors.d.ts +41 -0
- package/dist/core/ansi/sgr.d.ts +7 -0
- package/dist/core/ansi/theme.d.ts +6 -0
- package/dist/core/ansi-palette.d.ts +14 -0
- package/dist/core/buffer/buffer.d.ts +54 -0
- package/dist/core/buffer/width.d.ts +4 -0
- package/dist/core/debug-logger.d.ts +18 -0
- package/dist/core/hyperlink.d.ts +9 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/path-provider-types.d.ts +24 -0
- package/dist/core/path-suggest.d.ts +35 -0
- package/dist/core/render-plane.d.ts +3 -0
- package/dist/core/terminal/create-terminal.d.ts +7 -0
- package/dist/core/terminal/emitter.d.ts +7 -0
- package/dist/core/types.d.ts +107 -0
- package/dist/core.cjs +3072 -0
- package/dist/core.d.cts +14 -0
- package/dist/core.d.ts +14 -0
- package/dist/core.js +422 -0
- package/dist/create-terminal-app.d.ts +34 -0
- package/dist/dom-renderer-CDVQIcIL.js +1172 -0
- package/dist/events/index.d.ts +6 -0
- package/dist/events/manager/cli-event-manager.d.ts +22 -0
- package/dist/events/manager/event-manager.d.ts +30 -0
- package/dist/events/manager/selection-suppression.d.ts +3 -0
- package/dist/events/manager/types.d.ts +108 -0
- package/dist/events/recording.d.ts +44 -0
- package/dist/experimental.cjs +1777 -1244
- package/dist/experimental.d.cts +39 -0
- package/dist/experimental.d.ts +39 -825
- package/dist/experimental.js +492 -343
- package/dist/frame-perf-C-w8mjJL.js +98 -0
- package/dist/hyperlink-B5PD7a3Q.js +331 -0
- package/dist/index.cjs +13133 -19960
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -1528
- package/dist/index.js +13 -20026
- package/dist/markdown.cjs +8728 -7359
- package/dist/markdown.d.cts +10 -0
- package/dist/markdown.d.ts +10 -112
- package/dist/markdown.js +169 -101
- package/dist/observability/cli-latency-node.d.ts +3 -0
- package/dist/observability/cli-latency-types.d.ts +41 -0
- package/dist/observability/cli-latency.d.ts +3 -0
- package/dist/observability/frame-perf-store.d.ts +13 -0
- package/dist/observability/frame-perf.d.ts +40 -0
- package/dist/observability/trace.d.ts +40 -0
- package/dist/observability/tui-profiler.d.ts +33 -0
- package/dist/observability.cjs +99 -0
- package/dist/observability.d.cts +6 -0
- package/dist/observability.d.ts +6 -0
- package/dist/observability.js +3 -0
- package/dist/path-DDiSCXrQ.js +99 -0
- package/dist/path-suggest-0Q2BDsuj.js +274 -0
- package/dist/path-suggest-Dk9TRLh5.js +3 -0
- package/dist/{path-suggest-DmrmeueH.js → path-suggest-bvR9SY6Q.js} +86 -18
- package/dist/renderer/capabilities.d.ts +13 -0
- package/dist/renderer/cli/index.d.ts +2 -0
- package/dist/renderer/cli/stdout-metrics.d.ts +18 -0
- package/dist/renderer/cli/stdout-renderer.d.ts +48 -0
- package/dist/renderer/dom/dom-renderer.d.ts +157 -0
- package/dist/renderer/dom/index.d.ts +2 -0
- package/dist/renderer/index.d.ts +2 -0
- package/dist/renderer-dom.cjs +1511 -0
- package/dist/renderer-dom.d.cts +4 -0
- package/dist/renderer-dom.d.ts +4 -0
- package/dist/renderer-dom.js +6 -0
- package/dist/runtime/index.d.ts +36 -0
- package/dist/runtime/osc52.d.ts +9 -0
- package/dist/runtime-DtrcQidD.js +1197 -0
- package/dist/runtime.cjs +1697 -0
- package/dist/runtime.d.cts +9 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.js +4 -0
- package/dist/selection/terminal-selection.d.ts +122 -0
- package/dist/sgr-DMK2AvuT.js +304 -0
- package/dist/style-cache-i0ZABZRq.js +178 -0
- package/dist/terminal-selection-BCOh9jsL.js +329 -0
- package/dist/utils/env.d.ts +3 -0
- package/dist/utils/newlines.d.ts +1 -0
- package/dist/utils/path.d.ts +7 -0
- package/dist/utils/url-safety.d.ts +2 -0
- package/dist/vue/components/TAnchor.d.ts +108 -0
- package/dist/vue/components/TBox.d.ts +144 -0
- package/dist/vue/components/TDebugOverlay.d.ts +43 -0
- package/dist/vue/components/TDialog.d.ts +256 -0
- package/dist/vue/components/TFlow.d.ts +85 -0
- package/dist/vue/components/TInput.d.ts +554 -0
- package/dist/vue/components/TInputBox.d.ts +158 -0
- package/dist/vue/components/TJsonEditor.d.ts +165 -0
- package/dist/vue/components/TList.d.ts +119 -0
- package/dist/vue/components/TLogLinksPanel.d.ts +238 -0
- package/dist/vue/components/TLogMinimap.d.ts +263 -0
- package/dist/vue/components/TLogScrollbar.d.ts +236 -0
- package/dist/vue/components/TLogSearchBar.d.ts +267 -0
- package/dist/vue/components/TLogSearchPager.d.ts +162 -0
- package/dist/vue/components/TLogSearchResults.d.ts +200 -0
- package/dist/vue/components/TLogView.d.ts +502 -0
- package/dist/vue/components/TLogVirtualLinksPanel.d.ts +141 -0
- package/dist/vue/components/TLogVirtualSearchResults.d.ts +146 -0
- package/dist/vue/components/TMarkdownText.d.ts +134 -0
- package/dist/vue/components/TMultilineModal.d.ts +62 -0
- package/dist/vue/components/TPathPicker.d.ts +213 -0
- package/dist/vue/components/TRenderLayer.d.ts +16 -0
- package/dist/vue/components/TRenderPlane.d.ts +17 -0
- package/dist/vue/components/TSelect.d.ts +215 -0
- package/dist/vue/components/TText.d.ts +116 -0
- package/dist/vue/components/TTransition.d.ts +83 -0
- package/dist/vue/components/TView.d.ts +127 -0
- package/dist/vue/components/TVirtualList.d.ts +182 -0
- package/dist/vue/components/TVirtualMarkdown.d.ts +168 -0
- package/dist/vue/components/TerminalProvider.d.ts +195 -0
- package/dist/vue/components/input/host.d.ts +17 -0
- package/dist/vue/components/input/plugins/hostPlugin.d.ts +7 -0
- package/dist/vue/components/input/plugins/hostPlugin.node.d.ts +15 -0
- package/dist/vue/components/input/plugins/mentionUtils.d.ts +17 -0
- package/dist/vue/components/input/plugins/nodeMentionPathProvider.d.ts +2 -0
- package/dist/vue/components/input/plugins/promptMentionPlugin.d.ts +8 -0
- package/dist/vue/components/input/plugins/promptMentionState.d.ts +98 -0
- package/dist/vue/components/input/plugins/restrictText.d.ts +27 -0
- package/dist/vue/components/input/plugins/types.d.ts +90 -0
- package/dist/vue/components/input/utils/inlineText.d.ts +57 -0
- package/dist/vue/components/input/utils/inlineTextTokens.d.ts +34 -0
- package/dist/vue/components/input/utils/primitives.d.ts +3 -0
- package/dist/vue/components/input/utils/wordNavigation.d.ts +6 -0
- package/dist/vue/components/list/list-geometry.d.ts +16 -0
- package/dist/vue/components/list/list-paint.d.ts +1 -0
- package/dist/vue/components/list/scroll-state.d.ts +25 -0
- package/dist/vue/components/list/selection-state.d.ts +6 -0
- package/dist/vue/components/terminal-provider/copy-toast.d.ts +6 -0
- package/dist/vue/components/terminal-provider/portals.d.ts +17 -0
- package/dist/vue/components/terminal-provider/scheduler.d.ts +29 -0
- package/dist/vue/components/terminal-provider/selection-config.d.ts +15 -0
- package/dist/vue/components/terminal-provider/utils.d.ts +5 -0
- package/dist/vue/composables/use-layout.d.ts +2 -0
- package/dist/vue/composables/use-render-node.d.ts +19 -0
- package/dist/vue/composables/use-render-stack.d.ts +3 -0
- package/dist/vue/composables/use-runtime.d.ts +5 -0
- package/dist/vue/composables/use-terminal-node.d.ts +14 -0
- package/dist/vue/composables/use-terminal.d.ts +2 -0
- package/dist/vue/composables/use-visibility.d.ts +12 -0
- package/dist/vue/context.d.ts +153 -0
- package/dist/vue/index.d.ts +39 -0
- package/dist/vue/injection-key.d.ts +2 -0
- package/dist/vue/log/append-only-log-store.d.ts +2 -0
- package/dist/vue/log/tlog-keymap.d.ts +28 -0
- package/dist/vue/log/tlog-plugins.d.ts +144 -0
- package/dist/vue/log/tlog-session.d.ts +81 -0
- package/dist/vue/log/tlog-theme.d.ts +68 -0
- package/dist/vue/log/types.d.ts +43 -0
- package/dist/vue/log/use-tlog-link-controller.d.ts +31 -0
- package/dist/vue/log/use-tlog-retained-index.d.ts +26 -0
- package/dist/vue/log/use-tlog-search-controller.d.ts +51 -0
- package/dist/vue/log/use-tlog-search-results-page.d.ts +31 -0
- package/dist/vue/log/use-tlog-virtual-search-results.d.ts +22 -0
- package/dist/vue/markdown/ast.d.ts +3 -0
- package/dist/vue/markdown/block-source.d.ts +22 -0
- package/dist/vue/markdown/document.d.ts +18 -0
- package/dist/vue/markdown/layout.d.ts +16 -0
- package/dist/vue/markdown/parser.d.ts +11 -0
- package/dist/vue/markdown/render.d.ts +10 -0
- package/dist/vue/markdown/theme.d.ts +186 -0
- package/dist/vue/markdown/types.d.ts +47 -0
- package/dist/vue/render/context.d.ts +3 -0
- package/dist/vue/render/render-manager.d.ts +94 -0
- package/dist/vue/router/RouterView.d.ts +25 -0
- package/dist/vue/router/composables.d.ts +4 -0
- package/dist/vue/router/context.d.ts +4 -0
- package/dist/vue/router/router.d.ts +7 -0
- package/dist/vue/router/types.d.ts +29 -0
- package/dist/vue/scheduler/frame-mailbox.d.ts +55 -0
- package/dist/vue/scheduler/frame-scheduler.d.ts +51 -0
- package/dist/vue/utils/frame-task.d.ts +6 -0
- package/dist/vue/utils/rect.d.ts +4 -0
- package/dist/vue/utils/style-cache.d.ts +3 -0
- package/dist/vue/utils/text.d.ts +26 -0
- package/dist/vue/utils/wheel-scroll.d.ts +18 -0
- package/dist/vue.cjs +18882 -0
- package/dist/vue.d.cts +3 -0
- package/dist/vue.d.ts +3 -0
- package/dist/vue.js +3066 -0
- package/dist/{wheel-scroll-CiNsasLf.js → wheel-scroll-B-WlFuNB.js} +361 -367
- package/package.json +165 -35
- package/dist/path-suggest-BeV6n7m-.js +0 -3
- package/dist/sgr-Tko2EQ0U.js +0 -484
- package/dist/theme-Bsm65g8k.d.ts +0 -32
- package/dist/types-ClIV2h1o.d.ts +0 -103
package/README.md
CHANGED
|
@@ -12,20 +12,86 @@ Use it when you want:
|
|
|
12
12
|
## Install
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
pnpm add @simon_he/vue-tui vue
|
|
15
|
+
pnpm add @simon_he/vue-tui@rc vue
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Vue is a peer dependency. The current package supports Vue `>=3.3.0 <4`.
|
|
19
19
|
|
|
20
|
+
## Runtime Support
|
|
21
|
+
|
|
22
|
+
The published package supports Node.js `>=16.17` for CLI/runtime consumers.
|
|
23
|
+
|
|
24
|
+
Development, release validation, and documentation builds are run on Node.js 20 in CI because the repository toolchain uses modern build/test tooling.
|
|
25
|
+
|
|
20
26
|
## Entry Points
|
|
21
27
|
|
|
22
|
-
| Import
|
|
23
|
-
|
|
|
24
|
-
| `@simon_he/vue-tui`
|
|
25
|
-
| `@simon_he/vue-tui/
|
|
26
|
-
| `@simon_he/vue-tui/
|
|
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/experimental` | Experimental | `TVirtualList`, `TLogView`, TLog search/link/minimap companions, append-only log store, and TLog plugins |
|
|
39
|
+
|
|
40
|
+
The stable surface is terminal core, DOM rendering, CLI runtime, basic Vue components, and markdown APIs. High-throughput log and virtualization APIs stay under `/experimental` until their public surface settles; keep those imports isolated in application code.
|
|
41
|
+
|
|
42
|
+
Do not deep import from `@simon_he/vue-tui/dist/...`; only the entry points above are part of the supported package contract.
|
|
43
|
+
|
|
44
|
+
### Migration: Node Host Adapter Moved To `/cli`
|
|
45
|
+
|
|
46
|
+
Node-specific input host defaults are no longer exported from the browser-safe root entrypoint.
|
|
47
|
+
|
|
48
|
+
Before:
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import { createDefaultTInputHostAdapter, defaultTInputHostPlugin } from "@simon_he/vue-tui";
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
After:
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { createTInputHostPlugin } from "@simon_he/vue-tui";
|
|
58
|
+
import { createDefaultTInputHostAdapter, defaultTInputHostPlugin } from "@simon_he/vue-tui/cli";
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Migration: Root Entry Was Narrowed
|
|
62
|
+
|
|
63
|
+
The root entrypoint now keeps only stable browser-safe APIs. Extended Vue components and Vue router/composable helpers move to `@simon_he/vue-tui/vue`.
|
|
27
64
|
|
|
28
|
-
|
|
65
|
+
| Before root import | New import |
|
|
66
|
+
| ------------------ | ----------------------- |
|
|
67
|
+
| `TAnchor` | `@simon_he/vue-tui/vue` |
|
|
68
|
+
| `TFlow` | `@simon_he/vue-tui/vue` |
|
|
69
|
+
| `TInputBox` | `@simon_he/vue-tui/vue` |
|
|
70
|
+
| `TPathPicker` | `@simon_he/vue-tui/vue` |
|
|
71
|
+
| `TJsonEditor` | `@simon_he/vue-tui/vue` |
|
|
72
|
+
| `TRenderPlane` | `@simon_he/vue-tui/vue` |
|
|
73
|
+
| `TRenderLayer` | `@simon_he/vue-tui/vue` |
|
|
74
|
+
| `TTransition` | `@simon_he/vue-tui/vue` |
|
|
75
|
+
| router/composables | `@simon_he/vue-tui/vue` |
|
|
76
|
+
| Node host defaults | `@simon_he/vue-tui/cli` |
|
|
77
|
+
|
|
78
|
+
Before:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
import { TAnchor, TFlow } from "@simon_he/vue-tui";
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
After:
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import { TAnchor, TFlow } from "@simon_he/vue-tui/vue";
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Hyperlinks
|
|
91
|
+
|
|
92
|
+
DOM renderer link rendering is opt-in through `domRendererOptions.links`. Once enabled, DOM anchors allow safe absolute and relative targets such as `https:`, `http:`, `mailto:`, `/path`, `./path`, `../path`, `#hash`, and `?q=1`. Link callbacks preserve native browser behavior unless they return `false`.
|
|
93
|
+
|
|
94
|
+
CLI/stdout rendering uses OSC8 hyperlinks and keeps a stricter boundary: only safe absolute `https:`, `http:`, and `mailto:` hrefs are emitted by default. `file:` links stay opt-in for terminal-specific providers.
|
|
29
95
|
|
|
30
96
|
## Browser Usage
|
|
31
97
|
|
|
@@ -54,7 +120,13 @@ const input = ref("");
|
|
|
54
120
|
For a real terminal, mount a headless Vue app and attach stdout/stdin:
|
|
55
121
|
|
|
56
122
|
```ts
|
|
57
|
-
import {
|
|
123
|
+
import {
|
|
124
|
+
createStdinDriver,
|
|
125
|
+
createStdoutRenderer,
|
|
126
|
+
createTerminalApp,
|
|
127
|
+
installTerminalCleanup,
|
|
128
|
+
type TerminalCleanupHandle,
|
|
129
|
+
} from "@simon_he/vue-tui/cli";
|
|
58
130
|
import App from "./App.vue";
|
|
59
131
|
|
|
60
132
|
const app = createTerminalApp({
|
|
@@ -70,45 +142,70 @@ const renderer = createStdoutRenderer(app.terminal, {
|
|
|
70
142
|
output: process.stdout,
|
|
71
143
|
hideCursor: true,
|
|
72
144
|
colorMode: "auto",
|
|
145
|
+
allowFileUrls: true,
|
|
73
146
|
});
|
|
74
147
|
|
|
75
148
|
app.scheduler.flush();
|
|
76
149
|
|
|
77
|
-
|
|
150
|
+
let driver: ReturnType<typeof createStdinDriver> | null = null;
|
|
151
|
+
let terminalCleanup: TerminalCleanupHandle | null = null;
|
|
152
|
+
let disposed = false;
|
|
153
|
+
|
|
154
|
+
const cleanup = () => {
|
|
155
|
+
if (disposed) return;
|
|
156
|
+
disposed = true;
|
|
157
|
+
terminalCleanup?.uninstall();
|
|
158
|
+
driver?.dispose();
|
|
159
|
+
renderer.dispose();
|
|
160
|
+
app.dispose();
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const exit = () => {
|
|
164
|
+
cleanup();
|
|
165
|
+
process.exit(0);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
terminalCleanup = installTerminalCleanup(cleanup, {
|
|
169
|
+
signalPolicy: "reraise",
|
|
170
|
+
cleanupOnUnhandledRejection: false,
|
|
171
|
+
});
|
|
172
|
+
driver = createStdinDriver({
|
|
78
173
|
dispatch(event) {
|
|
79
174
|
const prevented = app.events.dispatch(event);
|
|
80
175
|
app.scheduler.flush();
|
|
81
176
|
return prevented;
|
|
82
177
|
},
|
|
83
178
|
enableMouse: true,
|
|
84
|
-
onExit
|
|
85
|
-
driver.dispose();
|
|
86
|
-
renderer.dispose();
|
|
87
|
-
app.dispose();
|
|
88
|
-
process.exit(0);
|
|
89
|
-
},
|
|
179
|
+
onExit: exit,
|
|
90
180
|
});
|
|
91
181
|
```
|
|
92
182
|
|
|
183
|
+
Signal cleanup restores terminal state first. `installTerminalCleanup()` returns a cleanup handle: call `handle.uninstall()` to remove process listeners without disposing the app, or `handle.cleanup()` to run cleanup manually. By default, signal handling uses `signalPolicy: "reraise"`: the helper cleans up, removes its own listeners, and re-sends the original signal when no other listener owns that signal. If the host process has other listeners for the same signal, those listeners keep ownership of termination. Set `signalPolicy: "cleanup-only"` only when the host explicitly owns termination, or `signalPolicy: "exit"` when vue-tui should exit with the conventional signal exit code after cleanup.
|
|
184
|
+
|
|
185
|
+
Unhandled promise rejections stay host-owned by default. Setting `cleanupOnUnhandledRejection: true` cleans up and rethrows by default. Set `rethrowUnhandledRejection: false` only when the host explicitly wants to suppress the rejection.
|
|
186
|
+
|
|
93
187
|
## Core Concepts
|
|
94
188
|
|
|
95
189
|
- `createTerminal({ cols, rows })` owns the cell buffer, cursor, planes, scrollback, and commit events.
|
|
96
190
|
- `createDomRenderer(terminal, container)` renders terminal cells to DOM with row caching and fast paths for plain and styled rows.
|
|
97
|
-
- `createStdoutRenderer(terminal, options)` emits ANSI output for real terminal UIs
|
|
191
|
+
- `createStdoutRenderer(terminal, options)` emits ANSI output for real terminal UIs from `/cli`.
|
|
98
192
|
- `TerminalProvider` is the browser-facing Vue runtime provider.
|
|
99
193
|
- `createTerminalApp()` is the headless runtime for CLI apps and deterministic tests.
|
|
100
194
|
- `TRenderPlane` separates transcript, chrome, input, and overlay surfaces so small updates do not repaint large panes.
|
|
101
195
|
|
|
102
196
|
## Components
|
|
103
197
|
|
|
104
|
-
| Area
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
198
|
+
| Area | Import | Components / APIs |
|
|
199
|
+
| -------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
200
|
+
| Stable layout | `@simon_he/vue-tui` | `TBox`, `TView` |
|
|
201
|
+
| Stable text | `@simon_he/vue-tui` | `TText` |
|
|
202
|
+
| Stable input | `@simon_he/vue-tui` | `TInput`, `TList`, `TSelect` |
|
|
203
|
+
| Stable overlay | `@simon_he/vue-tui` | `TDialog` |
|
|
204
|
+
| Vue extended | `@simon_he/vue-tui/vue` | `TAnchor`, `TFlow`, `TRenderPlane`, `TRenderLayer`, `TTransition`, `TInputBox`, `TPathPicker`, `TJsonEditor`, `TMultilineModal`, `TDebugOverlay`, composables, router APIs |
|
|
205
|
+
| Markdown | `@simon_he/vue-tui/markdown` | `TMarkdownText`, `TVirtualMarkdown` |
|
|
206
|
+
| Experimental | `@simon_he/vue-tui/experimental` | `TVirtualList`, `TLogView`, `TLogSearchBar`, `TLogLinksPanel`, `TLogScrollbar`, `TLogMinimap` |
|
|
207
|
+
| Runtime | `@simon_he/vue-tui/runtime` | runtime, event, and selection APIs |
|
|
208
|
+
| CLI | `@simon_he/vue-tui/cli` | `createTerminalApp`, `createStdoutRenderer`, `createStdinDriver`, Node host adapters |
|
|
112
209
|
|
|
113
210
|
See [docs/components.md](./docs/components.md) and [docs/generated/components-api.md](./docs/generated/components-api.md) for props and events.
|
|
114
211
|
|
|
@@ -121,8 +218,10 @@ See [docs/components.md](./docs/components.md) and [docs/generated/components-ap
|
|
|
121
218
|
| [Core API](./docs/api.md) | Terminal, renderer, events, runtime, planes, and scheduler contracts |
|
|
122
219
|
| [Performance](./docs/performance.md) | Practical performance guidance |
|
|
123
220
|
| [High-throughput rendering](./docs/high-throughput-rendering.md) | Scheduler, dirty rows, mailbox, log, and renderer architecture |
|
|
221
|
+
| [Component acceptance](./docs/components-acceptance.md) | Release readiness checks for component API and behavior |
|
|
124
222
|
| [Agent Console](./docs/agent-console.md) | Streaming transcript example stack |
|
|
125
|
-
| [Release candidate](./docs/release-candidate.md) | 0
|
|
223
|
+
| [Release candidate](./docs/release-candidate.md) | 1.0 RC validation, package export checks, and migration notes |
|
|
224
|
+
| [Security policy](./SECURITY.md) | Vulnerability reporting and terminal permission boundaries |
|
|
126
225
|
|
|
127
226
|
Run the docs locally:
|
|
128
227
|
|
|
@@ -152,7 +251,7 @@ The smoke commands are deterministic and avoid real LLM APIs, real TTY dependenc
|
|
|
152
251
|
- Use `TLogView` with `createAppendOnlyLogStore({ maxLines })` for retained streaming logs.
|
|
153
252
|
- Provide stable line keys for custom `TLogView` sources; mutable rows should change keys or call the explicit invalidation APIs.
|
|
154
253
|
- Split high-volume content and frequently changing chrome into different `TRenderPlane`s.
|
|
155
|
-
- Reuse style objects on hot paths
|
|
254
|
+
- Style objects are treated as immutable. Reuse stable style objects on hot paths, but pass a new object when a style changes.
|
|
156
255
|
|
|
157
256
|
Useful checks:
|
|
158
257
|
|
|
@@ -167,12 +266,15 @@ pnpm run bench:phase2
|
|
|
167
266
|
- Report bugs: [new bug report](https://github.com/Simon-He95/vue-tui/issues/new?template=bug_report.yml)
|
|
168
267
|
- Request features: [new feature request](https://github.com/Simon-He95/vue-tui/issues/new?template=feature_request.yml)
|
|
169
268
|
- Report documentation issues: [new docs issue](https://github.com/Simon-He95/vue-tui/issues/new?template=docs.yml)
|
|
269
|
+
- Report vulnerabilities privately: [Security policy](./SECURITY.md)
|
|
170
270
|
- Browse existing issues: [GitHub issues](https://github.com/Simon-He95/vue-tui/issues)
|
|
171
271
|
|
|
172
272
|
For renderer, scheduler, or terminal behavior bugs, include the renderer target (`DOM`, `stdout`, or headless), the relevant command, and a minimal reproduction when possible.
|
|
173
273
|
|
|
174
274
|
## Development
|
|
175
275
|
|
|
276
|
+
Use Node.js 20 for repository development, release validation, and documentation builds. This is a toolchain requirement, not the runtime requirement for the published package.
|
|
277
|
+
|
|
176
278
|
```bash
|
|
177
279
|
pnpm install
|
|
178
280
|
pnpm run format:check
|
|
@@ -189,11 +291,12 @@ pnpm run release:dry-run
|
|
|
189
291
|
```
|
|
190
292
|
|
|
191
293
|
`release:dry-run` runs checks, tests, docs build, benchmarks, examples smoke, and packed package install smoke.
|
|
294
|
+
`release:ci` aliases `release:dry-run` for validation-only CI usage. The GitHub Release workflow is preferred because it publishes the already-verified tarball with npm provenance. If workflow token/provenance is unavailable, `release:local:dry-run` and `release:local` publish the locally verified tarball with the `rc` dist-tag. `release` and `release:workflow-only` intentionally fail to avoid accidental direct publishing.
|
|
192
295
|
|
|
193
296
|
## Package Notes
|
|
194
297
|
|
|
195
298
|
- The published package ships `dist` only.
|
|
196
|
-
- Root, markdown, and experimental entrypoints are available as ESM, CJS, and type declarations after build.
|
|
299
|
+
- Root, core, runtime, DOM renderer, observability, Vue, CLI, markdown, and experimental entrypoints are available as ESM, CJS, and type declarations after build.
|
|
197
300
|
- The root browser/core API does not require a Node runtime, but CLI usage expects a Node-like stdout/stdin environment.
|
|
198
301
|
- Terminal emoji and East Asian width behavior still depends on the user terminal and font.
|
|
199
302
|
|