53b4f60da1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.5 KiB
Markdown
40 lines
1.5 KiB
Markdown
# Contributing to Coucou
|
|
|
|
Thanks for wanting to help Mochi grow up! 🫶
|
|
|
|
## Getting started
|
|
|
|
```bash
|
|
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
|
|
bash scripts/test-screen-geometry.sh
|
|
```
|
|
|
|
## Good first contributions
|
|
|
|
- A new service integration (a poller + an entry in `PillCatalog.swift` in the `.service` category + a detail card). Look at `StripePoller.swift` for a compact example.
|
|
- A new agent: any agent already gets its own automatic pill by sending `coucou_agent` in its hook payload (see `docs/AGENTS.md`). Add an entry in `PillCatalog.swift` in the `.agent` or `.workspace` category 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.json` without 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.
|