The publish path was the dev build

vscode:prepublish ran npm run compile, which calls esbuild with no --production flag — so the shipped bundle was unminified (817KB) and a 408KB sourcemap was packaged. This PR adds a dedicated package script that builds with --production (minify on, sourcemap off) and points vscode:prepublish at it. compile is left alone as the dev build for local work and CI.

New package script; vscode:prepublish points at it; compile unchanged.

package.json · 87 lines
package.json87 lines · JSON
⋯ 63 lines hidden (lines 1–63)
1{
2 "name": "vibe-themer",
3 "displayName": "Vibe Themer",
4 "description": "🎨 AI-powered VS Code theme generator. Describe your vibe and watch a complete theme stream in live, generated by OpenAI or Anthropic models.",
5 "version": "2.1.0",
6 "publisher": "mseeks",
7 "icon": "icon.png",
8 "repository": {
9 "type": "git",
10 "url": "https://github.com/mseeks/vibe-themer"
11 },
12 "sponsor": {
13 "url": "https://github.com/sponsors/mseeks"
14 },
15 "engines": {
16 "vscode": "^1.74.0"
17 },
18 "activationEvents": [
19 "onCommand:vibeThemer.changeTheme",
20 "onCommand:vibeThemer.clearApiKey",
21 "onCommand:vibeThemer.resetTheme",
22 "onCommand:vibeThemer.selectModel",
23 "onCommand:vibeThemer.resetModel"
24 ],
25 "categories": [
26 "Themes",
27 "Other"
28 ],
29 "keywords": [
30 "theme",
31 "color",
32 "ai",
33 "openai",
34 "anthropic",
35 "claude",
36 "gpt",
37 "customization"
38 ],
39 "main": "./out/extension.js",
40 "contributes": {
41 "commands": [
42 {
43 "command": "vibeThemer.changeTheme",
44 "title": "Vibe Themer: Change Theme"
45 },
46 {
47 "command": "vibeThemer.clearApiKey",
48 "title": "Vibe Themer: Clear API Keys"
49 },
50 {
51 "command": "vibeThemer.resetTheme",
52 "title": "Vibe Themer: Reset Theme Customizations"
53 },
54 {
55 "command": "vibeThemer.selectModel",
56 "title": "Vibe Themer: Select Model"
57 },
58 {
59 "command": "vibeThemer.resetModel",
60 "title": "Vibe Themer: Reset Model Selection"
61 }
62 ]
63 },
64 "scripts": {
65 "vscode:prepublish": "npm run package",
66 "package": "npm run check-types && npm run lint && node ./esbuild.js --production",
67 "compile": "npm run check-types && npm run lint && node ./esbuild.js",
68 "check-types": "tsc --noEmit",
69 "watch": "npm run check-types && node ./esbuild.js --watch",
70 "lint": "eslint src test --ext ts",
71 "test": "node ./esbuild.test.js && node out/test.cjs"
72 },
73 "devDependencies": {
⋯ 14 lines hidden (lines 74–87)
74 "@types/node": "^20.17.58",
75 "@types/vscode": "^1.74.0",
76 "@typescript-eslint/eslint-plugin": "^7.7.1",
77 "@typescript-eslint/parser": "^7.7.1",
78 "esbuild": "^0.25.12",
79 "eslint": "^8.57.0",
80 "typescript": "^5.4.5"
81 },
82 "dependencies": {
83 "@anthropic-ai/sdk": "^0.102.0",
84 "openai": "^6.42.0",
85 "zod": "^3.25.76"
86 }

Trim the package contents

.vscodeignore excluded test sources but not the sourcemap or the dev-only dirs, so .github/** (including the stale copilot file), .vscode/**, the quickstart, and the lockfile all shipped. The new ignore list drops them. prompts/ is kept deliberately — it's read at runtime via asAbsolutePath.

The full ignore list at HEAD.

.vscodeignore · 21 lines
.vscodeignore21 lines · Text only
1node_modules/**
2.git/**
3.github/**
4.vscode/**
5src/**
6test/**
7out/test.cjs
8out/**/*.map
9*.vsix
10**/*.tsbuildinfo
11.vscode-test/**
12.vscode-test.mjs
13esbuild.js
14esbuild.test.js
15tsconfig.json
16.eslintrc.json
17.gitignore
18package-lock.json
19vsc-extension-quickstart.md
20docs/**
21CLAUDE.md