@floegence/floeterm-terminal-web 0.4.32 → 0.5.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 +86 -56
- package/dist/core/TerminalCore.d.ts +27 -1
- package/dist/core/TerminalCore.d.ts.map +1 -1
- package/dist/core/TerminalCore.js +490 -41
- package/dist/core/TerminalCore.js.map +1 -1
- package/dist/core/TerminalRenderScheduler.d.ts +4 -0
- package/dist/core/TerminalRenderScheduler.d.ts.map +1 -1
- package/dist/core/TerminalRenderScheduler.js +35 -2
- package/dist/core/TerminalRenderScheduler.js.map +1 -1
- package/dist/fabric/BeamtermFabricRenderer.d.ts +59 -0
- package/dist/fabric/BeamtermFabricRenderer.d.ts.map +1 -0
- package/dist/fabric/BeamtermFabricRenderer.js +448 -0
- package/dist/fabric/BeamtermFabricRenderer.js.map +1 -0
- package/dist/fabric/TerminalFabricCoordinator.d.ts +40 -0
- package/dist/fabric/TerminalFabricCoordinator.d.ts.map +1 -0
- package/dist/fabric/TerminalFabricCoordinator.js +140 -0
- package/dist/fabric/TerminalFabricCoordinator.js.map +1 -0
- package/dist/fabric/TerminalLiveFabric.d.ts +84 -0
- package/dist/fabric/TerminalLiveFabric.d.ts.map +1 -0
- package/dist/fabric/TerminalLiveFabric.js +211 -0
- package/dist/fabric/TerminalLiveFabric.js.map +1 -0
- package/dist/fabric/types.d.ts +112 -0
- package/dist/fabric/types.d.ts.map +1 -0
- package/dist/fabric/types.js +2 -0
- package/dist/fabric/types.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/TerminalInitializationScheduler.d.ts +22 -0
- package/dist/internal/TerminalInitializationScheduler.d.ts.map +1 -0
- package/dist/internal/TerminalInitializationScheduler.js +79 -0
- package/dist/internal/TerminalInitializationScheduler.js.map +1 -0
- package/dist/internal/scheduleUiTurn.d.ts +5 -0
- package/dist/internal/scheduleUiTurn.d.ts.map +1 -0
- package/dist/internal/scheduleUiTurn.js +37 -0
- package/dist/internal/scheduleUiTurn.js.map +1 -0
- package/dist/manager/TerminalInstanceController.d.ts +71 -0
- package/dist/manager/TerminalInstanceController.d.ts.map +1 -0
- package/dist/manager/TerminalInstanceController.js +670 -0
- package/dist/manager/TerminalInstanceController.js.map +1 -0
- package/dist/types.d.ts +48 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -12
- package/dist/hooks/useTerminalInstance.d.ts +0 -3
- package/dist/hooks/useTerminalInstance.d.ts.map +0 -1
- package/dist/hooks/useTerminalInstance.js +0 -544
- package/dist/hooks/useTerminalInstance.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,44 +1,70 @@
|
|
|
1
1
|
# terminal-web
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
`useTerminalInstance` without UI components.
|
|
3
|
+
Framework-neutral ghostty-web (xterm.js API-compatible) integration with terminal core, session, and data flow utilities.
|
|
5
4
|
|
|
6
5
|
## Install
|
|
6
|
+
|
|
7
7
|
```bash
|
|
8
8
|
npm i @floegence/floeterm-terminal-web
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
## Usage
|
|
12
|
-
```tsx
|
|
13
|
-
import { useTerminalInstance } from '@floegence/floeterm-terminal-web';
|
|
11
|
+
## Usage
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
const { containerRef } = useTerminalInstance({
|
|
17
|
-
sessionId: 'session-1',
|
|
18
|
-
isActive: true,
|
|
19
|
-
transport: myTransport,
|
|
20
|
-
eventSource: myEventSource
|
|
21
|
-
});
|
|
13
|
+
Use the managed controller when you want attach, reconnect-friendly replay, ordered writes, resize, and action helpers handled for you:
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
}
|
|
15
|
+
```ts
|
|
16
|
+
import { createTerminalInstance } from '@floegence/floeterm-terminal-web';
|
|
17
|
+
|
|
18
|
+
const controller = createTerminalInstance({
|
|
19
|
+
sessionId: 'session-1',
|
|
20
|
+
isActive: true,
|
|
21
|
+
transport: myTransport,
|
|
22
|
+
eventSource: myEventSource,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const unsubscribe = controller.subscribe((snapshot) => {
|
|
26
|
+
console.log(snapshot.connection.state, snapshot.loadingMessage);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
await controller.mount(container);
|
|
30
|
+
|
|
31
|
+
// Later:
|
|
32
|
+
controller.actions.copySelection('command');
|
|
33
|
+
unsubscribe();
|
|
34
|
+
controller.dispose();
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Use `TerminalCore` directly when the host product owns its own session lifecycle, paging, shell integration, or workbench coordination:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { TerminalCore, getDefaultTerminalConfig } from '@floegence/floeterm-terminal-web';
|
|
41
|
+
|
|
42
|
+
const core = new TerminalCore(
|
|
43
|
+
container,
|
|
44
|
+
getDefaultTerminalConfig('dark', { clipboard: { copyOnSelect: false } }),
|
|
45
|
+
{
|
|
46
|
+
onData: data => transport.sendInput(sessionId, data),
|
|
47
|
+
onResize: size => transport.resize(sessionId, size.cols, size.rows),
|
|
48
|
+
},
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
await core.initialize();
|
|
25
52
|
```
|
|
26
53
|
|
|
27
54
|
## Notes
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
- `
|
|
55
|
+
|
|
56
|
+
- You must provide a `TerminalTransport` and `TerminalEventSource` for the managed controller.
|
|
57
|
+
- `ghostty-web` needs a one-time `init()`; `TerminalCore` handles that internally.
|
|
58
|
+
- `TerminalCore` bridges the hidden textarea used by `ghostty-web`, so soft-keyboard and composition input continue to work on touch devices.
|
|
31
59
|
- Explicit terminal copy is handled through shared selection-copy APIs, so keyboard shortcuts, native app menus, and product context menus can reuse the same selection logic.
|
|
32
|
-
- `TerminalCore`
|
|
33
|
-
- Multiple live `TerminalCore` instances share one render scheduler, so large terminal grids coalesce demand-driven canvas work into browser frames
|
|
60
|
+
- `TerminalCore` exposes runtime appearance updates, shell bell/title events, custom terminal link providers, buffer line reads, and touch-scroll helpers without requiring consumers to reach into private runtime objects.
|
|
61
|
+
- Multiple live `TerminalCore` instances share one render scheduler, so large terminal grids coalesce demand-driven canvas work into browser frames.
|
|
34
62
|
|
|
35
|
-
## Responsive
|
|
36
|
-
When the same remote terminal session can be displayed in multiple views (e.g. a Deck widget and a dedicated Terminal page),
|
|
37
|
-
enable the responsive options so the focused terminal re-syncs cols/rows to the remote PTY:
|
|
63
|
+
## Responsive Resize
|
|
38
64
|
|
|
39
|
-
|
|
40
|
-
import { TerminalCore } from '@floegence/floeterm-terminal-web';
|
|
65
|
+
When the same remote terminal session can be displayed in multiple views, enable responsive options so the focused terminal re-syncs cols/rows to the remote PTY:
|
|
41
66
|
|
|
67
|
+
```ts
|
|
42
68
|
const core = new TerminalCore(container, {
|
|
43
69
|
responsive: {
|
|
44
70
|
fitOnFocus: true,
|
|
@@ -48,21 +74,18 @@ const core = new TerminalCore(container, {
|
|
|
48
74
|
});
|
|
49
75
|
```
|
|
50
76
|
|
|
51
|
-
Passive mirrors of a remote PTY can render with the session owner's current dimensions
|
|
52
|
-
container:
|
|
77
|
+
Passive mirrors of a remote PTY can render with the session owner's current dimensions:
|
|
53
78
|
|
|
54
79
|
```ts
|
|
55
80
|
const core = new TerminalCore(container, {
|
|
56
81
|
fixedDimensions: { cols: 100, rows: 30 },
|
|
57
82
|
});
|
|
58
83
|
|
|
59
|
-
// Later, when this surface becomes the active geometry owner:
|
|
60
84
|
core.setFixedDimensions(null);
|
|
61
85
|
core.forceResize();
|
|
62
86
|
```
|
|
63
87
|
|
|
64
|
-
Hosts with overlay scrollbars can remove the default ghostty-web scrollbar reserve
|
|
65
|
-
terminal surface:
|
|
88
|
+
Hosts with overlay scrollbars can remove the default ghostty-web scrollbar reserve:
|
|
66
89
|
|
|
67
90
|
```ts
|
|
68
91
|
const core = new TerminalCore(container, {
|
|
@@ -72,13 +95,11 @@ const core = new TerminalCore(container, {
|
|
|
72
95
|
});
|
|
73
96
|
```
|
|
74
97
|
|
|
75
|
-
## Clipboard
|
|
76
|
-
By default, upstream mouse selection keeps the `ghostty-web` behavior and copies immediately on selection.
|
|
77
|
-
Consumers that want explicit copy commands only can disable that side effect:
|
|
98
|
+
## Clipboard
|
|
78
99
|
|
|
79
|
-
|
|
80
|
-
import { TerminalCore } from '@floegence/floeterm-terminal-web';
|
|
100
|
+
By default, upstream mouse selection keeps the `ghostty-web` behavior and copies immediately on selection. Consumers that want explicit copy commands only can disable that side effect:
|
|
81
101
|
|
|
102
|
+
```ts
|
|
82
103
|
const core = new TerminalCore(container, {
|
|
83
104
|
clipboard: {
|
|
84
105
|
copyOnSelect: false,
|
|
@@ -92,9 +113,10 @@ With `copyOnSelect: false`, `TerminalCore` keeps selection explicit:
|
|
|
92
113
|
- `core.copySelection()` writes the current terminal selection to the clipboard.
|
|
93
114
|
- `Cmd+C` / `Ctrl+C` only claims the shortcut when the terminal currently has a selection. Otherwise the shortcut falls through unchanged.
|
|
94
115
|
|
|
95
|
-
|
|
116
|
+
The managed controller exposes the same helpers through `controller.actions`.
|
|
117
|
+
|
|
118
|
+
## Link Providers And Buffer Reads
|
|
96
119
|
|
|
97
|
-
## Link providers and shell events
|
|
98
120
|
`TerminalCore` forwards shell lifecycle events and lets consumers register custom links over rendered terminal rows:
|
|
99
121
|
|
|
100
122
|
```ts
|
|
@@ -102,26 +124,40 @@ import { TerminalCore, type TerminalLinkProvider } from '@floegence/floeterm-ter
|
|
|
102
124
|
|
|
103
125
|
const linkProvider: TerminalLinkProvider = {
|
|
104
126
|
provideLinks(y, callback) {
|
|
105
|
-
|
|
127
|
+
const line = core.readBufferLine(y);
|
|
128
|
+
void line;
|
|
106
129
|
callback(undefined);
|
|
107
130
|
},
|
|
108
131
|
};
|
|
109
132
|
|
|
110
133
|
const core = new TerminalCore(container, {}, {
|
|
111
134
|
onBell: () => console.log('bell'),
|
|
112
|
-
onTitleChange:
|
|
135
|
+
onTitleChange: title => console.log('title', title),
|
|
113
136
|
});
|
|
114
137
|
|
|
115
138
|
await core.initialize();
|
|
116
139
|
core.registerLinkProvider(linkProvider);
|
|
117
140
|
```
|
|
118
141
|
|
|
119
|
-
This is the intended extension point for product features such as modifier-click file navigation,
|
|
120
|
-
build-log deep links, or shell attention badges driven by bell events.
|
|
142
|
+
This is the intended extension point for product features such as modifier-click file navigation, build-log deep links, or shell attention badges driven by bell events.
|
|
121
143
|
|
|
122
|
-
##
|
|
123
|
-
|
|
124
|
-
|
|
144
|
+
## Touch Scroll Helpers
|
|
145
|
+
|
|
146
|
+
Hosts with custom mobile input surfaces can ask `TerminalCore` for a safe touch-scroll facade instead of reaching into the underlying runtime:
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
const touch = core.getTouchScrollRuntime();
|
|
150
|
+
|
|
151
|
+
if (touch?.isAlternateScreen()) {
|
|
152
|
+
touch.sendAlternateScreenInput('\x1B[A');
|
|
153
|
+
} else {
|
|
154
|
+
touch?.scrollLines(-3);
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Visual Work Suspension
|
|
159
|
+
|
|
160
|
+
Hosts that animate a surrounding workbench can temporarily suspend expensive terminal visual work while keeping PTY output and the terminal buffer live:
|
|
125
161
|
|
|
126
162
|
```ts
|
|
127
163
|
const suspend = core.beginVisualSuspend({ reason: 'workbench_widget_drag' });
|
|
@@ -133,16 +169,11 @@ try {
|
|
|
133
169
|
}
|
|
134
170
|
```
|
|
135
171
|
|
|
136
|
-
While suspended, `write()` continues to update terminal state. Rendering, fit, full repaint, and overlay refresh requests
|
|
137
|
-
are coalesced and reconciled when the final nested suspend handle is disposed.
|
|
172
|
+
While suspended, `write()` continues to update terminal state. Rendering, fit, full repaint, and overlay refresh requests are coalesced and reconciled when the final nested suspend handle is disposed.
|
|
138
173
|
|
|
139
|
-
## Multi-
|
|
140
|
-
`TerminalCore` keeps ghostty-web rendering demand-driven and routes visible terminal repaints through a shared scheduler.
|
|
141
|
-
The scheduler preserves live output for every terminal, dedupes repeated invalidations for the same terminal inside one
|
|
142
|
-
animation frame, and upgrades dirty-row renders to full repaints when a scrollback, viewport, font, theme, or geometry
|
|
143
|
-
change requires it.
|
|
174
|
+
## Multi-Terminal Render Scheduling
|
|
144
175
|
|
|
145
|
-
Demo or profiling surfaces can inspect the scheduler without reaching into private instances:
|
|
176
|
+
`TerminalCore` keeps ghostty-web rendering demand-driven and routes visible terminal repaints through a shared scheduler. Demo or profiling surfaces can inspect the scheduler without reaching into private instances:
|
|
146
177
|
|
|
147
178
|
```ts
|
|
148
179
|
import { getTerminalRenderSchedulerStats } from '@floegence/floeterm-terminal-web';
|
|
@@ -151,12 +182,11 @@ const stats = getTerminalRenderSchedulerStats();
|
|
|
151
182
|
console.log(stats.lastFrameRendered, stats.pending);
|
|
152
183
|
```
|
|
153
184
|
|
|
154
|
-
|
|
155
|
-
|
|
185
|
+
Product code should continue to interact with `TerminalCore` or the managed controller.
|
|
186
|
+
|
|
187
|
+
## Runtime Appearance Updates
|
|
156
188
|
|
|
157
|
-
|
|
158
|
-
Consumers that need to react to user preferences can update appearance without rebuilding the
|
|
159
|
-
terminal session:
|
|
189
|
+
Consumers that need to respond to user preferences can update appearance without rebuilding the terminal session:
|
|
160
190
|
|
|
161
191
|
```ts
|
|
162
192
|
import { getThemeColors } from '@floegence/floeterm-terminal-web';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TerminalState, type Logger, type TerminalConfig, type TerminalCopySelectionResult, type TerminalCopySelectionSource, type TerminalDimensions, type TerminalEventHandlers, type TerminalAppearance, type TerminalLinkProvider, type TerminalVisualSuspendHandle, type TerminalVisualSuspendOptions } from '../types';
|
|
1
|
+
import { TerminalState, type Logger, type TerminalConfig, type TerminalCopySelectionResult, type TerminalCopySelectionSource, type TerminalDimensions, type TerminalEventHandlers, type TerminalAppearance, type TerminalLinkProvider, type TerminalRuntimeLineSnapshot, type TerminalTouchScrollRuntime, type TerminalVisualSuspendHandle, type TerminalVisualSuspendOptions } from '../types';
|
|
2
2
|
export declare class TerminalCore {
|
|
3
3
|
private container;
|
|
4
4
|
private config;
|
|
@@ -7,6 +7,10 @@ export declare class TerminalCore {
|
|
|
7
7
|
private needsFullRenderOnNextWrite;
|
|
8
8
|
private demandRenderForceAll;
|
|
9
9
|
private readonly renderTask;
|
|
10
|
+
private fabricView;
|
|
11
|
+
private readonly fabricViewId;
|
|
12
|
+
private fabricAttachSeq;
|
|
13
|
+
private cancelFabricAttachSchedule;
|
|
10
14
|
private viewportHost;
|
|
11
15
|
private renderHost;
|
|
12
16
|
private resizeObserver;
|
|
@@ -59,18 +63,30 @@ export declare class TerminalCore {
|
|
|
59
63
|
private openTerminal;
|
|
60
64
|
private installFitAddonGeometryPatch;
|
|
61
65
|
private proposeFitDimensions;
|
|
66
|
+
private proposeFabricFitDimensions;
|
|
67
|
+
private syncGhosttyInputGeometryToFabric;
|
|
62
68
|
private resolveFitElement;
|
|
63
69
|
private installDemandRenderPatchBeforeOpen;
|
|
64
70
|
private patchDemandRenderTriggersAfterOpen;
|
|
65
71
|
private patchRendererCursorBlinkForDemandRendering;
|
|
66
72
|
private keepDemandCursorVisible;
|
|
67
73
|
private installRendererRowCachePatch;
|
|
74
|
+
private beginFabricFrame;
|
|
75
|
+
private resolveFabricDimensions;
|
|
76
|
+
private writeFabricRow;
|
|
77
|
+
private resolveFabricRowRenderHints;
|
|
78
|
+
private resolveFabricSelectionHint;
|
|
79
|
+
private syncFabricSelectionState;
|
|
80
|
+
private finishFabricFrame;
|
|
81
|
+
private resolveFabricTheme;
|
|
68
82
|
private translateCellsForTheme;
|
|
69
83
|
private translateCellForTheme;
|
|
70
84
|
private ensurePresentationHosts;
|
|
71
85
|
private applyPresentationScaleStyles;
|
|
72
86
|
private patchSelectionManagerClipboardBehavior;
|
|
73
87
|
private patchSelectionManagerRenderingBehavior;
|
|
88
|
+
private attachFabricRenderer;
|
|
89
|
+
private scheduleFabricRendererAttach;
|
|
74
90
|
private setupInputBridge;
|
|
75
91
|
private waitForDOMAndFonts;
|
|
76
92
|
private waitForTerminalFontReady;
|
|
@@ -110,6 +126,13 @@ export declare class TerminalCore {
|
|
|
110
126
|
cols: number;
|
|
111
127
|
bufferLength: number;
|
|
112
128
|
} | null;
|
|
129
|
+
readBufferLine(row: number, options?: {
|
|
130
|
+
trimRight?: boolean;
|
|
131
|
+
}): string;
|
|
132
|
+
readBufferLines(startRow: number, endRowInclusive: number, options?: {
|
|
133
|
+
trimRight?: boolean;
|
|
134
|
+
}): TerminalRuntimeLineSnapshot[];
|
|
135
|
+
getTouchScrollRuntime(): TerminalTouchScrollRuntime | null;
|
|
113
136
|
findNext(term: string, options?: {
|
|
114
137
|
caseSensitive?: boolean;
|
|
115
138
|
wholeWord?: boolean;
|
|
@@ -143,6 +166,7 @@ export declare class TerminalCore {
|
|
|
143
166
|
private ensureSearchOverlaySubscriptions;
|
|
144
167
|
private disposeSearchOverlaySubscriptions;
|
|
145
168
|
private disposeSearchOverlay;
|
|
169
|
+
private createCanvasOverlay;
|
|
146
170
|
private ensureSearchOverlay;
|
|
147
171
|
private scheduleRenderSearchOverlay;
|
|
148
172
|
private renderSearchOverlay;
|
|
@@ -176,6 +200,8 @@ export declare class TerminalCore {
|
|
|
176
200
|
private flushDeferredVisualWork;
|
|
177
201
|
private flushPendingPresentationScale;
|
|
178
202
|
private commitPresentationScale;
|
|
203
|
+
private resizeFabricToHost;
|
|
204
|
+
private isFabricRendererActive;
|
|
179
205
|
private forceFullRender;
|
|
180
206
|
private requestDemandRender;
|
|
181
207
|
private cancelDemandRender;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalCore.d.ts","sourceRoot":"","sources":["../../src/core/TerminalCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TerminalCore.d.ts","sourceRoot":"","sources":["../../src/core/TerminalCore.ts"],"names":[],"mappings":"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"}
|