Repo: this Parcel repository.
| Service | Purpose | Where configured |
|---|---|---|
| GitHub | Source, Releases, CI | .github/workflows/ |
| Vercel | Marketing site parcel.parable.dev |
Website/vercel.json, connect repo root Website/ |
| Supabase | Optional Capture upload (Storage) | Parcel → Preferences → Upload |
| Mobbin | UI research MCP | .cursor/mcp.json |
| Higgsfield | Icon / marketing assets MCP | .cursor/mcp.json |
| Parable | Component registry MCP | Cursor MCP catalog |
| Sparkle | In-app updates | Website/public/appcast.xml, Scripts/release.sh |
- Default branch:
master - Release: tag
v*→release.ymlruns release-gate preflight, builds signed/notarizedParcel.zip, updates Sparkle appcast, verifies the website ZIP, buildsWebsite/out, and uploads the deployablewebsite-distartifact before creating the GitHub Release - CI: push/PR →
build.ymlcompiles Parcel Debug and verifies website export assets
Required release secrets/vars:
| Name | Purpose |
|---|---|
DEVELOPMENT_TEAM |
Apple Developer Team ID |
DEVELOPER_ID_APPLICATION_CERTIFICATE_BASE64 |
Base64-encoded Developer ID Application .p12 for CI signing |
DEVELOPER_ID_APPLICATION_CERTIFICATE_PASSWORD |
Password for the Developer ID Application .p12 |
KEYCHAIN_PASSWORD |
Optional temporary CI keychain password; generated by the workflow if omitted |
APPLE_ID + APPLE_APP_PASSWORD |
Notary credentials, unless a keychain profile is used locally |
SPARKLE_ED_PRIVATE_KEY |
Non-interactive Sparkle appcast signing key |
SPARKLE_KEYCHAIN_ACCOUNT |
Optional; defaults to parcel.parable.dev |
PARCEL_SCREEN_RECORDING_VERIFIED |
Set to 1 only after exact release/test app path QA passes |
PARCEL_SECOND_DISPLAY_VERIFIED |
Set to 1 only after second-display QA passes |
PARCEL_SUPABASE_URL, PARCEL_SUPABASE_ANON_KEY, PARCEL_SUPABASE_BUCKET |
Live upload QA gate |
PARCEL_MACOS13_VM_VERIFIED |
Set to 1 only after macOS 13 fallback QA passes |
Set repository About → Website to https://parcel.parable.dev.
- Import the Parcel repository in Vercel.
- Set Root Directory to
Website. - Framework preset: Next.js (auto-detected; static export to
out/). - Custom domain:
parcel.parable.dev.
- Create a public Storage bucket (e.g.
captures). - In Parcel: Preferences → Upload — paste project URL, anon key, bucket.
- Optional: set Public base URL to your CDN or
https://<project>.supabase.co/storage/v1/object/public/<bucket>.
Never commit anon keys. Use Cursor Supabase MCP (authenticate in Settings → MCP) to inspect buckets from the agent.
See mcp-setup.md. Mobbin and Higgsfield are configured in .cursor/mcp.json.
| Value | |
|---|---|
| Display name | Parcel |
| Bundle ID | dev.parable.Parcel |
| Legacy (Notable) | Migrated automatically via AppIdentity.migrateFromNotableIfNeeded() |