a21596b3e4
Eighteen agents: three design directions judged on whether a COO on a phone actually learns what an environment is, on craft, and on landing without a rewrite; one spec; a foundation of measured tokens; six build lanes; three browser verifiers; a final gate pass. The materials are Prime Intellect's, measured from their site: near-black grounds, one green, sharp radii, mono small-caps labels, Geist and Geist Mono self-hosted because production CSP is font-src 'self'. Two of their own greys fail contrast on their own ground (#737373 is 4.02:1, #6E6E6E is 3.73:1 on #0F0F0F), so --muted is lifted and the CSS comment carries the number — or someone will 'correct' it back. Every text-on-ground pair in both themes is tabulated in src/index.css with its measured ratio. The two rules that resolved every conflict: data is mono, sentences are sans; the language wins on materials, the lesson wins on legibility. Light mode is a finished paper theme, not an inversion. What did not change: the derived-tabs contract, the honesty markers, the isolation lint, every gate. 419 contract checks, entry chunk at 74% of budget, zero horizontal overflow on any route at 390/1024/1440 in either theme. Also flips Alert Triage to status 'live' — the pipeline built it but never promoted it, so it was badged SPEC on its own playable page and the home page counted one environment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mt6sHQHEnEYrJZvoMCJSB
60 lines
1.9 KiB
JSON
60 lines
1.9 KiB
JSON
{
|
|
"name": "pig-demo",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"packageManager": "pnpm@11.21.0",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc --noEmit && vite build && node scripts/prerender.mjs && node scripts/sitemap.mjs",
|
|
"preview": "vite preview --port 4173",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "tsx --test src/demos/*/__tests__/*.test.ts",
|
|
"check": "node scripts/check-demos.mjs && node scripts/check-receipts.mjs && node scripts/check-licenses.mjs",
|
|
"demo:new": "node scripts/new-demo.mjs",
|
|
"conformance": "node scripts/conformance.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource-variable/geist": "^5.3.0",
|
|
"@fontsource-variable/geist-mono": "^5.3.0",
|
|
"@fontsource-variable/manrope": "^5.3.0",
|
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
"@radix-ui/react-navigation-menu": "^1.2.16",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-separator": "^1.1.15",
|
|
"@radix-ui/react-slider": "^1.3.6",
|
|
"@radix-ui/react-slot": "^1.3.3",
|
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"lucide-react": "^0.469.0",
|
|
"next-themes": "^0.4.6",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-router-dom": "^7.1.1",
|
|
"recharts": "^2.15.4",
|
|
"tailwind-merge": "^2.6.0",
|
|
"vaul": "^1.1.2"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.10.2",
|
|
"@types/react": "^19.0.2",
|
|
"@types/react-dom": "^19.0.2",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"autoprefixer": "^10.4.20",
|
|
"playwright": "^1.62.1",
|
|
"postcss": "^8.4.49",
|
|
"tailwindcss": "^3.4.17",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "^5.7.2",
|
|
"vite": "^6.0.7"
|
|
}
|
|
}
|