diff --git a/README.md b/README.md new file mode 100644 index 0000000..d7b7d90 --- /dev/null +++ b/README.md @@ -0,0 +1,131 @@ +# 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](https://github.com/bdeshi/shannoncoat/releases/latest). +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//app` and `~/.shannoncoat/data//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/.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. + +```bash +./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. diff --git a/VERSION b/VERSION index d169b2f..c5d54ec 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.8 +0.0.9