@linxiraos/pi-tui 1.1.24 → 1.1.26

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/CHANGELOG.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [1.1.24] - 2026-10-03
5
+ ## [1.1.26] - 2026-10-03
6
6
 
7
- - 语义角色清扫补全(omp.*→zeta.*,106 文件);agent-hub 空态提示还原 `omp-dev`;notifications OSC 99 对齐 zeta app id。
7
+ - 版本线推进至 1.1.26;本版无独立用户可见变化。
8
8
 
9
9
  ## [14.9.8] - 2026-05-12
10
10
 
@@ -775,6 +775,14 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
775
775
 
776
776
  - Added `getText()` method to Text component for retrieving current text content
777
777
 
778
+ ## [1.1.25] - 2026-10-03
779
+
780
+ - Hyperlinks (OSC 8) are now emitted when running inside Zetawork workbench panes: the `ZETA_WORKBENCH=1` probe unlocks `fileHyperlink` output, so file links stay clickable and titles update live in the workbench's embedded terminals.
781
+
782
+ ## [1.1.24] - 2026-10-03
783
+
784
+ - 语义角色清扫补全(omp.*→zeta.*,106 文件);agent-hub 空态提示还原 `omp-dev`;notifications OSC 99 对齐 zeta app id。
785
+
778
786
  ## [1.1.19] - 2026-09-22
779
787
 
780
788
  - 版本线推进;本版无独立用户可见变化。
@@ -146,6 +146,14 @@ export declare function detectRectangularSgrSupport(terminalId: TerminalId, env?
146
146
  * bytes survive — the same reason DECCARA and synchronized output gate on it.
147
147
  */
148
148
  export declare function detectStyledUnderlineSupport(terminalId: TerminalId, env?: NodeJS.ProcessEnv): boolean;
149
+ /**
150
+ * True when this process runs inside a Zeta workbench pane. The workbench
151
+ * injects `ZETA_WORKBENCH=1` into every pane PTY (`termide` set_env); its
152
+ * terminal simulator renders OSC 8 in its own grid and opens links itself on
153
+ * Ctrl+click, so — like Herdr — the outer terminal's advertised support does
154
+ * not matter. Pane-only detection, mirroring `isInsideHerdr`.
155
+ */
156
+ export declare function isInsideZetaWorkbench(env?: NodeJS.ProcessEnv): boolean;
149
157
  /**
150
158
  * Resolve an explicit user override for OSC 8 hyperlinks. Returns `false` for
151
159
  * an opt-out, `true` for a force-on, or `null` when the user has expressed no
@@ -163,6 +171,10 @@ export declare function hyperlinksUserOverride(env?: NodeJS.ProcessEnv): boolean
163
171
  * terminal (`TERM=xterm-256color`, no `TERM_PROGRAM`), but it renders
164
172
  * OSC 8 in its own grid and opens links itself on Ctrl+click, so the
165
173
  * outer terminal's support does not matter.
174
+ * 2b. Zeta workbench pane with no nested screen/tmux: on, for the same
175
+ * reason — the workbench's terminal simulator renders OSC 8 itself and
176
+ * opens links on Ctrl+click (`ZETA_WORKBENCH=1` is injected into every
177
+ * pane PTY; the outer terminal is invisible from inside).
166
178
  * 3. Static terminal capability — terminals whose {@link TerminalInfo} marks
167
179
  * `hyperlinks: false` (e.g. `base`) stay off unless the user forced on.
168
180
  * 4. GNU screen's explicit session marker (`STY`) always off, even if tmux is
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@linxiraos/pi-tui",
4
- "version": "1.1.24",
4
+ "version": "1.1.26",
5
5
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
6
6
  "homepage": "https://linxira-os.github.io/zeta/",
7
7
  "author": "Linxira-OS",
@@ -38,14 +38,14 @@
38
38
  "gen:glyphs": "bun scripts/gen-glyphs.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@linxiraos/pi-omptype": "1.1.24",
42
- "@linxiraos/pi-agent-core": "1.1.24",
43
- "@linxiraos/pi-ai": "1.1.24",
44
- "@linxiraos/pi-catalog": "1.1.24",
45
- "@linxiraos/pi-natives": "1.1.24",
46
- "@linxiraos/pi-utils": "1.1.24",
47
- "@linxiraos/pi-wire": "1.1.24",
48
- "@linxiraos/pi-snapcompact": "1.1.24"
41
+ "@linxiraos/pi-omptype": "1.1.26",
42
+ "@linxiraos/pi-agent-core": "1.1.26",
43
+ "@linxiraos/pi-ai": "1.1.26",
44
+ "@linxiraos/pi-catalog": "1.1.26",
45
+ "@linxiraos/pi-natives": "1.1.26",
46
+ "@linxiraos/pi-utils": "1.1.26",
47
+ "@linxiraos/pi-wire": "1.1.26",
48
+ "@linxiraos/pi-snapcompact": "1.1.26"
49
49
  },
50
50
  "devDependencies": {
51
51
  "kitty-vt-wasm": "^0.2.0"
@@ -146,6 +146,14 @@ export declare function detectRectangularSgrSupport(terminalId: TerminalId, env?
146
146
  * bytes survive — the same reason DECCARA and synchronized output gate on it.
147
147
  */
148
148
  export declare function detectStyledUnderlineSupport(terminalId: TerminalId, env?: NodeJS.ProcessEnv): boolean;
149
+ /**
150
+ * True when this process runs inside a Zeta workbench pane. The workbench
151
+ * injects `ZETA_WORKBENCH=1` into every pane PTY (`termide` set_env); its
152
+ * terminal simulator renders OSC 8 in its own grid and opens links itself on
153
+ * Ctrl+click, so — like Herdr — the outer terminal's advertised support does
154
+ * not matter. Pane-only detection, mirroring `isInsideHerdr`.
155
+ */
156
+ export declare function isInsideZetaWorkbench(env?: NodeJS.ProcessEnv): boolean;
149
157
  /**
150
158
  * Resolve an explicit user override for OSC 8 hyperlinks. Returns `false` for
151
159
  * an opt-out, `true` for a force-on, or `null` when the user has expressed no
@@ -163,6 +171,10 @@ export declare function hyperlinksUserOverride(env?: NodeJS.ProcessEnv): boolean
163
171
  * terminal (`TERM=xterm-256color`, no `TERM_PROGRAM`), but it renders
164
172
  * OSC 8 in its own grid and opens links itself on Ctrl+click, so the
165
173
  * outer terminal's support does not matter.
174
+ * 2b. Zeta workbench pane with no nested screen/tmux: on, for the same
175
+ * reason — the workbench's terminal simulator renders OSC 8 itself and
176
+ * opens links on Ctrl+click (`ZETA_WORKBENCH=1` is injected into every
177
+ * pane PTY; the outer terminal is invisible from inside).
166
178
  * 3. Static terminal capability — terminals whose {@link TerminalInfo} marks
167
179
  * `hyperlinks: false` (e.g. `base`) stay off unless the user forced on.
168
180
  * 4. GNU screen's explicit session marker (`STY`) always off, even if tmux is
@@ -494,6 +494,17 @@ export function detectStyledUnderlineSupport(terminalId: TerminalId, env: NodeJS
494
494
  return false;
495
495
  }
496
496
  }
497
+ /**
498
+ * True when this process runs inside a Zeta workbench pane. The workbench
499
+ * injects `ZETA_WORKBENCH=1` into every pane PTY (`termide` set_env); its
500
+ * terminal simulator renders OSC 8 in its own grid and opens links itself on
501
+ * Ctrl+click, so — like Herdr — the outer terminal's advertised support does
502
+ * not matter. Pane-only detection, mirroring `isInsideHerdr`.
503
+ */
504
+ export function isInsideZetaWorkbench(env: NodeJS.ProcessEnv = Bun.env): boolean {
505
+ return env.ZETA_WORKBENCH === "1";
506
+ }
507
+
497
508
  /**
498
509
  * Resolve an explicit user override for OSC 8 hyperlinks. Returns `false` for
499
510
  * an opt-out, `true` for a force-on, or `null` when the user has expressed no
@@ -527,6 +538,10 @@ function parseTmuxVersionFromEnv(env: NodeJS.ProcessEnv): { major: number; minor
527
538
  * terminal (`TERM=xterm-256color`, no `TERM_PROGRAM`), but it renders
528
539
  * OSC 8 in its own grid and opens links itself on Ctrl+click, so the
529
540
  * outer terminal's support does not matter.
541
+ * 2b. Zeta workbench pane with no nested screen/tmux: on, for the same
542
+ * reason — the workbench's terminal simulator renders OSC 8 itself and
543
+ * opens links on Ctrl+click (`ZETA_WORKBENCH=1` is injected into every
544
+ * pane PTY; the outer terminal is invisible from inside).
530
545
  * 3. Static terminal capability — terminals whose {@link TerminalInfo} marks
531
546
  * `hyperlinks: false` (e.g. `base`) stay off unless the user forced on.
532
547
  * 4. GNU screen's explicit session marker (`STY`) always off, even if tmux is
@@ -554,6 +569,8 @@ export function shouldEnableHyperlinksByDefault(
554
569
 
555
570
  if (isInsideHerdr(env) && !env.STY && !env.TMUX) return true;
556
571
 
572
+ if (isInsideZetaWorkbench(env) && !env.STY && !env.TMUX) return true;
573
+
557
574
  if (!getTerminalInfo(terminalId).hyperlinks) return false;
558
575
 
559
576
  // STY is GNU screen's explicit session marker. It vetoes tmux enabling when