Skip to content

Add a Marketplace icon - #28

Open
Chirag6722 wants to merge 1 commit into
thegoodengineer:mainfrom
Chirag6722:feat/marketplace-icon
Open

Add a Marketplace icon#28
Chirag6722 wants to merge 1 commit into
thegoodengineer:mainfrom
Chirag6722:feat/marketplace-icon

Conversation

@Chirag6722

@Chirag6722 Chirag6722 commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Fixes #4, per your direction: the existing glyph at 128x128 PNG, wired to the top-level icon field, with media/** kept out of .vscodeignore so it ships.

package.json had no top-level icon, so the Extensions view, the VSIX install listing and the Marketplace page all fell back to the grey placeholder. media/icon.svg was wired only to viewsContainers, which is the Activity Bar glyph and nothing else, and the Marketplace does not accept SVG for this field.

media/icon.png is the same shape as icon.svg: the disc, with the checkmark knocked out of it rather than painted on, which is what that path's fill-rule="evenodd" does. Knocking it out means the check picks up whatever is behind it, so it stays legible on a light or a dark Marketplace theme instead of being tuned for one. The green is the one the sidebar already uses for a command that exited 0, so the icon says the same thing the UI does.

How it was made, since this matters if you ever edit the SVG. There is no SVG rasteriser available on this machine, so rather than eyeball a redraw I took the path data straight out of icon.svg and replayed it: disc at cx=12, cy=12, r=10, then the checkmark polygon (10.8,16.4) (6,11.6) (7.44,10.16) (10.8,13.52) (17.76,6.56) (19.2,8), which is that path's m/l commands resolved to absolute coordinates in the 24-unit viewBox. Rendered 8x and downsampled with LANCZOS for clean edges. So it is the same geometry, not an approximation of it. I did not commit the generator, since a Python/Pillow script sits oddly in a TypeScript repo, but the recipe is here in the history if you need to regenerate it.

Verified with vsce ls, which lists media/icon.png in the package and validates the icon field as it goes (it refuses an SVG there, so a clean run is an actual check):

README.md
package.json
LICENSE
media/icon.svg
media/icon.png
out/types.js
out/treeProvider.js
out/store.js
out/recorder.js
out/extension.js

If the colour or the crop is not what you want, that is a two-minute change and I would rather you have the icon you want than the one I picked.

Fixes thegoodengineer#4

package.json had no top-level icon, so the Extensions view, the VSIX
install listing and the Marketplace page all fell back to the default
grey placeholder. media/icon.svg was wired only to the viewsContainers
contribution, which is the Activity Bar glyph and nothing else, and the
Marketplace does not accept SVG for this field.

media/icon.png is the same glyph at 128x128: the disc from icon.svg with
the checkmark knocked out of it, in the green the sidebar already uses
for a command that exited 0. The check is knocked out rather than painted
on, exactly as the SVG's fill-rule="evenodd" does it, so it reads on a
light or a dark Marketplace theme.

media/** is deliberately absent from .vscodeignore so the file ships.
Confirmed with vsce ls, which lists media/icon.png in the package and
validates the icon field on the way past (it rejects SVG there, so a
clean run is a real check, not just a listing).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

package.json has no icon, so the extension shows a placeholder everywhere it is listed

1 participant