Skip to content

Releases: internetdialup/claude-pet

v1.2.1 — Cleaner builds

Choose a tag to compare

@internetdialup internetdialup released this 07 Aug 20:57

A build-hygiene release. No behaviour changes — if you are on v1.2.0, Claw'd works exactly the same.

🔒 Build metadata is no longer embedded in the binary

A default SwiftPM release build writes the absolute build path into the executable — once per object file as an N_OSO debug stab, and once more as the Bundle.module fallback literal. On a stock macOS install that path starts with /Users/<account>/, so a release binary quietly carries whatever the build machine was called. For a project that ships unsigned specifically to avoid attaching an identity to the download, that was the wrong default.

run.sh now builds with --scratch-path outside $HOME and -Xswiftc -gnone. Measured on this tree, that takes the count from 77 to zero.

✅ And the check that should have caught it now does

scripts/make-dmg.sh had an "anonymity check" that ran codesign -dv and asserted an ad-hoc signature with no Team ID. That assertion was true on every build — it was just checking a different channel from the one that was open.

It now greps the raw bytes of the Mach-O and exits non-zero rather than producing an image. Two traps are written into it as comments, because both cost real time to find:

  • strings misses a path containing a non-ASCII character — the UTF-8 bytes split the run.
  • The compressed .dmg shows nothing at all. The payload only exists once mounted.

🖼️ Demo reel cleaned up

A macOS notification belonging to an unrelated session had been captured into the README demo and was frozen into all 192 frames. Painted out per-frame using a fill sampled from the desktop beside it.


Install: open the DMG, drag to Applications, then right-click → Open the first time. Still ad-hoc signed, not notarized. 98 tests, zero dependencies, no network access.

v1.2.0 — Make him say your words

Choose a tag to compare

@internetdialup internetdialup released this 07 Aug 04:29

Claw's voice is now fully editable, in two files.

🗣️ Every state can carry your words

Support/vocab.swift covered four of his eight states. Now it covers all eight — thinking, working, cooking and sleeping included. The file opens with the precedence, because otherwise it reads like your lines are being ignored:

  1. A rule matching the current task — git commit …"Committing the good stuff 📦"
  2. The real task text, whenever there is one — "Running the test suite"
  3. The state's lines

Rank 2 is deliberate. A pet that hides what Claude is doing behind a joke is a worse pet, so your .working lines fill the gaps between tools rather than replacing anything useful.

🔔 And what the banners say

Support/notification-nudge.swift is new, same shape. Banners now carry Claw's icon, and two join them:

  • 👀 Plan waiting — a plan can sit unapproved for a long time.
  • 🔥 Cooking startedoff by default, behind a menu-bar toggle, because it fires often.

🎉 Party mode cycles poses

Triple-click used to just recolour him. Now he walks the whole state set while the rainbow runs — sparkles, terminal, fire, clipboard — then goes back to reporting reality.

🐛 Fixed

Clicking Claw'd no longer steals focus. He was taking key status on every poke, which pulled the caret out of whatever you were typing in. Now only the session roster does.


Install: open the DMG, drag to Applications. It is ad-hoc signed, not notarized — right-click → Open the first time. 98 tests, zero dependencies, no network access.


⬆️ The download for this release has been removed. Builds before v1.2.1 embedded build-host metadata in the binary. Please use the latest release — no behaviour differs.

Claude Pet v1.1.0

Choose a tag to compare

@internetdialup internetdialup released this 07 Aug 03:32

Claw'd lives on your desktop and shows you what Claude Code is doing.

Install

Download ClaudePet-1.1.0.dmg, open it, drag Claw'd to Applications.

First launch shows "unidentified developer". Expected — the app is ad-hoc signed and deliberately not notarized, because notarizing would publish the author's legal name and Apple Team ID inside every copy. Right-click the app → Open → Open, once. Or xattr -dr com.apple.quarantine /Applications/ClaudePet.app.

He has no Dock icon; he lives in the menu bar.

What's new in 1.1.0

  • 🔥 Cooking — he catches fire when Claude is really going. Triggered by 8+ tool calls in a minute, or by live subagents.
  • 👀 Nudging — when a plan is waiting on your approval, he holds it out and leans in.
  • Playful hover — wink, jump, wave, or wiggle, picked once per hover.
  • Click to poke — he squashes, then the roster opens. Triple-click for 🎉🪄.
  • A real flame, and a determined face while it burns.
  • Idle ticker now reports live session count, hours coded today, and project + branch.

Fixes include a randomness bug that had been quietly limiting his idle flourishes and prop variety to half their options, a face that broke in the nudging state, and a hook installer that could overwrite a malformed settings.json.

Full detail in CHANGELOG.md.

Verify

  • swift build exits 0 with no warnings; 81 tests in 17 suites pass.
  • Package.swift has zero dependencies — the no-network claim is checkable, not promised.
  • codesign -dv on the app reports Signature=adhoc with no TeamIdentifier.

⬆️ The download for this release has been removed. Builds before v1.2.1 embedded build-host metadata in the binary. Please use the latest release — no behaviour differs.