mirror of
https://github.com/aphrody-labs/opentui.git
synced 2026-10-13 21:08:53 +00:00
core: require Bun 1.3.14
Orchestrator decision D-21. Bun 1.3.7, the lowest release that passes the FFI and embedded-terminal tests, intermittently hangs in a Bun pool thread while it loads a test file (3 of 157 runs of renderer.native-scene-split, 2 of 5 full core runs). 1.3.14 is the version CI's bun-1-compat job tests, with no hang in 86 runs. Raise engines.bun and the documented minimum to 1.3.14 and give all three reasons in the 0.5.14 migration list. The api-index and package-entrypoints table changes are oxfmt realignment of one widened column.
This commit is contained in:
15 files changed
+62
-62
No files matched your search
@@ -49,7 +49,7 @@ Then build your first app with the [quickstart](https://opentui.com/docs/getting
|
||||
|
||||
## Runtime and platform support
|
||||
|
||||
`@opentui/core` runs on Bun 1.3.7 or later, or on Node.js 26.4.0 or later with ECMAScript modules (ESM) and
|
||||
`@opentui/core` runs on Bun 1.3.14 or later, or on Node.js 26.4.0 or later with ECMAScript modules (ESM) and
|
||||
`--experimental-ffi`.
|
||||
|
||||
Use Bun 1.4.0 or later on native Windows arm64.
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
}
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7",
|
||||
"bun": ">=1.3.14",
|
||||
"node": ">=26.4.0"
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,6 @@
|
||||
"typescript": "^5"
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7"
|
||||
"bun": ">=1.3.14"
|
||||
}
|
||||
}
|
||||
@@ -98,6 +98,6 @@
|
||||
"typescript": "^5"
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7"
|
||||
"bun": ">=1.3.14"
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,6 @@
|
||||
"typescript": "^5"
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7"
|
||||
"bun": ">=1.3.14"
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@ bun add @opentui/ssh
|
||||
npm install @opentui/ssh
|
||||
```
|
||||
|
||||
`@opentui/core` is a peer dependency. Supported runtimes are Bun ≥ 1.3.7 and
|
||||
`@opentui/core` is a peer dependency. Supported runtimes are Bun ≥ 1.3.14 and
|
||||
Node.js ≥ 26.4.0. CI runs the SSH integration suite with Bun on macOS, Linux,
|
||||
and Windows. CI also installs, imports, starts, and closes the packed ESM
|
||||
package on Node.js. Start Node applications that create renderers with
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"typescript": "^5"
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7",
|
||||
"bun": ">=1.3.14",
|
||||
"node": ">=26.4.0"
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,6 @@
|
||||
"typescript": "^5"
|
||||
},
|
||||
"engines": {
|
||||
"bun": ">=1.3.7"
|
||||
"bun": ">=1.3.14"
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,7 @@ A failed automatic start destroys the partial native engine. Successful automati
|
||||
|
||||
Audio uses the same native runtime as the renderer. Read [Runtime and platform support](/docs/getting-started/runtime-support) for setup and distribution details.
|
||||
|
||||
The local requirements are Bun 1.3.7 or later, or Node.js 26.4.0 or later with experimental FFI. Native packages support macOS, Linux, and Windows on x64 and arm64. Use Bun 1.4.0 or later on native Windows arm64.
|
||||
The local requirements are Bun 1.3.14 or later, or Node.js 26.4.0 or later with experimental FFI. Native packages support macOS, Linux, and Windows on x64 and arm64. Use Bun 1.4.0 or later on native Windows arm64.
|
||||
|
||||
Linux selects glibc by default. Set the documented libc selector when the target needs musl. Audio has no browser target.
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Check the runtime, native artifact, permission, asset, and package requirements
|
||||
|
||||
| Runtime | Project requirement | Native Core requirements |
|
||||
| ------- | ------------------- | ------------------------------------------------------ |
|
||||
| Bun | 1.3.7 or later | Bun loads the matching optional native package. |
|
||||
| Bun | 1.3.14 or later | Bun loads the matching optional native package. |
|
||||
| Node.js | 26.4.0 or later | Use ECMAScript modules (ESM) and `--experimental-ffi`. |
|
||||
|
||||
The Node.js acceptance scripts accept Node.js 26.4 or later.
|
||||
|
||||
@@ -27,49 +27,49 @@ A row can have more than one class. Read [Runtime and platform support](/docs/ge
|
||||
|
||||
The runtime column describes the published target. A Node stub throws during import for each Bun-only support entry point.
|
||||
|
||||
| Package entry point | Runtime | Class | Canonical documentation |
|
||||
| ------------------------------------------------- | ------------------------------------ | ----------------------------------------------- | ---------------------------------------------------------------- |
|
||||
| `@opentui/core` | Bun and Node.js | Supported | [Renderer](/docs/core-concepts/renderer) |
|
||||
| `@opentui/core/testing` | Bun and Node.js | Supported | [Testing](/docs/core-concepts/testing) |
|
||||
| `@opentui/core/runtime-plugin` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/yoga` | Bun and Node.js | Advanced | [Yoga API](/docs/reference/yoga) |
|
||||
| `@opentui/core/tree-sitter/update-assets` | Build time, with Bun CLI | Runtime-specific | [Tree-sitter](/docs/reference/tree-sitter) |
|
||||
| `@opentui/core/parser.worker` | Bun and Node.js worker | Implementation-looking public export | [Tree-sitter](/docs/reference/tree-sitter) |
|
||||
| `@opentui/core/node-assets` | Node.js build time | Runtime-specific | [Standalone executables](/docs/reference/standalone-executables) |
|
||||
| `@opentui/react` | Bun and Node.js | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/renderer` | Bun and Node.js | Supported, Implementation-looking public export | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/test-utils` | Bun and Node.js | Supported | [Testing](/docs/core-concepts/testing) |
|
||||
| `@opentui/react/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/react/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/react/jsx-runtime` | Compiler selected | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/jsx-dev-runtime` | Compiler selected | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/solid` | Bun and Node.js | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/preload` | Bun only | Runtime-specific | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/bun-plugin` | Bun only | Runtime-specific, Advanced | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/solid/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/solid/components` | Bun and Node.js | Advanced | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/jsx-runtime` | Compiler selected | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/jsx-dev-runtime` | Compiler selected | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/keymap` | JavaScript runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/extras` | JavaScript runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/extras/graph` | JavaScript runtimes | Advanced | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/addons` | JavaScript runtimes | Supported | [Built-in keymap addons](/docs/keymap/addons) |
|
||||
| `@opentui/keymap/addons/opentui` | Bun and Node.js | Supported | [Built-in keymap addons](/docs/keymap/addons) |
|
||||
| `@opentui/keymap/testing` | JavaScript test runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/html` | Browser DOM | Runtime-specific | [Keymap hosts](/docs/keymap/hosts) |
|
||||
| `@opentui/keymap/opentui` | Bun and Node.js | Runtime-specific | [Keymap hosts](/docs/keymap/hosts) |
|
||||
| `@opentui/keymap/react` | OpenTUI React | Runtime-specific | [React keymap integration](/docs/keymap/react) |
|
||||
| `@opentui/keymap/solid` | OpenTUI Solid | Runtime-specific | [Solid keymap integration](/docs/keymap/solid) |
|
||||
| `@opentui/keymap/runtime-modules` | Bun runtime loading | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/qrcode` | Bun and Node.js | Supported | [QR encoder](/docs/reference/qr-encoder) |
|
||||
| `@opentui/qrcode/react` | OpenTUI React | Runtime-specific | [QR code component](/docs/components/qr-code) |
|
||||
| `@opentui/qrcode/solid` | OpenTUI Solid | Runtime-specific | [QR code component](/docs/components/qr-code) |
|
||||
| `@opentui/ssh` | Bun 1.3.7 or Node.js 26.4.0 or later | Runtime-specific | [SSH](/docs/reference/ssh) |
|
||||
| `@opentui/three` | Bun only | Runtime-specific, Advanced | [Three.js WebGPU](/docs/reference/three) |
|
||||
| `@opentui/three/runtime-modules` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| Package entry point | Runtime | Class | Canonical documentation |
|
||||
| ------------------------------------------------- | ------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------- |
|
||||
| `@opentui/core` | Bun and Node.js | Supported | [Renderer](/docs/core-concepts/renderer) |
|
||||
| `@opentui/core/testing` | Bun and Node.js | Supported | [Testing](/docs/core-concepts/testing) |
|
||||
| `@opentui/core/runtime-plugin` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/core/yoga` | Bun and Node.js | Advanced | [Yoga API](/docs/reference/yoga) |
|
||||
| `@opentui/core/tree-sitter/update-assets` | Build time, with Bun CLI | Runtime-specific | [Tree-sitter](/docs/reference/tree-sitter) |
|
||||
| `@opentui/core/parser.worker` | Bun and Node.js worker | Implementation-looking public export | [Tree-sitter](/docs/reference/tree-sitter) |
|
||||
| `@opentui/core/node-assets` | Node.js build time | Runtime-specific | [Standalone executables](/docs/reference/standalone-executables) |
|
||||
| `@opentui/react` | Bun and Node.js | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/renderer` | Bun and Node.js | Supported, Implementation-looking public export | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/test-utils` | Bun and Node.js | Supported | [Testing](/docs/core-concepts/testing) |
|
||||
| `@opentui/react/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/react/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/react/jsx-runtime` | Compiler selected | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/react/jsx-dev-runtime` | Compiler selected | Supported | [React bindings](/docs/bindings/react) |
|
||||
| `@opentui/solid` | Bun and Node.js | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/preload` | Bun only | Runtime-specific | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/bun-plugin` | Bun only | Runtime-specific, Advanced | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/runtime-plugin-support` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/solid/runtime-plugin-support/configure` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/solid/components` | Bun and Node.js | Advanced | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/jsx-runtime` | Compiler selected | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/solid/jsx-dev-runtime` | Compiler selected | Supported | [Solid bindings](/docs/bindings/solid) |
|
||||
| `@opentui/keymap` | JavaScript runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/extras` | JavaScript runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/extras/graph` | JavaScript runtimes | Advanced | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/addons` | JavaScript runtimes | Supported | [Built-in keymap addons](/docs/keymap/addons) |
|
||||
| `@opentui/keymap/addons/opentui` | Bun and Node.js | Supported | [Built-in keymap addons](/docs/keymap/addons) |
|
||||
| `@opentui/keymap/testing` | JavaScript test runtimes | Supported | [Core keymap API](/docs/keymap/core) |
|
||||
| `@opentui/keymap/html` | Browser DOM | Runtime-specific | [Keymap hosts](/docs/keymap/hosts) |
|
||||
| `@opentui/keymap/opentui` | Bun and Node.js | Runtime-specific | [Keymap hosts](/docs/keymap/hosts) |
|
||||
| `@opentui/keymap/react` | OpenTUI React | Runtime-specific | [React keymap integration](/docs/keymap/react) |
|
||||
| `@opentui/keymap/solid` | OpenTUI Solid | Runtime-specific | [Solid keymap integration](/docs/keymap/solid) |
|
||||
| `@opentui/keymap/runtime-modules` | Bun runtime loading | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
| `@opentui/qrcode` | Bun and Node.js | Supported | [QR encoder](/docs/reference/qr-encoder) |
|
||||
| `@opentui/qrcode/react` | OpenTUI React | Runtime-specific | [QR code component](/docs/components/qr-code) |
|
||||
| `@opentui/qrcode/solid` | OpenTUI Solid | Runtime-specific | [QR code component](/docs/components/qr-code) |
|
||||
| `@opentui/ssh` | Bun 1.3.14 or Node.js 26.4.0 or later | Runtime-specific | [SSH](/docs/reference/ssh) |
|
||||
| `@opentui/three` | Bun only | Runtime-specific, Advanced | [Three.js WebGPU](/docs/reference/three) |
|
||||
| `@opentui/three/runtime-modules` | Bun only | Runtime-specific, Advanced | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
|
||||
See [Package entry points](/docs/reference/package-entrypoints) for each entry point's role and import constraints.
|
||||
|
||||
@@ -391,7 +391,7 @@ The package root works in Bun and Node.js. Each framework path re-exports the fu
|
||||
|
||||
## `@opentui/ssh`
|
||||
|
||||
The package supports Bun 1.3.7 or later and Node.js 26.4.0 or later. Use Bun 1.4.0 or later on native Windows arm64.
|
||||
The package supports Bun 1.3.14 or later and Node.js 26.4.0 or later. Use Bun 1.4.0 or later on native Windows arm64.
|
||||
It has one public entry point.
|
||||
|
||||
| Symbols | Class | Canonical documentation |
|
||||
@@ -492,7 +492,7 @@ Layout, hit testing, and painting now run in a native scene, and native resource
|
||||
|
||||
### Resources and native bindings
|
||||
|
||||
- The minimum Bun version is 1.3.7 (was 1.3.0). Earlier Bun releases crash in native calls: Bun 1.3.0 to 1.3.3 convert some pointer arguments to wrong addresses, and Bun 1.3.4 to 1.3.6 can crash after a Worker exits.
|
||||
- The minimum Bun version is 1.3.14 (was 1.3.0), the tested minimum. Bun 1.3.0 to 1.3.3 convert some FFI pointer arguments to wrong addresses, Bun 1.3.4 to 1.3.6 can crash after a Worker exits, and Bun 1.3.14 intermittently hangs while it loads modules.
|
||||
- The `Clipboard` class was removed. Use `renderer.copyToClipboardOSC52()` and `clearClipboardOSC52()`, or `createClipboard()` with `createHostClipboard()` and `createRendererClipboardAdapter(renderer)`.
|
||||
- Native resources belong to one owner Context. Resources from different owners cannot be used together. Drawing a `NativeImage` into a renderer copies it into the renderer's Context.
|
||||
- An image that `ImageRenderable` loads belongs to the renderer's Context and throws after `renderer.destroy()`. To keep it, load it yourself, for example with `NativeImage.load()`, and pass it as `source`.
|
||||
|
||||
@@ -95,9 +95,9 @@ The framework paths include the encoder and renderable exports. They are not reg
|
||||
|
||||
## `@opentui/ssh`
|
||||
|
||||
| Entry point | Runtime | Purpose | Workflow |
|
||||
| -------------- | ------------------------------------ | ------------------------------------------------------------------------------------------- | -------------------------- |
|
||||
| `@opentui/ssh` | Bun 1.3.7 or Node.js 26.4.0 or later | SSH server builder, authentication, middleware, sessions, logging, errors, and public types | [SSH](/docs/reference/ssh) |
|
||||
| Entry point | Runtime | Purpose | Workflow |
|
||||
| -------------- | ------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------- |
|
||||
| `@opentui/ssh` | Bun 1.3.14 or Node.js 26.4.0 or later | SSH server builder, authentication, middleware, sessions, logging, errors, and public types | [SSH](/docs/reference/ssh) |
|
||||
|
||||
The package has no framework subpaths. Pass the session renderer to the React or Solid root API.
|
||||
|
||||
@@ -108,4 +108,4 @@ The package has no framework subpaths. Pass the session renderer to the React or
|
||||
| `@opentui/three` | Bun only | Three.js WebGPU renderer, renderable, sprites, effects, resource pools, physics adapters, and `THREE` | [Three.js WebGPU](/docs/reference/three) |
|
||||
| `@opentui/three/runtime-modules` | Bun only | Runtime-module map that contains the `@opentui/three` root | [Runtime module loading](/docs/extend/runtime-plugins) |
|
||||
|
||||
Both entry points require Bun. The package declares Bun 1.3.7 or newer.
|
||||
Both entry points require Bun. The package declares Bun 1.3.14 or newer.
|
||||
@@ -21,7 +21,7 @@ SSH is an access transport. It is not an application packaging format. See
|
||||
bun add @opentui/ssh @opentui/core
|
||||
```
|
||||
|
||||
`@opentui/core` is a peer dependency. The SSH package declares Bun >=1.3.7 and Node.js >=26.4.0. Use Bun >=1.4.0 on
|
||||
`@opentui/core` is a peer dependency. The SSH package declares Bun >=1.3.14 and Node.js >=26.4.0. Use Bun >=1.4.0 on
|
||||
native Windows arm64. The SSH Node CI lane
|
||||
runs on Linux x64. Its packed Node consumer test uses a Core stub, so that test does not start the native renderer. See
|
||||
[Runtime and platform support](/docs/getting-started/runtime-support) before you run the native renderer with Node.js.
|
||||
|
||||
@@ -12,7 +12,7 @@ skill:
|
||||
|
||||
## Requirements
|
||||
|
||||
`@opentui/three` requires Bun >=1.3.7. It does not support Node.js.
|
||||
`@opentui/three` requires Bun >=1.3.14. It does not support Node.js.
|
||||
|
||||
The package pins Three.js 0.177.0. Its manifest lists `bun-webgpu` 0.1.7, `@dimforge/rapier2d-simd-compat`, and `planck`
|
||||
as optional dependencies. The package root imports all three through its renderer and physics exports. All three
|
||||
|
||||
@@ -24,7 +24,7 @@ categories:
|
||||
|
||||
`@opentui/ssh` maps each accepted SSH shell to a `CliRenderer`. The renderer dimensions track the client's terminal.
|
||||
|
||||
The package requires Bun `>=1.3.7` or Node.js `>=26.4.0`. Use Bun `>=1.4.0` on native Windows arm64.
|
||||
The package requires Bun `>=1.3.14` or Node.js `>=26.4.0`. Use Bun `>=1.4.0` on native Windows arm64.
|
||||
|
||||
Open authentication accepts SSH `none` without credentials. Use it only for loopback development. Do not expose open
|
||||
authentication to a public or untrusted network.
|
||||
|
||||
Reference in new issue
Block a user