Commit Graph

39 Commits

Author SHA1 Message Date
Simon Klee fa14b96ad4 node: support Node.js 26.4 and later (#1410)
Keep 26.4.0 as the minimum supported version while allowing later
releases.
2026-08-23 06:56:30 +02:00
Sebastian e69cf0cc54 ci: migrate npm publishing to OIDC (#1395) 2026-08-20 18:42:01 +02:00
Simon Klee 6dec16a77c native: move Zig sources into packages/native (#1391)
Separate the native implementation from the TypeScript bindings. Keep
core on
the public bindings and keep the current native artifact packages and
release
workflows.

packages/native owns the Zig source, tests, benches, and vendor updates.
The
package is private and unpublished for now Core still packages the
@opentui/core-* artifacts. build:native, test:native, and bench:native
still
work from core and delegate to native.

Expose a Zig import root and a no-JS hello example for proof of concept,
not a focus point, just a smoke test.
2026-08-20 11:34:03 +02:00
James Long 8cae8eddee feat(core): add embedded terminal renderable (#1340)
---------

Co-authored-by: Simon Klee <hello@simonklee.dk>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
Co-authored-by: quintoo-bot <sebastian+quintoo-github@anoma.ly>
Co-authored-by: quintoo-bot <317894163+quintoo-bot@users.noreply.github.com>
2026-08-18 22:17:56 +02:00
Simon Klee a0b9064076 ci: update Node.js to 26.4.0 (#1234) 2026-07-07 13:54:29 +02:00
Sebastian 26f364f602 Native yoga-layout (#1126) 2026-06-11 09:32:11 +02:00
Matt Simpson 9ef4691410 feat(ssh): add @opentui/ssh package (#1151)
## Summary

Adds `@opentui/ssh`, renderer-agnostic ssh server package for serving
apps to remote terminals.

Highlights:
- `createServer(config).use(...).serve(handler)` builder api with typed
middleware context
- open, public key, password, and keyboard-interactive auth, including
verified public-key possession and `authorized_keys` allowlists
- host key loading/generation, startup banner, logging middleware,
session resize/close hooks, raw writes, idle/max timeouts, and graceful
shutdown

---------

Co-authored-by: opencode-agent <opencode-agent@opencode.ai>
Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
2026-06-11 00:41:50 +02:00
Simon Klee c79845fa68 build: require preinstalled Node.js 26.3.0
Require callers and CI jobs to select the supported Node.js version
instead of downloading a private copy on demand.
2026-06-08 12:20:40 +02:00
Simon Klee e9f451edc2 core(ffi): update Node.js 26.3 compatibility
Node.js 26.3 expects FFI signatures to use the current argument and return
field names.
2026-06-08 12:20:40 +02:00
Simon Klee 6e3f91dd8f keymap: smoke-test packed dist from Node
Pack the dist artifacts, install them into a fresh Node project, and
import every public entrypoint to verify the published shape. Wire the
script into the keymap CI workflow and both npm release jobs so packed
consumers are validated before npm sees them.

Clarify the runtime split in the docs: import-only use is Node-safe,
while creating a native renderer still requires Node 26 with
--experimental-ffi.
2026-06-08 12:20:40 +02:00
Simon Klee a70f18026a core: port test suite and runtime to Node.js
The test suite was tightly coupled to Bun-specific APIs (bun:test,
Bun.sleep) making it impossible to validate behavior on other
runtimes. A module hook now rewrites bun:test imports for Node's
test runner, and fake clocks replace wall-clock delays so tests
run deterministically everywhere.

Fix FFI type mismatches and boolean normalization that caused
silent failures on non-Bun runtimes. Correct bundled asset
resolution so published packages load without a TypeScript loader.

Reorganize the example menu with themed sections, two-panel focus
management, and proper tree-sitter cleanup to prevent worker leaks.
2026-06-08 12:20:40 +02:00
Filip ebd8c99d50 feat: qr code component (#1021)
---------

Co-authored-by: Simon Klee <hello@simonklee.dk>
Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
2026-05-20 15:16:26 +02:00
Simon Klee 1936243d7e dev: add clean script 2026-05-01 08:53:01 +02:00
Simon Klee 7b1a9af253 scripts/prepare-release.ts: add message 2026-04-30 13:56:29 +02:00
Simon Klee 8e0dbbceea chore(release): auto-discover workspaces and add release flags (#997) 2026-04-30 13:52:41 +02:00
Simon Klee aabb8ec6a4 examples: move to @opentui/examples package (#995)
Extract examples, assets, install.sh, and the standalone build script
into a new workspace so they consume the public package surface
(@opentui/core, @opentui/three, @opentui/keymap) instead of reaching
into sibling internals. This makes examples a consumer of
the published API.

Drop the inherited browser export condition that prevented jimp from
resolving its node entry, which broke the standalone build.
2026-04-30 12:51:39 +02:00
Simon Klee a10e71c9bf chore(three): move three-related code to separate package (#994)
I moved examples to packages/three. When we add a separate
packages/examples i'll merge it in again, but just keep it simple for
now.

Close #408
2026-04-30 11:01:13 +02:00
Sebastian f1c511780e Keymap (#983)
See `docs/keymap/overview.mdx` for details.

---------

Co-authored-by: Simon Klee <hello@simonklee.dk>
2026-04-28 02:10:37 +02:00
Sebastian Herrlinger baf74a6bf8 fix link script 2026-04-19 22:37:50 +02:00
Matt Simpson 63eb8d8450 chore: remove unmaintained vue and go packages (#494) 2026-01-08 16:02:58 +01:00
Sebastian 79a7c40a93 dev setup and ffi debug tweaks (#418) 2025-12-15 09:34:33 +01:00
Sebastian Herrlinger 3dd24eb99a extend dev linkage and consolidate dev docs 2025-11-27 01:59:15 +01:00
KeremP dd87918e3d feat: add support for transparent terminal background rendering (#225)
This addresses https://github.com/sst/opentui/issues/184 by defaulting
to terminal background if renderer alpha channel is 0.

The transparent background can be set by using
`renderer.setBackgroundColor("transparent")` for example in
`packages/react/examples/basic.tsx`.
```diff
import { bold, fg, italic, t, TextAttributes } from "@opentui/core"
import { render, useKeyboard, useRenderer } from "@opentui/react"
import { useCallback, useState } from "react"

export const App = () => {
  const renderer = useRenderer()
+  renderer.setBackgroundColor("transparent")
  const [username, setUsername] = useState("")
  const [password, setPassword] = useState("")
```

Example in ghostty
<img width="852" height="670" alt="image"
src="https://github.com/user-attachments/assets/658703ad-77a6-4624-b07c-5a24bbf8447c"
/>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-25 17:25:18 +02:00
Sebastian Herrlinger ddb9b7766a manual snapshots 2025-10-01 11:24:16 +02:00
Sebastian d50102aa2a maybe fix tree sitter packaging (#192) 2025-10-01 01:19:23 +02:00
Sebastian a8fe63ce2f feat(core): Code Highlighting (#191) 2025-09-30 21:06:48 +02:00
Sebastian Herrlinger 099ef45186 maybe increment version 2025-09-07 22:51:09 +02:00
Sebastian Herrlinger 87dd318731 let's ci 2025-09-07 22:29:57 +02:00
Sebastian Herrlinger de2abdeb44 docs and build 2025-08-28 23:23:53 +02:00
Sebastian Herrlinger 5f8c380963 move prettier to root 2025-08-19 19:45:36 +02:00
Sebastian Herrlinger faebd3f03d update lockfile after bumping versions 2025-08-19 16:30:51 +02:00
Sebastian Herrlinger 52fbbb45e9 setup react build 2025-08-19 00:57:18 +02:00
Sebastian Herrlinger 29a11b4638 fix post prepare steps 2025-08-19 00:10:59 +02:00
Sebastian Herrlinger 4a181b52a6 consolidate prepare-release in root 2025-08-19 00:09:09 +02:00
Sebastian 35566b2126 Make mono repo (#22) 2025-08-15 13:03:59 +02:00
Sebastian Herrlinger 9a97831ca7 prettier 2025-08-14 11:41:39 +02:00
Sebastian Herrlinger e6b5e754e0 actually build prod 2025-08-14 00:03:33 +02:00
Sebastian Herrlinger 63b9e7dc71 fix multi entry point 2025-08-13 23:24:41 +02:00
Sebastian 9c09a22cf9 Build & Publish Setup (#10)
Setup build and publish scripts

---------

Co-authored-by: John Marlo Lapiz <91590512+lazuee@users.noreply.github.com>
2025-08-13 23:07:03 +02:00