@deepseek-harness-tui/dsh-tui 0.10.1 → 0.10.2

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.
Files changed (74) hide show
  1. package/README.md +5 -146
  2. package/lib/types/adapter/ports/channel-session.d.ts +3 -1
  3. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
  4. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  5. package/lib/types/components/Chat/JobCard.js +8 -1
  6. package/lib/types/components/Markdown.d.ts +2 -2
  7. package/lib/types/components/Markdown.d.ts.map +1 -1
  8. package/lib/types/components/Markdown.js +28 -3
  9. package/lib/types/components/MessageList.d.ts.map +1 -1
  10. package/lib/types/components/MessageList.js +10 -9
  11. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  12. package/lib/types/components/StreamingMarkdown.js +61 -9
  13. package/lib/types/dsh-adapter/channel/binding-events.d.ts +5 -0
  14. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  15. package/lib/types/dsh-adapter/channel/binding-events.js +12 -2
  16. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +5 -2
  17. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  18. package/lib/types/dsh-adapter/channel/input-delivery.js +71 -7
  19. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
  20. package/lib/types/dsh-adapter/channel/permissions.js +10 -7
  21. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  22. package/lib/types/dsh-adapter/channel/session-rewind.js +9 -2
  23. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  24. package/lib/types/dsh-adapter/channel/session-tree-actions.js +9 -3
  25. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +8 -2
  26. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
  27. package/lib/types/dsh-adapter/channel/skill-catalog.js +49 -17
  28. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  29. package/lib/types/dsh-adapter/channel.js +5 -2
  30. package/lib/types/dsh-adapter/compat/liveSession.d.ts +5 -3
  31. package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
  32. package/lib/types/dsh-adapter/compat/liveSession.js +5 -3
  33. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  34. package/lib/types/dsh-adapter/sessions/digest.js +40 -19
  35. package/lib/types/dsh-adapter/sessions/frames.js +2 -0
  36. package/lib/types/dsh-adapter/sessions/list.js +3 -3
  37. package/lib/types/dsh-adapter/sessions/store.d.ts +2 -2
  38. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  39. package/lib/types/dsh-adapter/sessions/store.js +12 -11
  40. package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
  41. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  42. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  43. package/lib/types/ink/components/ScrollBox.js +30 -33
  44. package/lib/types/ink/dom.d.ts.map +1 -1
  45. package/lib/types/ink/dom.js +32 -64
  46. package/lib/types/ink/get-max-width.d.ts +7 -15
  47. package/lib/types/ink/get-max-width.d.ts.map +1 -1
  48. package/lib/types/ink/get-max-width.js +7 -20
  49. package/lib/types/ink/ink.d.ts +1 -0
  50. package/lib/types/ink/ink.d.ts.map +1 -1
  51. package/lib/types/ink/ink.js +22 -3
  52. package/lib/types/ink/layout/node.d.ts +2 -0
  53. package/lib/types/ink/layout/node.d.ts.map +1 -1
  54. package/lib/types/ink/layout/yoga.d.ts +1 -0
  55. package/lib/types/ink/layout/yoga.d.ts.map +1 -1
  56. package/lib/types/ink/layout/yoga.js +3 -0
  57. package/lib/types/ink/node-cache.d.ts +11 -0
  58. package/lib/types/ink/node-cache.d.ts.map +1 -1
  59. package/lib/types/ink/node-cache.js +3 -0
  60. package/lib/types/ink/output.d.ts +6 -1
  61. package/lib/types/ink/output.d.ts.map +1 -1
  62. package/lib/types/ink/output.js +55 -65
  63. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  64. package/lib/types/ink/render-node-to-output.js +92 -67
  65. package/lib/types/ink/tabstops.d.ts +3 -2
  66. package/lib/types/ink/tabstops.d.ts.map +1 -1
  67. package/lib/types/ink/tabstops.js +5 -4
  68. package/lib/types/ink/wrap-text.js +2 -2
  69. package/lib/types/native-ts/yoga-layout/index.d.ts +8 -3
  70. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
  71. package/lib/types/native-ts/yoga-layout/index.js +23 -8
  72. package/lib/types/screens/Chat.d.ts.map +1 -1
  73. package/lib/types/screens/Chat.js +20 -8
  74. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../../src/ink/ink.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../../src/ink/ink.tsx"],"names":[],"mappings":"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"}
@@ -184,6 +184,9 @@ export default class Ink {
184
184
  // one full-render frame; steady-state frames after clear it and regain
185
185
  // the blit + narrow-damage fast path.
186
186
  prevFrameContaminated = false;
187
+ // A ConPTY resize may discard terminal cells without changing the grid.
188
+ // Consume once at the next scheduled paint, not once per resize event.
189
+ needsSurfaceRepaint = false;
187
190
  // Set by handleResize: prepend ERASE_SCREEN to the next onRender's patches
188
191
  // INSIDE the BSU/ESU block so clear+paint is atomic. Writing ERASE_SCREEN
189
192
  // synchronously in handleResize would leave the screen blank for the ~80ms
@@ -361,13 +364,19 @@ export default class Ink {
361
364
  handleResize = () => {
362
365
  const cols = this.options.stdout.columns || 80;
363
366
  const rows = this.options.stdout.rows || 24;
364
- // Terminals often emit 2+ resize events for one user action (window
365
- // settling). Same-dimension events are no-ops; skip to avoid redundant
366
- // frame resets and renders.
367
+ // Duplicate resize events normally leave both layout and surface intact.
368
+ // ConPTY can rebuild the alt buffer during maximize with the SAME grid,
369
+ // though: the cached frame then hides lost static cells forever (#891).
367
370
  if (cols === this.terminalColumns && rows === this.terminalRows) {
368
371
  // A font zoom or DPI move can change cell pixels without changing the
369
372
  // row/column grid. The in-flight guard coalesces duplicate events.
370
373
  this.refreshTerminalCellMetrics();
374
+ if ((process.platform === 'win32' || !!process.env.WT_SESSION) &&
375
+ this.altScreenActive && this.options.stdout.isTTY &&
376
+ !this.isPaused && !this.isUnmounted && !this.needsSurfaceRepaint) {
377
+ this.needsSurfaceRepaint = true;
378
+ this.scheduleRender();
379
+ }
371
380
  return;
372
381
  }
373
382
  noteFrameCause('resize');
@@ -612,6 +621,15 @@ export default class Ink {
612
621
  if (this.isUnmounted || this.isPaused) {
613
622
  return;
614
623
  }
624
+ if (this.needsSurfaceRepaint) {
625
+ this.needsSurfaceRepaint = false;
626
+ if (this.altScreenActive) {
627
+ noteFrameCause('resize');
628
+ // Repaint from an empty diff baseline without an early erase or
629
+ // DECSET 1049: neither may interrupt an external-editor handoff.
630
+ this.resetFramesForAltScreen();
631
+ }
632
+ }
615
633
  if (GEOMETRY_TRACE_ENABLED)
616
634
  beginGeometryFrame(this.renderGeneration);
617
635
  // Entering a render cancels any pending drain tick — this render will
@@ -1856,6 +1874,7 @@ export default class Ink {
1856
1874
  * matches the physical cursor after ENTER_ALT_SCREEN + CSI H (home).
1857
1875
  */
1858
1876
  resetFramesForAltScreen() {
1877
+ this.needsSurfaceRepaint = false;
1859
1878
  const rows = this.terminalRows;
1860
1879
  const cols = this.terminalColumns;
1861
1880
  const blank = () => ({
@@ -109,6 +109,8 @@ export type LayoutNode = {
109
109
  getComputedLeft(): number;
110
110
  getComputedTop(): number;
111
111
  getComputedWidth(): number;
112
+ /** Text's content constraint before layout rounds its painted box. */
113
+ getComputedMeasureWidth(): number;
112
114
  getComputedHeight(): number;
113
115
  getComputedBorder(edge: LayoutEdge): number;
114
116
  getComputedPadding(edge: LayoutEdge): number;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/ink/layout/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/ink/layout/node.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class YogaLayoutNode implements LayoutNode {
22
22
  getComputedLeft(): number;
23
23
  getComputedTop(): number;
24
24
  getComputedWidth(): number;
25
+ getComputedMeasureWidth(): number;
25
26
  getComputedHeight(): number;
26
27
  getComputedBorder(edge: LayoutEdge): number;
27
28
  getComputedPadding(edge: LayoutEdge): number;
@@ -1 +1 @@
1
- {"version":3,"file":"yoga.d.ts","sourceRoot":"","sources":["../../../../src/ink/layout/yoga.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yoga.d.ts","sourceRoot":"","sources":["../../../../src/ink/layout/yoga.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,9 @@ export class YogaLayoutNode {
77
77
  getComputedWidth() {
78
78
  return this.yoga.getComputedWidth();
79
79
  }
80
+ getComputedMeasureWidth() {
81
+ return this.yoga.getComputedMeasureWidth();
82
+ }
80
83
  getComputedHeight() {
81
84
  return this.yoga.getComputedHeight();
82
85
  }
@@ -25,6 +25,17 @@ export type CachedLayout = {
25
25
  };
26
26
  /** Layout bounds cached per rendered node, used for blitting and clearing. */
27
27
  export declare const nodeCache: WeakMap<DOMElement, CachedLayout>;
28
+ /** Current prepared text only: scrolling changes its position, not its lines.
29
+ * Weak keys release unmounted nodes; mutations discard the previous version. */
30
+ export declare const textPaintCache: WeakMap<DOMElement, {
31
+ maxWidth: number;
32
+ background: string | undefined;
33
+ paddingLeft: number;
34
+ paddingTop: number;
35
+ text: string;
36
+ lines: readonly string[];
37
+ softWrap: boolean[] | undefined;
38
+ }>;
28
39
  /** Rects of removed children that need clearing on next render */
29
40
  export declare const pendingClears: WeakMap<DOMElement, Rectangle[]>;
30
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"node-cache.d.ts","sourceRoot":"","sources":["../../../src/ink/node-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;mCAG+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;mCAG+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,SAAS,mCAA0C,CAAA;AAEhE,kEAAkE;AAClE,eAAO,MAAM,aAAa,kCAAyC,CAAA;AAanE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,GAClB,IAAI,CAUN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAIpD"}
1
+ {"version":3,"file":"node-cache.d.ts","sourceRoot":"","sources":["../../../src/ink/node-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;mCAG+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;mCAG+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,SAAS,mCAA0C,CAAA;AAEhE;gFACgF;AAChF,eAAO,MAAM,cAAc;cACf,MAAM;gBACJ,MAAM,GAAG,SAAS;iBACjB,MAAM;gBACP,MAAM;UACZ,MAAM;WACL,SAAS,MAAM,EAAE;cACd,OAAO,EAAE,GAAG,SAAS;EAC7B,CAAA;AAEJ,kEAAkE;AAClE,eAAO,MAAM,aAAa,kCAAyC,CAAA;AAanE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,GAClB,IAAI,CAUN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAIpD"}
@@ -1,5 +1,8 @@
1
1
  /** Layout bounds cached per rendered node, used for blitting and clearing. */
2
2
  export const nodeCache = new WeakMap();
3
+ /** Current prepared text only: scrolling changes its position, not its lines.
4
+ * Weak keys release unmounted nodes; mutations discard the previous version. */
5
+ export const textPaintCache = new WeakMap();
3
6
  /** Rects of removed children that need clearing on next render */
4
7
  export const pendingClears = new WeakMap();
5
8
  /**
@@ -93,6 +93,8 @@ type WriteOperation = {
93
93
  x: number;
94
94
  y: number;
95
95
  text: string;
96
+ /** Prepared physical lines, reused by unchanged Text nodes across scrolls. */
97
+ lines?: readonly string[];
96
98
  /**
97
99
  * Per-line soft-wrap flags, parallel to text.split('\n'). softWrap[i]=true
98
100
  * means line i is a continuation of line i-1 (the `\n` before it was
@@ -267,8 +269,11 @@ export default class Output {
267
269
  * @param y - the top row.
268
270
  * @param text - the text to write.
269
271
  * @param softWrap - per-line soft-wrap flags parallel to text.split('\n').
272
+ * @param lines - optional pre-split physical lines, exactly text.split('\n').
270
273
  */
271
- write(x: number, y: number, text: string, softWrap?: boolean[]): void;
274
+ write(x: number, y: number, text: string, softWrap?: boolean[], lines?: readonly string[]): void;
275
+ /** Whether a rectangle can contribute cells under the current paint clip. */
276
+ isRectVisible(x: number, y: number, width: number, height: number): boolean;
272
277
  /**
273
278
  * Push a clip region; subsequent writes are restricted to it.
274
279
  * @param clip - the clip region to apply.
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/ink/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/ink/output.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAcL,KAAK,MAAM,EACX,KAAK,SAAS,EAIf,MAAM,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAA;AAG5B;;;;;;;;;GASG;AACH,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,CAAA;AAsCD;;;;GAIG;AACH,qBAAa,SAAS;IACpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,GAAG,CAAqC;IAChD,OAAO,CAAC,KAAK,CAAI;IAEjB;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,SAAS;IAS9C;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI;IAuBpD,mEAAmE;IACnE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,qCAAqC;IACrC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;GAIG;AACH,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,KAAK,OAAO,CAAA;IAC3D,4EAA4E;IAC5E,cAAc,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;CACnD,CAAA;AAED,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,aAAa,GACb,eAAe,GACf,aAAa,GACb,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,cAAc,CAAA;AAElB;;;;;GAKG;AACH,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,uEAAuE;AACvE,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;CACvB,CAAA;AA6CD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;IACjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAkKD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,MAAM,CAAQ;IACtB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,OAAO,CAAC,UAAU,CAA8D;IAEhF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,cAAc,CAAmC;IAEzD,OAAO,CAAC,SAAS,CAAkB;IAEnC;;;;;;OAMG;IACH,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAAI;IAEvB,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAK3B;IAED,2EAA2E;IAC3E,OAAO,CAAC,aAAa;IAmBrB;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAA2D;gBAEpE,OAAO,EAAE,OAAO;IAc5B;;;;;;;;;OASG;IACH,KAAK,CACH,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,UAAQ,EACtB,cAAc,GAAE,SAAS,sBAAsB,EAAO,EACtD,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,KAAK,OAAO,GAC1D,IAAI;IAmBP;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5E;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAInD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAItD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI9B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIjC;;;;OAIG;IACH,KAAK,CACH,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO;IAgEV;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAuBtC,0EAA0E;IAC1E,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAI3C,6DAA6D;IAC7D,wBAAwB,CACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO;IAcV,uEAAuE;IACvE,SAAS,IAAI,SAAS,sBAAsB,EAAE;IAoB9C,gFAAgF;IAChF,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IASpC;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAehG,6EAA6E;IAC7E,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ3E;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAQtB,uCAAuC;IACvC,MAAM,IAAI,IAAI;IAOd;;;OAGG;IACH,GAAG,IAAI,MAAM;CAoPd"}
@@ -6,6 +6,7 @@ import { reorderBidi } from './bidi.js';
6
6
  import { unionRect } from './layout/geometry.js';
7
7
  import { blitRegion, cellRunSpan, createCellRun, extractHyperlinkFromStyles, filterOutHyperlinkStyles, markNoSelectRegion, OSC8_PREFIX, shadeRegion, recordCellRunEntry, recordSpacerRunEntry, replayCellRun, resetScreen, setCellAt, shiftRows, } from './screen.js';
8
8
  import { stringWidth } from './stringWidth.js';
9
+ import { expandTabs } from './tabstops.js';
9
10
  import { TERMINAL_IMAGE_MAX_CELLS, TERMINAL_IMAGE_MAX_FRAME_BYTES, TERMINAL_IMAGE_MAX_PLACEMENTS, } from './terminal-image.js';
10
11
  import { widestLine } from './widest-line.js';
11
12
  /**
@@ -540,7 +541,7 @@ export default class Output {
540
541
  const occluded = this.operations.slice(end).some(op => {
541
542
  if (op.type === 'write')
542
543
  return overlaps({ x: op.x, y: op.y,
543
- width: widestLine(op.text), height: op.text.split('\n').length });
544
+ width: widestLine(op.text), height: op.lines?.length ?? op.text.split('\n').length });
544
545
  if (op.type === 'blit')
545
546
  return overlaps(op);
546
547
  if (op.type === 'clear' || op.type === 'shade')
@@ -568,8 +569,9 @@ export default class Output {
568
569
  * @param y - the top row.
569
570
  * @param text - the text to write.
570
571
  * @param softWrap - per-line soft-wrap flags parallel to text.split('\n').
572
+ * @param lines - optional pre-split physical lines, exactly text.split('\n').
571
573
  */
572
- write(x, y, text, softWrap) {
574
+ write(x, y, text, softWrap, lines) {
573
575
  if (!text) {
574
576
  return;
575
577
  }
@@ -579,8 +581,17 @@ export default class Output {
579
581
  y,
580
582
  text,
581
583
  softWrap,
584
+ lines,
582
585
  });
583
586
  }
587
+ /** Whether a rectangle can contribute cells under the current paint clip. */
588
+ isRectVisible(x, y, width, height) {
589
+ const clip = this.imageClips.at(-1);
590
+ return x < Math.min(this.width, clip?.x2 ?? this.width) &&
591
+ x + width > Math.max(0, clip?.x1 ?? 0) &&
592
+ y < Math.min(this.height, clip?.y2 ?? this.height) &&
593
+ y + height > Math.max(0, clip?.y1 ?? 0);
594
+ }
584
595
  /**
585
596
  * Push a clip region; subsequent writes are restricted to it.
586
597
  * @param clip - the clip region to apply.
@@ -724,72 +735,51 @@ export default class Output {
724
735
  case 'write': {
725
736
  const { text, softWrap } = operation;
726
737
  let { x, y } = operation;
727
- let lines = text.split('\n');
728
- let swFrom = 0;
738
+ let lines = operation.lines ?? text.split('\n');
729
739
  let prevContentEnd = 0;
730
740
  const clip = clips.at(-1);
731
- if (clip) {
732
- const clipHorizontally = typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number';
733
- const clipVertically = typeof clip?.y1 === 'number' && typeof clip?.y2 === 'number';
734
- // If text is positioned outside of clipping area altogether,
735
- // skip to the next operation to avoid unnecessary calculations
736
- if (clipHorizontally) {
737
- const width = widestLine(text);
738
- if (x + width <= clip.x1 || x >= clip.x2) {
739
- continue;
740
- }
741
- }
742
- if (clipVertically) {
743
- const height = lines.length;
744
- if (y + height <= clip.y1 || y >= clip.y2) {
745
- continue;
746
- }
747
- }
748
- if (clipHorizontally) {
749
- lines = lines.map(line => {
750
- const from = x < clip.x1 ? clip.x1 - x : 0;
751
- const width = stringWidth(line);
752
- const to = x + width > clip.x2 ? clip.x2 - x : width;
753
- // Fast path: the line sits entirely inside the clip — no
754
- // slice needed. sliceAnsi re-tokenizes the line (the
755
- // dominant per-frame cost of long sessions otherwise:
756
- // every settled line, every frame).
757
- if (from === 0 && to === width)
758
- return line;
759
- let sliced = sliceAnsi(line, from, to);
760
- // Wide chars (CJK, emoji) occupy 2 cells. When `to` lands
761
- // on the first cell of a wide char, sliceAnsi includes the
762
- // entire glyph and the result overflows clip.x2 by one cell,
763
- // writing a SpacerTail into the adjacent sibling. Re-slice
764
- // one cell earlier; wide chars are exactly 2 cells, so a
765
- // single retry always fits.
766
- if (stringWidth(sliced) > to - from) {
767
- sliced = sliceAnsi(line, from, to - 1);
768
- }
769
- return sliced;
770
- });
771
- if (x < clip.x1) {
772
- x = clip.x1;
773
- }
774
- }
775
- if (clipVertically) {
776
- const from = y < clip.y1 ? clip.y1 - y : 0;
777
- const height = lines.length;
778
- const to = y + height > clip.y2 ? clip.y2 - y : height;
779
- // If the first visible line is a soft-wrap continuation, we
780
- // need the clipped previous line's content end so
781
- // screen.softWrap[lineY] correctly records the join point
782
- // even though that line's cells were never written.
783
- if (softWrap && from > 0 && softWrap[from] === true) {
784
- prevContentEnd = x + stringWidth(lines[from - 1]);
785
- }
786
- lines = lines.slice(from, to);
787
- swFrom = from;
788
- if (y < clip.y1) {
789
- y = clip.y1;
790
- }
791
- }
741
+ // Clip vertically BEFORE measuring or slicing ANSI lines. A long
742
+ // tool result/code block may intersect the viewport by one row;
743
+ // horizontal work over its entire history is still O(transcript).
744
+ // Screen bounds apply even without an explicit overflow clip.
745
+ const from = Math.max(0, Math.max(0, clip?.y1 ?? 0) - y);
746
+ const to = Math.min(lines.length, Math.min(screenHeight, clip?.y2 ?? screenHeight) - y);
747
+ if (from >= to)
748
+ continue;
749
+ const swFrom = from;
750
+ const clipHorizontally = typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number';
751
+ if (clipHorizontally && x >= clip.x2)
752
+ continue;
753
+ const clipLine = (line) => {
754
+ // Width/slicing treat raw tabs as zero cells. Expand at the
755
+ // ORIGINAL x before clipping, also for the soft-wrap predecessor.
756
+ line = expandTabs(line, undefined, x);
757
+ if (!clipHorizontally)
758
+ return line;
759
+ const start = Math.max(0, clip.x1 - x);
760
+ const width = stringWidth(line);
761
+ const end = Math.min(width, clip.x2 - x);
762
+ if (start >= end)
763
+ return '';
764
+ if (start === 0 && end === width)
765
+ return line;
766
+ let sliced = sliceAnsi(line, start, end);
767
+ // Do not leave a wide glyph's SpacerTail outside the clip.
768
+ if (stringWidth(sliced) > end - start)
769
+ sliced = sliceAnsi(line, start, end - 1);
770
+ return sliced;
771
+ };
772
+ const writeX = clipHorizontally ? Math.max(x, clip.x1) : x;
773
+ // Copy joins need only the preceding (horizontally clipped) line,
774
+ // not every discarded line. Preserve its content-end coordinate.
775
+ if (softWrap && from > 0 && softWrap[from] === true) {
776
+ prevContentEnd = writeX + stringWidth(clipLine(lines[from - 1]));
792
777
  }
778
+ lines = lines.slice(from, to);
779
+ if (clipHorizontally)
780
+ lines = lines.map(clipLine);
781
+ x = writeX;
782
+ y += from;
793
783
  const swBits = screen.softWrap;
794
784
  let offsetY = 0;
795
785
  for (const line of lines) {
@@ -1 +1 @@
1
- {"version":3,"file":"render-node-to-output.d.ts","sourceRoot":"","sources":["../../../src/ink/render-node-to-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-node-to-output.d.ts","sourceRoot":"","sources":["../../../src/ink/render-node-to-output.ts"],"names":[],"mappings":"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"}