summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bun.lock24
-rw-r--r--package.json4
-rw-r--r--packages/opencode/src/cli/cmd/tui/util/index.ts1
-rw-r--r--packages/opencode/src/cli/cmd/tui/util/terminal.ts96
-rw-r--r--packages/plugin/package.json4
5 files changed, 16 insertions, 113 deletions
diff --git a/bun.lock b/bun.lock
index 6a146d9e8..8a3684c0b 100644
--- a/bun.lock
+++ b/bun.lock
@@ -506,8 +506,8 @@
"typescript": "catalog:",
},
"peerDependencies": {
- "@opentui/core": ">=0.1.103",
- "@opentui/solid": ">=0.1.103",
+ "@opentui/core": ">=0.1.104",
+ "@opentui/solid": ">=0.1.104",
},
"optionalPeers": [
"@opentui/core",
@@ -685,8 +685,8 @@
"@npmcli/arborist": "9.4.0",
"@octokit/rest": "22.0.0",
"@openauthjs/openauth": "0.0.0-20250322224806",
- "@opentui/core": "0.1.103",
- "@opentui/solid": "0.1.103",
+ "@opentui/core": "0.1.104",
+ "@opentui/solid": "0.1.104",
"@pierre/diffs": "1.1.0-beta.18",
"@playwright/test": "1.59.1",
"@solid-primitives/storage": "4.3.3",
@@ -1613,21 +1613,21 @@
"@opentelemetry/semantic-conventions": ["@opentelemetry/[email protected]", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="],
- "@opentui/core": ["@opentui/[email protected]", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "marked": "17.0.1", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.103", "@opentui/core-darwin-x64": "0.1.103", "@opentui/core-linux-arm64": "0.1.103", "@opentui/core-linux-x64": "0.1.103", "@opentui/core-win32-arm64": "0.1.103", "@opentui/core-win32-x64": "0.1.103", "bun-webgpu": "0.1.5", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-PWVv/bDmlk1i6X1f0zXs+jSaTrQ/ByX8wFbP2WinOObTGf//UbcRP4dbWxPXvOyka9QlmRBG/7GbloQSIStyVw=="],
+ "@opentui/core": ["@opentui/[email protected]", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "marked": "17.0.1", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.104", "@opentui/core-darwin-x64": "0.1.104", "@opentui/core-linux-arm64": "0.1.104", "@opentui/core-linux-x64": "0.1.104", "@opentui/core-win32-arm64": "0.1.104", "@opentui/core-win32-x64": "0.1.104", "bun-webgpu": "0.1.5", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-29RZ+f7sw5B6ebDFRuhrDs2UOV7vR76npr0vVRAJAmIMtdLb4Dse35Y0Hk6WerFKNuX4ajlQK4eO3oAY/29KLQ=="],
- "@opentui/core-darwin-arm64": ["@opentui/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-lxCyedDkcen12IgBtXjkJ7iY66xa7VC4nxRNKCUeLY2ZP9hUE1AsDtbyQzqY+BQadsI/ZME9STzaHDCUFg0TpA=="],
+ "@opentui/core-darwin-arm64": ["@opentui/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-83Bf+LOLYCgWccAuPzftchs8LIoTzYU8f8CM7GeUFqH0VLKs2Ey+TtCTsBWpeDklOal0XFQr5begotqc/ldPVg=="],
- "@opentui/core-darwin-x64": ["@opentui/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-QMYD+zUDGQliJ6m5nuNvA72jtluFeyVMoHkuA5m/Xmed/u8eLfahAKmDj3kY66ntUroPHWevcpbpvd7NCFEoFQ=="],
+ "@opentui/core-darwin-x64": ["@opentui/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-TAHRtEi7Gz2O3TXolPCiWpXsoapKllGCl74bOuJsyipMwfk3wuUu6SeqBPC/cmVJlp143dC8kcGLwLsd3dxsgA=="],
- "@opentui/core-linux-arm64": ["@opentui/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-GzOvNr9dN6JaQ9qs7m8E75wLAHwT5CyxqkE6rEr1BO23/d2Ix7e3GYw/JRY5VnTge+eXrfDVbqNtPcQamUNiEA=="],
+ "@opentui/core-linux-arm64": ["@opentui/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-WJ8ssxcRpoHWgGLDYlVjlYZGkmA2G9melgXTrzk6CbwhW5tVAE6AmW5Kq9DUHclYssCpNWTvZFMDsVsf5kn2Xw=="],
- "@opentui/core-linux-x64": ["@opentui/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-odywllco5zUKNc60uD3JKaCybK64u6BfmpScs4a8Qn89yH/yk23bzWXDRWaGgQdY65L2/VCbcGs1ezA1S/2YTw=="],
+ "@opentui/core-linux-x64": ["@opentui/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-I4DurCkJXJxxGwAq1wGZ1vzXh57GxdzljWeCJ5sIPy7coICn+/cWRw9gE9VxiWTa3T85l4YN0UFSQx7IFCEbvg=="],
- "@opentui/core-win32-arm64": ["@opentui/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-tZL5w3Y0JnO7RkIvfuNDAzJn0j6+JIYl6M8DgPM5p8AQt+162S8LmbumzmqQLZl4cEev2eN7/tw72WIk6b+/CQ=="],
+ "@opentui/core-win32-arm64": ["@opentui/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-PDwqGHlVUiAiZa8GXiPPJVWIxucQ5+2FLcK4C76VT8HJzUXiUEGJFtuvi9oY7k29p8olcFHW75Gj1WMUrw+JKw=="],
- "@opentui/core-win32-x64": ["@opentui/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-wqnibt/OE5ldSzVPxEbriA0TjI2B11CJl4uJoLxTZ47KDx7tAFIMdhBf9IRAGNCSbcDuZ8ZGEFhV+SLaftkrlw=="],
+ "@opentui/core-win32-x64": ["@opentui/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-fQGMxFshk/i7KskqaK5lB8u2K8Lx/LO9+PdfKu/+GBIMKmElpJXQ8Bq2sMf+7COcoXcjAjUJn8cpTyIqbFxAyQ=="],
- "@opentui/solid": ["@opentui/[email protected]", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.103", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.10", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.11" } }, "sha512-L28WFBs17Z5JXkJhPagLy8tUamkttDaaQDdb2KEO01IQ9r81yLBRpYqD/lHp6UoSISXgwQVDQ9yNtxwR1BQZvQ=="],
+ "@opentui/solid": ["@opentui/[email protected]", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.104", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.10", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.11" } }, "sha512-Mma1OR3s0QZayRGdbdNv1m3H6IExRrF9QRUNWEZzDOqo3oNxTxaY9K7Qk6eGrk0unMjwwE113TSOdnG80RwYnQ=="],
"@oslojs/asn1": ["@oslojs/[email protected]", "", { "dependencies": { "@oslojs/binary": "1.0.0" } }, "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA=="],
diff --git a/package.json b/package.json
index b2c8a2d7a..b8f90d975 100644
--- a/package.json
+++ b/package.json
@@ -34,8 +34,8 @@
"@types/cross-spawn": "6.0.6",
"@octokit/rest": "22.0.0",
"@hono/zod-validator": "0.4.2",
- "@opentui/core": "0.1.103",
- "@opentui/solid": "0.1.103",
+ "@opentui/core": "0.1.104",
+ "@opentui/solid": "0.1.104",
"ulid": "3.0.1",
"@kobalte/core": "0.13.11",
"@types/luxon": "3.7.1",
diff --git a/packages/opencode/src/cli/cmd/tui/util/index.ts b/packages/opencode/src/cli/cmd/tui/util/index.ts
index a0bdbc3c2..940f18c23 100644
--- a/packages/opencode/src/cli/cmd/tui/util/index.ts
+++ b/packages/opencode/src/cli/cmd/tui/util/index.ts
@@ -1,5 +1,4 @@
export * as Editor from "./editor"
export * as Selection from "./selection"
export * as Sound from "./sound"
-export * as Terminal from "./terminal"
export * as Clipboard from "./clipboard"
diff --git a/packages/opencode/src/cli/cmd/tui/util/terminal.ts b/packages/opencode/src/cli/cmd/tui/util/terminal.ts
deleted file mode 100644
index c026b7381..000000000
--- a/packages/opencode/src/cli/cmd/tui/util/terminal.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-import { RGBA } from "@opentui/core"
-
-export type Colors = Awaited<ReturnType<typeof colors>>
-
-function parse(color: string): RGBA | null {
- if (color.startsWith("rgb:")) {
- const parts = color.substring(4).split("/")
- return RGBA.fromInts(parseInt(parts[0], 16) >> 8, parseInt(parts[1], 16) >> 8, parseInt(parts[2], 16) >> 8, 255)
- }
- if (color.startsWith("#")) {
- return RGBA.fromHex(color)
- }
- if (color.startsWith("rgb(")) {
- const parts = color.substring(4, color.length - 1).split(",")
- return RGBA.fromInts(parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2]), 255)
- }
- return null
-}
-
-/**
- * Query terminal colors including background, foreground, and palette (0-15).
- * Uses OSC escape sequences to retrieve actual terminal color values.
- *
- * Note: OSC 4 (palette) queries may not work through tmux as responses are filtered.
- * OSC 10/11 (foreground/background) typically work in most environments.
- *
- * Returns an object with background, foreground, and colors array.
- * Any query that fails will be null/empty.
- */
-export async function colors(): Promise<{
- background: RGBA | null
- foreground: RGBA | null
- colors: RGBA[]
-}> {
- if (!process.stdin.isTTY) return { background: null, foreground: null, colors: [] }
-
- return new Promise((resolve) => {
- let background: RGBA | null = null
- let foreground: RGBA | null = null
- const paletteColors: RGBA[] = []
- let timeout: NodeJS.Timeout
-
- const cleanup = () => {
- process.stdin.setRawMode(false)
- process.stdin.removeListener("data", handler)
- clearTimeout(timeout)
- }
-
- const handler = (data: Buffer) => {
- const str = data.toString()
-
- // Match OSC 11 (background color)
- const bgMatch = str.match(/\x1b]11;([^\x07\x1b]+)/)
- if (bgMatch) {
- background = parse(bgMatch[1])
- }
-
- // Match OSC 10 (foreground color)
- const fgMatch = str.match(/\x1b]10;([^\x07\x1b]+)/)
- if (fgMatch) {
- foreground = parse(fgMatch[1])
- }
-
- // Match OSC 4 (palette colors)
- const paletteMatches = str.matchAll(/\x1b]4;(\d+);([^\x07\x1b]+)/g)
- for (const match of paletteMatches) {
- const index = parseInt(match[1])
- const color = parse(match[2])
- if (color) paletteColors[index] = color
- }
-
- // Return immediately if we have all 16 palette colors
- if (paletteColors.filter((c) => c !== undefined).length === 16) {
- cleanup()
- resolve({ background, foreground, colors: paletteColors })
- }
- }
-
- process.stdin.setRawMode(true)
- process.stdin.on("data", handler)
-
- // Query background (OSC 11)
- process.stdout.write("\x1b]11;?\x07")
- // Query foreground (OSC 10)
- process.stdout.write("\x1b]10;?\x07")
- // Query palette colors 0-15 (OSC 4)
- for (let i = 0; i < 16; i++) {
- process.stdout.write(`\x1b]4;${i};?\x07`)
- }
-
- timeout = setTimeout(() => {
- cleanup()
- resolve({ background, foreground, colors: paletteColors })
- }, 1000)
- })
-}
diff --git a/packages/plugin/package.json b/packages/plugin/package.json
index 88f7a65f6..af13724cd 100644
--- a/packages/plugin/package.json
+++ b/packages/plugin/package.json
@@ -22,8 +22,8 @@
"zod": "catalog:"
},
"peerDependencies": {
- "@opentui/core": ">=0.1.103",
- "@opentui/solid": ">=0.1.103"
+ "@opentui/core": ">=0.1.104",
+ "@opentui/solid": ">=0.1.104"
},
"peerDependenciesMeta": {
"@opentui/core": {