From 390032b7a007a7ab449e375cd93c60e3e6eb996b Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 29 Oct 2025 11:25:44 -0400 Subject: [PATCH] sync --- CHANGES.md | 53 +++++++++++++++++++ .../cli/cmd/tui/component/prompt/index.tsx | 30 ++++++----- .../opencode/src/cli/cmd/tui/routes/home.tsx | 17 ++++-- 3 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 CHANGES.md diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 000000000..1fc4fac4f --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,53 @@ +# OpenCode 1.0 + +OpenCode 1.0 is a rewrite of the TUI + +We went from the go+bubbletea based TUI which suffered from both performance and capability issues to an in-house +framework (OpenTUI) written in zig+solidjs. + +The new TUI mostly works like the old one as it's connecting to the same +opencode server. + +There are some notable UX changes: + +1. The session history is more compressed, only showing the full details of the edit + and bash tool. + +2. We've added a command bar which almost everything flows through. Can press + ctrl+p to bring it up in any context and see everything you can do. + +3. Added a session sidebar (can be toggled) with some useful information. + +We've also stripped out some functionality that we were not sure if anyone +actually used - if something important is missing please open an issue and we'll add it back +quickly. + +### Breaking Changes + +## Keybinds + +### Renamed + +- messages_revert -> messages_undo +- switch_agent -> agent_cycle +- switch_agent_reverse -> agent_cycle_reverse +- switch_mode -> agent_cycle +- switch_mode_reverse -> agent_cycle_reverse + +### Removed + +- messages_layout_toggle +- messages_next +- messages_previous +- file_diff_toggle +- file_search +- file_close +- file_list +- app_help +- project_init +- tool_details +- thinking_blocks +- session_child_cycle +- session_child_cycle_reverse +- model_cycle_recent +- model_cycle_recent_reverse diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index 7915607fe..839563205 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -598,21 +598,23 @@ export function Prompt(props: PromptProps) { // trim ' from the beginning and end of the pasted content. just // ' and nothing else const filepath = pastedContent.replace(/^'+|'+$/g, "") - const file = Bun.file(filepath) - if (file.type.startsWith("image/")) { - const content = await file - .arrayBuffer() - .then((buffer) => Buffer.from(buffer).toString("base64")) - .catch(() => {}) - if (content) { - await pasteImage({ - filename: file.name, - mime: file.type, - content, - }) - return + try { + const file = Bun.file(filepath) + if (file.type.startsWith("image/")) { + const content = await file + .arrayBuffer() + .then((buffer) => Buffer.from(buffer).toString("base64")) + .catch(() => {}) + if (content) { + await pasteImage({ + filename: file.name, + mime: file.type, + content, + }) + return + } } - } + } catch {} const lineCount = (pastedContent.match(/\n/g)?.length ?? 0) + 1 if (lineCount >= 5) { diff --git a/packages/opencode/src/cli/cmd/tui/routes/home.tsx b/packages/opencode/src/cli/cmd/tui/routes/home.tsx index 34aba62c5..f5d42fe47 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/home.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/home.tsx @@ -25,7 +25,11 @@ export function Home() { {" "} - {Locale.pluralize(Object.values(sync.data.mcp).length, "{} mcp server", "{} mcp servers")} + {Locale.pluralize( + Object.values(sync.data.mcp).length, + "{} mcp server", + "{} mcp servers", + )} @@ -34,7 +38,14 @@ export function Home() { ) return ( - + Commands @@ -43,7 +54,7 @@ export function Home() { Switch agent - +