From d1ef54b6ea1c4059295846f92b9698c327456d98 Mon Sep 17 00:00:00 2001 From: Amr Elsayed Date: Sun, 26 Apr 2026 15:56:30 +1000 Subject: [PATCH 1/2] chore: prepare VS Code extension for Marketplace publishing Marketplace metadata - Add icon (icons/codev.png, 1024x1024 PNG copied from marketing/logo.png). Marketplace requires PNG; SVG isn't accepted for the listing icon. - Add categories ['AI', 'Other'] and 9 search keywords for discoverability. - Add homepage, bugs.url (GitHub issues), qna (GitHub Discussions), galleryBanner (#1e1e1e dark), pricing ('Free'). Identifier changes (Marketplace global-uniqueness conflicts) - name: 'codev' -> 'codev-vscode'. The 'codev' slug is already taken by sk-aicoding.codev; the Marketplace requires the name field to be globally unique, not just unique per publisher. - displayName: 'Codev' -> 'Codev for VS Code'. The 'Codev' display name is also taken; using the 'X for VS Code' pattern (ESLint, GitHub Copilot use this) keeps branding clear without conflict. Version alignment - 0.2.0 -> 3.0.0 to align with the codev npm package's 3.0.x series. Stripped the codev RC suffix because the Marketplace doesn't accept SemVer pre-release tags; --pre-release flag at publish time covers that channel instead. Build / publish scripts - vsix: 'vsce package --no-dependencies' (esbuild bundles deps inline, so vsce's npm-ls walk would fail in pnpm workspaces). - vscode:publish: stable channel publish. - vscode:publish:pre: --pre-release channel publish. After this lands, publish via: pnpm --filter codev-vscode vscode:publish:pre # while iterating pnpm --filter codev-vscode vscode:publish # GA Final identifier: cluesmith.codev-vscode (assuming publisher 'cluesmith' is created on the Marketplace; existing publisher CluesmithLLC works too if you prefer to skip the create step). --- packages/vscode/icons/codev.png | Bin 0 -> 12032 bytes packages/vscode/package.json | 34 ++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 packages/vscode/icons/codev.png diff --git a/packages/vscode/icons/codev.png b/packages/vscode/icons/codev.png new file mode 100644 index 0000000000000000000000000000000000000000..6baa6826f854e2ff8adcec137b60b96c52af8836 GIT binary patch literal 12032 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 Date: Sun, 26 Apr 2026 16:08:35 +1000 Subject: [PATCH 2/2] docs: update arch.md Marketplace identifier to cluesmith.codev-vscode Reflects the rename in the previous commit (the 'codev' slug is taken on the Marketplace by sk-aicoding.codev, so the published identifier is now cluesmith.codev-vscode). --- codev/resources/arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codev/resources/arch.md b/codev/resources/arch.md index deea1393..32adf5cf 100644 --- a/codev/resources/arch.md +++ b/codev/resources/arch.md @@ -1028,7 +1028,7 @@ codev/ # Project root (pnpm monorepo) │ └── tsconfig.base.json ├── packages/dashboard/ # @cluesmith/codev-dashboard (React SPA) │ └── src/ # React 19 + Vite 6 + xterm.js + Recharts -├── packages/vscode/ # VS Code extension (Marketplace: cluesmith.codev) +├── packages/vscode/ # VS Code extension (Marketplace: cluesmith.codev-vscode) │ └── src/ │ ├── extension.ts # Activation, command/view registration │ ├── connection-manager.ts # Singleton wrapping TowerClient