All features

Torbie's own mark, generated rather than exported

Try the real interface

Explore this workspace.

Real Torbie UI · mock sessions
Tab bar
Loading Torbie…
Technical background

The mark is >T — a prompt closing on the crossbar of a T, whose stem is a git-branch trunk with a commit at its foot and one at the end of the bar. Every asset comes from one definition of that geometry: three SVGs, six Linux PNGs, the Windows .ico, the macOS .icns, five tray images and the docs favicon, eighteen in all. Nothing is hand-exported, so nothing can drift. Two treatments over the one geometry — theme-aware SVGs that flip with prefers-color-scheme, and a bronze duotone that every raster bakes, because a PNG cannot flip and the Windows taskbar takes its colour from the OS rather than from the app. The splash and the accent move onto the same warm-stone palette.

The problem

A fork that has become its own product cannot keep wearing the logo of the project it came from — and an icon set is the classic thing to hand-export once per size and then let drift, so that the 16px tray image and the 512px Linux icon slowly stop being the same mark.

How it works

The mark is >T: a prompt closing on the crossbar of a T, whose stem is a git-branch trunk with a commit at its foot and one at the end of the bar. Its geometry lives in one object in scripts/dev/make-icons.mjs and nowhere else. Every asset is rendered from it — three SVGs, six Linux PNGs, build/windows/icon.ico, build/mac/icon.icns, five tray images and the docs favicon, eighteen files. Nothing is hand-exported, so nothing can drift, and changing the mark means changing one path string and re-running the script.

Try it
  1. node scripts/dev/make-icons.mjs --dry-run to see what would change and by how much.
  2. node scripts/dev/make-icons.mjs to write them.
Details
  • Two treatments over one geometry. Theme-aware flips ink to cream through prefers-color-scheme and is what the SVGs ship; bronze duotone is what every raster bakes, because a PNG cannot flip and the Windows taskbar takes its colour from SystemUsesLightTheme rather than from the app.
  • Rasterized by Chromium, never ImageMagick, which mis-renders SVG strokes — the same reason the jump list draws its icons through a canvas. The rasterizer refuses any size that comes back fully transparent, which is the one failure a set of icons produces silently.
  • .ico and .icns are written by hand, because nothing in this stack encodes either. Both are verified by walking the container back: every offset in range, every declared length matching a real PNG of that size, and the ICNS walking to its declared end exactly.
  • A theme-aware SVG does flip when used as a CSS background-image — that is how the splash consumes it, and it is the context where an SVG gets no stylesheet from its parent. Measured rather than assumed: the body tone reads rgb(28, 26, 22) in light and rgb(243, 239, 231) in dark, which are the palette's ink and cream exactly.
  • The splash and the appearance.accentColor default move onto the same warm-stone palette in the same pass, so the mark and the interface around it are one set of colours rather than two.
What this does not claim
  • macOS is verified structurally and not visually, deliberately. There is no Mac here. icon.icns is walked back byte for byte and the tray images are correctly black-plus-alpha — which is what the OS needs to recolour them for the menu bar — but nobody has seen them in Finder, the Dock or the menu bar. Treat them as unchecked, never as checked and fine.
  • app/assets/activity.png is deliberately untouched: it is the Touch Bar's "this tab has activity" indicator, not a brand asset.
Source commits
UI & themingAdded 2026-09-0926 files+440 / −26 lines