diff --git a/CHANGELOG.md b/CHANGELOG.md
index 21e2397190..db574fac2c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,20 @@ file is the human-readable summary of what changed and why.
shadow) so the icon sits correctly next to native apps; all three channels
ship the same mark for now.
+- **The desktop app says CoDev Code, not opencode** — every user-visible string
+ the app still rendered as "OpenCode" is rebranded: the window title, the crash
+ and unresponsive dialogs, the updater and CLI-installed messages, the settings
+ descriptions, the update toasts, the WSL onboarding steps, the server-switcher
+ dialog, and the app name — in both English and Spanish, with the CLI-command
+ hint now naming `codev`. (The hosted "OpenCode Zen" / "OpenCode Go" model
+ services keep their real names, since the app still connects to them.)
+ Internally, the WSL CLI-management code and the desktop↔web wire values were
+ renamed to codev as well.
+
+- **Debug-log export actually collects the CLI's logs** — "Export logs" read from
+ a stale `opencode` directory while the CLI writes its logs under `codev`, so the
+ server logs were silently missing from the exported archive. Fixed.
+
### Desktop / Web UI
- **No wordmark on the new-session screen, and the composer is centred** — the
diff --git a/DIVERGENCES.md b/DIVERGENCES.md
index a5b4695817..81331c55aa 100644
--- a/DIVERGENCES.md
+++ b/DIVERGENCES.md
@@ -149,6 +149,8 @@ from the squash message first, or use a plain merge.
| `packages/app/src/assets/help/` (introducing-tabs.mp4, placeholder.png, home.png, tabs.png — whole directory) | Deleted | The 13 MB promo video's and the v1.18 home/tabs screenshots' only consumer was the removed `TabsInfoPopup` (row above) and they bloat every clone; `placeholder.png` is referenced by nothing. | Keep deleted (`git rm` the upstream side of modify/delete conflicts); delete new upstream assets under this directory whose only consumer is the removed popup. |
| `packages/app/src/desktop-menu.ts`, `packages/app/src/components/windows-app-menu.tsx` | App-menu label "OpenCode" → "CoDev Code"; "OpenCode Documentation" item → "CoDev Code Documentation" (href `opencode.ai/docs` stays — real URL); trigger `aria-label` "OpenCode menu" → "CoDev Code menu" (×2) | Visible menu branding, incl. screen-reader labels. | Keep our labels; take upstream's surrounding menu changes. Rebrand any new "OpenCode" label/aria-label. |
| Hardcoded product-string rebrand in TUI + web app: `packages/tui/src/app.tsx`, `packages/tui/src/routes/session/permission.tsx`, `packages/tui/src/attention.ts` (+ `packages/opencode/test/cli/cmd/tui/attention.test.ts`), `packages/app/src/wsl/settings-model.ts` (+ `.test.ts`), `packages/ui/src/components/favicon.tsx` | User-visible "OpenCode" strings outside the i18n dicts → fork brand: update-complete toast "Successfully updated to OpenCode v…" → "CoDev Code"; permission dialog "…until OpenCode is restarted" → "CoDev Code" (the sibling patterns line was already rebranded); OS-notification fallback title `opencode` → `codev` and built-in sound-pack display name "OpenCode Default" → "CoDev Code Default" (pack id `opencode.default` stays — internal identifier; the three default-title expectations in `packages/opencode/test/cli/cmd/tui/attention.test.ts` follow, while its explicit-title pass-through fixture stays `opencode`); WSL settings actions "Install/Update OpenCode" → "…CoDev Code" (+ test expectations/titles; fixture paths `/usr/local/bin/opencode` stay); PWA `apple-mobile-web-app-title` "OpenCode" → "CoDev Code" (matches the rebranded `site.webmanifest`, favicon-assets row) | These render in surfaces the fork ships (TUI + embedded web UI); the i18n-dict strings remain a known gap (UI branding bullet below). | Keep our strings; take upstream's surrounding changes. Rebrand any new hardcoded user-visible "OpenCode" string in these surfaces; leave identifiers, URLs, and fixture paths. |
+| Desktop app text + identifier rebrand: `packages/desktop/**` (README, `package.json`, `src/renderer/index.html`, `src/renderer/i18n/{en,es}.ts`, `src/main/{index,windows,server,logging}.ts`, `src/main/wsl/{sidecar,startup,servers,servers.test}.ts`, `src/main/install-state.test.ts`, `scripts/copy-metainfo.ts`, `electron-builder.config.ts`) plus the WSL/deep-link surfaces it shares with `packages/app` (`src/wsl/{types,settings-model,settings-model.test,settings,dialog-add-server}.ts(x)`, `src/i18n/{en,es}.ts`, `src/pages/layout/{deep-links,helpers.test}.ts`, `src/app.tsx`, `src/index.ts`) and `packages/desktop/src/{preload,renderer}` | Every user-visible "OpenCode" the desktop app renders → "CoDev Code": crash dialogs, window `
`, updater/CLI-installed i18n (en+es, with the CLI-command hint `'opencode'`→`'codev'`), the unpackaged app-name fallback `"OpenCode Dev"`, the AppStream metainfo (product name, description, `developer` → `CoDev` with the upstream `id="ly.anoma"` dropped, the three URLs repointed to the fork repo, upstream's lander screenshot removed), the OS deep-link handler display name, README, and `package.json` (upstream `homepage`/`author` removed — `packages/opencode` and `packages/app` declare neither). Codebase identifiers renamed `Opencode`→`Codev`/`opencode`→`codev` (`WslOpencodeCheck`, `resolveWslOpencode`, `installWslOpencode`, `expectOpencodeVersion`, `releaseOpencodeResolve`, `checkOpencode`/`refreshOpencodeCheck*`/`setOpencodeCheck`, `opencodeChecks`, `wslOpencodeAction`, …) together with the internal wire values whose producer and consumer both ship here (`virtual:opencode-server`, the `opencode:{node-pty,virtual-server,copy-server}` vite plugin names, the `wsl-servers-install-opencode` IPC channel, the `install-opencode` job kind, the `__OPENCODE__` deep-link bridge global, the `opencode:deep-link` renderer event, the `opencode-onboarding-` temp dir, the `wsl.onboarding.installOpencode*` i18n keys), and the server-log collector path `/opencode/log` → `/codev/log` (a real bug fix — the fork CLI writes to `/codev/log`, `packages/core/src/global.ts` `app = "codev"`, so debug-log export was silently collecting nothing). Two stale product-named locals renamed to what they hold (`opencode`→`binary` in wsl/sidecar.ts, `opencode`→`checked` in the servers test). | The fork ships the desktop app, so every surface it shows and every identifier a maintainer reads should say codev. | Keep our strings + identifiers; take upstream's surrounding changes. PRESERVED deliberately, do not rename: `@opencode-ai/*` package ids, the `ai.opencode.desktop*` appIds and `opencode://` scheme + `schemes:["opencode"]` (identity plumbing), the `owner:"anomalyco"`/`repo:"opencode"`/`packageName:"opencode"` publish targets and `opencode-desktop.desktop` legacy launcher, the persisted on-disk store names (`opencode.settings`, `opencode.{draft,workspace,global,window,updater}.*`, the `opencode` data dir in install-state), the basic-auth username `"opencode"` (must match the server default in `packages/server/src/auth.ts`), and the `../opencode/dist` build paths. |
+| `packages/app/src/i18n/{en,es}.ts`, `packages/app/src/pages/layout/deep-links.ts` | App-self-reference "OpenCode" → "CoDev Code" across the shared web UI's i18n dicts (28 strings per locale): settings row descriptions, the update toasts, the WSL onboarding step/status strings, the `dialog.server.description`, `error.chain.mcpFailed`, `sidebar.gettingStarted.line1`, the provider-connect "use {{provider}} models in OpenCode" lines, and `app.name.desktop`. The Zen free-models dialog title (`dialog.model.unpaid.freeModels.title`, "Free models provided by OpenCode") was **neutralized** to "Free models included" / "Modelos gratuitos incluidos" rather than rebranded or kept — it read oddly branded either way. i18n **keys** are untouched (they carry `Opencode`/lowercase `opencode`, which never match the exact-case `OpenCode` in values). The deep-link bridge window type `OpenCodeWindow` → `CodevWindow` (its `__CODEV__` global was already renamed in the desktop row). | These render in the desktop app (and the web console), which the fork ships; closes the "in-app i18n strings" gap for this package. | Keep our strings; take upstream's surrounding changes. PRESERVED deliberately: the real external-service names **"OpenCode Zen"** / **"OpenCode Go"** (in the `opencodeZen.*` provider-connect keys and the "OpenCode Go" upsell), plus every `opencode.ai/*` URL — the fork routes to those actual services, so the display text must match what users land on. The built-in **"OpenCode" theme** name (`packages/ui/src/theme/context.tsx`, the shiki theme id, `desktop-theme.schema.json`) is also kept — it names a specific palette, and the fork ships its own `codev` theme alongside it. |
| Browser-opened docs-site links: `packages/tui/src/app.tsx`, `packages/app/src/desktop-menu.ts`, `packages/app/src/components/{settings-general,settings-v2/general,dialog-custom-provider}.tsx`, `packages/app/src/pages/{home,layout,error}.tsx`, `packages/app/src/i18n/{en,es}.ts`, `packages/opencode/src/cli/cmd/{providers,github.handler}.ts` | Links the app opens in the user's browser repointed from `opencode.ai` to the fork's hosted docs. Each one derives its base from `DOCS_URL` (`packages/codev-brand/src/index.ts`, base64-encoded) rather than hardcoding the host: the site is locale-routed and the Code docs live under `/code`, and no URL takes a trailing slash (the site 308-redirects `…/themes/` to `…/themes`). Sites: TUI "Open docs" command and app Documentation menu item → docs root; settings theme "Learn more" (v1 + v2) → `…/code/themes`; custom-provider dialog link → `…/code/providers#custom-provider`; CLI Cloudflare-gateway hint → `…/code/providers#cloudflare-ai-gateway`; GitHub-agent hint → `…/code/github`; home/layout sidebar Help buttons `opencode.ai/desktop-feedback` → docs root. The error page's report button `opencode.ai/desktop-feedback` → `github.com/quickbeard/codev-code/issues` instead (it's a report action, not a docs lookup), icon `discord` → `github`, and the en/es `error.page.report.*` strings → "…CoDev Code team" / "on GitHub". Help submenu (rendered by the shipped web UI's Windows app menu too): "Support Forum" (upstream Discord invite) deleted — the fork has no forum; "Share Feedback"/"Report a Bug" → `github.com/quickbeard/codev-code/issues/new?template=feature-request.yml`/`bug-report.yml` (the fork's template names are hyphenated, unlike upstream's underscored ones). | Fork users should land on the fork's docs and report issues to the fork, not upstream's site/Discord. NOT repointed: Zen/Go product URLs (`opencode.ai/zen`, `/go`, `/auth`), `$schema`/theme-schema ids, API/share/changelog endpoints, MCP OAuth `client_uri`, prompt-file mentions. Also NOT on this base: the ripgrep mirror (`/codev/docs/code/downloads/…`, see its own row) — it is a `public/` static asset, not locale-routed content, and 404s under `/en/docs/code`. | Keep our URLs, icon, and strings; take upstream's surrounding changes. Repoint any new browser-opened `opencode.ai` docs/help link to the fork docs base; leave the NOT-repointed list. |
| `packages/desktop/src/main/index.ts`, `packages/desktop/src/main/windows.ts` | APP_NAMES + window title → "CoDev Code" (Dev/Beta variants too) | Desktop app display name. | Keep our names. |
| `packages/desktop/electron-builder.config.ts` | `productName` ×3 → "CoDev Code…"; artifactName → `codev-code-desktop-…`; protocol display name | Installer/product branding. appId (`ai.opencode.desktop`) and the `opencode://` deep-link scheme stay upstream — identity plumbing wired into main/index.ts and app deep-links; do not rename casually. | Keep our names; take upstream's other config. |
@@ -195,11 +197,12 @@ from the squash message first, or use a plain merge.
- **UI branding**: TUI banner, default-theme accent, desktop/web app names, favicon/PWA
assets, and the hardcoded TUI/web-app product strings are rebranded (see table). Still
- upstream-branded, deliberately: in-app i18n strings mentioning "OpenCode" in the `en`/`es`
- locale files (see the locale-trim rows above; revisit with a runtime display-name shim if
- it matters), desktop-only hardcoded strings (`packages/desktop` renderer `` and the
- crash dialogs in `main/windows.ts` — the fork doesn't ship the desktop app; revisit before
- shipping it), `favicon-v3.ico` + `social-share.png` (binary formats we can't author well —
+ upstream-branded, deliberately: the `packages/app` and `packages/desktop` i18n `en`/`es`
+ dicts are now rebranded (see the app-i18n and desktop-rebrand rows) except the real
+ external-service names "OpenCode Zen" / "OpenCode Go" and the Zen free-models title, which
+ stay because the fork routes to those actual services (`opencode.ai/zen` `/go`, kept per the
+ URLs bullet); the remaining upstream-branded i18n is in other packages' dicts (revisit with a
+ runtime display-name shim if it matters), `favicon-v3.ico` + `social-share.png` (binary formats we can't author well —
need design assets; note the docs site serves the upstream-branded `social-share.png` as its
`og:image`), the OAuth callback pages (`packages/core/src/oauth/page.ts` — its `WORDMARK`
constant is a second copy of the opencode wordmark geometry, and the page's headline/message/
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index b4496ba7de..558e7ad0dd 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -238,7 +238,7 @@ function UiI18nBridge(props: ParentProps) {
declare global {
interface Window {
- __OPENCODE__?: {
+ __CODEV__?: {
deepLinks?: string[]
}
api?: {
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index 0a001ce8b7..8cebeaebdf 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -121,7 +121,7 @@ export const dict = {
"dialog.model.manage.description": "Customize which models appear in the model selector.",
"dialog.model.manage.provider.toggle": "Toggle all {{provider}} models",
- "dialog.model.unpaid.freeModels.title": "Free models provided by OpenCode",
+ "dialog.model.unpaid.freeModels.title": "Free models included",
"dialog.model.unpaid.addMore.title": "Add more models from popular providers",
"dialog.model.unpaid.viewMoreProviders": "See 70+ more providers",
@@ -135,7 +135,7 @@ export const dict = {
"provider.connect.status.waiting": "Waiting for authorization...",
"provider.connect.status.failed": "Authorization failed: {{error}}",
"provider.connect.apiKey.description":
- "Enter your {{provider}} API key to connect your account and use {{provider}} models in OpenCode.",
+ "Enter your {{provider}} API key to connect your account and use {{provider}} models in CoDev Code.",
"provider.connect.apiKey.label": "{{provider}} API key",
"provider.connect.apiKey.placeholder": "API key",
"provider.connect.apiKey.required": "API key is required",
@@ -149,7 +149,7 @@ export const dict = {
"provider.connect.oauth.code.visit.prefix": "Visit ",
"provider.connect.oauth.code.visit.link": "this link",
"provider.connect.oauth.code.visit.suffix":
- " to collect your authorization code to connect your account and use {{provider}} models in OpenCode.",
+ " to collect your authorization code to connect your account and use {{provider}} models in CoDev Code.",
"provider.connect.oauth.code.label": "{{method}} authorization code",
"provider.connect.oauth.code.placeholder": "Authorization code",
"provider.connect.oauth.code.required": "Authorization code is required",
@@ -157,7 +157,7 @@ export const dict = {
"provider.connect.oauth.auto.visit.prefix": "Visit ",
"provider.connect.oauth.auto.visit.link": "this link",
"provider.connect.oauth.auto.visit.suffix":
- " and enter the code below to connect your account and use {{provider}} models in OpenCode.",
+ " and enter the code below to connect your account and use {{provider}} models in CoDev Code.",
"provider.connect.oauth.auto.confirmationCode": "Confirmation code",
"provider.connect.toast.connected.title": "{{provider}} connected",
"provider.connect.toast.connected.description": "{{provider}} models are now available to use.",
@@ -338,7 +338,7 @@ export const dict = {
"app.server.otherServers": "Other servers",
"dialog.server.title": "Servers",
- "dialog.server.description": "Switch which OpenCode server this app connects to.",
+ "dialog.server.description": "Switch which CoDev Code server this app connects to.",
"dialog.server.search.placeholder": "Search servers",
"dialog.server.empty": "No servers yet",
"dialog.server.add.title": "Add server",
@@ -375,7 +375,7 @@ export const dict = {
"wsl.server.retryStart": "Retry start",
"wsl.server.updating": "Updating...",
"wsl.onboarding.step.distro": "Choose distro",
- "wsl.onboarding.step.opencode": "OpenCode",
+ "wsl.onboarding.step.opencode": "CoDev Code",
"wsl.onboarding.checkingRuntime": "Checking WSL...",
"wsl.onboarding.restartRequired": "Windows needs a restart to finish installing WSL.",
"wsl.onboarding.ready": "WSL is ready.",
@@ -389,16 +389,16 @@ export const dict = {
"wsl.onboarding.openDistroOnce": "Open {{distro}} once to finish setup.",
"wsl.onboarding.finishingDistro": "Finishing setup for {{distro}}.",
"wsl.onboarding.pickDistro": "Pick a distro or install one below.",
- "wsl.onboarding.checkingOpencode": "Checking OpenCode...",
- "wsl.onboarding.checkingOpencodeIn": "Checking OpenCode in {{distro}}...",
- "wsl.onboarding.updatingOpencode": "Updating OpenCode...",
- "wsl.onboarding.updatingOpencodeIn": "Updating OpenCode in {{distro}}...",
- "wsl.onboarding.updateOpencodeIn": "Update OpenCode in {{distro}}.",
- "wsl.onboarding.updateOpencode": "Update OpenCode",
- "wsl.onboarding.opencodeReadyIn": "OpenCode is ready in {{distro}}.",
- "wsl.onboarding.opencodeReady": "OpenCode is ready.",
- "wsl.onboarding.installOpencodeIn": "Install OpenCode in {{distro}}.",
- "wsl.onboarding.installOpencode": "Install OpenCode",
+ "wsl.onboarding.checkingOpencode": "Checking CoDev Code...",
+ "wsl.onboarding.checkingOpencodeIn": "Checking CoDev Code in {{distro}}...",
+ "wsl.onboarding.updatingOpencode": "Updating CoDev Code...",
+ "wsl.onboarding.updatingOpencodeIn": "Updating CoDev Code in {{distro}}...",
+ "wsl.onboarding.updateOpencodeIn": "Update CoDev Code in {{distro}}.",
+ "wsl.onboarding.updateOpencode": "Update CoDev Code",
+ "wsl.onboarding.opencodeReadyIn": "CoDev Code is ready in {{distro}}.",
+ "wsl.onboarding.opencodeReady": "CoDev Code is ready.",
+ "wsl.onboarding.installCodevIn": "Install CoDev Code in {{distro}}.",
+ "wsl.onboarding.installCodev": "Install CoDev Code",
"wsl.onboarding.chooseDistroFirst": "Choose a distro first.",
"wsl.onboarding.loadFailed": "Failed to load WSL state.",
"wsl.onboarding.loading": "Loading...",
@@ -406,18 +406,18 @@ export const dict = {
"wsl.onboarding.checkAgain": "Check again",
"wsl.onboarding.distroStatus.ready": "Ready",
"wsl.onboarding.distroStatus.checking": "Checking...",
- "wsl.onboarding.distroStatus.opencodeMissing": "OpenCode not installed",
+ "wsl.onboarding.distroStatus.opencodeMissing": "CoDev Code not installed",
"wsl.onboarding.distroStatus.missingTools": "Missing bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Unsupported · Use WSL 2",
"wsl.onboarding.needAnotherDistro": "Need another distro?",
"wsl.onboarding.needAnotherDistroHint": "Install a Linux distribution from the WSL catalog",
"wsl.onboarding.wslNotInstalled.title": "WSL not installed",
"wsl.onboarding.wslNotInstalled.description":
- "WSL (Windows Subsystem for Linux) is required before OpenCode can add a WSL server",
+ "WSL (Windows Subsystem for Linux) is required before CoDev Code can add a WSL server",
"wsl.onboarding.wslUnavailable.title": "WSL unavailable",
- "wsl.onboarding.wslUnavailable.description": "OpenCode could not verify WSL on this machine.",
+ "wsl.onboarding.wslUnavailable.description": "CoDev Code could not verify WSL on this machine.",
"wsl.onboarding.installWsl": "Install WSL",
- "wsl.onboarding.windowsRestartRequired": "Restart Windows to finish installing WSL, then reopen OpenCode.",
+ "wsl.onboarding.windowsRestartRequired": "Restart Windows to finish installing WSL, then reopen CoDev Code.",
"wsl.onboarding.next": "Next",
"wsl.onboarding.refresh": "Refresh",
"wsl.onboarding.allDistrosAdded": "All installed distros are already added.",
@@ -548,7 +548,7 @@ export const dict = {
"toast.project.reloadFailed.title": "Failed to reload {{project}}",
"toast.update.title": "Update available",
- "toast.update.description": "A new version of OpenCode ({{version}}) is now available to install.",
+ "toast.update.description": "A new version of CoDev Code ({{version}}) is now available to install.",
"toast.update.action.installRestart": "Install and restart",
"toast.update.action.notYet": "Not yet",
@@ -590,7 +590,7 @@ export const dict = {
"error.chain.didYouMean": "Did you mean: {{suggestions}}",
"error.chain.modelNotFound": "Model not found: {{provider}}/{{model}}",
"error.chain.checkConfig": "Check your config (codev.json) provider/model names",
- "error.chain.mcpFailed": 'MCP server "{{name}}" failed. Note, OpenCode does not support MCP authentication yet.',
+ "error.chain.mcpFailed": 'MCP server "{{name}}" failed. Note, CoDev Code does not support MCP authentication yet.',
"error.chain.providerAuthFailed": "Provider authentication failed ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Failed to initialize provider "{{provider}}". Check credentials and configuration.',
@@ -807,7 +807,7 @@ export const dict = {
"sidebar.workspaces.enable": "Enable workspaces",
"sidebar.workspaces.disable": "Disable workspaces",
"sidebar.gettingStarted.title": "Getting started",
- "sidebar.gettingStarted.line1": "OpenCode includes free models so you can start immediately.",
+ "sidebar.gettingStarted.line1": "CoDev Code includes free models so you can start immediately.",
"sidebar.gettingStarted.line2": "Connect any provider to use models, inc. Claude, GPT, Gemini etc.",
"sidebar.project.recentSessions": "Recent sessions",
"sidebar.project.viewAllSessions": "View all sessions",
@@ -839,7 +839,7 @@ export const dict = {
"debugBar.mem.tipUnavailable": "Used JS heap vs heap limit. Chromium only.",
"debugBar.mem.tip": "Used JS heap vs heap limit. {{used}} of {{limit}}.",
- "app.name.desktop": "OpenCode Desktop",
+ "app.name.desktop": "CoDev Code Desktop",
"settings.section.desktop": "Desktop",
"settings.section.server": "Server",
@@ -847,7 +847,7 @@ export const dict = {
"settings.tab.shortcuts": "Shortcuts",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL integration",
- "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
+ "settings.desktop.wsl.description": "Run the CoDev Code server inside WSL on Windows.",
"settings.general.section.appearance": "Appearance",
"settings.general.section.advanced": "Advanced",
@@ -858,17 +858,17 @@ export const dict = {
"settings.general.section.display": "Display",
"settings.general.row.language.title": "Language",
- "settings.general.row.language.description": "Change the display language for OpenCode",
+ "settings.general.row.language.description": "Change the display language for CoDev Code",
"settings.general.row.shell.title": "Terminal shell",
"settings.general.row.shell.description": "Shell used by the terminal and agent tools",
"settings.general.row.shell.autoDefault": "Auto (Default)",
"settings.general.row.shell.terminalOnly": "terminal only",
"settings.general.row.appearance.title": "Appearance",
- "settings.general.row.appearance.description": "Customise how OpenCode looks on your device",
+ "settings.general.row.appearance.description": "Customise how CoDev Code looks on your device",
"settings.general.row.colorScheme.title": "Color scheme",
- "settings.general.row.colorScheme.description": "Choose whether OpenCode follows the system, light, or dark theme",
+ "settings.general.row.colorScheme.description": "Choose whether CoDev Code follows the system, light, or dark theme",
"settings.general.row.theme.title": "Theme",
- "settings.general.row.theme.description": "Customise how OpenCode is themed.",
+ "settings.general.row.theme.description": "Customise how CoDev Code is themed.",
"settings.general.row.font.title": "Code Font",
"settings.general.row.font.description": "Customise the font used in code blocks",
"settings.general.row.terminalFont.title": "Terminal Font",
@@ -922,7 +922,7 @@ export const dict = {
"settings.general.row.releaseNotes.description": "Show What's New popups after updates",
"settings.updates.row.startup.title": "Check for updates on startup",
- "settings.updates.row.startup.description": "Automatically check for updates when OpenCode launches",
+ "settings.updates.row.startup.description": "Automatically check for updates when CoDev Code launches",
"settings.updates.row.check.title": "Check for updates",
"settings.updates.row.check.description": "Manually check for updates and install if available",
"settings.updates.action.checkNow": "Check now",
@@ -930,7 +930,7 @@ export const dict = {
"settings.updates.action.downloading": "Downloading...",
"settings.updates.action.installing": "Installing...",
"settings.updates.toast.latest.title": "You're up to date",
- "settings.updates.toast.latest.description": "You're running the latest version of OpenCode.",
+ "settings.updates.toast.latest.description": "You're running the latest version of CoDev Code.",
"sound.option.none": "None",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index 819df3fe93..93ffc4bcd0 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -120,7 +120,7 @@ export const dict = {
"dialog.model.manage.description": "Personalizar qué modelos aparecen en el selector de modelos.",
"dialog.model.manage.provider.toggle": "Alternar todos los modelos de {{provider}}",
- "dialog.model.unpaid.freeModels.title": "Modelos gratuitos proporcionados por OpenCode",
+ "dialog.model.unpaid.freeModels.title": "Modelos gratuitos incluidos",
"dialog.model.unpaid.addMore.title": "Añadir más modelos de proveedores populares",
"dialog.provider.viewAll": "Ver más proveedores",
@@ -133,7 +133,7 @@ export const dict = {
"provider.connect.status.waiting": "Esperando autorización...",
"provider.connect.status.failed": "Autorización fallida: {{error}}",
"provider.connect.apiKey.description":
- "Introduce tu clave API de {{provider}} para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.",
+ "Introduce tu clave API de {{provider}} para conectar tu cuenta y usar modelos de {{provider}} en CoDev Code.",
"provider.connect.apiKey.label": "Clave API de {{provider}}",
"provider.connect.apiKey.placeholder": "Clave API",
"provider.connect.apiKey.required": "La clave API es obligatoria",
@@ -147,7 +147,7 @@ export const dict = {
"provider.connect.oauth.code.visit.prefix": "Visita ",
"provider.connect.oauth.code.visit.link": "este enlace",
"provider.connect.oauth.code.visit.suffix":
- " para obtener tu código de autorización para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.",
+ " para obtener tu código de autorización para conectar tu cuenta y usar modelos de {{provider}} en CoDev Code.",
"provider.connect.oauth.code.label": "Código de autorización {{method}}",
"provider.connect.oauth.code.placeholder": "Código de autorización",
"provider.connect.oauth.code.required": "El código de autorización es obligatorio",
@@ -155,7 +155,7 @@ export const dict = {
"provider.connect.oauth.auto.visit.prefix": "Visita ",
"provider.connect.oauth.auto.visit.link": "este enlace",
"provider.connect.oauth.auto.visit.suffix":
- " e introduce el código a continuación para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.",
+ " e introduce el código a continuación para conectar tu cuenta y usar modelos de {{provider}} en CoDev Code.",
"provider.connect.oauth.auto.confirmationCode": "Código de confirmación",
"provider.connect.toast.connected.title": "{{provider}} conectado",
"provider.connect.toast.connected.description": "Los modelos de {{provider}} ahora están disponibles para usar.",
@@ -331,7 +331,7 @@ export const dict = {
"dialog.directory.readError": "No se puede leer esta carpeta",
"dialog.server.title": "Servidores",
- "dialog.server.description": "Cambiar a qué servidor de OpenCode se conecta esta app.",
+ "dialog.server.description": "Cambiar a qué servidor de CoDev Code se conecta esta app.",
"dialog.server.search.placeholder": "Buscar servidores",
"dialog.server.empty": "No hay servidores aún",
"dialog.server.add.title": "Añadir un servidor",
@@ -366,7 +366,7 @@ export const dict = {
"wsl.server.retryStart": "Reintentar el inicio",
"wsl.server.updating": "Actualizando...",
"wsl.onboarding.step.distro": "Elegir distribución",
- "wsl.onboarding.step.opencode": "OpenCode",
+ "wsl.onboarding.step.opencode": "CoDev Code",
"wsl.onboarding.checkingRuntime": "Comprobando WSL...",
"wsl.onboarding.restartRequired": "Es necesario reiniciar Windows para terminar de instalar WSL.",
"wsl.onboarding.ready": "WSL está listo.",
@@ -380,16 +380,16 @@ export const dict = {
"wsl.onboarding.openDistroOnce": "Abre {{distro}} una vez para completar la configuración.",
"wsl.onboarding.finishingDistro": "Completando la configuración de {{distro}}.",
"wsl.onboarding.pickDistro": "Elige una distribución o instala una abajo.",
- "wsl.onboarding.checkingOpencode": "Comprobando OpenCode...",
- "wsl.onboarding.checkingOpencodeIn": "Comprobando OpenCode en {{distro}}...",
- "wsl.onboarding.updatingOpencode": "Actualizando OpenCode...",
- "wsl.onboarding.updatingOpencodeIn": "Actualizando OpenCode en {{distro}}...",
- "wsl.onboarding.updateOpencodeIn": "Actualiza OpenCode en {{distro}}.",
- "wsl.onboarding.updateOpencode": "Actualizar OpenCode",
- "wsl.onboarding.opencodeReadyIn": "OpenCode está listo en {{distro}}.",
- "wsl.onboarding.opencodeReady": "OpenCode está listo.",
- "wsl.onboarding.installOpencodeIn": "Instala OpenCode en {{distro}}.",
- "wsl.onboarding.installOpencode": "Instalar OpenCode",
+ "wsl.onboarding.checkingOpencode": "Comprobando CoDev Code...",
+ "wsl.onboarding.checkingOpencodeIn": "Comprobando CoDev Code en {{distro}}...",
+ "wsl.onboarding.updatingOpencode": "Actualizando CoDev Code...",
+ "wsl.onboarding.updatingOpencodeIn": "Actualizando CoDev Code en {{distro}}...",
+ "wsl.onboarding.updateOpencodeIn": "Actualiza CoDev Code en {{distro}}.",
+ "wsl.onboarding.updateOpencode": "Actualizar CoDev Code",
+ "wsl.onboarding.opencodeReadyIn": "CoDev Code está listo en {{distro}}.",
+ "wsl.onboarding.opencodeReady": "CoDev Code está listo.",
+ "wsl.onboarding.installCodevIn": "Instala CoDev Code en {{distro}}.",
+ "wsl.onboarding.installCodev": "Instalar CoDev Code",
"wsl.onboarding.chooseDistroFirst": "Elige primero una distribución.",
"wsl.onboarding.loadFailed": "No se pudo cargar el estado de WSL.",
"wsl.onboarding.loading": "Cargando...",
@@ -397,19 +397,19 @@ export const dict = {
"wsl.onboarding.checkAgain": "Comprobar de nuevo",
"wsl.onboarding.distroStatus.ready": "Lista",
"wsl.onboarding.distroStatus.checking": "Comprobando...",
- "wsl.onboarding.distroStatus.opencodeMissing": "OpenCode no está instalado",
+ "wsl.onboarding.distroStatus.opencodeMissing": "CoDev Code no está instalado",
"wsl.onboarding.distroStatus.missingTools": "Faltan bash y curl",
"wsl.onboarding.distroStatus.unsupported": "No compatible · Usa WSL 2",
"wsl.onboarding.needAnotherDistro": "¿Necesitas otra distribución?",
"wsl.onboarding.needAnotherDistroHint": "Instala una distribución de Linux desde el catálogo de WSL",
"wsl.onboarding.wslNotInstalled.title": "WSL no está instalado",
"wsl.onboarding.wslNotInstalled.description":
- "Se necesita WSL (Subsistema de Windows para Linux) para que OpenCode pueda añadir un servidor WSL",
+ "Se necesita WSL (Subsistema de Windows para Linux) para que CoDev Code pueda añadir un servidor WSL",
"wsl.onboarding.wslUnavailable.title": "WSL no disponible",
- "wsl.onboarding.wslUnavailable.description": "OpenCode no pudo comprobar WSL en este equipo.",
+ "wsl.onboarding.wslUnavailable.description": "CoDev Code no pudo comprobar WSL en este equipo.",
"wsl.onboarding.installWsl": "Instalar WSL",
"wsl.onboarding.windowsRestartRequired":
- "Reinicia Windows para terminar de instalar WSL y, después, vuelve a abrir OpenCode.",
+ "Reinicia Windows para terminar de instalar WSL y, después, vuelve a abrir CoDev Code.",
"wsl.onboarding.next": "Siguiente",
"wsl.onboarding.refresh": "Actualizar",
"wsl.onboarding.allDistrosAdded": "Ya se han añadido todas las distribuciones instaladas.",
@@ -535,7 +535,7 @@ export const dict = {
"toast.session.listFailed.title": "Fallo al cargar sesiones para {{project}}",
"toast.update.title": "Actualización disponible",
- "toast.update.description": "Una nueva versión de OpenCode ({{version}}) está disponible para instalar.",
+ "toast.update.description": "Una nueva versión de CoDev Code ({{version}}) está disponible para instalar.",
"toast.update.action.installRestart": "Instalar y reiniciar",
"toast.update.action.notYet": "Todavía no",
@@ -569,7 +569,7 @@ export const dict = {
"error.chain.didYouMean": "¿Quisiste decir: {{suggestions}}",
"error.chain.modelNotFound": "Modelo no encontrado: {{provider}}/{{model}}",
"error.chain.checkConfig": "Comprueba los nombres de proveedor/modelo en tu configuración (codev.json)",
- "error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota, OpenCode no soporta autenticación MCP todavía.',
+ "error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota, CoDev Code no soporta autenticación MCP todavía.',
"error.chain.providerAuthFailed": "Autenticación de proveedor fallida ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Fallo al inicializar proveedor "{{provider}}". Comprueba credenciales y configuración.',
@@ -742,7 +742,7 @@ export const dict = {
"sidebar.workspaces.enable": "Habilitar espacios de trabajo",
"sidebar.workspaces.disable": "Deshabilitar espacios de trabajo",
"sidebar.gettingStarted.title": "Empezando",
- "sidebar.gettingStarted.line1": "OpenCode incluye modelos gratuitos para que puedas empezar inmediatamente.",
+ "sidebar.gettingStarted.line1": "CoDev Code incluye modelos gratuitos para que puedas empezar inmediatamente.",
"sidebar.gettingStarted.line2": "Conecta cualquier proveedor para usar modelos, inc. Claude, GPT, Gemini etc.",
"sidebar.project.recentSessions": "Sesiones recientes",
"sidebar.project.viewAllSessions": "Ver todas las sesiones",
@@ -750,7 +750,7 @@ export const dict = {
"sidebar.empty.title": "No hay proyectos abiertos",
"sidebar.empty.description": "Abre un proyecto para empezar",
- "app.name.desktop": "OpenCode Desktop",
+ "app.name.desktop": "CoDev Code Desktop",
"settings.section.desktop": "Escritorio",
"settings.section.server": "Servidor",
@@ -758,7 +758,7 @@ export const dict = {
"settings.tab.shortcuts": "Atajos",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "Integración con WSL",
- "settings.desktop.wsl.description": "Ejecutar el servidor OpenCode dentro de WSL en Windows.",
+ "settings.desktop.wsl.description": "Ejecutar el servidor CoDev Code dentro de WSL en Windows.",
"settings.general.section.appearance": "Apariencia",
"settings.general.section.advanced": "Avanzado",
@@ -769,18 +769,18 @@ export const dict = {
"settings.general.section.display": "Pantalla",
"settings.general.row.language.title": "Idioma",
- "settings.general.row.language.description": "Cambiar el idioma de visualización para OpenCode",
+ "settings.general.row.language.description": "Cambiar el idioma de visualización para CoDev Code",
"settings.general.row.shell.title": "Shell del terminal",
"settings.general.row.shell.description":
"Elige el shell que se usará en el terminal. Los shells compatibles también se usarán para las llamadas a herramientas del agente.",
"settings.general.row.shell.autoDefault": "Automático (Predeterminado)",
"settings.general.row.shell.terminalOnly": "solo en el terminal",
"settings.general.row.appearance.title": "Apariencia",
- "settings.general.row.appearance.description": "Personaliza cómo se ve OpenCode en tu dispositivo",
+ "settings.general.row.appearance.description": "Personaliza cómo se ve CoDev Code en tu dispositivo",
"settings.general.row.colorScheme.title": "Esquema de color",
- "settings.general.row.colorScheme.description": "Elige si OpenCode sigue el tema del sistema, claro u oscuro",
+ "settings.general.row.colorScheme.description": "Elige si CoDev Code sigue el tema del sistema, claro u oscuro",
"settings.general.row.theme.title": "Tema",
- "settings.general.row.theme.description": "Personaliza el tema de OpenCode.",
+ "settings.general.row.theme.description": "Personaliza el tema de CoDev Code.",
"settings.general.row.font.title": "Fuente de código",
"settings.general.row.font.description": "Personaliza la fuente usada en bloques de código",
"settings.general.row.terminalFont.title": "Fuente del terminal",
@@ -838,7 +838,7 @@ export const dict = {
'Mostrar ventanas emergentes de "Novedades" después de las actualizaciones',
"settings.updates.row.startup.title": "Buscar actualizaciones al iniciar",
- "settings.updates.row.startup.description": "Buscar actualizaciones automáticamente cuando se inicia OpenCode",
+ "settings.updates.row.startup.description": "Buscar actualizaciones automáticamente cuando se inicia CoDev Code",
"settings.updates.row.check.title": "Buscar actualizaciones",
"settings.updates.row.check.description": "Buscar actualizaciones manualmente e instalarlas si hay alguna",
"settings.updates.action.checkNow": "Buscar ahora",
@@ -846,7 +846,7 @@ export const dict = {
"settings.updates.action.downloading": "Descargando...",
"settings.updates.action.installing": "Instalando...",
"settings.updates.toast.latest.title": "Estás al día",
- "settings.updates.toast.latest.description": "Estás usando la última versión de OpenCode.",
+ "settings.updates.toast.latest.description": "Estás usando la última versión de CoDev Code.",
"sound.option.none": "Ninguno",
"sound.option.alert01": "Alerta 01",
"sound.option.alert02": "Alerta 02",
diff --git a/packages/app/src/index.ts b/packages/app/src/index.ts
index d18e05fc9c..7389b22796 100644
--- a/packages/app/src/index.ts
+++ b/packages/app/src/index.ts
@@ -17,7 +17,7 @@ export {
type WslInstalledDistro,
type WslJob,
type WslOnlineDistro,
- type WslOpencodeCheck,
+ type WslCodevCheck,
type WslRuntimeCheck,
type WslServerConfig,
type WslServerItem,
diff --git a/packages/app/src/pages/layout/deep-links.ts b/packages/app/src/pages/layout/deep-links.ts
index 5dca421f74..9ae80595e4 100644
--- a/packages/app/src/pages/layout/deep-links.ts
+++ b/packages/app/src/pages/layout/deep-links.ts
@@ -1,4 +1,4 @@
-export const deepLinkEvent = "opencode:deep-link"
+export const deepLinkEvent = "codev:deep-link"
const parseUrl = (input: string) => {
if (!input.startsWith("opencode://")) return
@@ -36,15 +36,15 @@ export const collectOpenProjectDeepLinks = (urls: string[]) =>
export const collectNewSessionDeepLinks = (urls: string[]) =>
urls.map(parseNewSessionDeepLink).filter((link): link is { directory: string; prompt?: string } => !!link)
-type OpenCodeWindow = Window & {
- __OPENCODE__?: {
+type CodevWindow = Window & {
+ __CODEV__?: {
deepLinks?: string[]
}
}
-export const drainPendingDeepLinks = (target: OpenCodeWindow) => {
- const pending = target.__OPENCODE__?.deepLinks ?? []
+export const drainPendingDeepLinks = (target: CodevWindow) => {
+ const pending = target.__CODEV__?.deepLinks ?? []
if (pending.length === 0) return []
- if (target.__OPENCODE__) target.__OPENCODE__.deepLinks = []
+ if (target.__CODEV__) target.__CODEV__.deepLinks = []
return pending
}
diff --git a/packages/app/src/pages/layout/helpers.test.ts b/packages/app/src/pages/layout/helpers.test.ts
index df87ddfecd..e442496721 100644
--- a/packages/app/src/pages/layout/helpers.test.ts
+++ b/packages/app/src/pages/layout/helpers.test.ts
@@ -100,10 +100,10 @@ describe("layout deep links", () => {
test("drains global deep links once", () => {
const target = {
- __OPENCODE__: {
+ __CODEV__: {
deepLinks: ["opencode://open-project?directory=/a"],
},
- } as unknown as Window & { __OPENCODE__?: { deepLinks?: string[] } }
+ } as unknown as Window & { __CODEV__?: { deepLinks?: string[] } }
expect(drainPendingDeepLinks(target)).toEqual(["opencode://open-project?directory=/a"])
expect(drainPendingDeepLinks(target)).toEqual([])
diff --git a/packages/app/src/wsl/dialog-add-server.tsx b/packages/app/src/wsl/dialog-add-server.tsx
index 3c0b7ee35b..01555fdd7f 100644
--- a/packages/app/src/wsl/dialog-add-server.tsx
+++ b/packages/app/src/wsl/dialog-add-server.tsx
@@ -338,8 +338,8 @@ function useWslAddServerController(props: DialogWslServerProps) {
const distro = model().selectedDistro
const action = button.action
if (!distro || !action) return
- if (action === "install-opencode") {
- await run(() => api.installOpencode(distro))
+ if (action === "install-codev") {
+ await run(() => api.installCodev(distro))
return
}
setStore("adding", true)
diff --git a/packages/app/src/wsl/settings-model.test.ts b/packages/app/src/wsl/settings-model.test.ts
index 99d3e522cc..21a2ef8ac4 100644
--- a/packages/app/src/wsl/settings-model.test.ts
+++ b/packages/app/src/wsl/settings-model.test.ts
@@ -6,7 +6,7 @@ import {
autoProbePlan,
createProbeFailureGate,
runAddableProbePlan,
- wslOpencodeAction,
+ wslCodevAction,
wslRuntimeRetryable,
} from "./settings-model"
import type { WslServersState } from "./types"
@@ -19,7 +19,7 @@ function readyState(input: Partial = {}): WslServersState {
installed: [],
online: [],
distroProbes: {},
- opencodeChecks: {},
+ codevChecks: {},
pendingRestart: false,
servers: [],
job: null,
@@ -38,9 +38,9 @@ describe("WSL server settings presentation", () => {
})
test("offers install and update only when CoDev Code needs attention", () => {
- expect(wslOpencodeAction(undefined)).toBeUndefined()
+ expect(wslCodevAction(undefined)).toBeUndefined()
expect(
- wslOpencodeAction({
+ wslCodevAction({
distro: "Debian",
resolvedPath: null,
version: null,
@@ -50,7 +50,7 @@ describe("WSL server settings presentation", () => {
}),
).toBe("Install CoDev Code")
expect(
- wslOpencodeAction({
+ wslCodevAction({
distro: "Debian",
resolvedPath: "/usr/local/bin/opencode",
version: "1.2.2",
@@ -60,7 +60,7 @@ describe("WSL server settings presentation", () => {
}),
).toBe("Update CoDev Code")
expect(
- wslOpencodeAction({
+ wslCodevAction({
distro: "Debian",
resolvedPath: "/usr/local/bin/opencode",
version: "1.2.3",
@@ -188,7 +188,7 @@ describe("WSL server settings presentation", () => {
distroProbes: {
Debian: { name: "Debian", canExecute: true, hasBash: true, hasCurl: true, error: null },
},
- opencodeChecks: {
+ codevChecks: {
Debian: {
distro: "Debian",
resolvedPath: "/home/me/.opencode/bin/opencode",
@@ -208,10 +208,10 @@ describe("WSL server settings presentation", () => {
})
expect(model.distroStatuses.Debian).toEqual({
- label: { key: "wsl.onboarding.installOpencode" },
+ label: { key: "wsl.onboarding.installCodev" },
tone: "warning",
})
- expect(model.primaryButton.action).toBe("install-opencode")
+ expect(model.primaryButton.action).toBe("install-codev")
})
test("delegates addable probe plans to one batch command", async () => {
diff --git a/packages/app/src/wsl/settings-model.ts b/packages/app/src/wsl/settings-model.ts
index f79ab2b8de..3dcb3aa86c 100644
--- a/packages/app/src/wsl/settings-model.ts
+++ b/packages/app/src/wsl/settings-model.ts
@@ -2,7 +2,7 @@ import fuzzysort from "fuzzysort"
import type {
WslInstalledDistro,
WslOnlineDistro,
- WslOpencodeCheck,
+ WslCodevCheck,
WslServersPlatform,
WslServerRuntime,
WslServersState,
@@ -24,7 +24,7 @@ export type AddServerPrimaryButton = {
variant: "neutral" | "contrast"
label: AddServerText
disabled: boolean
- action: "install-opencode" | "add" | null
+ action: "install-codev" | "add" | null
loading: boolean
width: string | null
}
@@ -51,7 +51,7 @@ function isHiddenDistro(name: string) {
export const wslRuntimeRetryable = (runtime: WslServerRuntime) =>
runtime.kind === "failed" || runtime.kind === "stopped"
-export function wslOpencodeAction(check?: WslOpencodeCheck) {
+export function wslCodevAction(check?: WslCodevCheck) {
if (!check) return
if (!check.resolvedPath) return "Install CoDev Code"
if (check.matchesDesktop === false) return "Update CoDev Code"
@@ -80,7 +80,7 @@ export function addServerViewModel(input: {
const existingServerDistros = new Set((state?.servers ?? []).map((item) => item.config.distro))
const addableInstalledDistros = visibleInstalledDistros.filter((item) => !existingServerDistros.has(item.name))
const selectedDistro = addServerSelectedDistro(input.selectedDistro, visibleInstalledDistros, addableInstalledDistros)
- const opencodeCheck = selectedDistro ? (state?.opencodeChecks[selectedDistro] ?? null) : null
+ const codevCheck = selectedDistro ? (state?.codevChecks[selectedDistro] ?? null) : null
const installableDistros = addServerInstallableDistros(visibleInstalledDistros, visibleOnlineDistros)
const filteredInstallableDistros = addServerFilteredInstallableDistros(installableDistros, input.catalogSearch)
const catalogTarget = addServerCatalogTarget(input.catalogTarget, filteredInstallableDistros)
@@ -93,7 +93,7 @@ export function addServerViewModel(input: {
visibleOnlineDistros,
addableInstalledDistros,
selectedDistro,
- opencodeCheck,
+ codevCheck,
wslReady: !!state?.runtime?.available && !state?.pendingRestart,
distroStatuses: Object.fromEntries(
addableInstalledDistros.flatMap((item) => {
@@ -105,7 +105,7 @@ export function addServerViewModel(input: {
primaryButton: addServerPrimaryButton({
state,
selectedDistro,
- opencodeCheck,
+ codevCheck,
adding: input.adding,
probingAddable: input.probingAddable,
}),
@@ -165,7 +165,7 @@ function addServerDistroStatus(input: {
if (!probe.hasBash || !probe.hasCurl) {
return { label: { key: "wsl.onboarding.distroStatus.missingTools" }, tone: "warning" }
}
- const check = input.state?.opencodeChecks[input.name]
+ const check = input.state?.codevChecks[input.name]
if (!check) {
if (input.probingAddable || (job?.kind === "probe-addable" && job.distros.includes(input.name))) {
return checkingStatus()
@@ -174,7 +174,7 @@ function addServerDistroStatus(input: {
}
if (check.matchesDesktop === false) return { label: { key: "wsl.onboarding.updateOpencode" }, tone: "warning" }
if (!check.resolvedPath) return { label: { key: "wsl.onboarding.distroStatus.opencodeMissing" }, tone: "warning" }
- if (check.error) return { label: { key: "wsl.onboarding.installOpencode" }, tone: "warning" }
+ if (check.error) return { label: { key: "wsl.onboarding.installCodev" }, tone: "warning" }
return { label: { key: "wsl.onboarding.distroStatus.ready" }, tone: "success" }
}
@@ -185,7 +185,7 @@ function checkingStatus(): DistroStatus {
function addServerPrimaryButton(input: {
state: WslServersState | undefined
selectedDistro: string | null
- opencodeCheck: WslOpencodeCheck | null
+ codevCheck: WslCodevCheck | null
adding: boolean
probingAddable: boolean
}): AddServerPrimaryButton {
@@ -194,12 +194,12 @@ function addServerPrimaryButton(input: {
const probingOpencode =
probingSelected ||
(ready &&
- (!input.opencodeCheck ||
+ (!input.codevCheck ||
(!!input.selectedDistro &&
input.state?.job?.kind === "probe-addable" &&
input.state.job.distros.includes(input.selectedDistro))))
const installingOpencode =
- input.state?.job?.kind === "install-opencode" && input.state.job.distro === input.selectedDistro
+ input.state?.job?.kind === "install-codev" && input.state.job.distro === input.selectedDistro
if (!ready || probingOpencode) {
return {
variant: "contrast",
@@ -210,17 +210,17 @@ function addServerPrimaryButton(input: {
width: null,
}
}
- if (!addServerOpencodeReady(input.opencodeCheck)) {
- const update = !!input.opencodeCheck?.resolvedPath && input.opencodeCheck.matchesDesktop === false
+ if (!addServerOpencodeReady(input.codevCheck)) {
+ const update = !!input.codevCheck?.resolvedPath && input.codevCheck.matchesDesktop === false
return {
variant: "neutral",
label: installingOpencode
? { key: "wsl.onboarding.updatingOpencode" }
: update
? { key: "wsl.onboarding.updateOpencode" }
- : { key: "wsl.onboarding.installOpencode" },
+ : { key: "wsl.onboarding.installCodev" },
disabled: !!input.state?.job || input.adding,
- action: "install-opencode",
+ action: "install-codev",
loading: installingOpencode,
width: update ? "138px" : "129px",
}
@@ -235,7 +235,7 @@ function addServerPrimaryButton(input: {
}
}
-function addServerOpencodeReady(check: WslOpencodeCheck | null) {
+function addServerOpencodeReady(check: WslCodevCheck | null) {
return !!check?.resolvedPath && check.matchesDesktop !== false && !check.error
}
@@ -245,7 +245,7 @@ function addServerSelectedDistroSettled(state: WslServersState | undefined, sele
if (installed?.version === 1) return false
if (!state?.distroProbes[selectedDistro]) return false
if (!wslDistroReady(state, selectedDistro)) return true
- return !!state.opencodeChecks[selectedDistro]
+ return !!state.codevChecks[selectedDistro]
}
function addServerInstallableDistros(installedDistros: WslInstalledDistro[], onlineDistros: WslOnlineDistro[]) {
@@ -286,7 +286,7 @@ export function addableProbePlan(input: {
const pending = ordered.flatMap((item) => {
if (item.version === 1) return []
if (!state.distroProbes[item.name]) return [`distro:${item.name}`]
- if (wslDistroReady(state, item.name) && !state.opencodeChecks[item.name]) return [`opencode:${item.name}`]
+ if (wslDistroReady(state, item.name) && !state.codevChecks[item.name]) return [`opencode:${item.name}`]
return []
})
if (!pending.length) return
diff --git a/packages/app/src/wsl/settings.tsx b/packages/app/src/wsl/settings.tsx
index 82616c6dcf..ce68e47eeb 100644
--- a/packages/app/src/wsl/settings.tsx
+++ b/packages/app/src/wsl/settings.tsx
@@ -15,7 +15,7 @@ import { ServerConnection } from "@/context/server"
import { showToast } from "@/utils/toast"
import { DialogAddWslServer } from "./dialog-add-server"
import { useWslServers } from "./context"
-import { wslOpencodeAction, wslRuntimeRetryable } from "./settings-model"
+import { wslCodevAction, wslRuntimeRetryable } from "./settings-model"
type Controller = ReturnType
@@ -94,9 +94,9 @@ export function WslServerSettings(props: {
{(item) => {
const key = ServerConnection.Key.make(item.config.id)
- const check = () => wsl.data?.opencodeChecks[item.config.distro]
- const opencodeAction = () => wslOpencodeAction(check())
- const busy = () => wsl.data?.job?.kind === "install-opencode" && wsl.data.job.distro === item.config.distro
+ const check = () => wsl.data?.codevChecks[item.config.distro]
+ const opencodeAction = () => wslCodevAction(check())
+ const busy = () => wsl.data?.job?.kind === "install-codev" && wsl.data.job.distro === item.config.distro
return (
- OpenCode is an open source agent that helps you write and run code with any AI model.
+ CoDev Code is an open source agent that helps you write and run code with any AI model.