You are probably here because a human asked you to install, fix, or extend Blip. Read this first; it is short and every line has cost someone an evening.
- Blip sends real iMessages to real people. For any test that sends, the only acceptable target is the user's own number (their self-thread). Never a contact, never a group. Ask for the number if you do not have it.
- Never open, read, or quote a real conversation to debug. Work from
code, tests, and
bun collector.ts --deep | jqshapes (metadata). - Message text never touches disk on Linux and never rides argv on either machine. If your change needs either, stop and redesign.
- No hostnames, user names, phone numbers, or home paths in code, tests,
docs, or commit messages. Use
+15551234567,you@your-mac,$HOME. - Logic in TypeScript with a test; QML only renders.
bun testmust be green (CI enforces it). QML has no unit tests — screenshot UI changes withgrimand look at the image.
CLAUDE.md— architecture map and the invariants (read-marks, group sends, the hot-reload IPC zombie, scrolling, window lifecycle). Read it before editingBarWidget.qml,BlipView.qml, orcollector.ts.docs/SECURITY.md— threat model and audit findings.docs/PRIVACY.md— what lands on disk.bridge/mac/— the Mac tools (Python, stdlib only).bridge/linux/blip-shim— the ssh shim.scripts/blip-setup— the wizard.ROADMAP.md— what is done, what is deferred and why.
Follow README "Install" exactly. Stop at step 3 and wait for the human to
click the two macOS prompts; blip-check tells you when they have. Do not
try to grant TCC permissions programmatically — it is not possible, and
attempts trigger prompts on the Mac's screen.
bun test
cp -r *.qml *.ts *.mjs otp-desktop.py manifest.json icons ~/.config/omarchy/plugins/nixfred.blip/
omarchy-restart-shell # NOT a hot-reload: IPC would stay on the old instance
qs -p /usr/share/omarchy/shell ipc call nixfred.blip statusMac-side tool changes: scp bridge/mac/<tool> you@your-mac:~/.blip/bin/.
Subject under 72 chars; body says WHAT and WHY, and names any invariant you touched. The log is the project's memory.