0551e8dd6e
Social and icons. A 1200x630 card, apple-touch-icon, and maskable PWA icons, generated from an HTML template by a script so the mark, wordmark and tagline cannot drift from the product. The apple-touch-icon referenced in index.html was a 404 until now. Icons are drawn on an opaque plate with inset because iOS rounds corners and Android may apply a circle — an edge-to-edge mark loses its ears to that crop. og:image is absolute, which is the single most common reason a card unfurls blank. PIG_INVITE_CODE was a lie. Signup validates against the invites table, so setting the variable only flipped a label in the UI — an operator would set it, hand the code to a colleague, and watch them be rejected. It is now reconciled into a real invite row at boot: setting it issues, changing it rotates and revokes the predecessor, and removing it revokes. Verified all three, plus that a restart with an unchanged code does not duplicate. Two bugs found while doing that: - `uses_remaining` was jsonb, so the SQL decrement could never have worked. Now integer. The generated migration failed because Postgres has no implicit jsonb->integer cast, so the USING clause is hand-written. - Redemption keyed off `redeemedAt`, which would have made every reusable invite single-use — a confusing way to lock a team out. Availability now comes from `usesRemaining`, and redemption records who used it most recently without consuming it. Sign-in gains a password option alongside the magic link, defaulting to password since that is the daily path. PIG stores neither; both are handled by the identity provider and PIG only ever sees the resulting token. autocomplete is set so password managers and iOS can fill. Verified: full migration chain applies to a fresh Postgres, the CSP hash for the inline theme script is unchanged by the rebuild. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
34 lines
972 B
JSON
34 lines
972 B
JSON
{
|
|
"name": "pig",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"description": "PIG — Prime Intellect Growth. An open-source, agent-native CRM for two-sided AI-compute companies.",
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"workspaces": [
|
|
"packages/*",
|
|
"apps/*"
|
|
],
|
|
"scripts": {
|
|
"build": "npm run build --workspaces --if-present",
|
|
"typecheck": "npm run typecheck --workspaces --if-present",
|
|
"test": "npm run test --workspaces --if-present",
|
|
"lint": "npm run lint --workspaces --if-present",
|
|
"dev:api": "npm run dev -w @pig/api",
|
|
"dev:web": "npm run dev -w @pig/web",
|
|
"dev:mcp": "npm run dev -w @pig/mcp",
|
|
"db:generate": "npm run generate -w @pig/db",
|
|
"db:migrate": "npm run migrate -w @pig/db",
|
|
"db:seed": "npm run seed -w @pig/db"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.10.2",
|
|
"playwright": "^1.62.1",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "^5.7.2"
|
|
}
|
|
}
|