Skip to content

Favicon: regenerate from logo so they match#60

Merged
AdaInTheLab merged 1 commit into
mainfrom
fix/favicon-match-logo
May 9, 2026
Merged

Favicon: regenerate from logo so they match#60
AdaInTheLab merged 1 commit into
mainfrom
fix/favicon-match-logo

Conversation

@AdaInTheLab
Copy link
Copy Markdown
Collaborator

Summary

The browser-tab favicon was the original orange cartoon-fox silhouette from v2.6.1. The actual panel logo (sidebar, login) is the green geometric circuit-kitsune in a ring. Side-by-side they didn't read as the same brand.

This PR regenerates all four favicon variants (`favicon.svg`, `favicon-16x16.png`, `favicon-32x32.png`, `favicon.ico`) from `frontend/public/kitsune-command-logo-transparent.png` so they're direct downsamples of the canonical logo. Browser tab now matches the panel.

Approach

The SVG embeds a 96px raster of the logo (base64) rather than being a hand-drawn path. Why:

  • Redrawing the logo's circuit-trace detail as a vector would diverge from the source over time
  • That detail doesn't survive a faithful path-only redraw at 16–32px anyway
  • Pinning the SVG to the same raster source means every favicon variant stays in lockstep with the logo — change the logo, run the script, all four files update together

Tradeoff at 16px

The fine line-art washes out at 16×16 into a soft green silhouette in a circle. Modern browsers prefer the SVG (which scales fluidly to whatever DPI the tab renders at), so the 16px raster is mostly a historical fallback. If the tab strip looks too washed out we could hand-tune a bolder 16px variant later — but that'd diverge from the source-of-truth logo, which is the whole thing this PR fixes.

Files

File What
`frontend/public/favicon.svg` New — embeds 96px PNG of logo as base64
`frontend/public/favicon-32x32.png` Regenerated
`frontend/public/favicon-16x16.png` Regenerated
`frontend/public/favicon.ico` Regenerated, multi-frame (16/32/48)
`tools/regen-favicons.py` New — Pillow-only script, single source-of-truth regen

Test plan

  • Pull, build, deploy
  • Hard-refresh panel — browser tab favicon shows the green geometric kitsune (matching the sidebar logo)
  • Open DevTools → Network → Img filter → verify favicon.svg loads (modern browsers) or the 32x32 PNG (legacy)
  • If the logo ever changes: `python tools/regen-favicons.py` and commit the diff

🤖 Generated with Claude Code

The favicon was the original v2.6.1 orange cartoon-fox silhouette;
the panel logo (sidebar, login page) is the green geometric circuit-
kitsune in a ring. Two completely different aesthetics — looking at
the browser tab next to the panel, they didn't read as the same brand.

Regenerated favicon.svg / favicon-16x16.png / favicon-32x32.png /
favicon.ico from frontend/public/kitsune-command-logo-transparent.png
so all four favicon variants are direct downsamples of the canonical
logo source.

The SVG embeds a 96px raster of the same source instead of being
hand-drawn. Reasoning: redrawing the logo as a clean vector path
would diverge from the source over time, and the logo's circuit
traces don't survive a faithful path-only redraw at 16-32px anyway.
Pinning the SVG to the same raster source means every favicon variant
stays in lockstep with the logo — change the logo, run the script,
all four files update together.

Tradeoff at 16px: the fine circuit-trace line art washes out into
a soft green silhouette. Modern browsers prefer the SVG path (which
scales fluidly to whatever DPI the tab renders at), so the 16px
raster is mostly a historical fallback. Could tune a bolder 16px
variant later if the tab strip looks too washed out.

Tooling: tools/regen-favicons.py is the regen script. Pillow only,
no extra deps. Source path + output paths hardcoded so it just
works from repo root.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AdaInTheLab AdaInTheLab merged commit fb076bb into main May 9, 2026
2 checks passed
@AdaInTheLab AdaInTheLab deleted the fix/favicon-match-logo branch May 9, 2026 11:49
@AdaInTheLab AdaInTheLab mentioned this pull request May 9, 2026
5 tasks
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