Files
shannoncoat/README.md
T
Claude Opus 5andbdeshi cf7d9a4583 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.
2026-08-05 21:06:58 +06:00

5.2 KiB
Raw Blame History

shannoncoat — which coat will Claude wear today?

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 glance.

Your normal Claude install is left completely alone. It stays exactly as it is and keeps working normally; shannoncoat only adds profiles alongside it.

A menu-bar item allows quick switching and profile management.

Requirements

  • macOS 13 or later
  • Claude Desktop

Install

  1. Download shannoncoat.app.zip from the latest release.
  2. Unzip it and move shannoncoat.app to /Applications or ~/Applications.
  3. Open it. macOS will block the first launch, because the app isn't notarized. Go to System Settings → Privacy & Security, find the blocked item, and click Open Anyway.
  4. When prompted, grant Accessibility. The window tags are drawn from Accessibility data and won't appear without it.

First run

With nothing running, shannoncoat offers a list of your profiles and starts whichever you tick. You can start several at once.

Everyday use

The menu bar shows a coloured dot per running profile — dot and name when only one is up, dots alone when there are more (hover for the names).

Open the menu and:

  • Click a profile to switch to it. Every other running profile is quit first, so you end up with just that one.
  • Shift-click a profile to open it alongside whatever is already running.
  • Click a running profile to bring its window to the front.

A marks the profile you last switched to. Close Profile quits one profile; Quit Claude quits all of them and leaves shannoncoat running. Manage Profiles… opens the main window.

Quitting Claude by hand, from the Dock, or via Force Quit is picked up within about a second — the menu bar always reflects what is actually running.

Window tags

Each managed Claude window carries a small tag in that profile's colour, so two otherwise identical windows are easy to tell apart.

Drag a tag anywhere on its window; each profile remembers where you put its own. If you'd rather have something smaller, Settings → Window tag → Colored dot replaces the name chip with a plain dot.

Profiles

default is your real, untouched Claude install. shannoncoat can start and stop it but never manages it, so it gets no tag and can't be deleted.

To add a custom isolated profile, open Manage Profiles… → + and enter a name. The directories are optional — leave them blank and the profile gets ~/.shannoncoat/data/<name>/app and ~/.shannoncoat/data/<name>/code. Point them anywhere you like if you'd rather keep a profile's data with a project.

Selecting a profile shows both paths, ready to copy.

Each profile is a small JSON file at ~/.shannoncoat/<name>.json, named after the profile. Two profiles may not share a directory — that would silently merge their Claude sessions, so shannoncoat refuses to start and tells you which files collide.

Deleting a profile removes only that pointer file. Its Claude data stays on disk, so you can recreate the profile later and pick up where you left off. If it's running, it's quit first.

Settings

  • Launch at Login — start shannoncoat automatically.
  • Window tag — name chip or coloured dot.
  • Automatically check for updates — once a day at most.

Updates

shannoncoat compares its version against the one published on GitHub. The automatic check posts a quiet notification; Check for Updates… in Settings reports either way.

It never replaces itself. When a new version exists, download it from the releases page and swap the app in yourself.

Troubleshooting

The window tags don't appear. Almost always Accessibility. Check System Settings → Privacy & Security → Accessibility.

If shannoncoat is listed and already ticked but the tags still don't show, select it, remove it with , then add it back. This happens after replacing the app with a build that has a different code signature; the old entry stays visible but no longer applies, and toggling it off and on won't fix it.

Claude Desktop can't be found. shannoncoat looks in /Applications and ~/Applications. If yours is somewhere else, you'll be asked to locate it the first time you start a profile.

A profile won't quit. Claude was asked to quit and declined — usually its own "unsaved work" or "still generating" dialog. shannoncoat deliberately waits rather than killing Claude underneath it. Answer the dialog.

Build from source

Requires the Xcode Command Line Tools.

./build.sh

The app is written to .build/shannoncoat.app; copy it to /Applications or ~/Applications.

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.