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.
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)
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>
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 main2026-08-11 19:04:49 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.icocontained a single 16×16 image, which Windows was upscaling into the taskbar and every other slot — the likely cause ofscreenshot_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
.icoand checked by eye.Also in here
icon.icnsthat macOS bundles have been building without, and lists it intauri.conf.json./vite.svg, which does not exist inapp/public/.branding/holds the SVG sources, the light/dark lockups (wordmark converted to outlines, so no font dependency), a palette reference, andbuild-icons.py, which regenerates every packaged raster from the SVGs.branding/archive/with a note on each.Tests
npm run test— 348 passed.icon-config.test.tsgains two cases: one asserting the.icostill carries its small sizes, so the single-size regression cannot come back silently, and one asserting the.icnsexists, 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