@vibecook/ghosttea-react 0.12.0 → 0.13.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 +59 -4
- package/dist/TerminalSurface.d.ts +53 -0
- package/dist/TerminalSurface.d.ts.map +1 -1
- package/dist/TerminalSurface.js +76 -9
- package/dist/TerminalSurface.js.map +1 -1
- package/dist/appearance/AppearanceSettings.d.ts +2 -0
- package/dist/appearance/AppearanceSettings.d.ts.map +1 -1
- package/dist/appearance/AppearanceSettings.js +12 -2
- package/dist/appearance/AppearanceSettings.js.map +1 -1
- package/dist/appearance/types.d.ts +4 -0
- package/dist/appearance/types.d.ts.map +1 -1
- package/dist/catalog-budget.d.ts +2 -2
- package/dist/catalog-budget.d.ts.map +1 -1
- package/dist/catalog-budget.js +2 -2
- package/dist/catalog-budget.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/renderers/glyph-atlas.d.ts +43 -0
- package/dist/renderers/glyph-atlas.d.ts.map +1 -0
- package/dist/renderers/glyph-atlas.js +175 -0
- package/dist/renderers/glyph-atlas.js.map +1 -0
- package/dist/renderers/light-adaptation.d.ts +36 -0
- package/dist/renderers/light-adaptation.d.ts.map +1 -0
- package/dist/renderers/light-adaptation.js +332 -0
- package/dist/renderers/light-adaptation.js.map +1 -0
- package/dist/renderers/types.d.ts +21 -0
- package/dist/renderers/types.d.ts.map +1 -1
- package/dist/renderers/types.js.map +1 -1
- package/dist/renderers/webgpu-renderer.d.ts +4 -0
- package/dist/renderers/webgpu-renderer.d.ts.map +1 -1
- package/dist/renderers/webgpu-renderer.js +321 -237
- package/dist/renderers/webgpu-renderer.js.map +1 -1
- package/dist/routed-control.d.ts +26 -2
- package/dist/routed-control.d.ts.map +1 -1
- package/dist/routed-control.js +145 -27
- package/dist/routed-control.js.map +1 -1
- package/dist/routed-frames.d.ts +1 -1
- package/dist/routed-frames.d.ts.map +1 -1
- package/dist/routed-frames.js +3 -7
- package/dist/routed-frames.js.map +1 -1
- package/dist/row-damage.d.ts +21 -0
- package/dist/row-damage.d.ts.map +1 -0
- package/dist/row-damage.js +76 -0
- package/dist/row-damage.js.map +1 -0
- package/dist/runtime.d.ts +92 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +439 -43
- package/dist/runtime.js.map +1 -1
- package/dist/styles.css +11 -0
- package/dist/terminal-render.worker.js +908 -288
- package/dist/terminal-render.worker.js.map +4 -4
- package/dist/worker-messages.d.ts +22 -1
- package/dist/worker-messages.d.ts.map +1 -1
- package/dist/workspace/Workspace.d.ts +15 -2
- package/dist/workspace/Workspace.d.ts.map +1 -1
- package/dist/workspace/Workspace.js +36 -12
- package/dist/workspace/Workspace.js.map +1 -1
- package/dist/workspace/pane-layout.d.ts +3 -1
- package/dist/workspace/pane-layout.d.ts.map +1 -1
- package/dist/workspace/pane-layout.js +16 -4
- package/dist/workspace/pane-layout.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
function sameRow(before, from, after, to) {
|
|
2
|
+
if (from < 0 || from >= before.rows.length || before.rows[from] !== after.rows[to])
|
|
3
|
+
return false;
|
|
4
|
+
const a = before.nativeRows[from] ?? [], b = after.nativeRows[to] ?? [];
|
|
5
|
+
if (a.length !== b.length)
|
|
6
|
+
return false;
|
|
7
|
+
for (let i = 0; i < a.length; i++) {
|
|
8
|
+
const x = a[i], y = b[i];
|
|
9
|
+
if (x.glyphId !== y.glyphId ||
|
|
10
|
+
x.styleId !== y.styleId ||
|
|
11
|
+
x.x !== y.x ||
|
|
12
|
+
x.y !== y.y ||
|
|
13
|
+
x.width !== y.width ||
|
|
14
|
+
x.height !== y.height ||
|
|
15
|
+
x.cellStart !== y.cellStart ||
|
|
16
|
+
x.cellSpan !== y.cellSpan)
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const as = before.nativeStyleRows[from] ?? [], bs = after.nativeStyleRows[to] ?? [];
|
|
20
|
+
if (as.length !== bs.length)
|
|
21
|
+
return false;
|
|
22
|
+
return as.every((x, i) => x.styleId === bs[i].styleId && x.cellStart === bs[i].cellStart && x.cellSpan === bs[i].cellSpan);
|
|
23
|
+
}
|
|
24
|
+
/** Infer scrolling only from exact row content, never from a matching text
|
|
25
|
+
* label alone. Unique text anchors keep candidate discovery linear even on a
|
|
26
|
+
* screen full of repeated/blank lines. The final comparison includes geometry
|
|
27
|
+
* and style. Callers fence catalog, layout and style-definition changes. */
|
|
28
|
+
export function rowDamage(before, after) {
|
|
29
|
+
const positions = new Map();
|
|
30
|
+
for (let row = 0; row < before.rows.length; row++) {
|
|
31
|
+
const text = before.rows[row];
|
|
32
|
+
positions.set(text, positions.has(text) ? -1 : row);
|
|
33
|
+
}
|
|
34
|
+
const votes = new Map();
|
|
35
|
+
for (let row = 0; row < after.rows.length; row++) {
|
|
36
|
+
const from = positions.get(after.rows[row]);
|
|
37
|
+
if (from !== undefined && from >= 0) {
|
|
38
|
+
const delta = from - row;
|
|
39
|
+
votes.set(delta, (votes.get(delta) ?? 0) + 1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let scrollRows = 0, best = votes.get(0) ?? 0;
|
|
43
|
+
for (const [delta, count] of votes)
|
|
44
|
+
if (count > best) {
|
|
45
|
+
best = count;
|
|
46
|
+
scrollRows = delta;
|
|
47
|
+
}
|
|
48
|
+
const changed = (delta) => after.rows.flatMap((_, row) => (sameRow(before, row + delta, after, row) ? [] : [row]));
|
|
49
|
+
if (scrollRows !== 0) {
|
|
50
|
+
const rows = changed(scrollRows);
|
|
51
|
+
if (after.rows.length - rows.length >= Math.ceil(after.rows.length / 2))
|
|
52
|
+
return { scrollRows, rows };
|
|
53
|
+
}
|
|
54
|
+
return { scrollRows: 0, rows: changed(0) };
|
|
55
|
+
}
|
|
56
|
+
/** Compose shifts before the next paint, moving pending damage with the rows.
|
|
57
|
+
* No intermediate decoded scene has been painted yet. */
|
|
58
|
+
export function shiftDamage(rows, shift, rowCount) {
|
|
59
|
+
const moved = [...rows].map((row) => row - shift).filter((row) => row >= 0 && row < rowCount);
|
|
60
|
+
rows.clear();
|
|
61
|
+
for (const row of moved)
|
|
62
|
+
rows.add(row);
|
|
63
|
+
}
|
|
64
|
+
export function selectionDamageRows(before, after, count) {
|
|
65
|
+
const rows = new Set();
|
|
66
|
+
for (const selection of [before, after]) {
|
|
67
|
+
if (!selection)
|
|
68
|
+
continue;
|
|
69
|
+
const start = Math.max(0, Math.min(selection.anchor.row, selection.focus.row));
|
|
70
|
+
const end = Math.min(count - 1, Math.max(selection.anchor.row, selection.focus.row));
|
|
71
|
+
for (let row = start; row <= end; row++)
|
|
72
|
+
rows.add(row);
|
|
73
|
+
}
|
|
74
|
+
return [...rows];
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=row-damage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-damage.js","sourceRoot":"","sources":["../src/row-damage.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TerminalLink } from "@vibecook/ghosttea-frame";
|
|
2
|
-
import { type ConfigSnapshot, type CreateSessionOptions, type ExitOutcome, type RemoteHostSummary, type RemoteSessionLifecycle, type RoutedReceiverCapacities, type RoutedSessionAttachGrant, type RoutedTerminalOpenTicket, type SelectionScopeKind, type SessionActivity, type SessionSummary, type SharedSessionSummary, type TerminalKeyEvent, type TerminalMouseEvent, type TerminalScrollbarState, type TerminationSource } from "@vibecook/ghosttea-protocol";
|
|
3
|
-
import type { CellSelection, TerminalEffects, TerminalTheme } from "./renderers/types.js";
|
|
2
|
+
import { type ConfigSnapshot, type CreateSessionOptions, type ExitOutcome, type RemoteHostSummary, type RemoteSessionLifecycle, type RoutedGeometryHolder, type RoutedReceiverCapacities, type RoutedSessionAttachGrant, type RoutedTerminalOpenTicket, type SelectionScopeKind, type SessionActivity, type SessionSummary, type SharedSessionSummary, type TerminalKeyEvent, type TerminalMouseEvent, type TerminalScrollbarState, type TerminationSource } from "@vibecook/ghosttea-protocol";
|
|
3
|
+
import type { CellSelection, PixelSize, TerminalEffects, TerminalTheme } from "./renderers/types.js";
|
|
4
4
|
import type { TerminalRenderCounterSnapshot, TerminalRenderPerformanceSnapshot } from "./performance.js";
|
|
5
5
|
import { type RoutedActivationState } from "./routed-activation.js";
|
|
6
6
|
import { type RoutedExtensionMessageContext } from "./routed-control.js";
|
|
@@ -136,14 +136,63 @@ export interface RemoteInputSuppression {
|
|
|
136
136
|
viewId: string;
|
|
137
137
|
state: RemoteSessionRuntimeState["state"];
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* One routed session's geometry seat (TPv3 §6), as this runtime last saw it.
|
|
141
|
+
*
|
|
142
|
+
* The cell names the holder only in its replies to this client's own geometry
|
|
143
|
+
* verbs: a commit names the new holder, a refusal names the current one. A
|
|
144
|
+
* take by another client therefore shows here on this client's next claim,
|
|
145
|
+
* take or release, not at the moment it happens.
|
|
146
|
+
*/
|
|
147
|
+
export interface RoutedGeometryHolderState {
|
|
148
|
+
/** The holder, or `null` when the seat was last seen empty. */
|
|
149
|
+
holder: RoutedGeometryHolder | null;
|
|
150
|
+
/** The cell's `geometryRevision` at that point: the next claim's or take's compare-and-swap token. */
|
|
151
|
+
revision: number;
|
|
152
|
+
/** Whether the holder is this runtime's client, so that one of its own views holds the seat. */
|
|
153
|
+
local: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** Detail of the runtime's `geometry-holder-changed` event. */
|
|
156
|
+
export interface RoutedGeometryHolderChange {
|
|
157
|
+
sessionId: string;
|
|
158
|
+
sessionHandle: string;
|
|
159
|
+
/** `undefined` when nothing was known before. */
|
|
160
|
+
previous: RoutedGeometryHolderState | undefined;
|
|
161
|
+
/**
|
|
162
|
+
* `undefined` once the runtime stops tracking the seat: the session's last
|
|
163
|
+
* view left, or the session moved to another cell.
|
|
164
|
+
*/
|
|
165
|
+
current: RoutedGeometryHolderState | undefined;
|
|
166
|
+
}
|
|
139
167
|
export declare function waitForGhostteaRendererPorts(timeoutMs?: number): Promise<GhostteaRendererPorts>;
|
|
140
168
|
export declare class GhostteaTerminalRuntime extends EventTarget {
|
|
141
169
|
#private;
|
|
142
170
|
constructor(options: GhostteaTerminalRuntimeOptions);
|
|
171
|
+
/** Whether this renderer has attempted terminal input during this session's lifetime.
|
|
172
|
+
* Restored or externally created sessions must never be treated as unused from this alone. */
|
|
173
|
+
sessionHasInput(sessionId: string): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Whether a committed frame of this session has put something on screen in
|
|
176
|
+
* this renderer: what a host that just started a program waits for before it
|
|
177
|
+
* reveals the terminal. Once true it stays true while the session is
|
|
178
|
+
* registered here (a restart in place is the same session and does not draw
|
|
179
|
+
* "first" again); a `session-drawn` event (`detail: { sessionId }`) announces
|
|
180
|
+
* the change, and a session registered again announces again.
|
|
181
|
+
*/
|
|
182
|
+
sessionHasDrawn(sessionId: string): boolean;
|
|
183
|
+
/** A local birth receipt, never inferred from registration or an empty input history. */
|
|
184
|
+
sessionCreatedHere(sessionId: string): boolean;
|
|
143
185
|
get rendererBackend(): string;
|
|
144
186
|
/** Current main-authority state for a routed session. */
|
|
145
187
|
routedActivation(sessionId: string): RoutedActivationState | undefined;
|
|
146
188
|
routedViewInputAllowed(viewId: string): boolean;
|
|
189
|
+
/**
|
|
190
|
+
* The routed session's geometry seat as this runtime last saw it, or
|
|
191
|
+
* `undefined` before anything was seen (and always on the port-pair
|
|
192
|
+
* transport). A change of holder also fires `geometry-holder-changed`; a
|
|
193
|
+
* resize by the same holder only moves `revision`, without an event.
|
|
194
|
+
*/
|
|
195
|
+
geometryHolder(sessionHandle: string): RoutedGeometryHolderState | undefined;
|
|
147
196
|
startPerformanceMeasurement(): Promise<void>;
|
|
148
197
|
finishPerformanceMeasurement(options?: {
|
|
149
198
|
quietMs?: number;
|
|
@@ -164,7 +213,7 @@ export declare class GhostteaTerminalRuntime extends EventTarget {
|
|
|
164
213
|
listRemoteHosts(): Promise<RemoteHostSummary[]>;
|
|
165
214
|
listRemoteSessions(deviceId: string): Promise<SharedSessionSummary[]>;
|
|
166
215
|
openRemoteSession(deviceId: string, remoteSessionId: string, cols: number, rows: number, deviceName?: string): Promise<SessionSummary>;
|
|
167
|
-
mount(sessionId: string, sessionHandle: string, viewId: string, canvas: HTMLCanvasElement): TerminalMount;
|
|
216
|
+
mount(sessionId: string, sessionHandle: string, viewId: string, canvas: HTMLCanvasElement, initialSize?: PixelSize): TerminalMount;
|
|
168
217
|
get remoteLifecycleSupported(): boolean;
|
|
169
218
|
/** Negotiated daemon minor, or undefined until the hello completes. */
|
|
170
219
|
get serverProtocolMinor(): number | undefined;
|
|
@@ -193,6 +242,46 @@ export declare class GhostteaTerminalRuntime extends EventTarget {
|
|
|
193
242
|
forceFullRedraw(sessionHandle: string): void;
|
|
194
243
|
forceRowRedraw(sessionHandle: string, row: number): void;
|
|
195
244
|
setPartialRenderingEnabled(enabled: boolean): void;
|
|
245
|
+
/**
|
|
246
|
+
* Take the session's geometry seat for `viewId`: the host's policy verb.
|
|
247
|
+
*
|
|
248
|
+
* Focus is a scheduling fact. The runtime never turns it into geometry;
|
|
249
|
+
* the host decides when a view takes the seat. VibeField's rule (DS-D5) is
|
|
250
|
+
* that the pane focused last holds the PTY's cols×rows, on any device, last
|
|
251
|
+
* write wins, and `TerminalSurface`'s `takeGeometryOnFocus` applies it.
|
|
252
|
+
*
|
|
253
|
+
* On the routed transport the take is built on the holder this runtime last
|
|
254
|
+
* saw (`geometryHolder`):
|
|
255
|
+
* - an empty seat draws a `ClaimGeometry`;
|
|
256
|
+
* - a seat this view holds draws a `ClaimGeometry` of its own seat, which
|
|
257
|
+
* the cell commits as a resize;
|
|
258
|
+
* - a seat held by another view, of this client or another, draws one
|
|
259
|
+
* `TransferGeometry {from: holder, to: {clientId, viewId}, expectRevision,
|
|
260
|
+
* cols, rows}`, with `clientId` from this session's attach grant.
|
|
261
|
+
*
|
|
262
|
+
* A refusal is the only announcement a take gets. The cell answers only the
|
|
263
|
+
* caller's control leg, so a pane whose seat another client took still
|
|
264
|
+
* believes it holds it, and its take is a resize that the cell refuses. A
|
|
265
|
+
* `SEAT_HELD`, `STALE_REVISION` or `NOT_HOLDER` refusal that names a holder
|
|
266
|
+
* or revision other than the one the take was built on is retried once,
|
|
267
|
+
* against what it names: one `TransferGeometry` from the named holder at
|
|
268
|
+
* the named revision; a claim of the view's own seat if it names this
|
|
269
|
+
* view; a `ClaimGeometry` if it names an empty seat. A refusal that repeats
|
|
270
|
+
* the take's own view of the seat, or names no seat, is not retried, and
|
|
271
|
+
* neither is a second refusal. The runtime owns that one retry: a host
|
|
272
|
+
* calls this once per focus gain of a controller view and never retries
|
|
273
|
+
* it. Only the session's latest take retries. A take asked before the
|
|
274
|
+
* control leg attaches is sent when it attaches, unless the view's focus
|
|
275
|
+
* ends first. Without the grant's `geometry` right nothing is sent.
|
|
276
|
+
*
|
|
277
|
+
* On the port-pair transport this is `claimResizeControl`, which never
|
|
278
|
+
* displaces another view.
|
|
279
|
+
*
|
|
280
|
+
* Like `claimResizeControl`, it leaves the view asking for resize control:
|
|
281
|
+
* its later grid changes resize the PTY while it holds the seat, until
|
|
282
|
+
* `releaseResizeControl`.
|
|
283
|
+
*/
|
|
284
|
+
takeResizeControl(sessionHandle: string, viewId: string, cols: number, rows: number): void;
|
|
196
285
|
claimResizeControl(sessionHandle: string, viewId: string, cols: number, rows: number): void;
|
|
197
286
|
releaseResizeControl(viewId: string): void;
|
|
198
287
|
setViewInputPolicy(viewId: string, readWrite: boolean): void;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|