feat(tui): run on Node 26 (one runtime), finalize copy UX, rename to ui-opentui

Ports the engine off the second JS runtime onto Node 26.3 (node:ffi) so the
repo ships a single JavaScript runtime: child_process for the gateway, vitest
for tests, an esbuild + Solid build step. Mouse selection copies the rendered
text you highlight, and the clipboard path is crash-proofed (a broken copy
pipe no longer quits the UI). Renames the engine dir ui-tui-opentui-v2/ ->
ui-opentui/ and updates the launcher/installer/Docker references.
This commit is contained in:
alt-glitch
2026-06-09 16:16:48 +00:00
parent 25567919ea
commit ae11a636dc
85 changed files with 5613 additions and 900 deletions
+17
View File
@@ -0,0 +1,17 @@
/**
* Runtime composition — the single edge where layers are provided and the
* program is run (spec v4 §3.1). Layers are provided HERE by the caller
* (the launcher entry), never inside components. Mirrors opencode
* `cli/tui/layer.ts:6` + `cli/cmd/tui.ts` runMain.
*/
import { Layer } from 'effect'
import type { GatewayService } from './gateway/GatewayService.ts'
/**
* The application layer. Phase 0 takes the GatewayService layer as a parameter
* so the entry can choose Fake (dev/test) or — from Phase 1 — the live
* `tui_gateway`-spawning layer. Compose additional boundary services
* (Config, Theme-with-IO) here as they land.
*/
export const makeAppLayer = (gateway: Layer.Layer<GatewayService>) => Layer.mergeAll(gateway)