53b4f60da1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
Contributing to Coucou
Thanks for wanting to help Mochi grow up! 🫶
Getting started
brew install xcodegen
cd NotchBuddy && xcodegen && open NotchBuddy.xcodeproj
Never edit NotchBuddy.xcodeproj by hand: change project.yml and run xcodegen.
Check resting island dimensions on screens with and without a notch:
bash scripts/test-screen-geometry.sh
Good first contributions
- A new service integration (a poller + an entry in
PillCatalog.swiftin the.servicecategory + a detail card). Look atStripePoller.swiftfor a compact example. - A new agent: any agent already gets its own automatic pill by sending
coucou_agentin its hook payload (seedocs/AGENTS.md). Add an entry inPillCatalog.swiftin the.agentor.workspacecategory only if you want it to be declarable in Settings → Active pills. - A new emote or sound for Mochi.
- Bug fixes — please describe how to reproduce.
Rules of the house
- Swift 6, SwiftUI + AppKit, no third-party dependencies unless there's really no other way.
- Secrets go in the Keychain, never on disk or in git.
- No telemetry, no network calls except to services the user configured.
- Never block Claude Code: if the app doesn't answer, the hook must exit right away.
- Never write
~/.claude/settings.jsonwithout a backup and the user's confirmation. - Keep it light: 0 % CPU when the island is hidden.
Pull requests
- One topic per PR, with a short GIF or screenshot for anything visual.
- Build must pass with no new warnings.