@ashley-shrok/viewmodel-shell 0.4.7 → 0.4.8

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 (2) hide show
  1. package/dist/tui.js +6 -2
  2. package/package.json +1 -1
package/dist/tui.js CHANGED
@@ -1328,10 +1328,14 @@ export class TuiAdapter {
1328
1328
  if (!href) {
1329
1329
  return (_jsx(Box, { children: _jsx(Text, { underline: true, color: inherited?.color, dimColor: inherited?.dim, children: node.label }) }, key));
1330
1330
  }
1331
- // OSC 8 hyperlink. As the SOLE child of its own Box with no wrap, the
1331
+ // OSC 8 hyperlink: ESC ]8;; <uri> BEL <label> ESC ]8;; BEL. The
1332
+ // ESC introducer + BEL terminator are LOAD-BEARING — without them
1333
+ // (a long-latent bug fixed in 0.4.8) this is plain `]8;;…` garbage
1334
+ // text in every terminal. `\x1b`/`\x07` escapes match osc52()'s
1335
+ // proven style. As the SOLE child of its own Box with no wrap, the
1332
1336
  // string-width over-count (string-width does not strip OSC 8) stays
1333
1337
  // contained to this line and cannot corrupt sibling layout.
1334
- const osc = `]8;;${node.href}${node.label}]8;;${copied ? " ✓ copied" : ""}`;
1338
+ const osc = `\x1b]8;;${node.href}\x07${node.label}\x1b]8;;\x07${copied ? " ✓ copied" : ""}`;
1335
1339
  return this.focusWrap(_jsx(Box, { children: _jsx(Text, { wrap: "truncate-end", underline: true, color: inherited?.color, dimColor: inherited?.dim, children: osc }) }, key), focused, key);
1336
1340
  }
1337
1341
  case "stat-bar":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashley-shrok/viewmodel-shell",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "A server-driven UI framework where the wire format is structured enough that agents can build full-stack apps without ever opening a browser and all UI tests are pure unit tests with no browser runtime. Server returns a JSON tree of typed nodes; a thin TypeScript adapter renders it to DOM. Backend-agnostic — a .NET reference backend ships with the repo, but any language can produce the JSON contract.",
5
5
  "type": "module",
6
6
  "license": "MIT",