From b18815ab1eda9af74e09fca239719456e876205a Mon Sep 17 00:00:00 2001 From: minhn4 Date: Sat, 1 Aug 2026 11:29:20 +0700 Subject: [PATCH] feat(sdk): recolor the VS Code extension icon to brand red The extension's "c" badge (Marketplace icon, editor-title button, and terminal tab glyph) switches from teal #0891B2 to the brand red #ee0033 used by the "dev" half of the CoDev wordmark. icon.png is regenerated from icon.svg. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 6 ++++++ DIVERGENCES.md | 11 ++++++----- sdks/vscode/images/button.svg | 13 +++++++------ sdks/vscode/images/icon.png | Bin 7771 -> 3179 bytes sdks/vscode/images/icon.svg | 12 ++++++------ 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0387fee1c5..8843328a9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,12 @@ file is the human-readable summary of what changed and why. Inherited from upstream ([anomalyco/opencode#35258](https://github.com/anomalyco/opencode/issues/35258)). +### VS Code extension + +- **Brand-red icon** — the extension's "c" badge (Marketplace/details icon, + editor-title button, and terminal tab glyph) switched from teal `#0891B2` to + the brand red `#ee0033` used by the "dev" half of the CoDev wordmark. + ## 1.18.4-4 ### TUI diff --git a/DIVERGENCES.md b/DIVERGENCES.md index 3866b37cfc..3ce5e62e15 100644 --- a/DIVERGENCES.md +++ b/DIVERGENCES.md @@ -159,7 +159,7 @@ from the squash message first, or use a plain merge. | `packages/opencode/test/tool/external-directory.test.ts`, `packages/opencode/test/tool/read.test.ts` | Windows path-variant tests keep the drive letter in the `alt` form (drop the `.replace(/^[A-Za-z]:/, "")` step) | A drive-less path is drive-relative: it resolves against the CWD's drive (D: on GitHub-hosted Windows) while the temp dir lives on C:, so the file genuinely isn't there. Slash + case variants still exercise normalization. | Keep our `alt` construction; take upstream's test changes. | | `packages/opencode/test/provider/provider.test.ts`, `packages/opencode/test/provider/transform.test.ts` | Appended two fork-only blocks at the end of each file: an `it.instance` ("declared image modality makes a custom-provider model attachment capable") asserting a config model with no `modalities` resolves `attachment`/`input.image` to false while one carrying the `@codev/gateway` block resolves both true, and a `describe` ("ProviderTransform.message - image input on a custom provider") asserting `unsupportedParts` passes `image`/`file` parts through when the model declares image input and swaps them for the `ERROR: Cannot read …` note when it doesn't. No upstream test changed. | These pin the two upstream code paths the fork's config writer depends on (`provider.ts` modality→capability resolution, `transform.ts` part filtering); upstream leaves both untested, so a refactor there would silently re-break gateway image attachments. | Keep our appended blocks; take upstream's test changes. Append-only, so conflicts should be end-of-file context alone. | | `packages/opencode/test/server/httpapi-exercise/environment.ts` | Exercise config/data dirs `config/opencode`,`data/opencode` → `…/codev`; seeds `codev.json` with `{"share":"manual"}` | Follows the `global.ts` app-dir rename (row above); the fork's `share: "disabled"` default (config.ts row) would 500 the share/unshare scenarios, so the isolated environment opts back in (network stays stubbed by `CODEV_DISABLE_SHARE`). Seed file follows the config-file rename row (global `config.json` is no longer read). | Keep our dir names + seeded config; take upstream's surrounding changes. | -| `sdks/vscode/package.json`, `sdks/vscode/src/extension.ts`, `sdks/vscode/README.md` | `name` `opencode` → `codev-code` (the extension ID is `publisher.name`); `displayName` "opencode" → "CoDev Code"; `publisher` `sst-dev` → `CoDev` (PLACEHOLDER — no such Marketplace publisher is registered; the mixed-case `CoDev` also isn't a valid Marketplace publisher id, which must be lowercase — fine for the sideloaded `.vsix` the fork ships, but replace with the real fork-owned lowercase publisher id before any `vsce publish`, and keep it in sync with the CLI auto-install target); `description` "opencode for VS Code" → "CoDev Code for VS Code"; `icon` `images/icon.png` is a fork-local generated PNG of the CoDev "c" badge (brand teal `#0891B2` on `#0a0a0a`, matching the `codev --mini` splash), with `images/icon.svg` as its source of record — replacing the earlier symlink to the shared `packages/identity` bracket mark; the two per-theme command `icon` objects (`{light,dark}` → `images/button-{dark,light}.svg`) collapse to a single `"images/button.svg"` string and `extension.ts`'s terminal `iconPath` object collapses to a single `Uri`, both pointing at a fork-local transparent teal `#0891B2` "c" glyph that reads on light+dark themes (replacing the two `packages/identity` bracket-mark symlinks, now deleted); `repository.url` → `github.com/quickbeard/codev-code`; command IDs `opencode.*` → `codev.*` across `contributes.commands`/`menus`/`keybindings` and the `registerCommand` calls; command/keybinding titles "Open opencode…"/"Run opencode"/"opencode: Insert At-Mentioned" → "Open CoDev Code…"/"Run CoDev Code"/"CoDev Code: Insert At-Mentioned" (keys unchanged); `TERMINAL_NAME` `opencode` → `codev` and the terminal launches `codev --port `; scripts gain `"vsix"` (`vsce package --no-dependencies --skip-license -o dist/`) with `@vscode/vsce` added as a pinned devDependency; README body rebranded and trimmed to the details-panel essentials — CoDev Code intro linking the fork repo, `npm install -g codev-code` prerequisite, and feature prose only; upstream's Support and Development/Making-Changes sections are dropped (they're contributor-facing, not end-user extension description) | The fork ships this extension as an installable `.vsix`, so every user-visible surface — palette titles, command IDs, terminal name, launched binary, details-panel README — must say codev, and the launched binary must be the fork's `codev` CLI. Distinct `codev.*` IDs also avoid clashing with upstream's extension if both are installed. `--no-dependencies` because the bundle is self-contained (no runtime deps, bun-managed lockfile); `--skip-license` because `sdks/vscode` has no LICENSE file and vsce aborts without it. | Keep our name + displayName + publisher + repository + description, command IDs + titles, `TERMINAL_NAME`, the `codev --port` launch line, the `vsix` script + `@vscode/vsce` devDependency, and the trimmed README (branding + dropped Support/Development sections); take upstream's extension-logic and manifest-structure changes. | +| `sdks/vscode/package.json`, `sdks/vscode/src/extension.ts`, `sdks/vscode/README.md` | `name` `opencode` → `codev-code` (the extension ID is `publisher.name`); `displayName` "opencode" → "CoDev Code"; `publisher` `sst-dev` → `CoDev` (PLACEHOLDER — no such Marketplace publisher is registered; the mixed-case `CoDev` also isn't a valid Marketplace publisher id, which must be lowercase — fine for the sideloaded `.vsix` the fork ships, but replace with the real fork-owned lowercase publisher id before any `vsce publish`, and keep it in sync with the CLI auto-install target); `description` "opencode for VS Code" → "CoDev Code for VS Code"; `icon` `images/icon.png` is a fork-local generated PNG of the CoDev "c" badge (brand red `#ee0033` — the "dev" half of the wordmark, see `packages/tui/src/logo.ts` — on `#0a0a0a`), with `images/icon.svg` as its source of record — replacing the earlier symlink to the shared `packages/identity` bracket mark; the two per-theme command `icon` objects (`{light,dark}` → `images/button-{dark,light}.svg`) collapse to a single `"images/button.svg"` string and `extension.ts`'s terminal `iconPath` object collapses to a single `Uri`, both pointing at a fork-local transparent brand-red `#ee0033` "c" glyph that reads on light+dark themes (replacing the two `packages/identity` bracket-mark symlinks, now deleted); `repository.url` → `github.com/quickbeard/codev-code`; command IDs `opencode.*` → `codev.*` across `contributes.commands`/`menus`/`keybindings` and the `registerCommand` calls; command/keybinding titles "Open opencode…"/"Run opencode"/"opencode: Insert At-Mentioned" → "Open CoDev Code…"/"Run CoDev Code"/"CoDev Code: Insert At-Mentioned" (keys unchanged); `TERMINAL_NAME` `opencode` → `codev` and the terminal launches `codev --port `; scripts gain `"vsix"` (`vsce package --no-dependencies --skip-license -o dist/`) with `@vscode/vsce` added as a pinned devDependency; README body rebranded and trimmed to the details-panel essentials — CoDev Code intro linking the fork repo, `npm install -g codev-code` prerequisite, and feature prose only; upstream's Support and Development/Making-Changes sections are dropped (they're contributor-facing, not end-user extension description) | The fork ships this extension as an installable `.vsix`, so every user-visible surface — palette titles, command IDs, terminal name, launched binary, details-panel README — must say codev, and the launched binary must be the fork's `codev` CLI. Distinct `codev.*` IDs also avoid clashing with upstream's extension if both are installed. `--no-dependencies` because the bundle is self-contained (no runtime deps, bun-managed lockfile); `--skip-license` because `sdks/vscode` has no LICENSE file and vsce aborts without it. | Keep our name + displayName + publisher + repository + description, command IDs + titles, `TERMINAL_NAME`, the `codev --port` launch line, the `vsix` script + `@vscode/vsce` devDependency, and the trimmed README (branding + dropped Support/Development sections); take upstream's extension-logic and manifest-structure changes. | | `packages/opencode/src/ide/index.ts` | IDE auto-install target `sst-dev.opencode` → `CoDev.codev-code` (`publisher.name` from `sdks/vscode/package.json`) | The CLI must install the fork's extension ID (`publisher.name` from `sdks/vscode/package.json`), not upstream's Marketplace listing. `Ide.install` currently has no runtime caller (only its test imports the module), and the install only resolves once the extension is actually published — until then the local `.vsix` is the supported install path. | Keep our extension ID (and re-sync it if the registered publisher id changes); take upstream's install/detection logic changes. | | Env-var rename, repo-wide (~230 files): both flag registries (`packages/core/src/flag/flag.ts`, `packages/opencode/src/effect/runtime-flags.ts`), every `process.env`/`Bun.env` read+set site across `packages/*`, `sdks/vscode`, `infra/enterprise.ts`, `nix/opencode.nix`, `turbo.json`, `.github/workflows/test.yml`, test preloads/fixtures/snapshots, docs (en + es), `SECURITY.md`, specs | `OPENCODE_*` env vars → `CODEV_*` (hard cutover, no legacy fallback), including the bundler define identifiers (`CODEV_VERSION`, `CODEV_CHANNEL`, `CODEV_MODELS_DEV`, `CODEV_LIBC`, `CODEV_CLI_NAME`, `CODEV_WORKER_PATH`), `VITE_OPENCODE_*` → `VITE_CODEV_*`, `import.meta.env.OPENCODE_CHANNEL` → `CODEV_CHANNEL`, the VSCode extension's `OPENCODE_CALLER`/`_EXTENSION_OPENCODE_PORT`, and the bare `OPENCODE=1` marker → `CODEV=1` | The fork's env surface uses the fork's name (reverses the earlier "internal names stay upstream" decision for env vars). NOT renamed: `__OPENCODE_PHOTON_WASM_PATH` and `__OPENCODE__` globals (not env vars; the photon name is baked into `patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch`), `patches/install-korean-ime-fix.sh` script-local shell vars, upstream secret names in workflow-deletion notes, lowercase identifiers (`@opencode-ai/*`, URLs, provider id) | Keep our names; rename any new upstream `OPENCODE_*` env var (or define/`VITE_` name) to `CODEV_*` when syncing. | | Locale dicts in `packages/{ui,app}/src/i18n/`, `packages/desktop/src/renderer/i18n/`, `packages/console/app/src/i18n/`, `packages/stats/app/src/i18n/` | Deleted every locale except `en`/`es` (incl. `packages/app/src/i18n/parity.test.ts`) | Fork ships English + Spanish only. | Keep deleted (`git rm` the upstream side of modify/delete conflicts); also delete any locale files upstream adds. | @@ -215,9 +215,10 @@ from the squash message first, or use a plain merge. (`CoDev.codev-code`) to the registered id; `sdks/vscode/script/publish` is still upstream-flavored (tag-driven, outputs `dist/opencode.vsix`, publishes via `vsce`/`ovsx`) and left untouched deliberately. The marketplace icon (`images/icon.png`) is now a - fork-local generated PNG of the CoDev "c" badge (teal `#0891B2` on `#0a0a0a`, matching - `codev --mini`; source in `images/icon.svg`). The editor-title/terminal button glyph is a - single fork-local `images/button.svg` — a transparent-background teal "c" that reads on both - light and dark themes (replacing the two `packages/identity` bracket-mark symlinks). + fork-local generated PNG of the CoDev "c" badge (brand red `#ee0033`, the "dev" half of + the wordmark, on `#0a0a0a`; source in `images/icon.svg`). The editor-title/terminal button + glyph is a single fork-local `images/button.svg` — a transparent-background brand-red "c" + that reads on both light and dark themes (replacing the two `packages/identity` + bracket-mark symlinks). Until published, auto-install fails against real marketplaces — the local `.vsix` is the supported install. diff --git a/sdks/vscode/images/button.svg b/sdks/vscode/images/button.svg index 53488eacaf..20bf41bf4c 100644 --- a/sdks/vscode/images/button.svg +++ b/sdks/vscode/images/button.svg @@ -1,13 +1,14 @@ - - - + + + + - + - + - + diff --git a/sdks/vscode/images/icon.png b/sdks/vscode/images/icon.png index d6ccd60c6e420305cc04ffee04b3a39ba057ce7a..f28dfe4bcab7fce7be85e13e3be75a43cf1d600a 100644 GIT binary patch literal 3179 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe*Jj67W&Ln`LHy=J&kG(d#K z(PKUv&x3d#whIni@eHOvZEwr2X<7U8-_M$Vb<7OQI2aftR2Uc%CNMBGI06l0;~W(j zO5x$L|NoyqQ4d`0?e^~z`{&OvfrVj@H$wmmgD1m*-7E~QqXHu#JTi3|WYjh|fg<~W zFH-|B0p|%Zs4y}VOlDBvWN4TTN)8NnR2V#%7#^rGItVc^m~%2rVqn(rwF1MWR7OF(IuNrPgiM1dAei zhzg3bjOf91sfU7UcY?qu$x_h>X(v()Ox%acO-(yH>&`h(Jrxw3r4FHkctI}ZocCtg=f-&D*$ynV`p~UE4(Jy$ zXbD<3Js)W1LDrZi0XB;Tt~_)_4`LL|mCeB)jcIZzFmKQ(D~y3ei@MyY159)1Rj;^d zvt5WN%I!bMI`uZUW(}(tMT;R%5|G&h<8*?J8JonT#d3EL7OYdX z@l;DuP5XJ89X&kJiK)tLg;7Abnp0b?-a zH1UD68qBzxV3S9fBsL5QSPzFS=u@=`w8LyoOmX8C#gRqA=ez{u4T5n3X5-LfllTZ1 z9Uv^YN!7-eAvcT6c5^7m{%TM?ra^_W#czUYX384))a^wMR^KNk-8KF|$;rUW@n;ik zAbF_g#84ezw%a;ehu@aT2iegn>lpgOm3r|(mVh#q4UBH8&oJ;p#P9}BvcP@FaC=gE zuDcj>aqh-Zc4>tqGH%bQqE?`}WIz9D6jo3WstNUze>Qd;V}bUOmBEc|_A=Chby^lqK68J6&<$w7O)LPt4$NHo0Gw$_hLzQ;2N;YXrDc1@$e3$6D z%EgFM^vja$7Y6Brh<2y-rceTMURXehP(`SZ(5Rt#gl1N{*U;UU)+51_87+)xsrV;~ zXVe6heM!Z>sH$$Ij$hb0z;;QGx&Dc~_vxY9zd=G}z8&<}`41~q`cX%wWPDOBG-Th- zWJ8s`ZU<^JYJ~<}$Clt>fP$dY4%LMEN#*|&JG7^c#~ie$F4LZRaO(G)o_csLNC#EH j;pqP`sFFt>rU!I;&aA53nRWaQ8XALw&Aam3bA`rVQu!f} diff --git a/sdks/vscode/images/icon.svg b/sdks/vscode/images/icon.svg index 046bb1f7be..338560c87a 100644 --- a/sdks/vscode/images/icon.svg +++ b/sdks/vscode/images/icon.svg @@ -1,13 +1,13 @@ - - - + + + - + - + - +