feat: 清除终端标题/provider显示名/TUI 中残留的 opencode
Some checks failed
compliance-close / close-non-compliant (push) Has been cancelled
beta / sync (push) Has been cancelled
docs-update / update-docs (push) Has been cancelled
stats / stats (push) Has been cancelled

- app.tsx: 终端标题 setTerminalTitle 改 zmo(之前改错了 attention 声音通知)
- provider.ts: opencode provider 显示名映射为 "Zmo"(修复底栏 OpenCode Zen,源自远程 models.dev 数据)
- 删除 dialog-provider 里 OpenCode Zen/Go 付费服务介绍段
- footer/attention声音包名/更新提示/dialog-status/error上报URL/docs链接 → zmo

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 18:44:47 +08:00
parent c034a178b9
commit 324549475b
8 changed files with 14 additions and 22 deletions

View File

@@ -456,24 +456,24 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
if (!terminalTitleEnabled() || Flag.OPENCODE_DISABLE_TERMINAL_TITLE) return
if (route.data.type === "home") {
renderer.setTerminalTitle("OpenCode")
renderer.setTerminalTitle("zmo")
return
}
if (route.data.type === "session") {
const session = sync.session.get(route.data.sessionID)
if (!session || SessionApi.isDefaultTitle(session.title)) {
renderer.setTerminalTitle("OpenCode")
renderer.setTerminalTitle("zmo")
return
}
const title = session.title.length > 40 ? session.title.slice(0, 37) + "..." : session.title
renderer.setTerminalTitle(`OC | ${title}`)
renderer.setTerminalTitle(`zmo | ${title}`)
return
}
if (route.data.type === "plugin") {
renderer.setTerminalTitle(`OC | ${route.data.id}`)
renderer.setTerminalTitle(`zmo | ${route.data.id}`)
}
})
@@ -809,7 +809,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
name: "docs.open",
title: "Open docs",
run: () => {
open("https://opencode.ai/docs").catch(() => {})
open("https://github.com/helpLogin/zmo-cli").catch(() => {})
dialog.clear()
},
category: "System",
@@ -1053,7 +1053,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
await DialogAlert.show(
dialog,
"Update Complete",
`Successfully updated to OpenCode v${result.data.version}. Please restart the application.`,
`Successfully updated to zmo v${result.data.version}. Please restart the application.`,
)
void exit()

View File

@@ -47,7 +47,7 @@ const TITLE_LIMIT = 80
const MESSAGE_LIMIT = 240
const BUILTIN_PACK: RegisteredSoundPack = {
id: DEFAULT_PACK_ID,
name: "OpenCode Default",
name: "zmo Default",
builtin: true,
sounds: {
default: defaultSoundPath,

View File

@@ -365,22 +365,14 @@ function ApiMethod(props: ApiMethodProps) {
opencode: (
<box gap={1}>
<text fg={theme.textMuted}>
OpenCode Zen gives you access to all the best coding models at the cheapest prices with a single API
key.
</text>
<text fg={theme.text}>
Go to <span style={{ fg: theme.primary }}>https://opencode.ai/zen</span> to get a key
Enter your API key to connect this provider.
</text>
</box>
),
"opencode-go": (
<box gap={1}>
<text fg={theme.textMuted}>
OpenCode Go is a $10 per month subscription that provides reliable access to popular open coding models
with generous usage limits.
</text>
<text fg={theme.text}>
Go to <span style={{ fg: theme.primary }}>https://opencode.ai/go</span> and enable OpenCode Go
Enter your API key to connect this provider.
</text>
</box>
),

View File

@@ -7,7 +7,7 @@ import { Link } from "@tui/ui/link"
import { BgPulse } from "./bg-pulse"
import { useBindings } from "../keymap"
const GO_URL = "https://opencode.ai/go"
const GO_URL = "https://github.com/helpLogin/zmo-cli"
const PAD_X = 3
const PAD_TOP_OUTER = 1
const FOREGROUND_ALPHA = 186

View File

@@ -80,7 +80,7 @@ export function DialogStatus() {
<Match when={item.status === "failed" && item}>{(val) => val().error}</Match>
<Match when={item.status === "disabled"}>Disabled in configuration</Match>
<Match when={(item.status as string) === "needs_auth"}>
Needs authentication (run: opencode mcp auth {key})
Needs authentication (run: zmo mcp auth {key})
</Match>
<Match when={(item.status as string) === "needs_client_registration" && item}>
{(val) => (val() as { error: string }).error}

View File

@@ -20,7 +20,7 @@ export function ErrorComponent(props: {
})
const [copied, setCopied] = createSignal(false)
const issueURL = new URL("https://github.com/anomalyco/opencode/issues/new?template=bug-report.yml")
const issueURL = new URL("https://github.com/helpLogin/zmo-cli/issues/new")
// Choose safe fallback colors per mode since theme context may not be available
const isLight = props.mode === "light"

View File

@@ -51,7 +51,7 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
</text>
</box>
<text fg={theme().textMuted}>OpenCode includes free models so you can start immediately.</text>
<text fg={theme().textMuted}>zmo works with any model provider connect your API key to start.</text>
<text fg={theme().textMuted}>
Connect from 75+ providers to use other models, including Claude, GPT, Gemini etc
</text>

View File

@@ -1151,7 +1151,7 @@ export function fromModelsDevProvider(provider: ModelsDev.Provider): Info {
return {
id: ProviderV2.ID.make(provider.id),
source: "custom",
name: provider.name,
name: provider.id === "opencode" ? "Zmo" : provider.name.replace(/OpenCode/gi, "Zmo"),
env: [...(provider.env ?? [])],
options: {},
models,