Skip to content

feat(ui): repoint the favicon set at the brand-red C - #178

Merged
quickbeard merged 1 commit into
mainfrom
favicon-brand-red
Aug 10, 2026
Merged

quickbeard merged 1 commit into
mainfrom
favicon-brand-red

Conversation

@quickbeard

Copy link
Copy Markdown
Owner

The favicon was the last surface still drawing the mark in cyan. It's now the same red C as everything else, generated from the same geometry as the app icon.

Why it was cyan

Not arbitrary — it was pinned to something that moved. PR #10 originally set both the theme accent and the favicon to #EE0033, then a later commit in the same PR ("hub-style CODEV banner, accent becomes banner cyan") moved the default-theme secondary and the favicon together to #00cdcd so the mark matched the TUI banner.

The banner has since moved to the navy/red wordmark, and the cyan accent is gone: #009999 appears nowhere in the tree, and #00cdcd survived in exactly one source file — favicon-v3.svg. The favicon's anchor was removed and the favicon wasn't moved with it.

On desktop the two sat side by side:

Surface Was Now
Dock / taskbar / installer red C on white unchanged
Window / tab favicon cyan C on #131010 red C on white
Notifications (since #172) cyan C on #131010 red C on white

What changed

generate-icons.ts now emits the favicon set too, from the geometry it already owns. One generator for both sets is the point: these drifted precisely because they had separate sources.

  • favicon-v3.svg — hand-written 512-unit source of the same 4×5 grid, one-unit stroke, unit 60, corner radius 114.5
  • favicon-96x96-v3.png, favicon-v3.ico (16/24/32/48/64/128/256) — rounded tile, so they read as an app icon
  • apple-touch-icon-v3.png (180), web-app-manifest-192x192.png, web-app-manifest-512x512.png — square, full-bleed: iOS and PWA launchers apply their own mask, and a pre-rounded icon leaves transparent corners that render black

generate-icons.ts also skips iconutil when not on macOS now, leaving the committed .icns untouched, so everything else regenerates on any platform. Re-running it produced byte-identical icons/{dev,beta,prod} output, so the desktop icons are unaffected.

The trade-off, stated plainly

Cyan was doing real work at 16px: on #131010 it measures about 9.4:1, where red on white is about 4.2:1. The tab icon is genuinely less punchy than it was. Taken deliberately so that every surface draws one mark in one color rather than optimizing the tab in isolation.

site.webmanifest is untouched — its theme_color / background_color (#080808) describe the PWA's chrome and splash screen, not the icon, so a white-tiled icon on a dark splash is the normal arrangement.

Verification

  • desktop typecheck, ui tests pass
  • All five rasters inspected: correct mark, correct tile treatment, correct dimensions
  • favicon-v3.ico verified as a 7-entry Windows icon resource
  • packages/app/public symlinks confirmed resolving to the new bytes

🤖 Generated with Claude Code

PR #10 pinned the favicon to what was then the TUI banner accent, moving
the mark and the default-theme secondary together from #EE0033 to the
banner cyan #00cdcd. The banner has since moved to the navy/red wordmark
and the cyan accent is gone, leaving the favicon as the only #00cdcd in
the tree. On desktop the mismatch was visible: the dock icon is the red
C on white while the window and (since #172) notification icons were the
cyan C on near-black.

The set is now generated from the same geometry as the app icon by
generate-icons.ts, so the dock icon, the tab, notifications, the
`codev --mini` badge and the landing page icon are one mark in one red.
favicon-v3.svg is the hand-written 512-unit source of that geometry.

The tab and .ico icons keep the rounded tile so they read as an app
icon. apple-touch-icon and the two maskable manifest icons are square
and full-bleed: iOS and PWA launchers apply their own mask, and a
pre-rounded icon leaves transparent corners that render black.

Known cost: on a dark tile cyan was ~9.4:1 at 16px against red's ~4.2:1,
so the tab icon is less punchy than it was. Accepted so the brand reads
consistently. site.webmanifest is untouched — its theme_color and
background_color describe the PWA's chrome and splash, not the icon.

generate-icons.ts also skips iconutil off macOS now, leaving the
committed .icns alone, so the rest of the assets regenerate anywhere.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@quickbeard
quickbeard merged commit 8be9768 into main Aug 10, 2026
0 of 5 checks passed
@quickbeard
quickbeard deleted the favicon-brand-red branch August 13, 2026 01:15
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