hermes-agent/ui-opentui/package.json
alt-glitch 25686feebf opentui(v6): bump @opentui 0.4.0 -> 0.4.1 + openConsoleOnError:false (W5)
Bump the three @opentui pins (core/keymap/solid) 0.4.0 -> 0.4.1 + lockfile.
The headline upstream change is native-yoga (#1126); per the locked spec
decision D11 this is NOT a memory-floor lever at typical sizes, and a fresh
bench on this branch confirms it — OpenTUI capped VmHWM is within run-to-run
noise across mem50/100/300 (0.4.0: 193/200/220 vs 0.4.1: 192/218/217 MB).
The value is tail-session layout wins + upstream alignment, not the floor.

D14 (ffiSafe re-verify): the FFI signatures ffiSafe.ts clamps (OptimizedBuffer
fillRect/drawText/setCell/setCellWithAlphaBlending/drawChar + TextBufferView
setViewport) are byte-identical across 0.4.0->0.4.1 (still u32, still crash on
negatives under node:ffi), so the shim stays as-is and remains load-bearing.
Verified live: scrolled a 300-msg transcript with syntax-highlighted code +
tool cards past the viewport top (the negative-y fillRect trigger) on 0.4.1 —
no ERR_INVALID_ARG_VALUE loop, clean render.

Also pick up openConsoleOnError:false (public createCliRenderer option): stops
core's uncaught-error handler from calling the ALLOCATING console.show(), which
exit-7-masks the original error under native-handle exhaustion (the bench
mem3000 postmortem). guardRendererErrorHandlers stays as belt-and-suspenders.

Gate: npm run check OK (768 tests). Determinism gate green both engines.
2026-06-14 13:53:11 +05:30

45 lines
1.3 KiB
JSON

{
"name": "@hermes/ui-opentui",
"version": "0.0.0",
"private": true,
"type": "module",
"engines": {
"node": ">=26.3"
},
"description": "Native OpenTUI engine for Hermes (Solid + Effect-at-boundary, from scratch). Ink (ui-tui/) stays the shipping default.",
"scripts": {
"type-check": "tsc --noEmit",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"fmt": "prettier --write src",
"fix": "prettier --write src && eslint . --fix",
"build": "node scripts/build.mjs",
"start": "node --experimental-ffi --no-warnings dist/main.js",
"test": "vitest run",
"check": "bash scripts/check.sh",
"dev": "node scripts/build.mjs && node --experimental-ffi --no-warnings dist/main.js"
},
"dependencies": {
"@opentui/core": "0.4.1",
"@opentui/keymap": "0.4.1",
"@opentui/solid": "0.4.1",
"effect": "4.0.0-beta.78",
"fuzzysort": "^3.1.0",
"solid-js": "1.9.12"
},
"devDependencies": {
"@babel/core": "^7.29.7",
"@babel/preset-typescript": "^7.29.7",
"@effect/vitest": "^4.0.0-beta.78",
"@eslint/js": "^9",
"@types/node": "^24",
"babel-preset-solid": "^1.9.12",
"esbuild": "^0.28.0",
"eslint": "^9",
"eslint-plugin-unused-imports": "^4",
"prettier": "^3",
"typescript": "^5",
"typescript-eslint": "^8",
"vitest": "^4.1.8"
}
}