Repository navigation
Releases
Buddy 1.1.0
SHA-256 of Buddy-1.1.0.dmg:
7f240eb9302b7a53d38fd4556b7b60ce9d7c5b797ccb80fa1cc9deccf64635c7
The DMG is signed with a self-signed certificate, not notarized. On first launch, open System Settings → Privacy & Security and click Open Anyway.
Added
- OpenCode 2 support: one buddy for each OpenCode session, with working, done and error states, Jump to its terminal, and permission and question cards. Settings → Hooks & Extension → Install OpenCode plugin writes
buddy.jsto OpenCode's plugins folder. Uninstall Buddy… removes it. Plan usage, token cost and Next prompt stay Claude Code only.
Fixed
- Jump raises the existing Cursor or VS Code window of a multi-root workspace. It no longer opens a new window. Install companion extension 0.1.5 for saved
.code-workspacefiles.
Changed
- Notification banners only show while the buddies are hidden, the screen is asleep or you are away, because the buddy already tells you. Settings → Notifications → Also while the buddies are on screen brings them back.
sha256: 7f240eb9302b7a53d38fd4556b7b60ce9d7c5b797ccb80fa1cc9deccf64635c7
Buddy 1.0.0
SHA-256 of Buddy-1.0.0.dmg:
12ad063bb9acb8c5a198ae42ce0f0e0aeac18bce5d8550208ed3de2f3df652ff
The DMG is signed with a self-signed certificate, not notarized. On first launch, open System Settings → Privacy & Security and click Open Anyway. After the update, click Install hooks again in Settings → Hooks & Extension.
Added
- Settings → General → Show plan usage: a "5h 23% · 7d 41%" chip with the claude.ai 5-hour and 7-day limits in the bubble, the tooltip, the menu and the palette, through a status line bridge that keeps your own status line command working, plus one notification when a window passes 90%. Off by default.
- Universal binary: Buddy runs native on Apple silicon and Intel Macs.
StopFailurehook: a turn that ends with a rate limit or another API error shows the error state and the reason on the card. Click Install hooks again after the update.PreCompactandPostCompacthooks: the card and the palette show "Compacting…" while Claude Code compacts the context. Click Install hooks again after the update.- Settings → General → Keep the Mac awake while a session works: stops idle sleep while a visible local session starts or works. Off by default.
- A session named with
claude --nameor/renameshows that name on the tag, the cards, the menu, the palette and the digest. - Next prompts reach Claude Code builds that use the per-user inbox folder (
/tmp/cc-socks-<uid>). - Settings → About links to Releases, Issues and Discussions, and Check for updates… opens the releases page in the browser.
- Jump shows a message when the session runs inside tmux or screen and the terminal cannot be raised.
- Homebrew cask:
livecheckfinds new releases; the caveat explains the self-signed signature. - Docs: a troubleshooting table in INSTALL.md, how to verify the DMG hash, the signing facts, and a Limits section in the README.
Changed
- Warp and Ghostty show by name in the menu and the cards.
- Settings → Hooks & Extension: Install hooks is disabled until Buddy runs from Applications. A translocated or Downloads path dies with the next launch.
- A second copy of Buddy brings the running one to the front, or shows an alert, instead of exiting without a word.
- Settings → Permissions: Accessibility shows "Not granted" after the first prompt, and Request opens the Accessibility pane.
- Companion extension: reconnects within 5 s while Buddy is not running yet, and refuses to type when
claudeis not the foreground process of the shell. - Build:
build-app.shfails when the companion extension is not built. CI has apackagejob that runs the build and DMG scripts. - Uninstall Buddy… also deletes the
settings.json.buddy-backup-*files in~/.claude. The remote uninstall does the same.
Fixed
- A compact (
/compact, auto-compact) keeps the session state. Before, the buddy jumped back to "starting". - A second call of the same tool no longer closes the open permission card. The card waits for its own call.
- A resume onto an ended session id leaves one buddy, not a live one next to an idle one.
- A late permission notification after the terminal already answered no longer sets the buddy to "needs permission".
- Subagents that start after their Agent call returned get the right label.
- The buddies stay inside the screen when a display connects, disconnects or changes resolution.
- Esc leaves the next-prompt field and keeps the typed text. Before, it closed the card and dropped it.
- Buddies keep walking and sessions keep reaping while a menu is open.
- Settings → General: a stale "impatient" or "away" value snaps to a picker choice, so the picker is never blank.
- The hook socket is closed only after its read source is cancelled, and a closed card frees its view.
Security
- Settings backups that can hold API keys are removed on uninstall (app and remote).
- The DMG carries its own code signing identifier.
Buddy 0.5.1
Changed
- The done card opens on the done view, not on Activity, when the session ran subagents.
- A done buddy shows a green check badge. Before, it showed a red count.
- The Crate and Bee hold a green check when they are done.
- A buddy throws a short confetti burst out of its frame when Claude finishes. Reduce Motion turns it off.
Buddy 0.5.0
Changed
- A done buddy stays done until your next prompt. Before, it went idle about 60 s after Claude finished.
- The done card opens by itself when a session finishes a turn. It takes no keyboard focus. It closes after 8 seconds if you do not touch it.
- The done sprite plays once and holds its last frame while the session stays done.
Buddy 0.4.0
Added
- Sounds for permissions, questions, done, errors and more (Settings → Sounds; original chiptune set or macOS sounds).
- A hidden Bee character (easter egg).
- Settings → General → Show cost on the buddy's name tag (off by default): "project · $0.31".
- ForgeBee subagents fly as bee minis once the Bee is found (Settings → General → Fun extras).
Changed
- Homebrew: the
forbee-dev/tapcask is published. Runbrew trust forbee-dev/taponce beforebrew install --cask forbee-dev/tap/buddy. - After "Hide Bee again", only
buzzin the palette finds the Bee again. SSH projects never unlock it. - The Bee callout stays at least 20 s, waits while you point at it, and Esc closes it.
- Buddies that stand still use no timer, and idle walks start from a delayed task. Three idle sessions use about 0% CPU.
- With "Play sounds" off, the sound set, volume, and "Only when…" options are disabled.
- Companion extension 0.1.4: replies to the app go out in request order, a rejected hello closes the socket, and the ext-hello version comes from package.json.
- Remote uninstall now prunes old settings backups, like install.
- Build: build-app.sh bundles every skin JSON and rebuilds the icon when make-icon.swift changes; make-icon.swift fails on an unresolved legend slot. CI also runs the sound file check.
Fixed
- Tokens and cost now show in every bubble header and the buddy tooltip, and update at once when a bubble opens.
- No "subagent done" sound after /clear or resume, and no replayed "Claude finished" alert when Claude Code closes a permission hook.
- A queued permission sound is never dropped when the 1.5 s window ends. A clock set back no longer mutes sounds.
- An invalid or unexpected ~/.claude/settings.json shows as such in Settings and Diagnostics, not as "installed".
- A failed prune of old settings backups no longer stops Install hooks.
- The name tag rounds tokens like the tooltip (42,999 → "43k").
- Hiding buddies or a sleeping screen stops the Bee flight.
- Single buddy mode shows the tokens and cost of all visible sessions.
- Sounds: fixed a click on short notes (question, subagent done).
Accessibility
- VoiceOver reads usage as "42.1 thousand tokens, 31 cents". The marked Activity row is "selected". Option rows have stronger borders and marks. Rules that were only tooltips are now visible text.
- No subagent sound when minis are off, and no state sound while buddies are hidden unless a notification was posted.
Security
- Tool names are clipped at 200 characters (app and remote hook). An extra ssh client counts only when its real binary is named
ssh. Editor names in the log are clipped.
Buddy 0.3.0
A pixel buddy for every Claude Code session. This release adds the command palette, double-click to jump, Diagnostics, skins (meet Crate), Mix mode, tokens and cost, opt-in SSH sessions, and a full security and quality review.
Install
- Download Buddy-0.3.0.dmg below and drag Buddy to Applications.
- Buddy is not notarized yet. On first open macOS blocks it: go to System Settings → Privacy & Security → Open Anyway.
- Follow the Welcome window: permissions, Install hooks, and Install the VS Code / Cursor extension.
- Start a new Claude Code session.
Already on 0.2.0? Replace the app, then click Install hooks again (new events: SubagentStart, SubagentStop) and install the extension again (0.1.3).
SHA-256 of the DMG: f8fe9740a33d633e48e05ecae62e89119c34b79fc58a58118a492c4f27e79760
Added
- Command palette (⌃⌥Space): sessions sorted by attention, inline cards, keyboard answers.
- Settings → Diagnostics with status rows, the last 50 hook events, and a redacted report to copy.
- Deny, Review…, Answer… and Reply… on notifications (Settings → Notifications to turn off).
- Menu → Uninstall Buddy… (hooks, extension, login item, data folder; reveals the app).
- Impatience: a buddy that waits longer than the set time (default 3 min) hops and shows a timer; at twice the time it grows and sends one reminder.
- "While you were away" digest: after a break, one buddy lists what finished, what waits, and failed subagents. Each line opens its card. Menu and palette have Show last digest.
- Fun extras (Settings → General): high-fives, a party when every session is done, and rare tips.
- Community skins from
~/Library/Application Support/Buddy/skins/, with Settings → Skins and strict checks. See docs/SKINS.md. - Skins can add whole characters; bundled example 'Crate', a pocket-console robot.
- Character → Mix gives each session a character from all enabled skins.
- Tokens and cost per session in Activity, the menu, and the palette, from an editable prices.json (not official prices; edit them for your plan).
- Opt-in SSH sessions (remote Claude Code via ssh -R socket forwarding). See docs/SSH.md.
Changed
- Double-click a buddy to jump to its terminal; Unpin moved to the right-click menu.
- Question card: Tab and Shift-Tab move keyboard focus. ←/→, Next or Return change the question. Picking an option never moves on by itself.
- Accessibility: Increase Contrast support, risk shown as text, 24 pt minimum click targets.
- Idle with only the sleeping buddy is 0.0% CPU. Hook overhead is about 4.5 ms per event.
- Next prompts keep newlines; extension 0.1.3 sends them as a bracketed paste.
- A subagent with a running background shell stays open and resumes.
Fixed
- Jump: a newer Jump cancels an older one that is still running.
- A subagent killed with TaskStop now shows "stopped".
- A subagent was marked done too early while its shell still ran.
- Name tags of buddies close together no longer overlap.
Security
- Notifications can no longer allow a request. Permission alerts offer Deny and Review…; Review… opens the armed card.
- The SSH install command no longer holds the token; it pipes a 0600 file that Buddy deletes after 10 minutes.
- The diagnostics report replaces project and host names with aliases and redacts home paths.
- ⌘⌫ in a text field no longer denies the open card.
- Hardening for token counting, prices, skins, remote peer checks, the Keychain item, the remote installer, Uninstall, CI pinning and file reads.
Full details: CHANGELOG.md.
Buddy is an unofficial fan project, not affiliated with or endorsed by Anthropic.