@flyingrobots/bijou 4.2.0 → 4.4.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 (86) hide show
  1. package/README.md +39 -179
  2. package/dist/context-theme.d.ts +15 -0
  3. package/dist/context-theme.d.ts.map +1 -0
  4. package/dist/context-theme.js +23 -0
  5. package/dist/context-theme.js.map +1 -0
  6. package/dist/core/components/alert-v3.js +4 -4
  7. package/dist/core/components/alert-v3.js.map +1 -1
  8. package/dist/core/components/alert.d.ts.map +1 -1
  9. package/dist/core/components/alert.js +12 -5
  10. package/dist/core/components/alert.js.map +1 -1
  11. package/dist/core/components/badge.d.ts.map +1 -1
  12. package/dist/core/components/badge.js +38 -7
  13. package/dist/core/components/badge.js.map +1 -1
  14. package/dist/core/components/box-v3.d.ts.map +1 -1
  15. package/dist/core/components/box-v3.js +101 -26
  16. package/dist/core/components/box-v3.js.map +1 -1
  17. package/dist/core/components/braille-chart.d.ts +45 -0
  18. package/dist/core/components/braille-chart.d.ts.map +1 -0
  19. package/dist/core/components/braille-chart.js +94 -0
  20. package/dist/core/components/braille-chart.js.map +1 -0
  21. package/dist/core/components/data-viz-utils.d.ts +25 -0
  22. package/dist/core/components/data-viz-utils.d.ts.map +1 -0
  23. package/dist/core/components/data-viz-utils.js +72 -0
  24. package/dist/core/components/data-viz-utils.js.map +1 -0
  25. package/dist/core/components/index.d.ts +8 -0
  26. package/dist/core/components/index.d.ts.map +1 -1
  27. package/dist/core/components/index.js +4 -0
  28. package/dist/core/components/index.js.map +1 -1
  29. package/dist/core/components/perf-overlay.d.ts +63 -0
  30. package/dist/core/components/perf-overlay.d.ts.map +1 -0
  31. package/dist/core/components/perf-overlay.js +84 -0
  32. package/dist/core/components/perf-overlay.js.map +1 -0
  33. package/dist/core/components/preference-list.d.ts.map +1 -1
  34. package/dist/core/components/preference-list.js +63 -11
  35. package/dist/core/components/preference-list.js.map +1 -1
  36. package/dist/core/components/separator-v3.d.ts.map +1 -1
  37. package/dist/core/components/separator-v3.js +55 -15
  38. package/dist/core/components/separator-v3.js.map +1 -1
  39. package/dist/core/components/sparkline.d.ts +33 -0
  40. package/dist/core/components/sparkline.d.ts.map +1 -0
  41. package/dist/core/components/sparkline.js +45 -0
  42. package/dist/core/components/sparkline.js.map +1 -0
  43. package/dist/core/components/stats-panel.d.ts +50 -0
  44. package/dist/core/components/stats-panel.d.ts.map +1 -0
  45. package/dist/core/components/stats-panel.js +83 -0
  46. package/dist/core/components/stats-panel.js.map +1 -0
  47. package/dist/core/components/surface-text.d.ts +1 -1
  48. package/dist/core/components/surface-text.d.ts.map +1 -1
  49. package/dist/core/components/surface-text.js +80 -9
  50. package/dist/core/components/surface-text.js.map +1 -1
  51. package/dist/core/components/table-v3.d.ts.map +1 -1
  52. package/dist/core/components/table-v3.js +34 -2
  53. package/dist/core/components/table-v3.js.map +1 -1
  54. package/dist/core/components/types.d.ts +4 -4
  55. package/dist/core/components/types.d.ts.map +1 -1
  56. package/dist/core/render/differ.d.ts +12 -1
  57. package/dist/core/render/differ.d.ts.map +1 -1
  58. package/dist/core/render/differ.js +502 -11
  59. package/dist/core/render/differ.js.map +1 -1
  60. package/dist/core/render/packed-cell.d.ts +110 -0
  61. package/dist/core/render/packed-cell.d.ts.map +1 -0
  62. package/dist/core/render/packed-cell.js +301 -0
  63. package/dist/core/render/packed-cell.js.map +1 -0
  64. package/dist/core/text/grapheme.d.ts.map +1 -1
  65. package/dist/core/text/grapheme.js +17 -5
  66. package/dist/core/text/grapheme.js.map +1 -1
  67. package/dist/core/theme/presets.d.ts +9 -1
  68. package/dist/core/theme/presets.d.ts.map +1 -1
  69. package/dist/core/theme/presets.js +44 -2
  70. package/dist/core/theme/presets.js.map +1 -1
  71. package/dist/core/theme/resolve.d.ts.map +1 -1
  72. package/dist/core/theme/resolve.js +21 -1
  73. package/dist/core/theme/resolve.js.map +1 -1
  74. package/dist/core/theme/tokens.d.ts +12 -0
  75. package/dist/core/theme/tokens.d.ts.map +1 -1
  76. package/dist/index.d.ts +4 -2
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +3 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/ports/io.d.ts +17 -0
  81. package/dist/ports/io.d.ts.map +1 -1
  82. package/dist/ports/surface.d.ts +83 -2
  83. package/dist/ports/surface.d.ts.map +1 -1
  84. package/dist/ports/surface.js +319 -37
  85. package/dist/ports/surface.js.map +1 -1
  86. package/package.json +5 -1
@@ -1,7 +1,11 @@
1
1
  import { createSurface } from '../../ports/surface.js';
2
2
  import { ANSI_OSC8_RE, graphemeClusterWidth, stripAnsi, segmentGraphemes } from '../text/index.js';
3
+ import { CELL_STRIDE, OFF_FG_R, OFF_BG_R, OFF_BG_G, OFF_BG_B, FLAG_BOLD, FLAG_DIM, FLAG_STRIKETHROUGH, FLAG_INVERSE, FLAG_FG_SET, FLAG_BG_SET, FLAG_EMPTY, FLAG_DASHED, SIDE_TABLE_THRESHOLD, decodeChar, parseHex, } from './packed-cell.js';
3
4
  const EMPTY_CELL = { char: ' ', empty: true };
4
5
  const EMPTY_MODIFIERS = [];
6
+ function isPackedSurface(s) {
7
+ return 'buffer' in s && s.buffer instanceof Uint8Array;
8
+ }
5
9
  function hasVisibleStyle(cell) {
6
10
  return cell.fg !== undefined
7
11
  || cell.bg !== undefined
@@ -131,9 +135,31 @@ function writeSurfaceGrapheme(surface, x, y, char, style) {
131
135
  if (x >= surface.width)
132
136
  return 0;
133
137
  const width = Math.max(1, graphemeClusterWidth(char));
134
- surface.set(x, y, { char, ...style, empty: false });
135
- for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
136
- surface.set(x + offset, y, { char: '', ...style, empty: false });
138
+ if (isPackedSurface(surface) && (style?.fg || style?.bg)) {
139
+ const fg = style?.fg ? parseHex(style.fg) : undefined;
140
+ let fR = -1, fG = 0, fB = 0;
141
+ if (fg) {
142
+ fR = fg[0];
143
+ fG = fg[1];
144
+ fB = fg[2];
145
+ }
146
+ const bg = style?.bg ? parseHex(style.bg) : undefined;
147
+ let bR = -1, bG = 0, bB = 0;
148
+ if (bg) {
149
+ bR = bg[0];
150
+ bG = bg[1];
151
+ bB = bg[2];
152
+ }
153
+ surface.setRGB(x, y, char, fR, fG, fB, bR, bG, bB);
154
+ for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
155
+ surface.setRGB(x + offset, y, '', fR, fG, fB, bR, bG, bB);
156
+ }
157
+ }
158
+ else {
159
+ surface.set(x, y, { char, ...style, empty: false });
160
+ for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
161
+ surface.set(x + offset, y, { char: '', ...style, empty: false });
162
+ }
137
163
  }
138
164
  return width;
139
165
  }
@@ -197,8 +223,10 @@ export function isSameCell(a, b) {
197
223
  return true;
198
224
  if (aMods.length !== bMods.length)
199
225
  return false;
226
+ // Order-insensitive comparison: every modifier in a must exist in b.
227
+ // For short arrays (typically 0-3 modifiers) this is faster than sorting.
200
228
  for (let i = 0; i < aMods.length; i++) {
201
- if (aMods[i] !== bMods[i])
229
+ if (!bMods.includes(aMods[i]))
202
230
  return false;
203
231
  }
204
232
  return true;
@@ -218,12 +246,481 @@ function moveCursor(x, y) {
218
246
  * 2. Minimizes CUP (move cursor) commands by detecting contiguous changes.
219
247
  * 3. Batches cells with identical styles to minimize SGR codes and keep strings contiguous.
220
248
  *
249
+ * When both surfaces are {@link PackedSurface}, the caller owns a pooled
250
+ * `outBuf`, and the IO port implements {@link WritePort.writeBytes}, the
251
+ * composed frame is UTF-8 encoded into the supplied buffer once and
252
+ * handed off via `writeBytes` instead of `write(string)`. This lets the
253
+ * TUI runtime own the output allocation and bypass the implicit
254
+ * string→UTF-8 conversion inside the underlying stream.
255
+ *
256
+ * Callers without an `outBuf` (tests, bench scenarios, simple drivers)
257
+ * fall through to the legacy `io.write(string)` path with no overhead.
258
+ *
221
259
  * @param current - The surface currently on the terminal.
222
260
  * @param target - The desired surface state.
223
261
  * @param io - The port to write ANSI codes to.
224
262
  * @param style - The port to resolve cell styling.
263
+ * @param outBuf - Optional pooled byte buffer for the packed byte path.
264
+ */
265
+ export function renderDiff(current, target, io, style, outBuf) {
266
+ // Use packed byte path when both surfaces have buffers
267
+ if (isPackedSurface(target) && isPackedSurface(current)) {
268
+ renderDiffPacked(current, target, io, style, outBuf);
269
+ return;
270
+ }
271
+ renderDiffCells(current, target, io, style);
272
+ }
273
+ // ── Packed byte-comparison differ ───────────────────────
274
+ /**
275
+ * Empty cell encoded as packed bytes for out-of-bounds boundary comparison.
276
+ * Must match what createSurface produces for `{ char: ' ', empty: true }`.
277
+ * Static shared buffer — do not mutate.
278
+ */
279
+ const EMPTY_PACKED = new Uint8Array(CELL_STRIDE);
280
+ EMPTY_PACKED[0] = 0x20; // char: space (0x0020 LE)
281
+ EMPTY_PACKED[8] = FLAG_EMPTY; // flags: empty bit set
282
+ EMPTY_PACKED[9] = 63; // alpha: opacity=63 (1.0), fg/bg not present
283
+ function packedBytesEqual(a, aOff, b, bOff) {
284
+ for (let i = 0; i < CELL_STRIDE; i++) {
285
+ if (a[aOff + i] !== b[bOff + i])
286
+ return false;
287
+ }
288
+ return true;
289
+ }
290
+ function packedStyleBytesEqual(a, aOff, b, bOff) {
291
+ // Compare from OFF_FG_R through end (fg, bg, flags, alpha) — skip char
292
+ for (let i = OFF_FG_R; i < CELL_STRIDE; i++) {
293
+ if (a[aOff + i] !== b[bOff + i])
294
+ return false;
295
+ }
296
+ return true;
297
+ }
298
+ function packedHasVisibleStyle(buf, off) {
299
+ const alpha = buf[off + 9];
300
+ return (alpha & (FLAG_FG_SET | FLAG_BG_SET)) !== 0
301
+ || (buf[off + 8] & ~FLAG_EMPTY) !== 0;
302
+ }
303
+ // --- Direct ANSI byte emission ─────────────────────────
304
+ //
305
+ // II-4: the differ no longer builds SGR/cursor/batch strings and
306
+ // concatenates them. It writes raw UTF-8 bytes directly into the
307
+ // pooled output buffer using the helpers below. The legacy
308
+ // `sgrCache` / `buildSgr` / `styleCacheKey` machinery is gone — the
309
+ // direct byte writers are fast enough that caching hash-indexed
310
+ // strings is pure overhead.
311
+ // Reusable UTF-8 encoder/decoder for the byte-output path. encodeInto
312
+ // writes UTF-8 directly into a target view without an intermediate
313
+ // Uint8Array; the decoder is only used on the fallback path where the
314
+ // IO port lacks writeBytes (tests, mock sinks).
315
+ const textEncoder = new TextEncoder();
316
+ const textDecoder = new TextDecoder('utf-8');
317
+ // Lazy module-level scratch buffer used when the caller does not pass
318
+ // an outBuf (tests, bench scenarios, simple drivers). Grown once to
319
+ // match the largest surface seen and reused thereafter.
320
+ let scratchOutBuf = null;
321
+ /** Upper bound on bytes the differ may emit per surface cell. */
322
+ const SCRATCH_BYTES_PER_CELL = 96;
323
+ /** Fixed slack on top of the scratch cell budget. */
324
+ const SCRATCH_SLACK = 8192;
325
+ // ANSI byte constants are emitted as inline `buf[off++] = …` writes in
326
+ // writeCursorBytes / writeSgrFromBufBytes. TypedArray.set has per-call
327
+ // setup cost that dominates for 4-byte sequences, so inline writes beat
328
+ // pre-allocated Uint8Array constants in the hot path.
329
+ /**
330
+ * Write an unsigned integer (0–9999) as ASCII digits. Returns new offset.
331
+ * Covers cursor coordinates (1-based, up to 9999 for ultra-wide
332
+ * terminals) and RGB components (0–255).
333
+ */
334
+ function writeDecimal(buf, off, n) {
335
+ if (n >= 1000) {
336
+ const th = (n / 1000) | 0;
337
+ const rem3 = n - th * 1000;
338
+ const h = (rem3 / 100) | 0;
339
+ const rem2 = rem3 - h * 100;
340
+ const t = (rem2 / 10) | 0;
341
+ buf[off] = 0x30 + th;
342
+ buf[off + 1] = 0x30 + h;
343
+ buf[off + 2] = 0x30 + t;
344
+ buf[off + 3] = 0x30 + (rem2 - t * 10);
345
+ return off + 4;
346
+ }
347
+ if (n >= 100) {
348
+ const h = (n / 100) | 0;
349
+ const rem = n - h * 100;
350
+ const t = (rem / 10) | 0;
351
+ buf[off] = 0x30 + h;
352
+ buf[off + 1] = 0x30 + t;
353
+ buf[off + 2] = 0x30 + (rem - t * 10);
354
+ return off + 3;
355
+ }
356
+ if (n >= 10) {
357
+ const t = (n / 10) | 0;
358
+ buf[off] = 0x30 + t;
359
+ buf[off + 1] = 0x30 + (n - t * 10);
360
+ return off + 2;
361
+ }
362
+ buf[off] = 0x30 + n;
363
+ return off + 1;
364
+ }
365
+ /** Write `\x1b[Y;XH` (CUP) with 1-based coordinates. */
366
+ function writeCursorBytes(buf, off, x, y) {
367
+ buf[off] = 0x1b; // ESC
368
+ buf[off + 1] = 0x5b; // [
369
+ off += 2;
370
+ off = writeDecimal(buf, off, y + 1);
371
+ buf[off++] = 0x3b; // ;
372
+ off = writeDecimal(buf, off, x + 1);
373
+ buf[off++] = 0x48; // H
374
+ return off;
375
+ }
376
+ /**
377
+ * Emit the full SGR prelude for the style bytes at `srcOff` into `buf`.
378
+ * Functionally equivalent to the legacy `buildSgr()` emission: reset,
379
+ * optional truecolor FG, optional truecolor BG, modifier flags (bold,
380
+ * dim, strike, inverse in that order), optional underline.
381
+ *
382
+ * Short (≤6 byte) byte sequences are inlined via direct index writes
383
+ * rather than `buf.set(CONST, off)` — the call overhead on a tiny
384
+ * TypedArray.set outweighs the memcpy for 4-byte bursts in V8.
385
+ */
386
+ function writeSgrFromBufBytes(buf, off, srcBuf, srcOff) {
387
+ // Leading reset: \x1b[0m — 4 inline byte writes.
388
+ buf[off] = 0x1b;
389
+ buf[off + 1] = 0x5b;
390
+ buf[off + 2] = 0x30;
391
+ buf[off + 3] = 0x6d;
392
+ off += 4;
393
+ const flags = srcBuf[srcOff + 8];
394
+ const alpha = srcBuf[srcOff + 9];
395
+ if (alpha & FLAG_FG_SET) {
396
+ // \x1b[38;2;R;G;Bm — 7-byte prefix inlined as individual writes.
397
+ buf[off] = 0x1b;
398
+ buf[off + 1] = 0x5b;
399
+ buf[off + 2] = 0x33;
400
+ buf[off + 3] = 0x38;
401
+ buf[off + 4] = 0x3b;
402
+ buf[off + 5] = 0x32;
403
+ buf[off + 6] = 0x3b;
404
+ off += 7;
405
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R]);
406
+ buf[off++] = 0x3b;
407
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R + 1]);
408
+ buf[off++] = 0x3b;
409
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R + 2]);
410
+ buf[off++] = 0x6d;
411
+ }
412
+ if (alpha & FLAG_BG_SET) {
413
+ // \x1b[48;2;R;G;Bm
414
+ buf[off] = 0x1b;
415
+ buf[off + 1] = 0x5b;
416
+ buf[off + 2] = 0x34;
417
+ buf[off + 3] = 0x38;
418
+ buf[off + 4] = 0x3b;
419
+ buf[off + 5] = 0x32;
420
+ buf[off + 6] = 0x3b;
421
+ off += 7;
422
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_R]);
423
+ buf[off++] = 0x3b;
424
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_G]);
425
+ buf[off++] = 0x3b;
426
+ off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_B]);
427
+ buf[off++] = 0x6d;
428
+ }
429
+ // Modifier flags — 4-byte sequences inlined.
430
+ if (flags & FLAG_BOLD) {
431
+ buf[off] = 0x1b;
432
+ buf[off + 1] = 0x5b;
433
+ buf[off + 2] = 0x31;
434
+ buf[off + 3] = 0x6d;
435
+ off += 4;
436
+ }
437
+ if (flags & FLAG_DIM) {
438
+ buf[off] = 0x1b;
439
+ buf[off + 1] = 0x5b;
440
+ buf[off + 2] = 0x32;
441
+ buf[off + 3] = 0x6d;
442
+ off += 4;
443
+ }
444
+ if (flags & FLAG_STRIKETHROUGH) {
445
+ buf[off] = 0x1b;
446
+ buf[off + 1] = 0x5b;
447
+ buf[off + 2] = 0x39;
448
+ buf[off + 3] = 0x6d;
449
+ off += 4;
450
+ }
451
+ if (flags & FLAG_INVERSE) {
452
+ buf[off] = 0x1b;
453
+ buf[off + 1] = 0x5b;
454
+ buf[off + 2] = 0x37;
455
+ buf[off + 3] = 0x6d;
456
+ off += 4;
457
+ }
458
+ const uStyle = (flags >> 4) & 0x03;
459
+ if (uStyle === 1) {
460
+ // \x1b[4m
461
+ buf[off] = 0x1b;
462
+ buf[off + 1] = 0x5b;
463
+ buf[off + 2] = 0x34;
464
+ buf[off + 3] = 0x6d;
465
+ off += 4;
466
+ }
467
+ else if (uStyle === 2) {
468
+ // \x1b[4:3m
469
+ buf[off] = 0x1b;
470
+ buf[off + 1] = 0x5b;
471
+ buf[off + 2] = 0x34;
472
+ buf[off + 3] = 0x3a;
473
+ buf[off + 4] = 0x33;
474
+ buf[off + 5] = 0x6d;
475
+ off += 6;
476
+ }
477
+ else if (uStyle === 3) {
478
+ // \x1b[4:4m (dotted) or \x1b[4:5m (dashed)
479
+ buf[off] = 0x1b;
480
+ buf[off + 1] = 0x5b;
481
+ buf[off + 2] = 0x34;
482
+ buf[off + 3] = 0x3a;
483
+ buf[off + 4] = (flags & FLAG_DASHED) ? 0x35 : 0x34;
484
+ buf[off + 5] = 0x6d;
485
+ off += 6;
486
+ }
487
+ return off;
488
+ }
489
+ /**
490
+ * Write one packed cell's character into the output buffer as UTF-8.
491
+ * ASCII and BMP code points are encoded inline; only side-table graphemes
492
+ * (multi-codepoint clusters) require a `TextEncoder.encodeInto` call.
225
493
  */
226
- export function renderDiff(current, target, io, style) {
494
+ function writeCharBytes(buf, off, srcBuf, srcOff, sideTable) {
495
+ const code = srcBuf[srcOff] | (srcBuf[srcOff + 1] << 8);
496
+ if (code < 0x80) {
497
+ // ASCII fast path
498
+ buf[off] = code;
499
+ return off + 1;
500
+ }
501
+ if (code < SIDE_TABLE_THRESHOLD) {
502
+ // BMP code point: 0x0080..0x07ff → 2 bytes, 0x0800..0xffff → 3 bytes.
503
+ if (code < 0x800) {
504
+ buf[off] = 0xc0 | (code >> 6);
505
+ buf[off + 1] = 0x80 | (code & 0x3f);
506
+ return off + 2;
507
+ }
508
+ buf[off] = 0xe0 | (code >> 12);
509
+ buf[off + 1] = 0x80 | ((code >> 6) & 0x3f);
510
+ buf[off + 2] = 0x80 | (code & 0x3f);
511
+ return off + 3;
512
+ }
513
+ // Side-table index — multi-codepoint grapheme cluster.
514
+ const grapheme = sideTable[code - SIDE_TABLE_THRESHOLD] ?? '';
515
+ const { written } = textEncoder.encodeInto(grapheme, buf.subarray(off));
516
+ return off + written;
517
+ }
518
+ /**
519
+ * Semantic packed-cell equality across two buffers with independent side tables.
520
+ * Raw bytes are compared first; if they match and the char is a side-table
521
+ * index, the actual grapheme strings are verified.
522
+ */
523
+ function packedCellsSemanticallyEqual(aBuf, aOff, aSide, bBuf, bOff, bSide) {
524
+ if (!packedBytesEqual(aBuf, aOff, bBuf, bOff))
525
+ return false;
526
+ const aChar = aBuf[aOff] | (aBuf[aOff + 1] << 8);
527
+ if (aChar < SIDE_TABLE_THRESHOLD)
528
+ return true;
529
+ const bChar = bBuf[bOff] | (bBuf[bOff + 1] << 8);
530
+ return aChar === bChar && decodeChar(aChar, aSide) === decodeChar(bChar, bSide);
531
+ }
532
+ /**
533
+ * Fixed byte budget for the cursor move + full SGR prelude + trailing
534
+ * reset that bookend a batch. The variable per-batch cost comes from
535
+ * the char writes, which are bounded by `width * MAX_CHAR_BYTES`.
536
+ * The full batch budget is computed inside `renderDiffPacked` as
537
+ * `BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES` so it scales with
538
+ * terminal width and never overflows on ultra-wide monitors.
539
+ */
540
+ const BATCH_FIXED_BUDGET = 128;
541
+ /** Worst-case UTF-8 bytes per cell character (side-table emoji cluster). */
542
+ const MAX_CHAR_BYTES = 32;
543
+ function renderDiffPacked(current, target, io, _style, outBuf) {
544
+ const width = target.width;
545
+ const height = target.height;
546
+ const tBuf = target.buffer;
547
+ const cBuf = current.buffer;
548
+ const cWidth = current.width;
549
+ const cHeight = current.height;
550
+ const tSide = target.sideTable;
551
+ const cSide = current.sideTable;
552
+ // Render-dirty bitmap fast path. Cells that weren't mutated since
553
+ // the last clear() in EITHER surface are guaranteed unchanged on
554
+ // the buffer level, so we can skip them entirely. We walk the union
555
+ // of the two bitmaps because:
556
+ // - Bits in target.renderDirtyWords = cells the user painted this frame
557
+ // - Bits in current.renderDirtyWords = cells the user painted last frame
558
+ // (which may now need to be erased if not painted this frame)
559
+ // The union covers both "new content" and "needs erasure" cases.
560
+ const tDirty = target.renderDirtyWords;
561
+ const cDirty = current.renderDirtyWords;
562
+ const cellCount = width * height;
563
+ const wordCount = (cellCount + 31) >>> 5;
564
+ // Early out: if no cells in EITHER surface are dirty, there is
565
+ // nothing to emit. This is the diff-static / unchanged-frame case
566
+ // and should be near-zero cost.
567
+ let anyDirty = false;
568
+ // Both bitmaps may have different lengths if width/height differ,
569
+ // but in practice they're the same. Walk min(both).
570
+ const tWords = Math.min(wordCount, tDirty.length);
571
+ const cWords = Math.min(wordCount, cDirty.length);
572
+ const minWords = Math.min(tWords, cWords);
573
+ for (let w = 0; w < minWords; w++) {
574
+ if ((tDirty[w] | cDirty[w]) !== 0) {
575
+ anyDirty = true;
576
+ break;
577
+ }
578
+ }
579
+ if (!anyDirty) {
580
+ // Check tail words from whichever bitmap is longer
581
+ for (let w = minWords; w < tWords && !anyDirty; w++) {
582
+ if (tDirty[w] !== 0)
583
+ anyDirty = true;
584
+ }
585
+ for (let w = minWords; w < cWords && !anyDirty; w++) {
586
+ if (cDirty[w] !== 0)
587
+ anyDirty = true;
588
+ }
589
+ }
590
+ if (!anyDirty) {
591
+ return;
592
+ }
593
+ // Acquire the pooled output buffer. The runtime supplies one sized
594
+ // against the current viewport; all other callers land on the
595
+ // module-level scratch buffer (sized against the live surface and
596
+ // reused across calls).
597
+ let buf;
598
+ if (outBuf !== undefined) {
599
+ buf = outBuf;
600
+ }
601
+ else {
602
+ const needed = cellCount * SCRATCH_BYTES_PER_CELL + SCRATCH_SLACK;
603
+ if (scratchOutBuf === null || scratchOutBuf.length < needed) {
604
+ scratchOutBuf = new Uint8Array(needed);
605
+ }
606
+ buf = scratchOutBuf;
607
+ }
608
+ let off = 0;
609
+ // Flush the pending bytes to the IO port and reset the cursor to
610
+ // the start of the pool. Direct `writeBytes` handoff on the Node
611
+ // stdout path; TextDecoder fallback for mock sinks that only carry
612
+ // a string-level `write`.
613
+ const flush = () => {
614
+ if (off === 0)
615
+ return;
616
+ if (io.writeBytes !== undefined) {
617
+ io.writeBytes(buf, off);
618
+ }
619
+ else {
620
+ io.write(textDecoder.decode(buf.subarray(0, off)));
621
+ }
622
+ off = 0;
623
+ };
624
+ let cursorX = -1;
625
+ let cursorY = -1;
626
+ // Fast path: skip expensive side-table string verification when neither
627
+ // surface has any side-table entries (the common case — no emoji/astral).
628
+ const needsSideTableCheck = tSide.length > 0 || cSide.length > 0;
629
+ // Per-batch byte budget computed from the current surface width so
630
+ // the inner char-write loop never needs a per-cell capacity check,
631
+ // even on ultra-wide terminals.
632
+ const batchBudget = BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES;
633
+ for (let y = 0; y < height; y++) {
634
+ let x = 0;
635
+ while (x < width) {
636
+ const tIdx = y * width + x;
637
+ // Per-cell dirty skip: if neither surface marked this cell as
638
+ // touched, the bytes are guaranteed identical and there is
639
+ // nothing to emit. Skip it without doing the byte compare.
640
+ const wordIdx = tIdx >>> 5;
641
+ const bitMask = 1 << (tIdx & 31);
642
+ const cellDirty = ((wordIdx < tDirty.length ? tDirty[wordIdx] : 0) & bitMask) !== 0
643
+ || ((wordIdx < cDirty.length ? cDirty[wordIdx] : 0) & bitMask) !== 0;
644
+ if (!cellDirty) {
645
+ x++;
646
+ continue;
647
+ }
648
+ const tOff = tIdx * CELL_STRIDE;
649
+ const inBounds = y < cHeight && x < cWidth;
650
+ const cOff = inBounds ? (y * cWidth + x) * CELL_STRIDE : -1;
651
+ const same = inBounds
652
+ ? (needsSideTableCheck
653
+ ? packedCellsSemanticallyEqual(tBuf, tOff, tSide, cBuf, cOff, cSide)
654
+ : packedBytesEqual(tBuf, tOff, cBuf, cOff))
655
+ : packedBytesEqual(tBuf, tOff, EMPTY_PACKED, 0);
656
+ if (same) {
657
+ x++;
658
+ continue;
659
+ }
660
+ // Flush if the batch preamble (cursor + SGR) cannot fit contiguously.
661
+ if (off + batchBudget > buf.length) {
662
+ flush();
663
+ }
664
+ if (x !== cursorX || y !== cursorY) {
665
+ off = writeCursorBytes(buf, off, x, y);
666
+ }
667
+ const hasStyle = packedHasVisibleStyle(tBuf, tOff);
668
+ if (hasStyle) {
669
+ off = writeSgrFromBufBytes(buf, off, tBuf, tOff);
670
+ }
671
+ // Write the first cell of the batch unconditionally: the outer
672
+ // "same?" check above already told us it differs from current,
673
+ // and the batch-leader style check is trivially true at the
674
+ // leader position. This removes a redundant 10-byte compare and
675
+ // a branch from the hot path — in diff-gradient, every batch is
676
+ // one cell, so that's one compare saved per cell per frame.
677
+ off = writeCharBytes(buf, off, tBuf, tOff, tSide);
678
+ let batchX = x + 1;
679
+ // NOTE: The batch continuation loop does not consult the render-
680
+ // dirty bitmap per cell. This is intentional — the cellsMatch
681
+ // byte-compare below catches unchanged cells and breaks the
682
+ // batch. Checking the bitmap here would add a branch to every
683
+ // iteration of the hot inner loop for negligible benefit, since
684
+ // batches are short in practice (style changes break them).
685
+ while (batchX < width) {
686
+ const bIdx = y * width + batchX;
687
+ const bOff = bIdx * CELL_STRIDE;
688
+ // Style check vs batch leader (always — batchX > x here).
689
+ if (!packedStyleBytesEqual(tBuf, tOff, tBuf, bOff)) {
690
+ break;
691
+ }
692
+ // Cell-match break check: stop the batch when we hit a cell
693
+ // that already matches current and has nothing to emit.
694
+ const bInBounds = y < cHeight && batchX < cWidth;
695
+ const bcOff = bInBounds ? (y * cWidth + batchX) * CELL_STRIDE : -1;
696
+ const cellsMatch = bInBounds
697
+ ? (needsSideTableCheck
698
+ ? packedCellsSemanticallyEqual(tBuf, bOff, tSide, cBuf, bcOff, cSide)
699
+ : packedBytesEqual(tBuf, bOff, cBuf, bcOff))
700
+ : packedBytesEqual(tBuf, bOff, EMPTY_PACKED, 0);
701
+ if (cellsMatch)
702
+ break;
703
+ off = writeCharBytes(buf, off, tBuf, bOff, tSide);
704
+ batchX++;
705
+ }
706
+ // Trailing reset after styled batch — matches legacy emission.
707
+ // 4-byte inline write, same as the leading reset inside writeSgrFromBufBytes.
708
+ if (hasStyle) {
709
+ buf[off] = 0x1b;
710
+ buf[off + 1] = 0x5b;
711
+ buf[off + 2] = 0x30;
712
+ buf[off + 3] = 0x6d;
713
+ off += 4;
714
+ }
715
+ cursorX = batchX;
716
+ cursorY = y;
717
+ x = batchX;
718
+ }
719
+ }
720
+ flush();
721
+ }
722
+ // ── Legacy cell-based differ (fallback) ─────────────────
723
+ function renderDiffCells(current, target, io, style) {
227
724
  const width = target.width;
228
725
  const height = target.height;
229
726
  const targetCells = target.cells;
@@ -263,12 +760,9 @@ export function renderDiff(current, target, io, style) {
263
760
  x++;
264
761
  continue;
265
762
  }
266
- // If we are not at the expected cursor position, move it
267
763
  if (x !== cursorX || y !== cursorY) {
268
764
  output += moveCursor(x, y);
269
765
  }
270
- // Find how many contiguous cells have the SAME style as this one
271
- // and also NEED to be updated.
272
766
  let batchX = x;
273
767
  let batchText = '';
274
768
  const batchStyleMods = targetMods;
@@ -315,7 +809,6 @@ export function renderDiff(current, target, io, style) {
315
809
  batchText += c.char;
316
810
  batchX++;
317
811
  }
318
- // Render the batch
319
812
  if (hasVisibleStyle(targetCell)) {
320
813
  token.hex = targetCell.fg;
321
814
  token.bg = targetCell.bg;
@@ -325,11 +818,9 @@ export function renderDiff(current, target, io, style) {
325
818
  else {
326
819
  output += batchText;
327
820
  }
328
- // Advance our internal cursor tracking
329
821
  const batchWidth = batchX - x;
330
822
  cursorX = x + batchWidth;
331
823
  cursorY = y;
332
- // Advance loop index
333
824
  x = batchX;
334
825
  }
335
826
  }
@@ -1 +1 @@
1
- {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"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"}