Skip to content

design: unify activity-bar icon to the shield motif (all-shields)#24

Merged
dmartinochoa merged 1 commit into
mainfrom
design/all-shields-activity-bar
May 19, 2026
Merged

design: unify activity-bar icon to the shield motif (all-shields)#24
dmartinochoa merged 1 commit into
mainfrom
design/all-shields-activity-bar

Conversation

@dmartinochoa
Copy link
Copy Markdown
Member

Summary

Acts on the maintainer's "all-shields" decision from the post-v0.2.0 walk-through. The marketplace icon (concept B — navy shield + teal check) and the activity-bar icon (inverted-Y pipeline glyph) now share one motif.

What changed

Replaces `media/pipeline-check.svg` with a monochrome shield silhouette + check at viewBox 24×24, using `currentColor` so VS Code's activity-bar tinting (gray inactive / foreground hover / white active) still works.

Why monochrome, not colour

A custom hex would fight the activity-bar tint — the slot inverts the icon based on selection state. Every theme that themes the activity bar (custom or stock) repaints `currentColor`. Adding brand colours here looks wrong on at least half of all themes.

Why stroke-width 1.5

Matches every other VS Code codicon at 24×24. Uniform visual weight; no two-thicknesses-fighting-each-other problem.

The shape of the change

```diff

  • inverted-Y pipeline glyph (top + bottom-left + bottom-right nodes
    connected with currentColor strokes; top + bottom-right filled,
    bottom-left hollow)
  • shield outline (5-point with sweeping bottom curve) + check inside,
    both monochrome via currentColor
    ```

Identity now compounds

Surface Look
Marketplace listing (`icon.png`) Solid navy fill, teal accent border, inner ribbon, teal check.
Activity bar (`pipeline-check.svg`) Monochrome shield outline + check, themed via `currentColor`.

Same motif, two materialisations. Users seeing the marketplace shield then landing in the editor's activity bar see a sibling icon, not a stranger.

Test plan

  • `npm run lint` clean
  • `npm run compile` clean
  • `npm test` — 129 tests pass (no test relies on the icon shape)
  • `npm run smoke` clean
  • Manual smoke under F5: open the sample-workflow fixture; verify the new shield glyph reads correctly in the activity bar at 24×24, both light and dark theme. Confirm tinting works (drag focus on/off the activity-bar slot, watch the icon respond).

Notes

  • No code change beyond the SVG. No `.vsix` size change worth measuring.
  • If you'd like the activity-bar shield to carry the brand teal as a subtle accent (e.g. tint just the check rather than the whole glyph), that's possible via a separate `` with an explicit fill — but it costs the cross-theme tint guarantee. Worth a separate PR if we want to revisit.

🤖 Generated with Claude Code

The marketplace icon (concept B from .claude/design_system) is a
navy shield with a teal check; the activity-bar icon was still the
old inverted-Y pipeline glyph. Two surfaces, two motifs — fine in
isolation but the visual identity didn't compound. The maintainer's
call: all-shields.

Replaces media/pipeline-check.svg with a monochrome shield
silhouette + check, using `currentColor` so VS Code's activity-bar
tinting (gray for inactive, foreground on hover, white on active)
still works. No brand colours here on purpose — a custom hex would
fight the activity-bar tint and look wrong on every theme.

Stroke-width 1.5 matches every other codicon at 24×24; uniform
visual weight, no two-thicknesses-fighting-each-other problem.

The two surfaces now share a single visual identity:
- Marketplace (icon.png) — solid navy fill, teal accent border,
  inner ribbon, teal check.
- Activity bar (pipeline-check.svg) — monochrome shield outline +
  check, themed via currentColor.

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

coderabbitai Bot commented May 19, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • media/pipeline-check.svg is excluded by !**/*.svg

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 66704868-09b7-4cc4-8140-7f408eff1264

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch design/all-shields-activity-bar

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 e9cc4bd into main May 19, 2026
11 checks passed
@dmartinochoa dmartinochoa deleted the design/all-shields-activity-bar branch May 19, 2026 23:46
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