Draw the real icon, and give the menu bar its own glyph

Replaces the placeholder coat silhouette with the app's actual subject:
Claude's asterisk above a rack of overcoats, on Claude's own coral. The
wardrobe is the app in one picture — several coats to pick between, one
currently worn.

The menu bar stops scaling the app icon down and draws its own glyph
instead. At 18pt the icon's three coats, lapels and pockets collapse into
a smudge, and its colours ignore the menu bar entirely. The glyph is a
template image, so macOS tints it for light and dark and for the
open-menu inversion, and re-tints it itself when the theme changes. That
also drove its shape: six rays rather than eight, because at that size
eight have under a pixel between arms and merge into a blob.

The coloured dots beside it don't get that for free — ProfileColor picks
a brightness for the current appearance at the moment it's asked, and the
title is only rebuilt when profiles start or stop. Observing
effectiveAppearance rebuilds it, so a theme switch doesn't leave dots
mixed for the old appearance sitting in the menu bar.

Everything is still drawn from vector paths rather than exported from a
design tool, so each size can be tuned — small sizes need fatter strokes
than a straight downscale gives — and nothing binary but the derived
assets is committed. The README gains a hero banner, composed from the
generated icon so it can't drift out of step with it.

About gains the tagline under the icon, names itself in the description
rather than opening with a bare verb, and drops the author line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-05 21:06:58 +06:00
co-authored by Claude Opus 5
parent ba13456121
commit 83f6e73403
9 changed files with 391 additions and 95 deletions
+7 -3
View File
@@ -1,6 +1,4 @@
# shannoncoat
*which coat will Claude wear today?*
![shannoncoat — which coat will Claude wear today?](docs/hero.png)
Run multiple isolated Claude profiles on macOS — each one its own Claude Desktop
**and** its own paired Claude Code setup — and tell their windows apart at a
@@ -129,3 +127,9 @@ One thing worth setting up: an unsigned local build gets a new code identity
every time, which silently invalidates its Accessibility grant on each rebuild.
`.env.example` walks through creating a self-signed certificate once so the
permission survives.
---
shannoncoat started as the shell script in the first commit, written by hand.
Claude Code built the app out of it — most of the Swift, the icon, and this
README — working from direction, review and testing.