New app icon: a mark that survives being 16 pixels tall #20

Merged
jknapp merged 2 commits from logo-refresh into main 2026-08-11 19:04:49 +00:00
Owner

The icon is now a container with its right wall opened, so the enclosure itself is the letter C, holding a >_ prompt — the two things Triple-C is, in one closed shape. It carries no type, so nothing goes illegible when the shell draws it small, and it uses the app's own accent tokens (--accent, --bg-primary) instead of a saturated orange field that fights the chrome behind it. Orange is kept, as the prompt.

The taskbar bug

icon.ico contained a single 16×16 image, which Windows was upscaling into the taskbar and every other slot — the likely cause of screenshot_for_fix/task_bar_icon_not_correct.png. It now carries 16, 24, 32, 48, 64, 128 and 256, each rendered from vector rather than downsampled from one bitmap.

Entries at 32 px and below come from a separate optical source: at that size the cursor bar closes up against the chevron and a 12 px frame stroke resamples to a grey smear, so the small variant drops the cursor, widens the mouth and thickens the strokes. Every frame was extracted back out of the built .ico and checked by eye.

Also in here

  • Adds the icon.icns that macOS bundles have been building without, and lists it in tauri.conf.json.
  • Points the favicon at our own mark — it was pointing at /vite.svg, which does not exist in app/public/.
  • branding/ holds the SVG sources, the light/dark lockups (wordmark converted to outlines, so no font dependency), a palette reference, and build-icons.py, which regenerates every packaged raster from the SVGs.
  • The two previous marks move to branding/archive/ with a note on each.

Tests

npm run test — 348 passed. icon-config.test.ts gains two cases: one asserting the .ico still carries its small sizes, so the single-size regression cannot come back silently, and one asserting the .icns exists, has the right magic bytes and is bundled.

Merging this triggers a build — worth confirming the Windows taskbar icon on the artefact.

🤖 Generated with Claude Code

The icon is now a container with its right wall opened, so the enclosure itself is the letter **C**, holding a `>_` prompt — the two things Triple-C is, in one closed shape. It carries no type, so nothing goes illegible when the shell draws it small, and it uses the app's own accent tokens (`--accent`, `--bg-primary`) instead of a saturated orange field that fights the chrome behind it. Orange is kept, as the prompt. ### The taskbar bug `icon.ico` contained a **single 16×16 image**, which Windows was upscaling into the taskbar and every other slot — the likely cause of `screenshot_for_fix/task_bar_icon_not_correct.png`. It now carries 16, 24, 32, 48, 64, 128 and 256, each rendered from vector rather than downsampled from one bitmap. Entries at 32 px and below come from a **separate optical source**: at that size the cursor bar closes up against the chevron and a 12 px frame stroke resamples to a grey smear, so the small variant drops the cursor, widens the mouth and thickens the strokes. Every frame was extracted back out of the built `.ico` and checked by eye. ### Also in here - Adds the `icon.icns` that macOS bundles have been building without, and lists it in `tauri.conf.json`. - Points the favicon at our own mark — it was pointing at `/vite.svg`, which does not exist in `app/public/`. - `branding/` holds the SVG sources, the light/dark lockups (wordmark converted to outlines, so no font dependency), a palette reference, and `build-icons.py`, which regenerates every packaged raster from the SVGs. - The two previous marks move to `branding/archive/` with a note on each. ### Tests `npm run test` — 348 passed. `icon-config.test.ts` gains two cases: one asserting the `.ico` still carries its small sizes, so the single-size regression cannot come back silently, and one asserting the `.icns` exists, has the right magic bytes and is bundled. Merging this triggers a build — worth confirming the Windows taskbar icon on the artefact. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jknapp added 2 commits 2026-08-11 19:03:54 +00:00
The icon is now a container with its right wall opened, so the enclosure
itself is the letter C, holding a >_ prompt: the two things the app is,
in one closed shape. It carries no type, so nothing goes illegible when
the shell draws it small, and it uses the app's own accent tokens rather
than a saturated orange field that fights the chrome behind it.

icon.ico contained a single 16x16 image, which Windows was upscaling into
the taskbar and every other slot — the likely cause of the artefact in
screenshot_for_fix/. It now carries 16, 24, 32, 48, 64, 128 and 256, each
rendered from vector rather than downsampled from one bitmap, and the
entries at 32 and below come from a separate optical source: at that size
the cursor bar closes up against the chevron, so the small variant drops
it, widens the mouth and thickens the strokes. A test asserts the .ico
keeps its small sizes so this cannot regress silently.

Also adds the icon.icns that macOS bundles have been building without,
points the favicon at our own mark instead of the missing /vite.svg, and
puts the SVG sources, the lockups and the regeneration script in
branding/.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Archive the marks the new icon replaces
Build App (Preview) / compute-version (pull_request) Successful in 3s
Build App (Preview) / create-release (pull_request) Successful in 1s
Build App (Preview) / build-macos (pull_request) Successful in 2m40s
Build App (Preview) / build-windows (pull_request) Successful in 5m29s
Build App (Preview) / build-linux (pull_request) Successful in 5m41s
Build App (Preview) / prune-previews (pull_request) Successful in 1s
4c962ebd9c
Neither is referenced by the app or the build; branding/archive/README.md
says what each one was and why it did not survive the sizes an app icon
is actually drawn at.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jknapp merged commit fa82d54afa into main 2026-08-11 19:04:49 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: CyberCoveLLC/Triple-C#20