feat(icons): swap_horiz — the swap-who-stands-here action #17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/swap-horiz-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?
Adds the Material Symbols
swap_horizglyph (outlined, official path data from the material-design-icons repo,0 -960 960 960viewBox) toIconCatalog— the icon for Kagura's CG cast recast action (ADR 0055's "recast": swap a cast member's staged character without losing the shot-level work). A pinned test guards the name so a catalog regression can't turn the button back into a ghost (the issue #146 failure mode).dotnet test, Release).Same shape as #16 (content_copy). Kagura's recast PR pins this branch head in its submodule bump; after merge the pin moves to main.
Summary
Summary
Coverage
Kagaku.UI - 95.1%
🔮 fufu~ Jibril reviewed your code!
Ooh, an icon PR~ The tiniest kind of change — and yet these little glyphs are exactly where silent ghosts like to hide (issue #146 still gives me nightmares, you know~ ♡). So I checked everything. I fetched Google's official
swap_horiz_24px.svg(outlined) live from the material-design-icons repo and your path data is byte-identical — flawless provenance, fufu~ I walked the path properly too, relativem/h/vcommands and all: 2 subpaths, both closed, every point inside0 -960 960 960. 75 → 76 entries, zero duplicate names, zero duplicate paths. And your pinned test? I deleted the catalog entry in my own clone and watchedSwap_horiz_resolves_to_a_pathgo red, then restored it byte-identical and watched it go green — a genuine directional pin, not a tautology~ ♪ 301/301 tests pass in Release, matching your PR body exactly.Verdict: ⛔ I can't let this pass~ ♡
⛔ These need fixing before I'm satisfied~
upload_file, which drops it inside the "The manga-pipeline set (Orihon Phase 1)" comment group — butswap_horizis a Kagura event-cg-variations icon (per your own PR body), not a manga-pipeline one. That banner names its scope precisely — "page intake, page-kind tabs, and the translation/cleaning/typesetting stage markers" — and a swap-arrow for CG cast recasting is none of those. Any future reader scanning from that banner down will misattribute the icon to the wrong story. Every sibling did it differently: #9 (gavel) landed in the bannerless core block betweenverifiedandarrow_upward; #16 (content_copy) — the PR you call "same shape" — landed in the core block aftercomputer. This is the first icon ever to silently join a story banner it doesn't belong to.Fix: move the entry up into the bannerless core block (next to
content_copywould be poetic~), or give it a one-line comment naming its story, audio-arc-banner style. One line, and the catalog tells the truth again~ ♡✅ What I liked~
swap_horizhas zero literal refs in this lib'ssrc/(it's a Kagura consumer icon), soIconCatalogCompletenessTestsrightly has nothing new to assert — the same honest shape as gavel and content_copy.Automated review by Jibril · 2026-09-01
CI/CD: absent for head SHA
eb85bf5· Local checks: build clean, 301/301 pass (Release), mutation probe RED/greenfufu~ right call, good catch. I never even saw the banner when I appended.
Fixed in
0538774: the entry moved up into the bannerless core block, right aftercontent_copy— the other cross-consumer late arrival. The manga-pipeline group is untouched again, same 76 entries, same byte-identical path data, 301/301 green (Release).The Kagura submodule pin follows this branch head, so it picks the fixup up automatically.
Small correction to my last line: submodule pins are commits, not branches — the Kagura pin does NOT move on its own. I've pushed the explicit bump: Kagura feat/cg-cast-recast is now pinned to
0538774(5530212 on the Kagura side).🔮 fufu~ Jibril reviewed your code!
Round 2~ And this is exactly what I wanted to see, fufu~ ♡ One surgical commit, one line moved, nothing else disturbed. You even took the poetic placement —
swap_horiznow sits right aftercontent_copy, the two cross-consumer late arrivals keeping each other company in the bannerless core block. I checked every millimeter of it, of course~Verdict: ✅ Looks good to me~
Verified this round (
0538774)upload_file) and the new one (aftercontent_copy); incremental diff is exactly+1/−1inIconCatalog.cs, nothing else touched.3d794b2;upload_filecloses the group cleanly, no stray Kagura icon inside. The catalog tells the truth again~ ♪swap_horizexactly.Namesordinal sort still lands it betweensmart_toyandtimeline.Swap_horiz_resolves_to_a_pathis byte-identical to round 1, where I mutation-probed it RED→green by deleting the catalog entry in my own clone. No re-probe needed for a placement-only change — the dictionary key is all the test reads.✅ What I liked~
The Kagura submodule pin follows this branch head, so the recast button gets its swap arrows the moment this merges. Ready~ ♡
Automated review by Jibril · 2026-09-01
CI/CD: stale for head SHA
0538774(coverage bot coverseb85bf5) · Local checks: Release build, 301/301 pass