feat(icons): add gavel to the catalog #9
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/gavel-icon"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
One line, one icon.
TeamAI/Orihon's house-rules feature (ADR 0026) adds a bible section for project-wide policy — the one section agents obey as instruction rather than read as fact.
gavelis the fitting Material Symbol, the catalog doesn't carry it, and an uncatalogued name renders as an empty SVG (the ghost-icon failure the tripwire tests exist for), so Orihon currently shipsverifiedas a stand-in.What's in
Inserted between
verifiedandarrow_upward.On the path data
Upstream Material Symbols outlined 24px (viewBox
0 -960 960 960), from google/material-design-icons — the source PR #2 named forkey/smart_toy, and the same style as every neighbouring entry.I checked that rather than assuming it. My first attempt pulled from the
@material-symbolsnpm package and produced a visibly different path forverifiedthan the one already in the catalog (m346-60-76-130-151-31…vs the catalog'sm344-60-76-128-144-32…) — a different weight, and no weight from 100–700 matched. Rather than guess, I re-fetchedsmart_toyfrom google/material-design-icons and confirmed it is byte-identical to the catalog entry, which pins the source.gavelhere comes from that same path.Worth recording somewhere more durable than a commit message: the npm package and the Google repo do not agree, and only the latter matches this catalog.
Tests
275/275 green. No new test — the completeness tripwires are consuming-side scans for names used in source; an unused catalog entry has nothing to assert beyond
IconCatalog.Has("gavel"), which the existingIconCatalogTestsshape already covers generically. Orihon's own tripwire is what will exercise it once the pin lands.Merge order
Orihon's house-rules PR is not blocked on this — it ships with
verifiedand a comment. Once this merges I'll repoint Orihon's submodule to the merged commit onmainand swap the icon in a follow-up.🤖 Generated with Claude Code
Summary
Summary
Coverage
Kagaku.UI - 95.1%
🔮 fufu~ Jibril reviewed your code!
One line! One icon! A whole PR in a single keystroke — and a sibling to PR #1 (
key/smart_toy) and PR #2 (the manga-pipeline set), which I adored then and adore now. This is exactly how a catalog grows: one well-sourced path, slotted beside its neighbours, no ceremony. ♪And oh — I have to gush about the PR body for a second. You didn't just trust the
@material-symbolsnpm package. You fetchedverifiedfrom it, saw it disagreed with the catalog (m346-60-76-130-151-31…vsm344-60-76-128-144-32…), cycled through weights 100–700, found none matched, then went and re-fetchedsmart_toyfromgoogle/material-design-iconsto confirm it's byte-identical to the catalog entry — pinning the actual source. That's not "add an icon," that's provenance forensics. The knowledge-devil in me is thrilled. fufu~ ♡Verdict: ✅ Looks good to me~
Verification, because I don't take path data on faith either~
M, endsZ, 4 sub-paths each closed (M…Z×4), all command letters in the valid SVG set (M m L l H h V v Z), 36 numeric coordinates, min −796 / max +522 — all within the0 -960 960 960viewBox. No malformed commands.gavelpath appears exactly once across all 73 catalog entries. Zero duplicate keys, zero duplicate path values. The catalog was 72 → now 73.verifiedandarrow_upwardexactly as the PR body states.IconCatalogCompletenessTestsscans this lib'ssrc/for literal icon references and fails if any is uncatalogued.gavelis not used in this library's source (it's for the Orihon consumer), so the tripwire correctly has nothing to assert here — and the PR body says so plainly.IconCatalog.Has("gavel")is covered generically byEvery_catalogued_name_resolves_to_a_non_empty_pathandNames_are_non_empty_sorted_and_unique. Orihon carries its own tripwire copy, which will exercise the name once the submodule repoints. Correct call.Local checks (CI absent for head
a953835, PR just opened, no coverage bot yet): build 0 warnings / 0 errors (.NET 10), 275/275 tests pass — matches the PR body exactly.✅ What I liked~
Assert.NotNull(IconCatalog.Path("gavel"))would have added noise without value; the generic parametric coverage is the honest shape. You said so explicitly. ♡verifiedas a stand-in now, repoints later — no blocking dependency, no half-wired consumer. Clean.Fufu~ ship it. The gavel finds its home. ♪
Automated review by Jibril · 2026-07-28
CI/CD: absent for head SHA
a9538354· Local checks: build 0/0, 275/275 pass