numux 2.17.3 → 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 +12 -11
- package/dist/types.d.ts +13 -0
- package/package.json +1 -1
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",
|
|
@@ -2133,6 +2134,7 @@ function validateConfig(raw, _warnings) {
|
|
|
2133
2134
|
const noWatch = config.noWatch === true ? true : undefined;
|
|
2134
2135
|
const logDir = typeof config.logDir === "string" && config.logDir.trim() ? config.logDir.trim() : undefined;
|
|
2135
2136
|
const theme = validateTheme(config.theme);
|
|
2137
|
+
const autowrap = config.autowrap === false ? false : undefined;
|
|
2136
2138
|
const validated = {};
|
|
2137
2139
|
for (const name of names) {
|
|
2138
2140
|
let proc = processes[name];
|
|
@@ -2232,6 +2234,7 @@ function validateConfig(raw, _warnings) {
|
|
|
2232
2234
|
...noWatch ? { noWatch } : {},
|
|
2233
2235
|
...logDir ? { logDir } : {},
|
|
2234
2236
|
...theme ? { theme } : {},
|
|
2237
|
+
...autowrap === false ? { autowrap: false } : {},
|
|
2235
2238
|
processes: validated
|
|
2236
2239
|
};
|
|
2237
2240
|
}
|
|
@@ -4997,7 +5000,9 @@ class App {
|
|
|
4997
5000
|
useMouse: true,
|
|
4998
5001
|
useKittyKeyboard: {}
|
|
4999
5002
|
});
|
|
5000
|
-
|
|
5003
|
+
if (this.config.autowrap === false) {
|
|
5004
|
+
this.disableAutowrap();
|
|
5005
|
+
}
|
|
5001
5006
|
const { width, height } = this.renderer;
|
|
5002
5007
|
const maxNameLen = Math.max(...this.names.map((n) => n.length));
|
|
5003
5008
|
this.sidebarWidth = Math.min(30, Math.max(16, maxNameLen + 5));
|
|
@@ -5280,15 +5285,8 @@ class App {
|
|
|
5280
5285
|
}
|
|
5281
5286
|
}
|
|
5282
5287
|
}
|
|
5283
|
-
|
|
5284
|
-
|
|
5285
|
-
if (!("forceFullRepaintRequested" in r)) {
|
|
5286
|
-
log("warning: @opentui/core has no forceFullRepaintRequested flag \u2014 render-drift workaround inactive");
|
|
5287
|
-
return;
|
|
5288
|
-
}
|
|
5289
|
-
renderer.setFrameCallback(async () => {
|
|
5290
|
-
r.forceFullRepaintRequested = true;
|
|
5291
|
-
});
|
|
5288
|
+
disableAutowrap() {
|
|
5289
|
+
process.stdout.write("\x1B[?7l");
|
|
5292
5290
|
}
|
|
5293
5291
|
switchPane(name) {
|
|
5294
5292
|
if (this.activePane === name)
|
|
@@ -5390,6 +5388,9 @@ class App {
|
|
|
5390
5388
|
for (const pane of this.panes.values()) {
|
|
5391
5389
|
pane.destroy();
|
|
5392
5390
|
}
|
|
5391
|
+
if (this.config.autowrap === false) {
|
|
5392
|
+
process.stdout.write("\x1B[?7h");
|
|
5393
|
+
}
|
|
5393
5394
|
if (!this.renderer.isDestroyed) {
|
|
5394
5395
|
this.renderer.destroy();
|
|
5395
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';
|