tmux-ide 2.9.0-beta.33 → 2.9.0-beta.34
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/bin/cli.js
CHANGED
|
@@ -11279,7 +11279,7 @@ var require_package = __commonJS({
|
|
|
11279
11279
|
"package.json"(exports, module) {
|
|
11280
11280
|
module.exports = {
|
|
11281
11281
|
name: "tmux-ide",
|
|
11282
|
-
version: "2.9.0-beta.
|
|
11282
|
+
version: "2.9.0-beta.34",
|
|
11283
11283
|
description: "A visual, agent-aware IDE for any tmux session, with optional workspace presets",
|
|
11284
11284
|
type: "module",
|
|
11285
11285
|
bin: {
|
|
@@ -48541,6 +48541,8 @@ var init_terminal_replica_interpreter = __esm({
|
|
|
48541
48541
|
#widgetGate = false;
|
|
48542
48542
|
#markerTail = "";
|
|
48543
48543
|
#pendingResize = null;
|
|
48544
|
+
// null: no unpublished writes; undefined: a write requires full projection.
|
|
48545
|
+
#pendingWriteDirty = null;
|
|
48544
48546
|
#pendingRaw = [];
|
|
48545
48547
|
#pendingRawBytes = 0;
|
|
48546
48548
|
#rawContinuityLost = false;
|
|
@@ -48792,6 +48794,12 @@ var init_terminal_replica_interpreter = __esm({
|
|
|
48792
48794
|
this.#observability.nowMicros(),
|
|
48793
48795
|
trace
|
|
48794
48796
|
);
|
|
48797
|
+
const dirty = this.#backend.dirtyRange();
|
|
48798
|
+
const pending = this.#pendingWriteDirty;
|
|
48799
|
+
this.#pendingWriteDirty = pending === null ? dirty : pending === void 0 || dirty === void 0 ? void 0 : {
|
|
48800
|
+
start: Math.min(pending.start, dirty.start),
|
|
48801
|
+
end: Math.max(pending.end, dirty.end)
|
|
48802
|
+
};
|
|
48795
48803
|
if (this.#backend.requiresNativeReseed()) {
|
|
48796
48804
|
this.#commit(false);
|
|
48797
48805
|
return;
|
|
@@ -48847,7 +48855,15 @@ var init_terminal_replica_interpreter = __esm({
|
|
|
48847
48855
|
return;
|
|
48848
48856
|
}
|
|
48849
48857
|
const reduceStarted = this.#observability.enabled ? this.#observability.nowMicros() : 0;
|
|
48858
|
+
const pending = this.#pendingWriteDirty;
|
|
48859
|
+
if (pending !== null) {
|
|
48860
|
+
dirty = pending === void 0 || dirty === void 0 ? void 0 : {
|
|
48861
|
+
start: Math.min(pending.start, dirty.start),
|
|
48862
|
+
end: Math.max(pending.end, dirty.end)
|
|
48863
|
+
};
|
|
48864
|
+
}
|
|
48850
48865
|
const projected = this.#project(forceSeed ? void 0 : dirty);
|
|
48866
|
+
this.#pendingWriteDirty = null;
|
|
48851
48867
|
const previous = this.#snapshot;
|
|
48852
48868
|
const dirtyRows = [];
|
|
48853
48869
|
for (let index = 0; index < projected.grid.length; index += 1) {
|
package/package.json
CHANGED
|
@@ -38,6 +38,8 @@ export class TerminalReplicaInterpreter {
|
|
|
38
38
|
#widgetGate = false;
|
|
39
39
|
#markerTail = "";
|
|
40
40
|
#pendingResize = null;
|
|
41
|
+
// null: no unpublished writes; undefined: a write requires full projection.
|
|
42
|
+
#pendingWriteDirty = null;
|
|
41
43
|
#pendingRaw = [];
|
|
42
44
|
#pendingRawBytes = 0;
|
|
43
45
|
#rawContinuityLost = false;
|
|
@@ -306,6 +308,19 @@ export class TerminalReplicaInterpreter {
|
|
|
306
308
|
await this.#writeToBackend(this.#backend, data);
|
|
307
309
|
if (this.#observability.enabled)
|
|
308
310
|
this.#observability.recordSpan("parse", "terminal-replica-write", parseStarted, this.#observability.nowMicros(), trace);
|
|
311
|
+
// The parser resets its dirty tracker per write. Synchronized output may
|
|
312
|
+
// span many writes before publication, so retain their union until commit.
|
|
313
|
+
const dirty = this.#backend.dirtyRange();
|
|
314
|
+
const pending = this.#pendingWriteDirty;
|
|
315
|
+
this.#pendingWriteDirty =
|
|
316
|
+
pending === null
|
|
317
|
+
? dirty
|
|
318
|
+
: pending === undefined || dirty === undefined
|
|
319
|
+
? undefined
|
|
320
|
+
: {
|
|
321
|
+
start: Math.min(pending.start, dirty.start),
|
|
322
|
+
end: Math.max(pending.end, dirty.end),
|
|
323
|
+
};
|
|
309
324
|
// DEC synchronized-output is atomic: no intermediate frame leaks.
|
|
310
325
|
if (this.#backend.requiresNativeReseed()) {
|
|
311
326
|
this.#commit(false);
|
|
@@ -369,7 +384,18 @@ export class TerminalReplicaInterpreter {
|
|
|
369
384
|
return;
|
|
370
385
|
}
|
|
371
386
|
const reduceStarted = this.#observability.enabled ? this.#observability.nowMicros() : 0;
|
|
387
|
+
const pending = this.#pendingWriteDirty;
|
|
388
|
+
if (pending !== null) {
|
|
389
|
+
dirty =
|
|
390
|
+
pending === undefined || dirty === undefined
|
|
391
|
+
? undefined
|
|
392
|
+
: {
|
|
393
|
+
start: Math.min(pending.start, dirty.start),
|
|
394
|
+
end: Math.max(pending.end, dirty.end),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
372
397
|
const projected = this.#project(forceSeed ? undefined : dirty);
|
|
398
|
+
this.#pendingWriteDirty = null;
|
|
373
399
|
const previous = this.#snapshot;
|
|
374
400
|
const dirtyRows = [];
|
|
375
401
|
for (let index = 0; index < projected.grid.length; index += 1) {
|
|
@@ -161,6 +161,8 @@ export class TerminalReplicaInterpreter {
|
|
|
161
161
|
#widgetGate = false;
|
|
162
162
|
#markerTail = "";
|
|
163
163
|
#pendingResize: { cols: number; rows: number } | null = null;
|
|
164
|
+
// null: no unpublished writes; undefined: a write requires full projection.
|
|
165
|
+
#pendingWriteDirty: { start: number; end: number } | null | undefined = null;
|
|
164
166
|
#pendingRaw: Uint8Array[] = [];
|
|
165
167
|
#pendingRawBytes = 0;
|
|
166
168
|
#rawContinuityLost = false;
|
|
@@ -464,6 +466,19 @@ export class TerminalReplicaInterpreter {
|
|
|
464
466
|
this.#observability.nowMicros(),
|
|
465
467
|
trace,
|
|
466
468
|
);
|
|
469
|
+
// The parser resets its dirty tracker per write. Synchronized output may
|
|
470
|
+
// span many writes before publication, so retain their union until commit.
|
|
471
|
+
const dirty = this.#backend.dirtyRange();
|
|
472
|
+
const pending = this.#pendingWriteDirty;
|
|
473
|
+
this.#pendingWriteDirty =
|
|
474
|
+
pending === null
|
|
475
|
+
? dirty
|
|
476
|
+
: pending === undefined || dirty === undefined
|
|
477
|
+
? undefined
|
|
478
|
+
: {
|
|
479
|
+
start: Math.min(pending.start, dirty.start),
|
|
480
|
+
end: Math.max(pending.end, dirty.end),
|
|
481
|
+
};
|
|
467
482
|
// DEC synchronized-output is atomic: no intermediate frame leaks.
|
|
468
483
|
if (this.#backend.requiresNativeReseed()) {
|
|
469
484
|
this.#commit(false);
|
|
@@ -531,7 +546,18 @@ export class TerminalReplicaInterpreter {
|
|
|
531
546
|
return;
|
|
532
547
|
}
|
|
533
548
|
const reduceStarted = this.#observability.enabled ? this.#observability.nowMicros() : 0;
|
|
549
|
+
const pending = this.#pendingWriteDirty;
|
|
550
|
+
if (pending !== null) {
|
|
551
|
+
dirty =
|
|
552
|
+
pending === undefined || dirty === undefined
|
|
553
|
+
? undefined
|
|
554
|
+
: {
|
|
555
|
+
start: Math.min(pending.start, dirty.start),
|
|
556
|
+
end: Math.max(pending.end, dirty.end),
|
|
557
|
+
};
|
|
558
|
+
}
|
|
534
559
|
const projected = this.#project(forceSeed ? undefined : dirty);
|
|
560
|
+
this.#pendingWriteDirty = null;
|
|
535
561
|
const previous = this.#snapshot;
|
|
536
562
|
const dirtyRows: CanonicalTerminalReplicaPatch["patch"]["rows"] = [];
|
|
537
563
|
for (let index = 0; index < projected.grid.length; index += 1) {
|