numux 2.16.1 → 2.16.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.
package/dist/man/numux.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH "NUMUX" "1" "May 2026" "2.16.1" "numux manual"
1
+ .TH "NUMUX" "1" "May 2026" "2.16.2" "numux manual"
2
2
  .SH "NAME"
3
3
  \fBnumux\fR
4
4
  .P
package/dist/numux.js CHANGED
@@ -548,7 +548,7 @@ var init_help = __esm(() => {
548
548
  var require_package = __commonJS((exports, module) => {
549
549
  module.exports = {
550
550
  name: "numux",
551
- version: "2.16.1",
551
+ version: "2.16.2",
552
552
  description: "Terminal multiplexer with dependency orchestration",
553
553
  type: "module",
554
554
  license: "MIT",
@@ -3556,7 +3556,7 @@ function openLink(link) {
3556
3556
  }
3557
3557
 
3558
3558
  // src/ui/pane.ts
3559
- var RENDER_LIMIT = 5000;
3559
+ var RENDER_LIMIT = 1500;
3560
3560
  var MAX_SCROLLBACK_LINES = 1e6;
3561
3561
  var MAX_BUFFER_BYTES = 500 * 1024 * 1024;
3562
3562
 
@@ -3570,6 +3570,9 @@ class Pane {
3570
3570
  _timestampFormat = null;
3571
3571
  lineTimestamps = [];
3572
3572
  lineCounter = 0;
3573
+ signedLineCount = 0;
3574
+ timestampUpdateTimer = null;
3575
+ static TIMESTAMP_UPDATE_DEBOUNCE_MS = 32;
3573
3576
  _onScroll = null;
3574
3577
  _onCopy = null;
3575
3578
  _onLinkClick = null;
@@ -3630,6 +3633,8 @@ class Pane {
3630
3633
  this.bytesFed = 0;
3631
3634
  this.lineTimestamps = [];
3632
3635
  this.lineCounter = 0;
3636
+ this.signedLineCount = 0;
3637
+ this.timestampGutter?.clearAllLineSigns();
3633
3638
  }
3634
3639
  const now = Date.now();
3635
3640
  if (this.lineCounter === 0) {
@@ -3644,10 +3649,18 @@ class Pane {
3644
3649
  }
3645
3650
  const text = this.decoder.decode(data, { stream: true });
3646
3651
  this.terminal.feed(text);
3647
- if (this._timestampFormat) {
3648
- this.updateTimestampSigns();
3652
+ if (this._timestampFormat && this.lineTimestamps.length !== this.signedLineCount) {
3653
+ this.scheduleTimestampUpdate();
3649
3654
  }
3650
3655
  }
3656
+ scheduleTimestampUpdate() {
3657
+ if (this.timestampUpdateTimer)
3658
+ return;
3659
+ this.timestampUpdateTimer = setTimeout(() => {
3660
+ this.timestampUpdateTimer = null;
3661
+ this.updateTimestampSigns();
3662
+ }, Pane.TIMESTAMP_UPDATE_DEBOUNCE_MS);
3663
+ }
3651
3664
  resize(cols, rows) {
3652
3665
  this.terminal.cols = cols;
3653
3666
  this.terminal.rows = rows;
@@ -3725,6 +3738,11 @@ class Pane {
3725
3738
  this.bytesFed = 0;
3726
3739
  this.lineTimestamps = [];
3727
3740
  this.lineCounter = 0;
3741
+ this.signedLineCount = 0;
3742
+ if (this.timestampUpdateTimer) {
3743
+ clearTimeout(this.timestampUpdateTimer);
3744
+ this.timestampUpdateTimer = null;
3745
+ }
3728
3746
  if (this._timestampFormat) {
3729
3747
  this.timestampGutter?.clearAllLineSigns();
3730
3748
  }
@@ -3736,6 +3754,11 @@ class Pane {
3736
3754
  if (wasEnabled === isEnabled && this._timestampFormat === newFormat)
3737
3755
  return;
3738
3756
  this._timestampFormat = newFormat;
3757
+ if (this.timestampUpdateTimer) {
3758
+ clearTimeout(this.timestampUpdateTimer);
3759
+ this.timestampUpdateTimer = null;
3760
+ }
3761
+ this.signedLineCount = 0;
3739
3762
  if (isEnabled && !wasEnabled) {
3740
3763
  this.scrollBox.remove(this.terminal.id);
3741
3764
  const gutterWidth = (newFormat?.length ?? 8) + 1;
@@ -3775,8 +3798,14 @@ class Pane {
3775
3798
  signs.set(i, { before: formatTimestamp(new Date(this.lineTimestamps[i]), fmt) });
3776
3799
  }
3777
3800
  this.timestampGutter.setLineSigns(signs);
3801
+ this.signedLineCount = this.lineTimestamps.length;
3778
3802
  }
3779
3803
  destroy() {
3804
+ if (this.timestampUpdateTimer) {
3805
+ clearTimeout(this.timestampUpdateTimer);
3806
+ this.timestampUpdateTimer = null;
3807
+ }
3808
+ this.timestampGutter?.clearTarget();
3780
3809
  this.terminal.destroy();
3781
3810
  }
3782
3811
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "numux",
3
- "version": "2.16.1",
3
+ "version": "2.16.2",
4
4
  "description": "Terminal multiplexer with dependency orchestration",
5
5
  "type": "module",
6
6
  "license": "MIT",