Skip to content

design: refresh marketplace icon (navy shield + teal accent)#18

Merged
dmartinochoa merged 1 commit into
mainfrom
redesign/marketplace-icon
May 19, 2026
Merged

design: refresh marketplace icon (navy shield + teal accent)#18
dmartinochoa merged 1 commit into
mainfrom
redesign/marketplace-icon

Conversation

@dmartinochoa
Copy link
Copy Markdown
Member

Summary

Replaces the wireframe marketplace icon with concept B from .claude/design_system/vscode-icon.html — a solid navy shield with a teal accent border, a subtle inner ribbon for depth, and a bold teal check.

Before After
Wireframe shield: 889 B, stroke-only navy/white/teal Filled navy shield + teal accent border + teal check: 7.9 KB

Why concept B (over A / C / D)

  • A (solid teal shield + white check) — instant security-tool semantic but the most generic aesthetic (Snyk, GitGuardian, Trivy all look similar). Loses the brand duotone.
  • C (// pc monogram) — most distinctive, leans into the developer-tool aesthetic, but cold-start users have to know pc = pipeline-check before the icon tells them anything. Bad bet for a still-young extension.
  • D (pipeline stages with scan node) — most literal, brand-coherent with the activity-bar's pipeline glyph, but the three-node detail blurs at the 36×36 search-result thumbnail size.
  • B (navy shield + teal accent + teal check) — keeps the duotone (#04101a / #1ba3a9), reads instantly as a security tool, and stays legible at every size the marketplace renders.

What changed

  • media/icon-source.svg (new) — the source of truth, easy to hand-edit if the design evolves.
  • scripts/gen_icon.py — rewritten. Renders at 4× supersample (512×512) and downsamples with Lanczos for smooth edges PIL's default antialiasing can't produce. Quadratic-Bezier sampling for the shield curves; explicit round-cap ellipses for the check endpoints to match SVG's stroke-linecap="round".
  • icon.png — regenerated.
  • .vscodeignore — excludes media/icon-source.svg and .claude/** so the source SVG and design references don't ship in the .vsix.
  • .gitignore — gains .claude/ (user-added; the design references stay local).

Activity-bar icon deliberately not touched

media/pipeline-check.svg (the inverted-Y pipeline glyph) stays as-is. Different surface, different communication: the marketplace icon needs to sell "this checks something" against dozens of CI/lint extensions, the activity-bar icon needs to silhouette the panel's domain ("pipelines") in monochrome at 24×24.

Test plan

  • python scripts/gen_icon.py produces the expected icon
  • npx vsce ls confirms icon.png ships and media/icon-source.svg + .claude/** don't
  • npm run lint, npm run compile, npm test, npm run smoke — all green
  • Visual check in the marketplace listing once shipped via v0.2.1 (the listing pulls the icon from the most recently published .vsix).

Shipping

The marketplace listing's icon only updates when a new .vsix is uploaded — there's no separate "refresh icon" API. So this lands on main, then either:

  • Roll into the next feature release (v0.2.1 / v0.3.0) — the new icon ships as part of the upload.
  • Cut a v0.2.1 icon-only patch release if you want the listing to look polished now.

Recommend the second: the listing's bare-bones look (no screenshots, retired badges till PR #17 merges, generic icon) is the highest-leverage marketplace-conversion improvement. Even a one-line bump release ships the new icon to every user who lands on the listing.

🤖 Generated with Claude Code

…eck)

Replaces the wireframe shield with a solid navy fill, a teal accent
border, a 25%-opacity inner ribbon for depth, and a thick teal check
with round caps. The shape stays brand-coherent with the existing
galleryBanner.color (#04101a) and matches concept B from
.claude/design_system/vscode-icon.html.

Why B over A/C/D
- A (solid teal shield) reads "security check" but loses the duotone
  brand palette and looks like every other security tool.
- C (// pc monogram) is the most distinctive but cold-start users
  have to know "pc = pipeline-check" before the icon tells them
  anything — bad bet for a still-young extension.
- D (pipeline stages with scan node) is the most literal but the
  three-node detail blurs at the 36×36 search-result thumbnail size.
- B keeps the duotone, reads instantly as a security tool, and stays
  legible at every size the marketplace renders.

Implementation
- media/icon-source.svg: new file. The source of truth, easy to edit
  by hand if the design needs to evolve.
- scripts/gen_icon.py: rewritten. Renders at 4× supersample
  (512×512) and downsamples with Lanczos for smooth edges that
  PIL's default antialiasing can't produce. Quadratic-Bezier
  sampling for the shield curves; explicit round-cap ellipses on
  the check endpoints to match SVG's stroke-linecap="round".
- icon.png: regenerated. 7.9 KB.
- .vscodeignore: excludes media/icon-source.svg and .claude/** so
  the source SVG and design references don't ship in the .vsix.

Activity-bar icon (media/pipeline-check.svg, the inverted-Y pipeline
glyph) deliberately stays as-is — different surface, different
communication need. The marketplace icon says "this checks
something"; the activity-bar icon says "this is about pipelines".

Other design surfaces audited and found OK as-is: galleryBanner.color
(navy, matches), status bar codicon ($(shield), matches), Findings
tree severity icons (standard codicons, intentional VS Code
convention), viewsWelcome state (polished in ux-polish PR).

Also: .gitignore gains .claude/ (the user-added design references
stay local; they're not shipped or git-tracked).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

Warning

Rate limit exceeded

@dmartinochoa has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 17 minutes and 20 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9bfcc30f-45f4-47e8-9ebd-7e62a92f7a4e

📥 Commits

Reviewing files that changed from the base of the PR and between 49b5a68 and b4fb338.

⛔ Files ignored due to path filters (2)
  • icon.png is excluded by !**/*.png
  • media/icon-source.svg is excluded by !**/*.svg
📒 Files selected for processing (3)
  • .gitignore
  • .vscodeignore
  • scripts/gen_icon.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch redesign/marketplace-icon

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@dmartinochoa dmartinochoa merged commit 4507a25 into main May 19, 2026
11 checks passed
@dmartinochoa dmartinochoa deleted the redesign/marketplace-icon branch May 19, 2026 11:05
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.

1 participant