numux 2.17.2 → 2.18.0
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/README.md +1 -0
- package/dist/man/numux.1 +13 -1
- package/dist/numux.js +13 -4
- package/dist/types.d.ts +13 -0
- package/package.json +1 -4
package/README.md
CHANGED
|
@@ -286,6 +286,7 @@ Top-level options apply to all processes (process-level settings override):
|
|
|
286
286
|
| `noWatch` | `boolean` | Disable file watching even if processes have watch patterns |
|
|
287
287
|
| `logDir` | `string` | Directory to write per-process log files |
|
|
288
288
|
| `theme` | `ThemePref` | TUI color theme. `'auto'` detects the terminal background via OSC 11 (falling back to `COLORFGBG` then dark). `'light'`/`'dark'` skip detection. |
|
|
289
|
+
| `autowrap` | `boolean` | Whether to leave the host terminal's autowrap (DECAWM) enabled. Set `false` to have numux disable host autowrap (`\x1b[?7l`) on startup, restoring it on exit. This works around an OpenTUI renderer bug where a run that fills the last screen column wraps right-pane output into the tab sidebar ([anomalyco/opentui#1187](https://github.com/anomalyco/opentui/issues/1187)). Pane content still wraps within its own grid — only the host emit-cursor wrap is turned off. Leave enabled (the default) unless you hit the smear. |
|
|
289
290
|
<!-- /generated:config-global -->
|
|
290
291
|
|
|
291
292
|
```ts
|
package/dist/man/numux.1
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "NUMUX" "1" "June 2026" "2.
|
|
1
|
+
.TH "NUMUX" "1" "June 2026" "2.18.0" "numux manual"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBnumux\fR
|
|
4
4
|
.P
|
|
@@ -552,6 +552,18 @@ T}|T{
|
|
|
552
552
|
T}|T{
|
|
553
553
|
TUI color theme\. \fB'auto'\fP detects the terminal background via OSC 11 (falling back to \fBCOLORFGBG\fP then dark)\. \fB'light'\fP/\fB'dark'\fP skip detection\.
|
|
554
554
|
T}
|
|
555
|
+
_
|
|
556
|
+
T{
|
|
557
|
+
\fBautowrap\fP
|
|
558
|
+
T}|T{
|
|
559
|
+
\fBboolean\fP
|
|
560
|
+
T}|T{
|
|
561
|
+
Whether to leave the host terminal's autowrap (DECAWM) enabled\. Set \fBfalse\fP to have numux disable host autowrap (\fB\\x1b[?7l\fP) on startup, restoring it on exit\. This works around an OpenTUI renderer bug where a run that fills the last screen column wraps right\-pane output into the tab sidebar (
|
|
562
|
+
.UR https://github.com/anomalyco/opentui/issues/1187
|
|
563
|
+
.I anomalyco/opentui#1187
|
|
564
|
+
.UE
|
|
565
|
+
)\. Pane content still wraps within its own grid — only the host emit\-cursor wrap is turned off\. Leave enabled (the default) unless you hit the smear\.
|
|
566
|
+
T}
|
|
555
567
|
.TE
|
|
556
568
|
<!\-\- /generated:config\-global \-\->
|
|
557
569
|
|
package/dist/numux.js
CHANGED
|
@@ -292,6 +292,7 @@ numux logs api | tail -f # Follow process log output
|
|
|
292
292
|
| \`noWatch\` | \`boolean\` | Disable file watching even if processes have watch patterns |
|
|
293
293
|
| \`logDir\` | \`string\` | Directory to write per-process log files |
|
|
294
294
|
| \`theme\` | \`ThemePref\` | TUI color theme. \`'auto'\` detects the terminal background via OSC 11 (falling back to \`COLORFGBG\` then dark). \`'light'\`/\`'dark'\` skip detection. |
|
|
295
|
+
| \`autowrap\` | \`boolean\` | Whether to leave the host terminal's autowrap (DECAWM) enabled. Set \`false\` to have numux disable host autowrap (\`\\x1b[?7l\`) on startup, restoring it on exit. This works around an OpenTUI renderer bug where a run that fills the last screen column wraps right-pane output into the tab sidebar ([anomalyco/opentui#1187](https://github.com/anomalyco/opentui/issues/1187)). Pane content still wraps within its own grid \u2014 only the host emit-cursor wrap is turned off. Leave enabled (the default) unless you hit the smear. |
|
|
295
296
|
<!-- /generated:config-global -->
|
|
296
297
|
|
|
297
298
|
\`\`\`ts
|
|
@@ -885,7 +886,7 @@ var init_help = __esm(() => {
|
|
|
885
886
|
var require_package = __commonJS((exports, module) => {
|
|
886
887
|
module.exports = {
|
|
887
888
|
name: "numux",
|
|
888
|
-
version: "2.
|
|
889
|
+
version: "2.18.0",
|
|
889
890
|
description: "Terminal multiplexer with dependency orchestration",
|
|
890
891
|
type: "module",
|
|
891
892
|
license: "MIT",
|
|
@@ -939,9 +940,6 @@ var require_package = __commonJS((exports, module) => {
|
|
|
939
940
|
"@commitlint/config-conventional": "^20.4.2",
|
|
940
941
|
"@types/bun": "^1.3.9",
|
|
941
942
|
"marked-man": "^2.1.0"
|
|
942
|
-
},
|
|
943
|
-
patchedDependencies: {
|
|
944
|
-
"@opentui/core@0.4.1": "patches/@opentui%2Fcore@0.4.1.patch"
|
|
945
943
|
}
|
|
946
944
|
};
|
|
947
945
|
});
|
|
@@ -2136,6 +2134,7 @@ function validateConfig(raw, _warnings) {
|
|
|
2136
2134
|
const noWatch = config.noWatch === true ? true : undefined;
|
|
2137
2135
|
const logDir = typeof config.logDir === "string" && config.logDir.trim() ? config.logDir.trim() : undefined;
|
|
2138
2136
|
const theme = validateTheme(config.theme);
|
|
2137
|
+
const autowrap = config.autowrap === false ? false : undefined;
|
|
2139
2138
|
const validated = {};
|
|
2140
2139
|
for (const name of names) {
|
|
2141
2140
|
let proc = processes[name];
|
|
@@ -2235,6 +2234,7 @@ function validateConfig(raw, _warnings) {
|
|
|
2235
2234
|
...noWatch ? { noWatch } : {},
|
|
2236
2235
|
...logDir ? { logDir } : {},
|
|
2237
2236
|
...theme ? { theme } : {},
|
|
2237
|
+
...autowrap === false ? { autowrap: false } : {},
|
|
2238
2238
|
processes: validated
|
|
2239
2239
|
};
|
|
2240
2240
|
}
|
|
@@ -5000,6 +5000,9 @@ class App {
|
|
|
5000
5000
|
useMouse: true,
|
|
5001
5001
|
useKittyKeyboard: {}
|
|
5002
5002
|
});
|
|
5003
|
+
if (this.config.autowrap === false) {
|
|
5004
|
+
this.disableAutowrap();
|
|
5005
|
+
}
|
|
5003
5006
|
const { width, height } = this.renderer;
|
|
5004
5007
|
const maxNameLen = Math.max(...this.names.map((n) => n.length));
|
|
5005
5008
|
this.sidebarWidth = Math.min(30, Math.max(16, maxNameLen + 5));
|
|
@@ -5282,6 +5285,9 @@ class App {
|
|
|
5282
5285
|
}
|
|
5283
5286
|
}
|
|
5284
5287
|
}
|
|
5288
|
+
disableAutowrap() {
|
|
5289
|
+
process.stdout.write("\x1B[?7l");
|
|
5290
|
+
}
|
|
5285
5291
|
switchPane(name) {
|
|
5286
5292
|
if (this.activePane === name)
|
|
5287
5293
|
return;
|
|
@@ -5382,6 +5388,9 @@ class App {
|
|
|
5382
5388
|
for (const pane of this.panes.values()) {
|
|
5383
5389
|
pane.destroy();
|
|
5384
5390
|
}
|
|
5391
|
+
if (this.config.autowrap === false) {
|
|
5392
|
+
process.stdout.write("\x1B[?7h");
|
|
5393
|
+
}
|
|
5385
5394
|
if (!this.renderer.isDestroyed) {
|
|
5386
5395
|
this.renderer.destroy();
|
|
5387
5396
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -129,6 +129,18 @@ export interface NumuxConfig<K extends string = string> {
|
|
|
129
129
|
* @default 'auto'
|
|
130
130
|
*/
|
|
131
131
|
theme?: ThemePref;
|
|
132
|
+
/**
|
|
133
|
+
* Whether to leave the host terminal's autowrap (DECAWM) enabled.
|
|
134
|
+
*
|
|
135
|
+
* Set `false` to have numux disable host autowrap (`\x1b[?7l`) on startup,
|
|
136
|
+
* restoring it on exit. This works around an OpenTUI renderer bug where a run
|
|
137
|
+
* that fills the last screen column wraps right-pane output into the tab
|
|
138
|
+
* sidebar ([anomalyco/opentui#1187](https://github.com/anomalyco/opentui/issues/1187)).
|
|
139
|
+
* Pane content still wraps within its own grid — only the host emit-cursor
|
|
140
|
+
* wrap is turned off. Leave enabled (the default) unless you hit the smear.
|
|
141
|
+
* @default true
|
|
142
|
+
*/
|
|
143
|
+
autowrap?: boolean;
|
|
132
144
|
processes: Record<K, NumuxProcessConfig<K> | NumuxScriptPattern<K> | string | true>;
|
|
133
145
|
}
|
|
134
146
|
export type SortOrder = 'config' | 'alphabetical' | 'topological' | 'status';
|
|
@@ -146,6 +158,7 @@ export interface ResolvedNumuxConfig {
|
|
|
146
158
|
noWatch?: boolean;
|
|
147
159
|
logDir?: string;
|
|
148
160
|
theme?: ThemePref;
|
|
161
|
+
autowrap?: boolean;
|
|
149
162
|
processes: Record<string, ResolvedProcessConfig>;
|
|
150
163
|
}
|
|
151
164
|
export type ProcessStatus = 'pending' | 'starting' | 'ready' | 'running' | 'stopping' | 'stopped' | 'finished' | 'failed' | 'skipped';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "numux",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0",
|
|
4
4
|
"description": "Terminal multiplexer with dependency orchestration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,8 +54,5 @@
|
|
|
54
54
|
"@commitlint/config-conventional": "^20.4.2",
|
|
55
55
|
"@types/bun": "^1.3.9",
|
|
56
56
|
"marked-man": "^2.1.0"
|
|
57
|
-
},
|
|
58
|
-
"patchedDependencies": {
|
|
59
|
-
"@opentui/core@0.4.1": "patches/@opentui%2Fcore@0.4.1.patch"
|
|
60
57
|
}
|
|
61
58
|
}
|