Files
Triple-C/branding/README.md
T
shadow-test d15faa923b Give the app a mark that survives being 16 pixels tall
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>
2026-08-11 12:01:39 -07:00

59 lines
2.7 KiB
Markdown

# Branding
The mark is a container with its right wall opened, so the enclosure itself is the letter **C**,
holding a `>_` prompt. Container plus shell, in one closed shape — no type inside the icon, so
nothing goes illegible when the app is 16 px tall in a taskbar.
## Files
| File | What it is |
|---|---|
| `triple-c-mark.svg` | The mark alone, transparent. Use on any ground. |
| `triple-c-mark-small.svg` | Optical variant for 32 px and below. |
| `triple-c-icon.svg` | The app icon: mark at 70% on a `#0D1117` tile, 22% corner radius. |
| `triple-c-icon-small.svg` | The app icon at small sizes — small mark, drawn at 82%. |
| `triple-c-lockup-dark.svg` | Horizontal lockup for dark backgrounds. Wordmark is outlined, so no font is needed to render it. |
| `triple-c-lockup-light.svg` | The same for light backgrounds. |
| `triple-c-icon-1024.png` | Master raster, generated. |
| `build-icons.py` | Regenerates every packaged icon from the SVGs. |
## Palette
| Role | Dark ground | Light ground |
|---|---|---|
| Frame | `#58A6FF` (`--accent`) | `#1F6FEB` (`--accent-emphasis`) |
| Prompt | `#F0821E` | `#C4610F` |
| Tile | `#0D1117` (`--bg-primary`) | — |
| Wordmark | `#E6EDF3` (`--text-primary`) | `#131C25` |
The frame and prompt colours are the app's own accent tokens from `app/src/index.css`, which is why
the icon sits on the app's chrome instead of fighting it. Orange is the only equity carried over
from the previous marks, and it is now an accent rather than a background.
## Two sources, not one
`build-icons.py` renders sizes ≥ 48 px from `triple-c-icon.svg` and sizes ≤ 32 px from
`triple-c-icon-small.svg`. At small sizes 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,
thickens the strokes and draws the mark larger inside the tile.
This matters most for `icon.ico`: Windows picks the 16 px entry for the window corner and 24/32 px
for the taskbar. The previous `.ico` contained a *single* 16 px image, which Windows then upscaled
everywhere else — the likely cause of `screenshot_for_fix/task_bar_icon_not_correct.png`. The
current one carries 16, 24, 32, 48, 64, 128 and 256, each rendered from vector rather than
downsampled from one bitmap.
## Regenerating
```bash
pip install cairosvg pillow
python3 branding/build-icons.py
```
Writes `app/src-tauri/icons/{32x32,128x128,128x128@2x,icon}.png`, `icon.ico`, `icon.icns`,
`app/public/favicon.svg` and `branding/triple-c-icon-1024.png`. Do not hand-edit those — edit the
SVG and re-run.
The lockups are committed sources, not generated: their wordmark is Liberation Mono Bold converted
to outlines (`-1.6` tracking, 44 px cap height), so re-cutting it needs the font and `fonttools`.