@jrichman/ink 6.5.0 → 6.5.1-beta.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.
Files changed (125) hide show
  1. package/build/components/App.js +0 -3
  2. package/build/components/App.js.map +1 -1
  3. package/build/components/AppContext.js +0 -1
  4. package/build/components/AppContext.js.map +1 -1
  5. package/build/components/FocusContext.js +0 -1
  6. package/build/components/FocusContext.js.map +1 -1
  7. package/build/components/Static.js +2 -2
  8. package/build/components/Static.js.map +1 -1
  9. package/build/components/StaticRender.js +16 -1
  10. package/build/components/StaticRender.js.map +1 -1
  11. package/build/components/StderrContext.js +0 -1
  12. package/build/components/StderrContext.js.map +1 -1
  13. package/build/components/StdinContext.js +0 -3
  14. package/build/components/StdinContext.js.map +1 -1
  15. package/build/components/StdoutContext.js +0 -1
  16. package/build/components/StdoutContext.js.map +1 -1
  17. package/build/data-limited-lru-map.d.ts +1 -0
  18. package/build/data-limited-lru-map.js +4 -0
  19. package/build/data-limited-lru-map.js.map +1 -1
  20. package/build/devtools.js +0 -1
  21. package/build/devtools.js.map +1 -1
  22. package/build/dom.d.ts +7 -5
  23. package/build/dom.js +6 -2
  24. package/build/dom.js.map +1 -1
  25. package/build/hooks/use-input.js +0 -1
  26. package/build/hooks/use-input.js.map +1 -1
  27. package/build/index.d.ts +1 -1
  28. package/build/ink.d.ts +3 -1
  29. package/build/ink.js +12 -0
  30. package/build/ink.js.map +1 -1
  31. package/build/log-update.d.ts +1 -1
  32. package/build/log-update.js +3 -2
  33. package/build/log-update.js.map +1 -1
  34. package/build/measure-element.js +5 -5
  35. package/build/measure-element.js.map +1 -1
  36. package/build/measure-text.d.ts +3 -1
  37. package/build/measure-text.js +39 -25
  38. package/build/measure-text.js.map +1 -1
  39. package/build/output.d.ts +13 -6
  40. package/build/output.js +46 -54
  41. package/build/output.js.map +1 -1
  42. package/build/reconciler.js +23 -7
  43. package/build/reconciler.js.map +1 -1
  44. package/build/render-cached.d.ts +2 -1
  45. package/build/render-cached.js +3 -3
  46. package/build/render-cached.js.map +1 -1
  47. package/build/render-container.d.ts +2 -1
  48. package/build/render-container.js +4 -1
  49. package/build/render-container.js.map +1 -1
  50. package/build/render-node-to-output.d.ts +3 -1
  51. package/build/render-node-to-output.js +10 -2
  52. package/build/render-node-to-output.js.map +1 -1
  53. package/build/render-scrollbar.d.ts +1 -1
  54. package/build/render-scrollbar.js +4 -6
  55. package/build/render-scrollbar.js.map +1 -1
  56. package/build/render-sticky.d.ts +5 -3
  57. package/build/render-sticky.js +4 -1
  58. package/build/render-sticky.js.map +1 -1
  59. package/build/render-text-node.d.ts +2 -1
  60. package/build/render-text-node.js +4 -8
  61. package/build/render-text-node.js.map +1 -1
  62. package/build/render-worker.d.ts +25 -0
  63. package/build/render-worker.js +370 -0
  64. package/build/render-worker.js.map +1 -0
  65. package/build/render.d.ts +3 -1
  66. package/build/render.js.map +1 -1
  67. package/build/renderer.d.ts +2 -1
  68. package/build/renderer.js +7 -3
  69. package/build/renderer.js.map +1 -1
  70. package/build/replay.d.ts +1 -2
  71. package/build/replay.js +29 -27
  72. package/build/replay.js.map +1 -1
  73. package/build/selection.d.ts +1 -1
  74. package/build/selection.js +7 -23
  75. package/build/selection.js.map +1 -1
  76. package/build/serialization.d.ts +5 -5
  77. package/build/serialization.js +59 -73
  78. package/build/serialization.js.map +1 -1
  79. package/build/styled-lines.d.ts +29 -0
  80. package/build/styled-lines.js +110 -0
  81. package/build/styled-lines.js.map +1 -0
  82. package/build/styles.js.map +1 -1
  83. package/build/terminal-buffer.d.ts +6 -2
  84. package/build/terminal-buffer.js +47 -10
  85. package/build/terminal-buffer.js.map +1 -1
  86. package/build/terminal-writer.d.ts +69 -0
  87. package/build/terminal-writer.js +546 -0
  88. package/build/terminal-writer.js.map +1 -0
  89. package/build/text-wrap.d.ts +1 -1
  90. package/build/text-wrap.js +10 -13
  91. package/build/text-wrap.js.map +1 -1
  92. package/build/tokenize.d.ts +77 -0
  93. package/build/tokenize.js +520 -0
  94. package/build/tokenize.js.map +1 -0
  95. package/build/web/ansi-to-css.d.ts +16 -0
  96. package/build/web/ansi-to-css.js +147 -0
  97. package/build/web/ansi-to-css.js.map +1 -0
  98. package/build/web/client.d.ts +51 -0
  99. package/build/web/client.js +315 -0
  100. package/build/web/client.js.map +1 -0
  101. package/build/web/server.d.ts +1 -0
  102. package/build/web/server.js +179 -0
  103. package/build/web/server.js.map +1 -0
  104. package/build/worker/canvas.d.ts +1 -1
  105. package/build/worker/canvas.js +2 -6
  106. package/build/worker/canvas.js.map +1 -1
  107. package/build/worker/compositor.js +15 -13
  108. package/build/worker/compositor.js.map +1 -1
  109. package/build/worker/dump-replay.d.ts +1 -0
  110. package/build/worker/dump-replay.js +15 -0
  111. package/build/worker/dump-replay.js.map +1 -0
  112. package/build/worker/render-worker.js +27 -13
  113. package/build/worker/render-worker.js.map +1 -1
  114. package/build/worker/replay.d.ts +55 -0
  115. package/build/worker/replay.js +133 -0
  116. package/build/worker/replay.js.map +1 -0
  117. package/build/worker/scene-manager.js +16 -7
  118. package/build/worker/scene-manager.js.map +1 -1
  119. package/build/worker/terminal-writer.d.ts +3 -3
  120. package/build/worker/terminal-writer.js +36 -20
  121. package/build/worker/terminal-writer.js.map +1 -1
  122. package/build/wrap-text.d.ts +6 -0
  123. package/build/wrap-text.js +120 -0
  124. package/build/wrap-text.js.map +1 -0
  125. package/package.json +16 -5
@@ -0,0 +1,179 @@
1
+ import http from 'node:http';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import process from 'node:process';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { WebSocketServer } from 'ws';
7
+ import ts from 'typescript';
8
+ import { Deserializer } from '../serialization.js';
9
+ import { deserializeReplayUpdate, } from '../replay.js';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+ // Cache latest state to send to new clients
13
+ let lastTree = null;
14
+ const regionStates = new Map();
15
+ const server = http.createServer(async (req, res) => {
16
+ console.log('SERVER REQ:', req.method, req.url);
17
+ if (req.method === 'POST' && req.url === '/update') {
18
+ let body = '';
19
+ req.on('data', (chunk) => {
20
+ body += chunk;
21
+ });
22
+ req.on('end', () => {
23
+ try {
24
+ const data = JSON.parse(body);
25
+ lastTree = data.tree;
26
+ // Deserialize updates
27
+ const parsedUpdates = data.updates.map(u => {
28
+ const update = deserializeReplayUpdate(u);
29
+ const dumpUpdate = { ...update };
30
+ // Sync with region state cache
31
+ const cached = regionStates.get(update.id) ?? { id: update.id };
32
+ const updateEntries = Object.entries(update);
33
+ for (const [key, value] of updateEntries) {
34
+ if (key !== 'lines' && key !== 'id' && key !== 'stickyHeaders') {
35
+ cached[key] = value;
36
+ }
37
+ }
38
+ if (update.lines) {
39
+ const { totalLength } = update.lines;
40
+ const lines = cached['fullLines'] ?? [];
41
+ if (lines.length !== totalLength) {
42
+ lines.length = totalLength;
43
+ }
44
+ dumpUpdate['lines'] = {
45
+ totalLength,
46
+ updates: update.lines.updates.map((chunk) => {
47
+ const deserializer = new Deserializer(chunk.data);
48
+ const chunkLines = deserializer.deserialize();
49
+ for (const [i, chunkLine] of chunkLines.entries()) {
50
+ lines[chunk.start + i] = chunkLine;
51
+ }
52
+ return {
53
+ start: chunk.start,
54
+ end: chunk.end,
55
+ lines: chunkLines,
56
+ };
57
+ }),
58
+ };
59
+ cached['fullLines'] = lines;
60
+ cached['lines'] = {
61
+ totalLength,
62
+ updates: [{ start: 0, end: totalLength, lines }],
63
+ };
64
+ }
65
+ if (update.stickyHeaders) {
66
+ const headers = update.stickyHeaders.map((h) => ({
67
+ ...h,
68
+ node: undefined,
69
+ anchor: undefined,
70
+ }));
71
+ dumpUpdate['stickyHeaders'] = headers;
72
+ cached['stickyHeaders'] = headers;
73
+ }
74
+ regionStates.set(update.id, cached);
75
+ return dumpUpdate;
76
+ });
77
+ const broadcastData = JSON.stringify({
78
+ tree: data.tree,
79
+ updates: parsedUpdates,
80
+ });
81
+ for (const client of wss.clients) {
82
+ if (client.readyState === 1 /* OPEN */) {
83
+ client.send(broadcastData);
84
+ }
85
+ }
86
+ res.writeHead(200);
87
+ res.end('OK');
88
+ }
89
+ catch (error) {
90
+ console.error('Error processing update:', error);
91
+ res.writeHead(400);
92
+ res.end('Bad Request');
93
+ }
94
+ });
95
+ return;
96
+ }
97
+ if (req.method === 'GET' && req.url === '/dump') {
98
+ res.writeHead(200, { 'Content-Type': 'application/json' });
99
+ res.end(JSON.stringify({ tree: lastTree, updates: [...regionStates.values()] }));
100
+ return;
101
+ }
102
+ // Serve static files
103
+ const filePath = req.url === '/' ? '/index.html' : req.url;
104
+ try {
105
+ let fullPath = path.join(__dirname, filePath);
106
+ if (fullPath.endsWith('.js')) {
107
+ const tsPath = fullPath.replace(/\.js$/, '.ts');
108
+ try {
109
+ await fs.access(tsPath);
110
+ const tsSource = await fs.readFile(tsPath, 'utf8');
111
+ const result = ts.transpileModule(tsSource, {
112
+ compilerOptions: {
113
+ module: ts.ModuleKind.ESNext,
114
+ target: ts.ScriptTarget.ESNext,
115
+ },
116
+ });
117
+ res.writeHead(200, { 'Content-Type': 'application/javascript' });
118
+ res.end(result.outputText);
119
+ return;
120
+ }
121
+ catch { }
122
+ }
123
+ try {
124
+ await fs.access(fullPath);
125
+ }
126
+ catch {
127
+ if (fullPath.includes('/src/web/')) {
128
+ const buildPath = fullPath.replace('/src/web/', '/build/web/');
129
+ try {
130
+ await fs.access(buildPath);
131
+ fullPath = buildPath;
132
+ }
133
+ catch { }
134
+ }
135
+ else if (fullPath.includes('/build/web/')) {
136
+ const srcPath = fullPath.replace('/build/web/', '/src/web/');
137
+ try {
138
+ await fs.access(srcPath);
139
+ fullPath = srcPath;
140
+ }
141
+ catch { }
142
+ }
143
+ }
144
+ const ext = path.extname(fullPath);
145
+ const content = await fs.readFile(fullPath);
146
+ const mimeTypes = {
147
+ // eslint-disable-next-line @typescript-eslint/naming-convention
148
+ '.html': 'text/html',
149
+ // eslint-disable-next-line @typescript-eslint/naming-convention
150
+ '.js': 'application/javascript',
151
+ // eslint-disable-next-line @typescript-eslint/naming-convention
152
+ '.css': 'text/css',
153
+ };
154
+ res.writeHead(200, { 'Content-Type': mimeTypes[ext] ?? 'text/plain' });
155
+ res.end(content);
156
+ }
157
+ catch {
158
+ console.error('File not found:', filePath);
159
+ res.writeHead(404);
160
+ res.end('Not Found');
161
+ }
162
+ });
163
+ const wss = new WebSocketServer({ server });
164
+ wss.on('connection', ws => {
165
+ console.log('Client connected to Web Renderer');
166
+ if (lastTree) {
167
+ ws.send(JSON.stringify({
168
+ tree: lastTree,
169
+ updates: [...regionStates.values()],
170
+ }));
171
+ }
172
+ });
173
+ const port = process.env['PORT'] ?? 3000;
174
+ server.listen(port, () => {
175
+ const address = server.address();
176
+ const actualPort = typeof address === 'string' ? port : address?.port ?? port;
177
+ console.log(`Ink Web Renderer server listening on http://localhost:${actualPort}`);
178
+ });
179
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { type StyledChar } from '@alcalzone/ansi-tokenize';
6
+ import { StyledChar } from '../tokenize.js';
7
7
  import { type RenderLine } from './terminal-writer.js';
8
8
  export type Rect = {
9
9
  x: number;
@@ -3,6 +3,7 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { StyledChar } from '../tokenize.js';
6
7
  /**
7
8
  * A 2D drawing surface for terminal characters.
8
9
  * Handles clipping and bounds checking.
@@ -67,12 +68,7 @@ export class Canvas {
67
68
  }
68
69
  // Ensure the line is long enough
69
70
  while (line.styledChars.length <= x) {
70
- line.styledChars.push({
71
- type: 'char',
72
- value: ' ',
73
- fullWidth: false,
74
- styles: [],
75
- });
71
+ line.styledChars.push(new StyledChar(' ', 0));
76
72
  }
77
73
  line.styledChars[x] = char;
78
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/worker/canvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/worker/canvas.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@
5
5
  */
6
6
  import { calculateScrollbarThumb } from '../measure-element.js';
7
7
  import { renderScrollbar } from '../render-scrollbar.js';
8
- import { toStyledCharacters } from '../measure-text.js';
9
8
  import colorize from '../colorize.js';
10
9
  /**
11
10
  * Handles rendering of various UI elements onto a Canvas.
@@ -13,7 +12,7 @@ import colorize from '../colorize.js';
13
12
  export class Compositor {
14
13
  options;
15
14
  static lastBackgroundColor;
16
- static lastBackgroundStyles = [];
15
+ static lastBackgroundStyles;
17
16
  constructor(options) {
18
17
  this.options = options;
19
18
  }
@@ -41,20 +40,17 @@ export class Compositor {
41
40
  const contentX = scrollLeft + dx;
42
41
  let char = line[contentX];
43
42
  if (char) {
44
- const isEmpty = char.value === ' ' && char.styles.length === 0;
43
+ const isEmpty = char.getValue() === ' ' && !char.hasStyles();
45
44
  if (isEmpty) {
46
45
  if (!isOpaque) {
47
46
  continue;
48
47
  }
49
48
  if (region.backgroundColor) {
50
- // Apply background to empty char
51
- char = {
52
- ...char,
53
- styles: [
54
- ...char.styles,
55
- ...this.getBackgroundStyles(region.backgroundColor),
56
- ],
57
- };
49
+ const bgColor = this.getBackgroundStyles(region.backgroundColor);
50
+ if (bgColor) {
51
+ char = char.copyWith({});
52
+ char.setBackgroundColor(bgColor);
53
+ }
58
54
  }
59
55
  }
60
56
  canvas.setChar(sx, sy, char);
@@ -304,8 +300,14 @@ export class Compositor {
304
300
  if (color === Compositor.lastBackgroundColor) {
305
301
  return Compositor.lastBackgroundStyles;
306
302
  }
307
- const styled = toStyledCharacters(colorize(' ', color, 'background'))[0];
308
- const styles = styled?.styles ?? [];
303
+ let styles;
304
+ const colorized = colorize('x', color, 'background');
305
+ if (colorized !== 'x') {
306
+ const parts = colorized.split('x');
307
+ if (parts.length === 2 && parts[0] && parts[1]) {
308
+ styles = parts[0];
309
+ }
310
+ }
309
311
  Compositor.lastBackgroundColor = color;
310
312
  Compositor.lastBackgroundStyles = styles;
311
313
  return styles;
@@ -1 +1 @@
1
- {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../src/worker/compositor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../src/worker/compositor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAatC;;GAEG;AACH,MAAM,OAAO,UAAU;IAIO;IAHrB,MAAM,CAAC,mBAAmB,CAAU;IACpC,MAAM,CAAC,oBAAoB,CAAqB;IAExD,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE5D,WAAW,CACV,MAAc,EACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAU;QAEV,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE3E,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAClD,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,SAAS;YACV,CAAC;YAED,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAE5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,SAAS;YACV,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1C,KAAK,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;gBACzC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClC,SAAS;gBACV,CAAC;gBAED,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBACrB,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;gBAEjC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAE7D,IAAI,OAAO,EAAE,CAAC;wBACb,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,SAAS;wBACV,CAAC;wBAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;4BAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;4BACjE,IAAI,OAAO,EAAE,CAAC;gCACb,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;4BAClC,CAAC;wBACF,CAAC;oBACF,CAAC;oBAED,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,iBAAiB,CAChB,MAAc,EACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAU;QAEV,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACpC,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAC1C,MAAM,EACN,IAAI,EACJ,SAAS,EACT,MAAM,CACN,CAAC;YAEF,6EAA6E;YAC7E,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvB,SAAS;YACV,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC;YAExD,IAAI,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;YAErC,IACC,IAAI,CAAC,OAAO,CAAC,yBAAyB;gBACtC,MAAM,CAAC,oBAAoB,EAC1B,CAAC;gBACF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC3B,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7C,OAAO,GAAG,CAAC,CAAC;oBACb,CAAC;gBACF,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,QAAQ,GACb,IAAI,CAAC,OAAO,CAAC,YAAY;wBACzB,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;oBAC5C,IAAI,OAAO,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC;wBACrD,OAAO,GAAG,QAAQ,CAAC;oBACpB,CAAC;gBACF,CAAC;YACF,CAAC;YAED,iCAAiC;YACjC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;gBAClD,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;oBACjC,OAAO,GAAG,iBAAiB,CAAC;gBAC7B,CAAC;YACF,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACvE,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;gBAClD,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;oBACjC,OAAO,GAAG,iBAAiB,CAAC;gBAC7B,CAAC;YACF,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAEnC,4DAA4D;gBAC5D,MAAM,gBAAgB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAE9D,uEAAuE;gBACvE,MAAM,2BAA2B,GAChC,MAAM,CAAC,IAAI,KAAK,KAAK;oBACrB,IAAI,GAAG,CAAC;oBACR,IAAI,CAAC,OAAO,CAAC,yBAAyB;oBACtC,MAAM,CAAC,oBAAoB;oBAC3B,EAAE,IAAI,CAAC;oBACP,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEpD,MAAM,2BAA2B,GAChC,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACxB,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;oBAChD,IAAI,CAAC,OAAO,CAAC,yBAAyB;oBACtC,MAAM,CAAC,oBAAoB;oBAC3B,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;oBACvB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAEhC,IACC,CAAC,gBAAgB;oBACjB,CAAC,2BAA2B;oBAC5B,CAAC,2BAA2B,EAC3B,CAAC;oBACF,SAAS;gBACV,CAAC;gBAED,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnC,SAAS;gBACV,CAAC;gBAED,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,SAAS;gBACV,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAExC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEzD,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;oBACnC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;oBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEtB,IAAI,IAAI,EAAE,CAAC;wBACV,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9B,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,cAAc,CACb,MAAc,EACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAU;QAEV,IACC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,oBAAoB,CAAC;YACnE,CAAC,MAAM,CAAC,YAAY;YACpB,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAChC,CAAC;YACF,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAE5C,MAAM,0BAA0B,GAC/B,CAAC,MAAM,CAAC,sBAAsB,IAAI,KAAK,CAAC,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1E,MAAM,4BAA4B,GACjC,CAAC,MAAM,CAAC,wBAAwB,IAAI,KAAK,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QAE1E,IAAI,0BAA0B,EAAE,CAAC;YAChC,IAAI,cAAc,GAAG,SAAS,CAAC;YAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrE,IACC,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC3B,eAAe,KAAK,SAAS;gBAC7B,eAAe,KAAK,SAAS,EAC5B,CAAC;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5D,MAAM,aAAa,GAAG,eAAe,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtE,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;oBAC/B,cAAc,GAAG,eAAe,CAAC;gBAClC,CAAC;YACF,CAAC;YAED,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAC,GACzD,uBAAuB,CAAC;gBACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM;gBACjC,eAAe,EAAE,MAAM,CAAC,MAAM;gBAC9B,eAAe,EAAE,YAAY;gBAC7B,cAAc;gBACd,IAAI,EAAE,UAAU;aAChB,CAAC,CAAC;YAEJ,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;YAEjE,eAAe,CAAC;gBACf,MAAM,EAAE;oBACP,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI;oBACP,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE;wBACN,CAAC,EAAE,IAAI;wBACP,CAAC,EAAE,IAAI,GAAG,UAAU;wBACpB,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,QAAQ,GAAG,UAAU;wBAC7B,KAAK,EAAE,UAAU;wBACjB,GAAG,EAAE,QAAQ;wBACb,SAAS,EAAE,cAAc;wBACzB,OAAO,EAAE,YAAY;qBACrB;iBACD;gBACD,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,mBAAmB;gBACjC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;oBACjB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,eAAe,CAAC,CAAC,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,4BAA4B,EAAE,CAAC;YAClC,MAAM,cAAc,GACnB,MAAM,CAAC,KAAK,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAErD,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAC,GACzD,uBAAuB,CAAC;gBACvB,kBAAkB,EAAE,cAAc;gBAClC,eAAe,EAAE,MAAM,CAAC,KAAK;gBAC7B,eAAe,EAAE,WAAW;gBAC5B,cAAc,EAAE,UAAU;gBAC1B,IAAI,EAAE,YAAY;aAClB,CAAC,CAAC;YAEJ,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YAEnE,eAAe,CAAC;gBACf,MAAM,EAAE;oBACP,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI;oBACP,KAAK,EAAE,cAAc;oBACrB,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE;wBACN,CAAC,EAAE,IAAI,GAAG,UAAU;wBACpB,CAAC,EAAE,IAAI;wBACP,KAAK,EAAE,QAAQ,GAAG,UAAU;wBAC5B,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,UAAU;wBACjB,GAAG,EAAE,QAAQ;wBACb,SAAS,EAAE,cAAc;wBACzB,OAAO,EAAE,YAAY;qBACrB;iBACD;gBACD,IAAI;gBACJ,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,MAAM,CAAC,mBAAmB;gBACjC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;oBACjB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,eAAe,CAAC,CAAC,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,aAAa,CACZ,MAAoB,EACpB,IAAY,EACZ,SAAiB,EACjB,MAAc;QAEd,MAAM,YAAY,GACjB,MAAM,CAAC,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,IACC,MAAM,CAAC,oBAAoB;gBAC3B,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,KAAK,CAAC,EACjD,CAAC;gBACF,OAAO,KAAK,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,6BAA6B,CAC5B,MAAc,EACd,IAAY,EACZ,SAAiB;QAEjB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YACjC,IACC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;gBACnD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,EACjD,CAAC;gBACF,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC;gBACxD,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBAChE,MAAM;YACP,CAAC;QACF,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,gCAAgC,CAC/B,MAAc,EACd,IAAY,EACZ,SAAiB;QAEjB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC;gBACxD,MAAM,iBAAiB,GACtB,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC;gBACpD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5D,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACP,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAEO,mBAAmB,CAAC,KAAa;QACxC,IAAI,KAAK,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAC9C,OAAO,UAAU,CAAC,oBAAoB,CAAC;QACxC,CAAC;QAED,IAAI,MAA0B,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAErD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QAED,UAAU,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACvC,UAAU,CAAC,oBAAoB,GAAG,MAAM,CAAC;QAEzC,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import fs from 'node:fs';
2
+ import process from 'node:process';
3
+ import { loadReplay, createHumanReadableDump } from './replay.js';
4
+ const filename = process.argv[2];
5
+ if (!filename) {
6
+ console.error('Usage: npx tsx dump-replay.ts <replay.json>');
7
+ // eslint-disable-next-line unicorn/no-process-exit
8
+ process.exit(1);
9
+ }
10
+ const replayData = loadReplay(fs.readFileSync(filename, 'utf8'));
11
+ const output = createHumanReadableDump(replayData);
12
+ const outFilename = filename + '.dump.txt';
13
+ fs.writeFileSync(outFilename, output);
14
+ console.log(`Successfully dumped replay to ${outFilename}`);
15
+ //# sourceMappingURL=dump-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump-replay.js","sourceRoot":"","sources":["../../src/worker/dump-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEhE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7D,mDAAmD;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAEnD,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC3C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC"}
@@ -7,7 +7,7 @@ import fs from 'node:fs';
7
7
  import process from 'node:process';
8
8
  import ansiEscapes from 'ansi-escapes';
9
9
  import { debugLog, clearDebugLog } from '../debug-log.js';
10
- import { regionLayoutProperties, copyRegionProperty, } from '../output.js';
10
+ import { regionLayoutProperties, copyRegionProperty, treesEqual, } from '../output.js';
11
11
  import { Serializer } from '../serialization.js';
12
12
  import { saveReplay, createHumanReadableDump, serializeReplayUpdate, } from '../replay.js';
13
13
  import { TerminalWriter, rainbowColors, } from './terminal-writer.js';
@@ -134,7 +134,7 @@ export class TerminalBufferWorker {
134
134
  const updates = this.serializeCurrentRegions(serializer);
135
135
  this.recordedFrames.push({
136
136
  tree: structuredClone(root),
137
- updates: updates.map(u => serializeReplayUpdate(u, serializer)),
137
+ updates: updates.map(u => serializeReplayUpdate(u)),
138
138
  cursorPosition: this.cursorPosition,
139
139
  timestamp: 0,
140
140
  });
@@ -166,7 +166,7 @@ export class TerminalBufferWorker {
166
166
  frames: [
167
167
  {
168
168
  tree: root,
169
- updates: updates.map(u => serializeReplayUpdate(u, serializer)),
169
+ updates: updates.map(u => serializeReplayUpdate(u)),
170
170
  cursorPosition: this.cursorPosition,
171
171
  timestamp: 0,
172
172
  },
@@ -262,11 +262,11 @@ export class TerminalBufferWorker {
262
262
  update(tree, updates, cursorPosition) {
263
263
  const previousCursorPosition = this.cursorPosition;
264
264
  this.cursorPosition = cursorPosition;
265
+ const treeChanged = !this.sceneManager.root || !treesEqual(this.sceneManager.root, tree);
265
266
  if (this.isRecording) {
266
- const serializer = new Serializer();
267
267
  this.recordedFrames.push({
268
268
  tree,
269
- updates: updates.map(u => serializeReplayUpdate(u, serializer)),
269
+ updates: updates.map(u => serializeReplayUpdate(u)),
270
270
  cursorPosition,
271
271
  timestamp: Date.now() - this.recordingStartTime,
272
272
  });
@@ -359,6 +359,7 @@ export class TerminalBufferWorker {
359
359
  cursorPosition.col !== previousCursorPosition.col);
360
360
  const shouldRender = updates.length > 0 ||
361
361
  cursorChanged ||
362
+ treeChanged ||
362
363
  this.terminalWriter.backbufferDirty ||
363
364
  this.forceNextRender;
364
365
  return shouldRender;
@@ -396,7 +397,7 @@ export class TerminalBufferWorker {
396
397
  this.terminalWriter.backbufferDirty = false;
397
398
  this.terminalWriter.backbufferScrolledIncorrectly = false;
398
399
  this.terminalWriter.backbufferDirtyCurrentFrame = false;
399
- this.composeScene();
400
+ this.composeScene(true);
400
401
  const rootRegion = this.sceneManager.getRootRegion();
401
402
  const cameraY = rootRegion ? this.getCameraY(rootRegion) : 0;
402
403
  this.syncCursor(cameraY);
@@ -464,7 +465,17 @@ export class TerminalBufferWorker {
464
465
  for (const region of this.sceneManager.regions.values()) {
465
466
  const update = {
466
467
  id: region.id,
467
- stickyHeaders: region.stickyHeaders,
468
+ stickyHeaders: region.stickyHeaders.map(h => {
469
+ const { node: _node, ...rest } = h;
470
+ return {
471
+ ...rest,
472
+ lines: serializer.serialize(h.lines),
473
+ stuckLines: h.stuckLines
474
+ ? serializer.serialize(h.stuckLines)
475
+ : undefined,
476
+ styledOutput: serializer.serialize(h.styledOutput),
477
+ };
478
+ }),
468
479
  };
469
480
  for (const key of regionLayoutProperties) {
470
481
  copyRegionProperty(update, region, key);
@@ -536,7 +547,10 @@ export class TerminalBufferWorker {
536
547
  clip: undefined,
537
548
  offsetY: -cameraY,
538
549
  }, { skipStickyHeaders: true, skipScrollbars });
539
- return canvas.getLines().slice(start, end + count);
550
+ const lines = canvas.getLines();
551
+ return start === 0 && end + count === lines.length
552
+ ? lines
553
+ : lines.slice(start, end + count);
540
554
  };
541
555
  const cleanLines = getLines(true);
542
556
  if (count > 0 && start === 0) {
@@ -578,7 +592,7 @@ export class TerminalBufferWorker {
578
592
  this.scrollOptimizer.updateMaxPushed(rootRegion.id, cameraY);
579
593
  }
580
594
  }
581
- this.composeScene();
595
+ this.composeScene(this.terminalWriter.isFirstRender);
582
596
  if (this.terminalWriter.isFirstRender) {
583
597
  this.terminalWriter.writeLines([...this.backbuffer, ...this.screen]);
584
598
  }
@@ -615,14 +629,14 @@ export class TerminalBufferWorker {
615
629
  this.animationController.stop();
616
630
  }
617
631
  }
618
- composeScene() {
632
+ composeScene(computeBackbuffer) {
619
633
  const rootRegion = this.sceneManager.getRootRegion();
620
634
  if (!rootRegion) {
621
635
  return;
622
636
  }
623
637
  const cameraY = this.getCameraY(rootRegion);
624
638
  this.backbuffer = [];
625
- if (!this.isAlternateBufferEnabled) {
639
+ if (!this.isAlternateBufferEnabled && computeBackbuffer) {
626
640
  const composeToBackbuffer = (node, region, height, offset) => {
627
641
  const canvas = Canvas.create(this.columns, height);
628
642
  const originalScrollTop = region.scrollTop;
@@ -880,7 +894,7 @@ export class TerminalBufferWorker {
880
894
  debugLog(`${indent} Content:`);
881
895
  for (const line of region.lines) {
882
896
  const plainText = line
883
- .map(c => c.value)
897
+ .map(c => c.getValue())
884
898
  .join('')
885
899
  .trimEnd();
886
900
  if (plainText) {
@@ -909,7 +923,7 @@ export class TerminalBufferWorker {
909
923
  debugLog(`${indent} Header Content (${isStuck ? 'STUCK' : 'NATURAL'}):`);
910
924
  for (const line of linesToLog) {
911
925
  const plainText = line
912
- .map(c => c.value)
926
+ .map(c => c.getValue())
913
927
  .join('')
914
928
  .trimEnd();
915
929
  if (plainText) {