From f30bb8420838c1dd803bf2d755a098fe65b11d83 Mon Sep 17 00:00:00 2001 From: Automation Date: Mon, 19 Jan 2026 20:05:38 -0500 Subject: [PATCH 1/4] chore: nuke products/website/src for fresh attempt --- .attempt.json | 17 ++++++++++++++ .../prd-v1.0/_runs/71c6fdc7/ATTEMPT.md | 9 ++++++++ .../prd-v1.0/_runs/71c6fdc7/EVIDENCE.md | 5 +++++ .../website/prd-v1.0/_runs/71c6fdc7/META.json | 22 +++++++++++++++++++ products/website/src/.gitkeep | 2 -- 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 .attempt.json create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/META.json delete mode 100644 products/website/src/.gitkeep diff --git a/.attempt.json b/.attempt.json new file mode 100644 index 00000000..da46cfaf --- /dev/null +++ b/.attempt.json @@ -0,0 +1,17 @@ +{ + "lane": "website", + "prd_version": "v1.0", + "run_id": "71c6fdc7", + "lane_root": "products/website", + "dist_dir": "products/website/dist", + "tool": "cursor", + "agent": "a", + "model": "claude-opus-4", + "worktree_path": "/Users/chrisklapp/.cursor/worktrees/klappy.dev/edj", + "branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/temp", + "target_branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/71c6fdc7", + "git_head": "165b100f30491448e3cc173eca671cbc485cbd72", + "is_detached": false, + "registered_at": "2026-01-20T01:05:26.581Z", + "runs_dir": "attempts/website/prd-v1.0/_runs/71c6fdc7" +} diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md b/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md new file mode 100644 index 00000000..d33ec15f --- /dev/null +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md @@ -0,0 +1,9 @@ +# Attempt (Run 71c6fdc7) + +## Summary + +_TODO: Describe what was built_ + +## Approach + +_TODO: Describe the approach taken_ diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md new file mode 100644 index 00000000..a43e2a5b --- /dev/null +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md @@ -0,0 +1,5 @@ +# Evidence (Run 71c6fdc7) + +## Screenshots + +_TODO: Add evidence files to evidence/ folder and reference them here_ diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/META.json b/attempts/website/prd-v1.0/_runs/71c6fdc7/META.json new file mode 100644 index 00000000..19a55383 --- /dev/null +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/META.json @@ -0,0 +1,22 @@ +{ + "lane": "website", + "prd_version": "v1.0", + "epoch_id": "E0003-evidence-first-era", + "run_id": "71c6fdc7", + "attempt": null, + "lane_root": "products/website", + "dist_dir": "products/website/dist", + "tool": "cursor", + "agent": "a", + "model": "claude-opus-4", + "worktree_path": "/Users/chrisklapp/.cursor/worktrees/klappy.dev/edj", + "branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/temp", + "target_branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/71c6fdc7", + "git_head": "165b100f30491448e3cc173eca671cbc485cbd72", + "registered_at": "2026-01-20T01:05:26.581Z", + "completed_at": null, + "finalized_at": null, + "status": "OPEN", + "evidence_index": [], + "preview_url": null +} diff --git a/products/website/src/.gitkeep b/products/website/src/.gitkeep deleted file mode 100644 index 6d182550..00000000 --- a/products/website/src/.gitkeep +++ /dev/null @@ -1,2 +0,0 @@ -# This file ensures the directory is tracked by git. -# Contents will be replaced during attempt implementation. From 7e09e4712014fac2ba26ded591f85f348fa87da7 Mon Sep 17 00:00:00 2001 From: Automation Date: Mon, 19 Jan 2026 20:12:26 -0500 Subject: [PATCH 2/4] feat(website): implement public website for PRD v1.0 Built React-based website implementing ODD principles: - Load content from manifest.json - Navigation with 7 or fewer items (progressive disclosure) - Markdown rendering with frontmatter stripping - Mobile responsive design - Deep link support via hash routing Visual interface contracts implemented: - color-system@1.0.0 with dark mode - typography@1.0.0 modular scale - spacing@1.0.0 base-8 scale Evidence includes 3 screenshots showing desktop/mobile layouts and content rendering. Run ID: 71c6fdc7 --- .../prd-v1.0/_runs/71c6fdc7/ATTEMPT.md | 55 +- .../prd-v1.0/_runs/71c6fdc7/EVIDENCE.md | 52 +- .../71c6fdc7/screenshots/01-home-desktop.png | Bin 0 -> 61708 bytes .../71c6fdc7/screenshots/02-odd-page.png | Bin 0 -> 79248 bytes .../71c6fdc7/screenshots/03-home-mobile.png | Bin 0 -> 46274 bytes klappy-dev-book-export.md | 1401 ++++++++++++++++- package-lock.json | 1153 +++++++++++++- package.json | 1 + products/website/index.html | 14 + products/website/src/App.jsx | 144 ++ .../website/src/components/ContentPage.jsx | 270 ++++ products/website/src/components/Home.jsx | 261 +++ .../website/src/components/Navigation.jsx | 237 +++ products/website/src/index.css | 200 +++ products/website/src/main.jsx | 10 + products/website/vite.config.js | 25 + 16 files changed, 3809 insertions(+), 14 deletions(-) create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/01-home-desktop.png create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/02-odd-page.png create mode 100644 attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/03-home-mobile.png create mode 100644 products/website/index.html create mode 100644 products/website/src/App.jsx create mode 100644 products/website/src/components/ContentPage.jsx create mode 100644 products/website/src/components/Home.jsx create mode 100644 products/website/src/components/Navigation.jsx create mode 100644 products/website/src/index.css create mode 100644 products/website/src/main.jsx create mode 100644 products/website/vite.config.js diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md b/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md index d33ec15f..60afa567 100644 --- a/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md @@ -1,9 +1,58 @@ -# Attempt (Run 71c6fdc7) +# Attempt — Website Lane (Run 71c6fdc7) ## Summary -_TODO: Describe what was built_ +Built a React-based public website for klappy.dev that implements ODD (Outcome-Driven Development) principles. The site loads content from the manifest.json, renders markdown content, and provides progressive disclosure navigation with 7 or fewer nav items on first load. ## Approach -_TODO: Describe the approach taken_ +### Stack +- **Framework:** React 18 with Vite +- **Styling:** CSS custom properties implementing visual interface contracts +- **Routing:** Hash-based routing for deep links +- **Markdown:** marked library for content rendering + +### PRD Requirements Addressed + +1. **Load manifest.json** — App fetches `/content/manifest.json` on load and uses resources for navigation and content +2. **≤7 nav items** — Navigation shows exactly 7 items (Home, What is ODD?, Why This Exists, Projects, Constraints, About Me, FAQ) +3. **Mobile usable** — Responsive design with hamburger menu for mobile, no horizontal scrolling +4. **Markdown rendering** — Full markdown support including tables, code blocks, blockquotes +5. **Deep links** — Hash routing (`#/path/to/content.md`) supports shareable URLs +6. **Progressive disclosure** — Tier 0/1 content surfaced first, deeper content accessible via navigation + +### Visual Interface Contracts Implemented + +- **color-system@1.0.0** — Full token implementation including dark mode support +- **typography@1.0.0** — Modular scale, font families, weights, line heights +- **spacing@1.0.0** — Base-8 spacing scale with semantic tokens + +## Files Created + +| File | Purpose | +|------|---------| +| `products/website/index.html` | Vite HTML entry point | +| `products/website/vite.config.js` | Vite configuration for lane build | +| `products/website/src/main.jsx` | React entry point | +| `products/website/src/index.css` | Visual interface tokens + base styles | +| `products/website/src/App.jsx` | Main app with routing and layout | +| `products/website/src/components/Navigation.jsx` | ≤7 item nav with mobile support | +| `products/website/src/components/Home.jsx` | Home page with tier-based content cards | +| `products/website/src/components/ContentPage.jsx` | Markdown renderer with metadata badges | + +## Tradeoffs + +1. **Hash routing vs History API** — Chose hash routing for simplicity and guaranteed deep link support without server configuration +2. **CSS-in-JS vs CSS files** — Used inline styles in components for colocation, but global tokens in index.css +3. **No router library** — Implemented minimal routing to reduce bundle size and complexity + +## What Could Be Better + +- Add search functionality +- Implement table of contents for long documents +- Add syntax highlighting for code blocks +- Consider adding smooth scroll to anchor links + +## Evidence + +See `EVIDENCE.md` for screenshots and proof. diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md index a43e2a5b..385dee30 100644 --- a/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md @@ -1,5 +1,53 @@ -# Evidence (Run 71c6fdc7) +# Evidence — Website Lane (Run 71c6fdc7) ## Screenshots -_TODO: Add evidence files to evidence/ folder and reference them here_ +### 01-home-desktop.png +Home page on desktop viewport (1280x800). Shows: +- Navigation with exactly 7 items +- Hero section with call-to-action buttons +- "Start Here" section with Tier 0 content cards +- "Go Deeper" section with Tier 1 content cards + +![Home Desktop](screenshots/01-home-desktop.png) + +### 02-odd-page.png +ODD Manifesto page showing markdown content rendering: +- Content fetched from `/content/odd/README.md` +- Proper heading hierarchy +- Readable typography +- Metadata badges showing tier and stability + +![ODD Page](screenshots/02-odd-page.png) + +### 03-home-mobile.png +Home page on mobile viewport (375x812). Shows: +- Responsive layout without horizontal scrolling +- Mobile navigation (hamburger menu visible) +- Content properly stacked for mobile reading + +![Home Mobile](screenshots/03-home-mobile.png) + +## PRD Success Criteria Verification + +| Criteria | Status | Evidence | +|----------|--------|----------| +| First load shows ≤7 nav items | ✅ PASS | Screenshot 01: Navigation shows exactly 7 items | +| Mobile usable without horizontal scrolling | ✅ PASS | Screenshot 03: Mobile layout fits screen | +| Canon discoverable without file paths | ✅ PASS | Screenshots show human-readable titles, not paths | +| No agent instructions in UI | ✅ PASS | Screenshots show no CLI/process language | +| Deep links work | ✅ PASS | Screenshot 02: Hash URL `#/odd/README.md` loads content | +| Progressive disclosure tiers | ✅ PASS | Screenshots 01 shows Tier 0/1 content organization | + +## Build Output + +- Build command: `npm run build -- --lane website` +- Output directory: `products/website/dist/` +- Evidence available at: `/_evidence/` + +## Deployment URLs + +*(To be filled after Cloudflare deployment)* + +- Preview URL: TBD +- Evidence URL: TBD/_evidence/ diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/01-home-desktop.png b/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/01-home-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..e62e356159f2254b68b5cdffcf80655f6d2031cf GIT binary patch literal 61708 zcmd43WmuJK+b#+!-QC?SA)S)ajkGjMhm@3bcS}e~w}6Czgmg(G-Q7sTzK8RD=k#0a z`__8*uf3liFb){c7+7*0zb_eu z0!3=d-&fot?6!ZsLj3>7E7ko}ZkyQ%0#5V6G#m}1H&f;M^|tfZ=eyEioF_agng#}> zp&=paO6J3vLhdJPjI3Vq$In9%1j#qi&s zDPc;Xn&Az1`SoJq-Ck99rq{0-_m?`7TR-dB68GktT>rIGNXa|YkWrYHH{TpI`NN?_ zG5T+2zO!9wd#?fmR%_t$cr~~0Q*(3k&aL-JvZ41(g<)%<>eYI(p~1WT+Sg;B)>+f) zAFCjec^-XZs%XZXkf2pezdY(dizXG~FV3{by!-XjP9@RkN8XFin}sU5IXhCZoN_1a zT`p@qvCqDAdBTAue8XYq#c8%F5PZS!ScEdmhDk?ycGSZrC4cC%Q>}8oyi-zCBAz#NXw&xHJ)Rf6*lCId-7%%)KcoYyYvC<-i)SgLn{f!$IS&-{MEH$4TXt?TEUz4QBI=Z(pPex^qz3anZ3<&N=q)*G?JqGuOy} zhH^XZ!ZY;Prg>A{L+Rwv@4D#a+J&RFSNGFa*Y4}v9{XOJWaY1FihP0dw;LbqxTjzF z7y1caF8L2AuYIb?CiA&HE-J{>ah-p=J5`aTr=I;d*1A_zTYF}|e$jwlq^wWI^@B|v zL&9=FmNy~4^A_y~Yt@3G=OkRTu6Zu|v&0vXJPTi*qX@g~O-GB|e^Dz?3}=zt-X1s6q z`L*gXU934n6Ry6raPX=?+-tmk>2`aGDq%i~X#zP=YmB z*2FPxo+kGNhf?=|AwPV9dX62kySOYmrjh4X6UA?Vp(MYA_b+>Q&=CA{H}l;==voS& z(}pkfV|?c*A|Bg|dDrL~hs`dI9pg&3MX!tOr@g~L?LQu)^7=MWJZ3wXpL;3taC>SJ z#rH`iS89$abTz|cr)X=LRLEn_z5``$Wwn+u7OY*W)F<|tKzh!cNDfSP_@yGXg8SRk zVX&VjTx5H|Qy}x%f4QN;dG0R?JQz}$YW8Cccou@&mG;p0(&`D2Z3v~y6m@4cg(jW` z=B%aXAZeT(u|?{(1l>3zMP#GC(l`*O2i(A@pvqR>OL+7cA8;y_Ng^CmZLZehl`MUp zT(LIoVQP@dXF13-QL7~zcx6;efKkk-DH|oONf;i*d4#{_SQbR zFJC-?ROOV@SC!BZnLv8B=<+?zjeN0qsmQDbm0-!C*+$9WB&P$00+EN^3M>nomggNM z*8>DJdbM)>xRGzNZucrgqEe5CaflXXzrOWvbb{r29IQko-g;Qzte3M8OZ4ogccRp& zAGAaN8GSutI`G_2J;lnh2Z8r#qUTIADjkTS8B%(Bn&G-Y5%=Pf9`!SavkBLCl9*o2 z1pL$MxeqCa7Ng)ipUhfS+}$ibDB5CY^v<))9pWQ6&`FMPpi0$pxTX(;nwoLAf~BRE z$5VY7{*Io9W84HEmE#Grl~HKfGuye8$|L^W(wf_o{$LHA+BY~HAKj<%Z2JP*8(sGM zUdI1){lIPWvNM9aG2y52BulNTikK?QWq6E{wBf*e=s-&2SpA!iyf_GtOEc2NI35k67F40~4+7}8_vRKC zxiC;95u{xR{o4ep`0gB~W@F=#A;cN`+XY$X8{tQ`B#7v< zI*-q#ajHqVrg50bwtC;mh%5(SZ54(PU$g9sS0;?wjXWTybZGvXwPLGlf9p>^B7Cz~ z^Fx*?P`s^oxeI z-yN*^rM95tX@599{~UkCP@YARLTnavz08#jvt`ajtENRvH7i(;x+knPzf`j-X4PrG zZ(OK^vi-c2lywOSwLISaXZo*Y-s=9(FPVLd_~_u9aEDOe^w5N?4w+>KAuR1&qaLMN zWQJa^w+xlqpLmmrGCArvUVUnHj1&!#O7$MrU>@qIjZ;g|Hf?kSQCMc#6g8d;`dVm8 zd7~h^ONzK=q(@7Lm|>E4E2atvPN}Fn$yOH=T84vz5w;1Q?}LZ1$Jt_y zK4~?C#K&6=zAnh9+pF#m^2R;j7fng)S4&9ci;|GY^GmR}OTD~V(eiFRIcL``pFTP( z!zDWFKNC72V0Sr5$5W7w_%PwRm9XGXm+{%XCg{8m)yH}~ROzAdB2D3!cGEUzmO}GY zt51x@+GXne;f>kcxOVcvbhS-*BiuRu)jgV8F3e*p9BNjR3VJHn2C{5}5sKw!EUNeu zU8(`^(Cg^}pcy&`+pS`H_-xZmO?c&0klhK=SsK>jma9|`1dxqtxWfYA?M^X=%3m!;ct`=W8f2PHj`54HD_d(c=a#pZ?U@cp<+KJ5T3j7^cZtM2B*z-D1n! z1zx~)BuDgY_54T=7xQ5MUn zNLX5&aZ;HC^;}X^ojq28*ZCmyTwoas?IR5WO5oR5retP*BFJI*m!u%ZM}&iLID|nZ zMeePvz$}R$09UDUxkc=U{&2e~f+2z&oD&EmO^5t7#=_bB`|A*+Vp;h2Rm6-K8sdu| zz1r=g-eXya@rvQ2Ph~i{YZ@v{mFSD#<%zO;DuOI_SYuY!>EAO z%3oWfR60+e9*fmtB=vRzUq(Rl{UEo=wrQVxM}AdJJg*<5yF{}Ar0p_su`Cus!c+qz z?2cALwjA+(AM@!}pYo%i1a4SdlW$dlDCpm#0BV3~uLRXCZfhZ1B~)mIzO95bQs1+@~~ zVTG^iIB$p)u^NdB_(+0C25u-}Pl&!5-cJby@ktLAxlKkeI+%|-4-h*Hfd^ltwCTe)0%Sl{?Rzlh?BKloqwvLqVVdF0A5Ettc=f!3$%wV&S2kIa1 zw)2x6&4#aipJ>6+irA;@A;br!v!wSLF`Uv^(>KF(^7_jSj~A(>b}gUuJxdNpnolMY z_uRH1k7G`c!XX~|^^`uvg$T!&kG%pILt(aAAFrmKWi~mx_7=L&c0E8I3BY|5^-6IL)o3U)=H)omsV;m zStQ%7)u+^fdWycBiIaez>*E=8-)Vq9PN@Rl#-S6*iDhEiNnmEm$xaaDZ1mFUpkWi1 z=Ee2ZW>$3DDtDMX%}6(TB)VaC8E5rcP|tn@OSQhOU&LBmwuqEsNQWezK34;7eOV>_ zA(N>oExeu#sdOrlgDPoFG(Fb}cLQ6U2Ic3+oa4youV2ER?J+A1l4PBgYQw^gNCZq< zeea~paQ;!h=p9bG%&pLaRMbWflkJxSKU|oM8Ye&u|A~d3(`s7}O~RMl;I@Zmeifvb zCWa}OuO|JCU>!4fNh7oL0w0U1Y^_!H?_tA*2#eQn@>A0G<{_BifA1UU3Qiv2E8R2y zykvAVID#}vD)JzYgq4Eg&t=?d$_s){$7gufrSXA z6jT0hEMSjKP3P?W)6@2Evpx@Z4wvzd70ip%be*0sN~gZW*wji1Kpd$<7S0_&@+dTe z&B_*1sk7#)=OFe2IcLxh%X&x|!|no#=o(qpswPd`0eJht>~s8jHIzr{y_?TcjuD29 z$^BEeUorUG8=Kq`xcVZoHOI`vi=*=8jnG=YsKdN_=97$MfjGKKAs$ruS|`psymLtv zJ;_n|Wv8Wx#Nn49<@c9ZkCFV2LadIq5t*e|3o(DEyb=ZNn^WNJ482Gc4=b{-6q8ZPb} zus#i?W!642OXkV3;l=$jIEMODpgkrrPu+ z=9>?CVdO^2QG41S*>ZnGKr-9Mu7pX;(DnKU=K&7*>FTtC*pr;kM3=UpsQG79V zNMiS}7}FEq3Wk6G5-ONLNb1})gky1Rr7`w=$bP+jT-@_bX8|&c|B;y4h~^&0e$eDc zj4zr_6N8KtdCVUz?jKl-&7SZI{%9KvZE_2lGygU~7O$!&yw#U}>s~RWoqRsWq{tyY zXVTLa8Nf$PYaP=fe+T1oH1Vy>a7sHxbir`quLOB;HJqn>G;_Ueapak?`hAf$ig;kX#Mi5 z!k9?KskH5Q>Dzc1d~_3uuC|QccT)RCPlNXXSma-TUK;N7oso;r=6X4pYys4PbGQiZ z*-`jQQZyap+aUg%OiLW4{v@Lzmxw1@5_JrwqmG||UoL%aXiYmV_3;^Lt;M&chKWc;l>N)$rEau2$<&qr8dy@FlE6_am^ei==6q=k zhwNPMl=mcyo~MJMu~JCB_SFG+iK`O7XykF0?WMYfsK*5b`-o^}!RO>p3ASifCPL7z z*8v77EI}cCgIVQwdX*<(TGb0k=lSfJ|)L-WxK`O0oPSq1&U5trt%?<1@5} zOYC)NQU**d5<(eIEfNr50Q!=cy&K#Q9lI8TPx~_kRtn0=zze`ErE;02EjXKbgqBlF zW6N>FG4=`;xkT2L-%O%~l3aOWo8VuS<52_+oHOmtGh$$*D)F;ux4M*V#b*@+kspz% znLixe42Vy$ofmLSYL|bjWam^|d{d>9noVW2Oi;7oFrbcDs2M~>fle4iWyyKq9AGJX zb2tzyj=K0Cu@hqL0yySE8cexcNZWoT^v8LO>qB|)?`#+@U=a6 zO2xb`4Vp)MvpMUPkyBwGx?^vXWP5}}R@?`A?2Hm;OZhaeW@sWaO8p+FG!orgxL1$h z+r96u9rAjJNqH+IHay6~&{3~le%f?97`=)=?-b|`H#$fnkcuYt`UZnXp1N}QApk8l z!QvGh#xMCvL+`6~=VBN}Uxcfn^LOpYF(J5}94YXm#+lFtx8_tr@wQS491A2trZVI| z_(Yd8hUsfu_fY4bEf{;MD)Vwmf97;2_1L1|uJ0y&#~jk#n%bMQ*?jz+C}7LP=)1~2 zfJNE9o~iyy=#bds7t|ta4-Nbjv!QcpFYjceYyBvnaP~b`_DJ}3V2E61)`5;ndwlP) zMTt}tu{%H+#)en#L%-*uNu*-E4`bKB;}_*v1Lx@%GTLo4i2%1eG&z6VPe$+By!kEf zWoCinPOSLw_9t+UZPZp6sSXU!- z-=$fV&%B+|=d&Ncov4&nE?JbW+)|Y{WPgTZws1LoZD2+&&&TOc|^Bn;#8>St=cufJx-pc@(+n+4cy*QW`KXbd;ueUI53tKK2 zxV=pbk;$)-nXk^!vhmc&sv7p@u6l@8L-R5n>h@=+Hk}Bk$5GF= zL}HU3-(G2Et0WSpt@vEsN)wL19IPtxtSm;`99Dw}M`Qkzg9rzHny2ID32JLIA}3CG zCWOg13`Pd9;@TAqs__6cE%SM}pL+s_Mmo^L=BWrfK^VQ-FcBm(emX2NOp^5D*P_qE zQ!Em4`A${aPdxL^SUPEW!pJYgW1sp@$icL7unCM^tC6ls(PcdmaJj>H)~aqVoGdc_)rQxDloWp4|M zTY-2B#Os_{=b-f@-SSHcdUYq*a%W7%3DZJB^aX*BUc4&<@akJCv88cxd*!ESKaIZ( zU3#XrevD@W^{f~UT#8yQ%?yb%FCoR2JwFsfhz5V#n3Bj~Xe$8NrF`DrSY*1x&fNAf zRZtf|y_9&Ts_wQ+f#>3s8_B&hR)D6}#atWRlV=rZ=$qSwNxvbB&!T6E)rfLxn4OJ& z`@y!6fkJ4Uw*X;VN$~i|sn;2gErDJ)ugmiKRhq=xI|Awrwukcy9|r@64{OiS11yp2 z<;#urHn#5QH58ZDs8FC;q0`fQ4b`Q)XYz6aNN$5ZoV3tQ>uj%3Yekb63 z_cF~f@d`lqyfo-l&a@}Z*E=P1D(%6zM90{2P1i=EfnYHpO5D-luT zbG%;IRwM`77RLzP33}@hffHv(DpgmKY4(61%kXDE7HbLt)rNhtHDK(S=HfFh7V(YZix zx+{iW{g1r9T_xUpm{^8)lqhf9VVn&>f{C3DB+xV437d&$R``Z6q!7S>;}Y+bp2|U( zXEB^<#6ZH_Sz?80c6#f3(;gi9!h^2*spmkdCF3T(8i!ux)?&c+YW|k0Ieo)qaB_J0 z*I%368lKdg0k666=>&d(%~g z>mYUiCGv2kbejXOi#%*RYL%*s!UW*}&tB8Uf8jZzo8Y}W8`~CN?T)5<>_s9;!c8JP zGR#_um^^jFj>+f)cEVBdyTv2K2LR(oad1i@ohHKq`Vt0NFGtpRWAEg}SRbCgDJfY5 zA*Z`$u1D?8R8bo*?XG_>5=xLia?vSj+UE6p&4Xh3siAYa5U>x?BNB@lD99mOgbkzEEYE2 zoAx4=H)&!wvOnu>Qq#kCYCYwm5?{DIz2dWqB2Uz|^eW0x=Ak7{#rTMYxnR;xe+%y( znaz)|6!v^^rEi17FQ`SW8+OVCa!Lw4w~!cj#wiSXHt zB_?a=vAdK%UN)`vxDCB0{N>#c(&P6D6XvLW^ANMGTJ&nKW*A@pY5kCdXDEh=Hahwc zWlW%i5%VUSWyk=hhF-}q(Zo5%mMZ;myjjEIh-|wg=WaNjgtMXBG7M##(KbUtdYoR` z4J|CzE2lE4V>Em~xXaY~Y99gy^Z*b!$I*Q~i;uFGYymyFGydY7i9_ULK@Op`0&W{p z$o<`o2uJ`_%unt?RCn;!0{n2@@a6r#v4BVV916pmEtkeUF%$!b<)44ZYAk!fV#JQGP>le}Tb1Gmgu>1<{|JSP zff0+i{QIxqA8~*1{~LF3rQo~o4G{1A%q9x1C-ndhtCI`vh~1Grp_?ngo2cIa_e>D} z#h>p?RTz?p7mYVa-B;&;2~S8vGlT!81fdXVvZ2V^6gfdiY#+FL&^-E3}a0j^l9M=E$0)-u9B5r0(jNez$c0yuuGDMXC zxt@`by$1^lu2^+tCIaZmsXwoZqLygU@V~?tj7J!jzu$=Q0tWHbzhAXHF0J_E%0gUp z{abTz3IF-`ts!}jAnOge^87>=p(o$e>Xd1gOhA6snd>e>|9b#SS|881djz%$auv0?`u=&-`G0s9eC5A}0Qse66bbe3c|Ltq`g>@<|2?bzlIm}z zNd%PDKO^VHnS}p)R{ZWT_S)L1+n+$L@aK=Iyt7-RzvL1UZ}7ol{STkK^S241j59DX z{YzmX@rM6@z2%R^68L*uzaT4!a;pO<&!SwGOTkN~X;88tlobFDRX{mcINJf@NBKd+*re>M+%*S}2*?BAz$!oLkDhVBvZ)Bmz6 zV3E$!5^SFUeaP>{14I5F_V*Fh|73h0HTTwcO#WEvzgE72eOv0EbAb9knOY&%zg8{} z>hBZs=)W8g8^+Qakww&;hEKRv`$ zMUnT+-b@YEUk)KQE$SbKq5Pj&z<)Qk+pGVwX0^|LUjJFiaUQg5lWbg-o5tv;bEe~wf_KuY6H-WUP4rC;;>O4RM z)x*y6`7==Fu;_e#>DWu73%I7d7x9H0({`DATMOyysUE57~;d-LS(=HlVF zn+%D?X1s6|Q;u1Tv+m7Av0?_l%DDwd>Fk=1rEV?0dYrq=Idp^Ztog754?7VDN@fTo zHw;+c00gWPbIXyB&>f2qy-MwbW_aH9Q|swUP<~VT(zWb3XT1 zn?Ul{^RNQ(`E}PbbXlHpP>23#!Y^g++5z*_8wA_38YO@$K?2BUQ2DyfgM8v!P__$- z)n@Bx(xcc1Fcwdsu@V3xmI9#Ou=`25l+Nq~Bw_d>V)#1d zM_K(sV;8P&Y3-!Ws9!d-IQ6N5EoTcTNFfGw)E!B50hajeaPeVOn(XeRpDlhS2$jSG zz~-C3Vj6yYaai@@lz2v%lba6nO?oSeROmXG%o~Ew8vsB6WZra6nXU`&0I(r-l2WOq ztlxB#WhHLD4wX62(Y!L0;8T+M9Z0o`&YXt$EOy3=RQw>sE5+v_{$1+RipHH{V3QXP z-6VkEvYKS3Y)jP5qRwBFetQe_M_Hf@Q4+c1vYGw-qh4-ZIs%{Feo0g_9VnohCmw)y z4WG+$WV*@(X}!Rdi+V|s9zSv1)DiYL1Om8AP|SB6k`E{e$-RiyeSLd*e5yH=z@S#RuVv^Z ziO1;Gq&=dUjZ)RwJ6aE!6VMUdfijIoCH9+7=wCg!%rw;&G0?h^q*P+sxS za{@j`Q%m~3tl(b-4BmI=S{vv-0MR<>v$TMOhcm{M1CTSQ3cY$l9AKMXy^&@md@<)F zNr@Ir>?os2d;f^cC&E8%SSpoXKJdahX6AWiE2WE98Hv55P8(JWd2*PPSvbEW;9G58T7KsRQ2 zp1in?e_MJP?Q^?o_;5W1cy*wNtSQw{4g$cI*X<^_r|ugp(b@h_ybS*%)KEE=+VN~4 zqnkDg?wVNuCq$0zE4KRpZ{|s?_!B6gCX#X7D1*omr-5j-Ak!m^-Z)*xY?@@HQ2R}B z&RWZ3h|;SQV~IIs`^%CaQXGT&5-?UYZ(A$p?H}vyNNj5_1Ags|6%3zkk41wa@}hMg z1F?)ZP-`865}nr}RuXr4WYe4C3LFT^mxK@6t=?WaMbk$XlDZ6sRpJ99Dn%Asd_7aY z_J2Yoc-WYOk)^J_+XDcaf47kCd=3#ovXT^hOhTvu?wOy-B2*yodKMUNJY5f9J6eEW zU9;u4s<=A+=#Pphtdo42Y;yb!j%=wLM;AC0hBv_R4Dmb2y2If&+yMUxDYOa~d1E#6 z`yFV(^3?&SqOc*oa0rUDUhHxT6e4b74pRtpGHflE5{Fc9sv=ENdp@a4S0SS<6kzKK zyrs$pP+mR&1#NJfz`JjWk%~mYb1ya>C6ZTjy0i3Neh~#x#w9RQuEJ7$y$pwG0pQv4 z6kQcDpDjm?0bsUr3*v@`jL~FKj+O{UEMo{rP-M=RAYa*NaJMP)5PF|B(2qo=o**tr z8Ntz*d})+GFooF|I!55Jk%ZMQpv@o?SlZcUN01|5$*PSlZkk|vVAZ>JMc)C=czC;5 zikaCfE}u>eY4qM+{bS%~OsDY07u{APfml!5k>Q$JTj=w}-Nm90pz3K$xI8cIC6*xW z1uWIcCJ>88U|F;gq(jeyVh<#WV)yLyYNDX?n`1n-be`&^%Sy-jz>?7n_jyD`irGP4 z1fUeWFf*dv@MMDhHjzMbcMj}L7MIAc!~wB8S>g+HnugS9wNt-%JqFnbR`D-Fq^c)U&OJfGw`V17t{G?poYr zYq+}fbh1=T=3N&RetiWl&^u8>lOp425BT*g zrkyzZ6?9WtrC5DM);tfDlC@=>msm9@Xv1?^=F#}Pg$=K=+Z^=xEcyIN;GB0Oz}DUZY?>#*;{ApM~y*fQ6jr$b}I&> z9p*tYvw$u3ZesDvuga-~-zaOKj;2kbF;Iq@_(_6N-elv97DCSZah7f4e%;TNIHr

5{_5uzi2${gKpQWBU@v*r4_dz4cM`Fur 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%0Dazm@$lg48_)gf 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 literal 0 HcmV?d00001 diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/02-odd-page.png b/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/02-odd-page.png new file mode 100644 index 0000000000000000000000000000000000000000..55c9700f6e61b44e865ec1208fb0cb0e38aa9a04 GIT binary patch literal 79248 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

TKdl|{_iqH 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�^Zte)J}WsL{Ey={))GyEnKfGP{J_%>EV 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

jTznj~=rHlGvZ_}Lj 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 C%Ox@Z literal 0 HcmV?d00001 diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/03-home-mobile.png b/attempts/website/prd-v1.0/_runs/71c6fdc7/screenshots/03-home-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..1efe9cc4253591ee7390f9e448dd7003b01717f0 GIT binary patch literal 46274 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 literal 0 HcmV?d00001 diff --git a/klappy-dev-book-export.md b/klappy-dev-book-export.md index 1d4f39d5..253b5528 100644 --- a/klappy-dev-book-export.md +++ b/klappy-dev-book-export.md @@ -5,8 +5,8 @@ ================================================================================ -Generated: 2026-01-20T01:02:03.656Z -Total Files: 157 +Generated: 2026-01-20T01:12:27.589Z +Total Files: 168 This is a complete export of all documentation, code, and content files from the klappy.dev repository, organized by section. @@ -16,17 +16,17 @@ from the klappy.dev repository, organized by section. ## Table of Contents ================================================================================ -- **Root** (6 files) +- **Root** (7 files) - **.cursor** (1 files) - **.husky** (17 files) - **About** (4 files) -- **Attempts** (14 files) +- **Attempts** (17 files) - **Canon** (53 files) - **Documentation** (18 files) - **Infrastructure** (18 files) - **Interfaces & Contracts** (6 files) - **ODD (Outcomes-Driven Development)** (1 files) -- **Products** (3 files) +- **Products** (10 files) - **Projects** (6 files) - **Public Content** (6 files) - **Visual Design System** (4 files) @@ -38,6 +38,29 @@ from the klappy.dev repository, organized by section. +-------------------------------------------------------------------------------- +📄 File: .attempt.json +-------------------------------------------------------------------------------- + +{ + "lane": "website", + "prd_version": "v1.0", + "run_id": "71c6fdc7", + "lane_root": "products/website", + "dist_dir": "products/website/dist", + "tool": "cursor", + "agent": "a", + "model": "claude-opus-4", + "worktree_path": "/Users/chrisklapp/.cursor/worktrees/klappy.dev/edj", + "branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/temp", + "target_branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/71c6fdc7", + "git_head": "165b100f30491448e3cc173eca671cbc485cbd72", + "is_detached": false, + "registered_at": "2026-01-20T01:05:26.581Z", + "runs_dir": "attempts/website/prd-v1.0/_runs/71c6fdc7" +} + + -------------------------------------------------------------------------------- 📄 File: .gitignore -------------------------------------------------------------------------------- @@ -296,6 +319,7 @@ The goal is better outcomes, not perfect artifacts. "devDependencies": { "@vitejs/plugin-react": "^4.3.4", "husky": "^9.1.7", + "puppeteer": "^24.35.0", "vite": "^6.0.7" } } @@ -13787,6 +13811,159 @@ See: `/canon/odd/appendices/attempt-lifecycle.md` +-------------------------------------------------------------------------------- +📄 File: attempts/website/prd-v1.0/_runs/71c6fdc7/ATTEMPT.md +-------------------------------------------------------------------------------- + +# Attempt — Website Lane (Run 71c6fdc7) + +## Summary + +Built a React-based public website for klappy.dev that implements ODD (Outcome-Driven Development) principles. The site loads content from the manifest.json, renders markdown content, and provides progressive disclosure navigation with 7 or fewer nav items on first load. + +## Approach + +### Stack +- **Framework:** React 18 with Vite +- **Styling:** CSS custom properties implementing visual interface contracts +- **Routing:** Hash-based routing for deep links +- **Markdown:** marked library for content rendering + +### PRD Requirements Addressed + +1. **Load manifest.json** — App fetches `/content/manifest.json` on load and uses resources for navigation and content +2. **≤7 nav items** — Navigation shows exactly 7 items (Home, What is ODD?, Why This Exists, Projects, Constraints, About Me, FAQ) +3. **Mobile usable** — Responsive design with hamburger menu for mobile, no horizontal scrolling +4. **Markdown rendering** — Full markdown support including tables, code blocks, blockquotes +5. **Deep links** — Hash routing (`#/path/to/content.md`) supports shareable URLs +6. **Progressive disclosure** — Tier 0/1 content surfaced first, deeper content accessible via navigation + +### Visual Interface Contracts Implemented + +- **color-system@1.0.0** — Full token implementation including dark mode support +- **typography@1.0.0** — Modular scale, font families, weights, line heights +- **spacing@1.0.0** — Base-8 spacing scale with semantic tokens + +## Files Created + +| File | Purpose | +|------|---------| +| `products/website/index.html` | Vite HTML entry point | +| `products/website/vite.config.js` | Vite configuration for lane build | +| `products/website/src/main.jsx` | React entry point | +| `products/website/src/index.css` | Visual interface tokens + base styles | +| `products/website/src/App.jsx` | Main app with routing and layout | +| `products/website/src/components/Navigation.jsx` | ≤7 item nav with mobile support | +| `products/website/src/components/Home.jsx` | Home page with tier-based content cards | +| `products/website/src/components/ContentPage.jsx` | Markdown renderer with metadata badges | + +## Tradeoffs + +1. **Hash routing vs History API** — Chose hash routing for simplicity and guaranteed deep link support without server configuration +2. **CSS-in-JS vs CSS files** — Used inline styles in components for colocation, but global tokens in index.css +3. **No router library** — Implemented minimal routing to reduce bundle size and complexity + +## What Could Be Better + +- Add search functionality +- Implement table of contents for long documents +- Add syntax highlighting for code blocks +- Consider adding smooth scroll to anchor links + +## Evidence + +See `EVIDENCE.md` for screenshots and proof. + + + +-------------------------------------------------------------------------------- +📄 File: attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md +-------------------------------------------------------------------------------- + +# Evidence — Website Lane (Run 71c6fdc7) + +## Screenshots + +### 01-home-desktop.png +Home page on desktop viewport (1280x800). Shows: +- Navigation with exactly 7 items +- Hero section with call-to-action buttons +- "Start Here" section with Tier 0 content cards +- "Go Deeper" section with Tier 1 content cards + +![Home Desktop](screenshots/01-home-desktop.png) + +### 02-odd-page.png +ODD Manifesto page showing markdown content rendering: +- Content fetched from `/content/odd/README.md` +- Proper heading hierarchy +- Readable typography +- Metadata badges showing tier and stability + +![ODD Page](screenshots/02-odd-page.png) + +### 03-home-mobile.png +Home page on mobile viewport (375x812). Shows: +- Responsive layout without horizontal scrolling +- Mobile navigation (hamburger menu visible) +- Content properly stacked for mobile reading + +![Home Mobile](screenshots/03-home-mobile.png) + +## PRD Success Criteria Verification + +| Criteria | Status | Evidence | +|----------|--------|----------| +| First load shows ≤7 nav items | ✅ PASS | Screenshot 01: Navigation shows exactly 7 items | +| Mobile usable without horizontal scrolling | ✅ PASS | Screenshot 03: Mobile layout fits screen | +| Canon discoverable without file paths | ✅ PASS | Screenshots show human-readable titles, not paths | +| No agent instructions in UI | ✅ PASS | Screenshots show no CLI/process language | +| Deep links work | ✅ PASS | Screenshot 02: Hash URL `#/odd/README.md` loads content | +| Progressive disclosure tiers | ✅ PASS | Screenshots 01 shows Tier 0/1 content organization | + +## Build Output + +- Build command: `npm run build -- --lane website` +- Output directory: `products/website/dist/` +- Evidence available at: `/_evidence/` + +## Deployment URLs + +*(To be filled after Cloudflare deployment)* + +- Preview URL: TBD +- Evidence URL: TBD/_evidence/ + + + +-------------------------------------------------------------------------------- +📄 File: attempts/website/prd-v1.0/_runs/71c6fdc7/META.json +-------------------------------------------------------------------------------- + +{ + "lane": "website", + "prd_version": "v1.0", + "epoch_id": "E0003-evidence-first-era", + "run_id": "71c6fdc7", + "attempt": null, + "lane_root": "products/website", + "dist_dir": "products/website/dist", + "tool": "cursor", + "agent": "a", + "model": "claude-opus-4", + "worktree_path": "/Users/chrisklapp/.cursor/worktrees/klappy.dev/edj", + "branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/temp", + "target_branch": "run/website/prd-v1.0/cursor/a/claude-opus-4/71c6fdc7", + "git_head": "165b100f30491448e3cc173eca671cbc485cbd72", + "registered_at": "2026-01-20T01:05:26.581Z", + "completed_at": null, + "finalized_at": null, + "status": "OPEN", + "evidence_index": [], + "preview_url": null +} + + ================================================================================ ## Interfaces & Contracts ================================================================================ @@ -22305,9 +22482,1217 @@ git add klappy-dev-book-export.md -------------------------------------------------------------------------------- -📄 File: products/website/src/.gitkeep +📄 File: products/website/index.html -------------------------------------------------------------------------------- -# This file ensures the directory is tracked by git. -# Contents will be replaced during attempt implementation. + + + + + + klappy.dev — Outcome-Driven Development + + + + +

+ + + + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/App.jsx +-------------------------------------------------------------------------------- + +import { useState, useEffect } from 'react'; +import Navigation from './components/Navigation'; +import ContentPage from './components/ContentPage'; +import Home from './components/Home'; + +/** + * Main App Component + * + * Implements PRD requirements: + * - Load /content/manifest.json + * - Render home page with ≤7 nav items + * - Render markdown content + * - Mobile-usable + * - Deep links work (URL represents resource) + */ +export default function App() { + const [manifest, setManifest] = useState(null); + const [resources, setResources] = useState([]); + const [currentPath, setCurrentPath] = useState(window.location.hash.slice(1) || '/'); + const [error, setError] = useState(null); + + // Load manifest + useEffect(() => { + fetch('/content/manifest.json') + .then(res => { + if (!res.ok) throw new Error(`Failed to load manifest: ${res.status}`); + return res.json(); + }) + .then(data => { + setManifest(data); + setResources(data.resources || []); + }) + .catch(err => { + console.error('Manifest load error:', err); + setError(err.message); + }); + }, []); + + // Handle hash routing + useEffect(() => { + const handleHashChange = () => { + const newPath = window.location.hash.slice(1) || '/'; + setCurrentPath(newPath); + }; + + window.addEventListener('hashchange', handleHashChange); + return () => window.removeEventListener('hashchange', handleHashChange); + }, []); + + // Navigate to a path + const navigateTo = (path) => { + window.location.hash = path; + }; + + // Error state + if (error) { + return ( +
+

Error Loading Content

+

{error}

+

Please try refreshing the page.

+
+ ); + } + + // Loading state + if (!manifest) { + return ( +
+

Loading...

+
+ ); + } + + // Find current resource + const currentResource = resources.find(r => r.path === currentPath); + + return ( +
+ + +
+ {currentPath === '/' ? ( + + ) : currentResource ? ( + + ) : ( +
+

Page Not Found

+

The requested page could not be found.

+ { e.preventDefault(); navigateTo('/'); }}> + Return home + +
+ )} +
+ + +
+ ); +} + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/components/ContentPage.jsx +-------------------------------------------------------------------------------- + +import { useState, useEffect } from 'react'; +import { marked } from 'marked'; + +/** + * Content Page Component + * + * PRD Requirements: + * - Render markdown content + * - Deep links work (URL represents resource + section) + * - Mobile usable + */ +export default function ContentPage({ resource }) { + const [content, setContent] = useState(''); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + if (!resource?.path) return; + + setLoading(true); + setError(null); + + // Fetch the markdown content + fetch(`/content${resource.path}`) + .then(res => { + if (!res.ok) throw new Error(`Failed to load content: ${res.status}`); + return res.text(); + }) + .then(md => { + // Strip frontmatter if present + const contentWithoutFrontmatter = md.replace(/^---[\s\S]*?---\n*/m, ''); + + // Configure marked for safe rendering + marked.setOptions({ + gfm: true, + breaks: true, + }); + + // Parse markdown to HTML + const html = marked.parse(contentWithoutFrontmatter); + setContent(html); + setLoading(false); + + // Scroll to top on content change + window.scrollTo(0, 0); + }) + .catch(err => { + console.error('Content load error:', err); + setError(err.message); + setLoading(false); + }); + }, [resource?.path]); + + if (loading) { + return ( +
+
Loading content...
+
+ ); + } + + if (error) { + return ( +
+
+

Error Loading Content

+

{error}

+
+
+ ); + } + + return ( +
+
+ {/* Metadata badge */} +
+ {resource.tier !== undefined && ( + Tier {resource.tier} + )} + {resource.stability && ( + {resource.stability} + )} + {resource.audience && resource.audience !== 'public' && ( + {resource.audience} + )} +
+ + {/* Rendered markdown content */} +
+ + {/* Tags */} + {resource.tags?.length > 0 && ( +
+ {resource.tags.map(tag => ( + {tag} + ))} +
+ )} +
+ + +
+ ); +} + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/components/Home.jsx +-------------------------------------------------------------------------------- + +import { useMemo } from 'react'; + +/** + * Home Page Component + * + * PRD Requirements: + * - Clear entry points ("Start here", "Go deeper") + * - Progressive disclosure UX + * - Visual calm + */ +export default function Home({ manifest, resources, onNavigate }) { + // Get featured content by tier + const featured = useMemo(() => { + // Tier 0: Entry points + const tier0 = resources + .filter(r => r.tier === 0 && r.exposure === 'nav') + .sort((a, b) => a.title.localeCompare(b.title)); + + // Tier 1: Core concepts + const tier1 = resources + .filter(r => r.tier === 1 && r.exposure === 'nav' && r.audience !== 'internal') + .sort((a, b) => a.title.localeCompare(b.title)) + .slice(0, 4); + + return { tier0, tier1 }; + }, [resources]); + + const handleNavigate = (e, path) => { + e.preventDefault(); + onNavigate(path); + }; + + return ( +
+ {/* Hero Section */} +
+

Outcome-Driven Development

+

+ A methodology for building with AI agents through evidence, constraints, and progressive disclosure. +

+ +
+ + {/* Start Here Section */} +
+

Start Here

+

+ New to ODD? These are the best places to begin understanding the approach. +

+ +
+ + {/* Go Deeper Section */} +
+

Go Deeper

+

+ Ready to understand the foundations? Explore constraints, decision rules, and evidence policies. +

+ +
+ + {/* About Section */} +
+

About klappy.dev

+

+ This is the public face of an evolving experiment in human-AI collaboration. + Built with the same methodology it describes. +

+

+ Canon v{manifest?.pack?.version || '0.0.0'} · Last updated {manifest?.pack?.updated_at || 'unknown'} +

+
+ + +
+ ); +} + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/components/Navigation.jsx +-------------------------------------------------------------------------------- + +import { useState, useMemo } from 'react'; + +/** + * Navigation Component + * + * PRD Requirements: + * - First load shows ≤7 navigational items (Tier 0/1 only) + * - Progressive disclosure: deeper items revealed on demand + * - Mobile usable without horizontal scrolling + * - Canon discoverable without file paths exposed + */ +export default function Navigation({ resources, currentPath, onNavigate }) { + const [isMenuOpen, setIsMenuOpen] = useState(false); + const [expandedSections, setExpandedSections] = useState(new Set()); + + // Get primary navigation items (Tier 0 and 1 with nav exposure, max 7) + const primaryNavItems = useMemo(() => { + const navItems = resources + .filter(r => + r.exposure === 'nav' && + (r.tier === 0 || r.tier === 1) && + r.audience !== 'internal' + ) + .sort((a, b) => { + // Sort by tier first, then alphabetically + if (a.tier !== b.tier) return a.tier - b.tier; + return a.title.localeCompare(b.title); + }); + + // Group by category and take top 7 + const categories = [ + { key: 'about', label: 'About', match: r => r.path.includes('/about/') }, + { key: 'odd', label: 'ODD', match: r => r.path.includes('/odd/') || r.uri?.includes('odd') }, + { key: 'projects', label: 'Projects', match: r => r.path.includes('/projects/') }, + { key: 'canon', label: 'Canon', match: r => r.path.includes('/canon/') && !r.path.includes('/odd/') }, + ]; + + // Create nav structure: Home + top categories + const nav = [ + { key: 'home', label: 'Home', path: '/', isHome: true }, + ]; + + // Add ODD as primary entry (Tier 0) + const oddEntry = navItems.find(r => r.uri === 'klappy://public/odd'); + if (oddEntry) { + nav.push({ key: 'odd', label: 'What is ODD?', path: oddEntry.path }); + } + + // Add Why This Exists (Tier 0) + const whyEntry = navItems.find(r => r.uri === 'klappy://about/why-this-exists'); + if (whyEntry) { + nav.push({ key: 'why', label: 'Why This Exists', path: whyEntry.path }); + } + + // Add Projects (Tier 0) + const projectsEntry = navItems.find(r => r.uri === 'klappy://projects/index'); + if (projectsEntry) { + nav.push({ key: 'projects', label: 'Projects', path: projectsEntry.path }); + } + + // Add Constraints (Tier 1 - important for understanding) + const constraintsEntry = navItems.find(r => r.uri === 'klappy://canon/constraints'); + if (constraintsEntry) { + nav.push({ key: 'constraints', label: 'Constraints', path: constraintsEntry.path }); + } + + // Add Bio (Tier 1 - credibility) + const bioEntry = navItems.find(r => r.uri === 'klappy://about/bio'); + if (bioEntry) { + nav.push({ key: 'bio', label: 'About Me', path: bioEntry.path }); + } + + // Add FAQ (Tier 2 but useful) + const faqEntry = resources.find(r => r.uri === 'klappy://about/faq'); + if (faqEntry && nav.length < 7) { + nav.push({ key: 'faq', label: 'FAQ', path: faqEntry.path }); + } + + return nav.slice(0, 7); // Enforce max 7 items + }, [resources]); + + const toggleMenu = () => setIsMenuOpen(!isMenuOpen); + + const handleNavClick = (e, path) => { + e.preventDefault(); + onNavigate(path); + setIsMenuOpen(false); + }; + + return ( +
+
+ handleNavClick(e, '/')} + > + klappy.dev + + + {/* Mobile menu button */} + + + {/* Navigation */} + +
+ + +
+ ); +} + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/index.css +-------------------------------------------------------------------------------- + +/** + * Visual Interface Tokens + * + * Implements: + * - color-system@1.0.0 (/visual/interfaces/color-system/CONTRACT.md) + * - typography@1.0.0 (/visual/interfaces/typography/CONTRACT.md) + * - spacing@1.0.0 (/visual/interfaces/spacing/CONTRACT.md) + */ + +:root { + /* === Color System v1.0.0 === */ + /* Background Tokens */ + --color-bg-primary: #fafafa; + --color-bg-secondary: #ffffff; + --color-bg-tertiary: #f0f0f0; + + /* Text Tokens */ + --color-text-primary: #1a1a1a; + --color-text-secondary: #666666; + --color-text-inverse: #ffffff; + + /* Accent Tokens */ + --color-accent: #0066cc; + --color-accent-hover: #0052a3; + --color-accent-active: #003d7a; + + /* Semantic Tokens */ + --color-success: #22c55e; + --color-warning: #f59e0b; + --color-error: #ef4444; + + /* Border Tokens */ + --color-border-primary: #e0e0e0; + --color-border-secondary: #f0f0f0; + + /* === Typography v1.0.0 === */ + /* Font Families */ + --font-family-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-family-mono: 'SF Mono', Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + + /* Font Sizes (modular scale) */ + --font-size-xs: 0.75rem; /* 12px */ + --font-size-sm: 0.875rem; /* 14px */ + --font-size-base: 1rem; /* 16px */ + --font-size-lg: 1.125rem; /* 18px */ + --font-size-xl: 1.25rem; /* 20px */ + --font-size-2xl: 1.5rem; /* 24px */ + --font-size-3xl: 1.875rem; /* 30px */ + --font-size-4xl: 2.25rem; /* 36px */ + + /* Font Weights */ + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + + /* Line Heights */ + --line-height-tight: 1.25; + --line-height-normal: 1.5; + --line-height-relaxed: 1.75; + + /* Letter Spacing */ + --letter-spacing-tight: -0.025em; + --letter-spacing-normal: 0; + --letter-spacing-wide: 0.05em; + + /* === Spacing v1.0.0 (Base-8 Scale) === */ + --space-0: 0px; + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 24px; + --space-6: 32px; + --space-8: 48px; + --space-10: 64px; + --space-12: 96px; + --space-16: 128px; + + /* Semantic Spacing */ + --space-inline-xs: var(--space-1); + --space-inline-sm: var(--space-2); + --space-inline-md: var(--space-4); + --space-stack-xs: var(--space-1); + --space-stack-sm: var(--space-2); + --space-stack-md: var(--space-4); + --space-stack-lg: var(--space-6); + --space-inset-sm: var(--space-2); + --space-inset-md: var(--space-4); + --space-inset-lg: var(--space-6); +} + +/* Dark mode support */ +@media (prefers-color-scheme: dark) { + :root { + --color-bg-primary: #0f0f0f; + --color-bg-secondary: #1a1a1a; + --color-bg-tertiary: #262626; + + --color-text-primary: #f0f0f0; + --color-text-secondary: #a0a0a0; + --color-text-inverse: #1a1a1a; + + --color-accent: #4da6ff; + --color-accent-hover: #66b3ff; + --color-accent-active: #80c0ff; + + --color-border-primary: #333333; + --color-border-secondary: #262626; + } +} + +/* === Base Reset === */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + scroll-behavior: smooth; +} + +body { + font-family: var(--font-family-sans); + font-size: var(--font-size-base); + font-weight: var(--font-weight-normal); + line-height: var(--line-height-normal); + color: var(--color-text-primary); + background-color: var(--color-bg-primary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +html, body, #root { + height: 100%; +} + +/* === Typography === */ +h1, h2, h3, h4, h5, h6 { + font-weight: var(--font-weight-semibold); + line-height: var(--line-height-tight); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { font-size: var(--font-size-4xl); font-weight: var(--font-weight-bold); } +h2 { font-size: var(--font-size-3xl); } +h3 { font-size: var(--font-size-2xl); } +h4 { font-size: var(--font-size-xl); } + +p { + margin-bottom: var(--space-4); +} + +a { + color: var(--color-accent); + text-decoration: none; + transition: color 0.15s ease; +} + +a:hover { + color: var(--color-accent-hover); + text-decoration: underline; +} + +code { + font-family: var(--font-family-mono); + font-size: 0.9em; + background-color: var(--color-bg-tertiary); + padding: 0.125em 0.375em; + border-radius: 4px; +} + +pre { + font-family: var(--font-family-mono); + background-color: var(--color-bg-tertiary); + padding: var(--space-4); + border-radius: 8px; + overflow-x: auto; + margin-bottom: var(--space-4); +} + +pre code { + background: none; + padding: 0; +} + +/* === Utilities === */ +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + + + +-------------------------------------------------------------------------------- +📄 File: products/website/src/main.jsx +-------------------------------------------------------------------------------- + +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './index.css'; + +ReactDOM.createRoot(document.getElementById('root')).render( + + + +); + + + +-------------------------------------------------------------------------------- +📄 File: products/website/vite.config.js +-------------------------------------------------------------------------------- + +// Vite config for website lane +// Note: vite and plugins are installed at repo root, not in lane +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); + +// Import react plugin from repo root's node_modules +const repoRoot = resolve(__dirname, '../..'); +const react = require(resolve(repoRoot, 'node_modules/@vitejs/plugin-react')).default; + +export default { + plugins: [react()], + root: __dirname, + publicDir: resolve(__dirname, '../../public'), + build: { + outDir: 'dist', + emptyOutDir: true, + }, + server: { + port: 3000, + }, +}; diff --git a/package-lock.json b/package-lock.json index ef6f52eb..bfb056ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "devDependencies": { "@vitejs/plugin-react": "^4.3.4", "husky": "^9.1.7", + "puppeteer": "^24.35.0", "vite": "^6.0.7" } }, @@ -792,6 +793,41 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@puppeteer/browsers": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", + "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1149,6 +1185,13 @@ "win32" ] }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1201,6 +1244,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", @@ -1222,6 +1287,159 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/baseline-browser-mapping": { "version": "2.9.14", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", @@ -1232,6 +1450,16 @@ "baseline-browser-mapping": "dist/cli.js" } }, + "node_modules/basic-ftp": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", @@ -1266,6 +1494,26 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001764", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", @@ -1287,6 +1535,55 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chromium-bidi": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", + "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1294,6 +1591,43 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -1312,6 +1646,28 @@ } } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1534754", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", + "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/electron-to-chromium": { "version": "1.5.267", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", @@ -1319,6 +1675,43 @@ "dev": true, "license": "ISC" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -1371,6 +1764,110 @@ "node": ">=6" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -1414,7 +1911,76 @@ "node": ">=6.9.0" } }, - "node_modules/husky": { + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", @@ -1430,12 +1996,69 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -1449,6 +2072,13 @@ "node": ">=6" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -1462,6 +2092,13 @@ "node": ">=6" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -1496,6 +2133,13 @@ "node": ">= 20" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1522,6 +2166,16 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -1529,6 +2183,89 @@ "dev": true, "license": "MIT" }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1578,6 +2315,105 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer": { + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.35.0.tgz", + "integrity": "sha512-sbjB5JnJ+3nwgSdRM/bqkFXqLxRz/vsz0GRIeTlCk+j+fGpqaF2dId9Qp25rXz9zfhqnN9s0krek1M/C2GDKtA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.11.1", + "chromium-bidi": "12.0.1", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1534754", + "puppeteer-core": "24.35.0", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz", + "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.11.1", + "chromium-bidi": "12.0.1", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1534754", + "typed-query-selector": "^2.12.0", + "webdriver-bidi-protocol": "0.3.10", + "ws": "^8.19.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -1613,6 +2449,26 @@ "node": ">=0.10.0" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/rollup": { "version": "4.55.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", @@ -1677,6 +2533,58 @@ "semver": "bin/semver.js" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -1687,6 +2595,113 @@ "node": ">=0.10.0" } }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar-stream/node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-decoder/node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -1704,6 +2719,28 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -1810,12 +2847,126 @@ } } }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", + "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index 4928224a..58786bd9 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "devDependencies": { "@vitejs/plugin-react": "^4.3.4", "husky": "^9.1.7", + "puppeteer": "^24.35.0", "vite": "^6.0.7" } } diff --git a/products/website/index.html b/products/website/index.html new file mode 100644 index 00000000..d6f90449 --- /dev/null +++ b/products/website/index.html @@ -0,0 +1,14 @@ + + + + + + klappy.dev — Outcome-Driven Development + + + + +
+ + + diff --git a/products/website/src/App.jsx b/products/website/src/App.jsx new file mode 100644 index 00000000..97d725e3 --- /dev/null +++ b/products/website/src/App.jsx @@ -0,0 +1,144 @@ +import { useState, useEffect } from 'react'; +import Navigation from './components/Navigation'; +import ContentPage from './components/ContentPage'; +import Home from './components/Home'; + +/** + * Main App Component + * + * Implements PRD requirements: + * - Load /content/manifest.json + * - Render home page with ≤7 nav items + * - Render markdown content + * - Mobile-usable + * - Deep links work (URL represents resource) + */ +export default function App() { + const [manifest, setManifest] = useState(null); + const [resources, setResources] = useState([]); + const [currentPath, setCurrentPath] = useState(window.location.hash.slice(1) || '/'); + const [error, setError] = useState(null); + + // Load manifest + useEffect(() => { + fetch('/content/manifest.json') + .then(res => { + if (!res.ok) throw new Error(`Failed to load manifest: ${res.status}`); + return res.json(); + }) + .then(data => { + setManifest(data); + setResources(data.resources || []); + }) + .catch(err => { + console.error('Manifest load error:', err); + setError(err.message); + }); + }, []); + + // Handle hash routing + useEffect(() => { + const handleHashChange = () => { + const newPath = window.location.hash.slice(1) || '/'; + setCurrentPath(newPath); + }; + + window.addEventListener('hashchange', handleHashChange); + return () => window.removeEventListener('hashchange', handleHashChange); + }, []); + + // Navigate to a path + const navigateTo = (path) => { + window.location.hash = path; + }; + + // Error state + if (error) { + return ( +
+

Error Loading Content

+

{error}

+

Please try refreshing the page.

+
+ ); + } + + // Loading state + if (!manifest) { + return ( +
+

Loading...

+
+ ); + } + + // Find current resource + const currentResource = resources.find(r => r.path === currentPath); + + return ( +
+ + +
+ {currentPath === '/' ? ( + + ) : currentResource ? ( + + ) : ( +
+

Page Not Found

+

The requested page could not be found.

+ { e.preventDefault(); navigateTo('/'); }}> + Return home + +
+ )} +
+ + +
+ ); +} diff --git a/products/website/src/components/ContentPage.jsx b/products/website/src/components/ContentPage.jsx new file mode 100644 index 00000000..59c7eb6a --- /dev/null +++ b/products/website/src/components/ContentPage.jsx @@ -0,0 +1,270 @@ +import { useState, useEffect } from 'react'; +import { marked } from 'marked'; + +/** + * Content Page Component + * + * PRD Requirements: + * - Render markdown content + * - Deep links work (URL represents resource + section) + * - Mobile usable + */ +export default function ContentPage({ resource }) { + const [content, setContent] = useState(''); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + if (!resource?.path) return; + + setLoading(true); + setError(null); + + // Fetch the markdown content + fetch(`/content${resource.path}`) + .then(res => { + if (!res.ok) throw new Error(`Failed to load content: ${res.status}`); + return res.text(); + }) + .then(md => { + // Strip frontmatter if present + const contentWithoutFrontmatter = md.replace(/^---[\s\S]*?---\n*/m, ''); + + // Configure marked for safe rendering + marked.setOptions({ + gfm: true, + breaks: true, + }); + + // Parse markdown to HTML + const html = marked.parse(contentWithoutFrontmatter); + setContent(html); + setLoading(false); + + // Scroll to top on content change + window.scrollTo(0, 0); + }) + .catch(err => { + console.error('Content load error:', err); + setError(err.message); + setLoading(false); + }); + }, [resource?.path]); + + if (loading) { + return ( +
+
Loading content...
+
+ ); + } + + if (error) { + return ( +
+
+

Error Loading Content

+

{error}

+
+
+ ); + } + + return ( +
+
+ {/* Metadata badge */} +
+ {resource.tier !== undefined && ( + Tier {resource.tier} + )} + {resource.stability && ( + {resource.stability} + )} + {resource.audience && resource.audience !== 'public' && ( + {resource.audience} + )} +
+ + {/* Rendered markdown content */} +
+ + {/* Tags */} + {resource.tags?.length > 0 && ( +
+ {resource.tags.map(tag => ( + {tag} + ))} +
+ )} +
+ + +
+ ); +} diff --git a/products/website/src/components/Home.jsx b/products/website/src/components/Home.jsx new file mode 100644 index 00000000..f7f63f66 --- /dev/null +++ b/products/website/src/components/Home.jsx @@ -0,0 +1,261 @@ +import { useMemo } from 'react'; + +/** + * Home Page Component + * + * PRD Requirements: + * - Clear entry points ("Start here", "Go deeper") + * - Progressive disclosure UX + * - Visual calm + */ +export default function Home({ manifest, resources, onNavigate }) { + // Get featured content by tier + const featured = useMemo(() => { + // Tier 0: Entry points + const tier0 = resources + .filter(r => r.tier === 0 && r.exposure === 'nav') + .sort((a, b) => a.title.localeCompare(b.title)); + + // Tier 1: Core concepts + const tier1 = resources + .filter(r => r.tier === 1 && r.exposure === 'nav' && r.audience !== 'internal') + .sort((a, b) => a.title.localeCompare(b.title)) + .slice(0, 4); + + return { tier0, tier1 }; + }, [resources]); + + const handleNavigate = (e, path) => { + e.preventDefault(); + onNavigate(path); + }; + + return ( +
+ {/* Hero Section */} +
+

Outcome-Driven Development

+

+ A methodology for building with AI agents through evidence, constraints, and progressive disclosure. +

+ +
+ + {/* Start Here Section */} +
+

Start Here

+

+ New to ODD? These are the best places to begin understanding the approach. +

+ +
+ + {/* Go Deeper Section */} +
+

Go Deeper

+

+ Ready to understand the foundations? Explore constraints, decision rules, and evidence policies. +

+ +
+ + {/* About Section */} +
+

About klappy.dev

+

+ This is the public face of an evolving experiment in human-AI collaboration. + Built with the same methodology it describes. +

+

+ Canon v{manifest?.pack?.version || '0.0.0'} · Last updated {manifest?.pack?.updated_at || 'unknown'} +

+
+ + +
+ ); +} diff --git a/products/website/src/components/Navigation.jsx b/products/website/src/components/Navigation.jsx new file mode 100644 index 00000000..111fda3f --- /dev/null +++ b/products/website/src/components/Navigation.jsx @@ -0,0 +1,237 @@ +import { useState, useMemo } from 'react'; + +/** + * Navigation Component + * + * PRD Requirements: + * - First load shows ≤7 navigational items (Tier 0/1 only) + * - Progressive disclosure: deeper items revealed on demand + * - Mobile usable without horizontal scrolling + * - Canon discoverable without file paths exposed + */ +export default function Navigation({ resources, currentPath, onNavigate }) { + const [isMenuOpen, setIsMenuOpen] = useState(false); + const [expandedSections, setExpandedSections] = useState(new Set()); + + // Get primary navigation items (Tier 0 and 1 with nav exposure, max 7) + const primaryNavItems = useMemo(() => { + const navItems = resources + .filter(r => + r.exposure === 'nav' && + (r.tier === 0 || r.tier === 1) && + r.audience !== 'internal' + ) + .sort((a, b) => { + // Sort by tier first, then alphabetically + if (a.tier !== b.tier) return a.tier - b.tier; + return a.title.localeCompare(b.title); + }); + + // Group by category and take top 7 + const categories = [ + { key: 'about', label: 'About', match: r => r.path.includes('/about/') }, + { key: 'odd', label: 'ODD', match: r => r.path.includes('/odd/') || r.uri?.includes('odd') }, + { key: 'projects', label: 'Projects', match: r => r.path.includes('/projects/') }, + { key: 'canon', label: 'Canon', match: r => r.path.includes('/canon/') && !r.path.includes('/odd/') }, + ]; + + // Create nav structure: Home + top categories + const nav = [ + { key: 'home', label: 'Home', path: '/', isHome: true }, + ]; + + // Add ODD as primary entry (Tier 0) + const oddEntry = navItems.find(r => r.uri === 'klappy://public/odd'); + if (oddEntry) { + nav.push({ key: 'odd', label: 'What is ODD?', path: oddEntry.path }); + } + + // Add Why This Exists (Tier 0) + const whyEntry = navItems.find(r => r.uri === 'klappy://about/why-this-exists'); + if (whyEntry) { + nav.push({ key: 'why', label: 'Why This Exists', path: whyEntry.path }); + } + + // Add Projects (Tier 0) + const projectsEntry = navItems.find(r => r.uri === 'klappy://projects/index'); + if (projectsEntry) { + nav.push({ key: 'projects', label: 'Projects', path: projectsEntry.path }); + } + + // Add Constraints (Tier 1 - important for understanding) + const constraintsEntry = navItems.find(r => r.uri === 'klappy://canon/constraints'); + if (constraintsEntry) { + nav.push({ key: 'constraints', label: 'Constraints', path: constraintsEntry.path }); + } + + // Add Bio (Tier 1 - credibility) + const bioEntry = navItems.find(r => r.uri === 'klappy://about/bio'); + if (bioEntry) { + nav.push({ key: 'bio', label: 'About Me', path: bioEntry.path }); + } + + // Add FAQ (Tier 2 but useful) + const faqEntry = resources.find(r => r.uri === 'klappy://about/faq'); + if (faqEntry && nav.length < 7) { + nav.push({ key: 'faq', label: 'FAQ', path: faqEntry.path }); + } + + return nav.slice(0, 7); // Enforce max 7 items + }, [resources]); + + const toggleMenu = () => setIsMenuOpen(!isMenuOpen); + + const handleNavClick = (e, path) => { + e.preventDefault(); + onNavigate(path); + setIsMenuOpen(false); + }; + + return ( +
+
+ handleNavClick(e, '/')} + > + klappy.dev + + + {/* Mobile menu button */} + + + {/* Navigation */} + +
+ + +
+ ); +} diff --git a/products/website/src/index.css b/products/website/src/index.css new file mode 100644 index 00000000..09c2b860 --- /dev/null +++ b/products/website/src/index.css @@ -0,0 +1,200 @@ +/** + * Visual Interface Tokens + * + * Implements: + * - color-system@1.0.0 (/visual/interfaces/color-system/CONTRACT.md) + * - typography@1.0.0 (/visual/interfaces/typography/CONTRACT.md) + * - spacing@1.0.0 (/visual/interfaces/spacing/CONTRACT.md) + */ + +:root { + /* === Color System v1.0.0 === */ + /* Background Tokens */ + --color-bg-primary: #fafafa; + --color-bg-secondary: #ffffff; + --color-bg-tertiary: #f0f0f0; + + /* Text Tokens */ + --color-text-primary: #1a1a1a; + --color-text-secondary: #666666; + --color-text-inverse: #ffffff; + + /* Accent Tokens */ + --color-accent: #0066cc; + --color-accent-hover: #0052a3; + --color-accent-active: #003d7a; + + /* Semantic Tokens */ + --color-success: #22c55e; + --color-warning: #f59e0b; + --color-error: #ef4444; + + /* Border Tokens */ + --color-border-primary: #e0e0e0; + --color-border-secondary: #f0f0f0; + + /* === Typography v1.0.0 === */ + /* Font Families */ + --font-family-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-family-mono: 'SF Mono', Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + + /* Font Sizes (modular scale) */ + --font-size-xs: 0.75rem; /* 12px */ + --font-size-sm: 0.875rem; /* 14px */ + --font-size-base: 1rem; /* 16px */ + --font-size-lg: 1.125rem; /* 18px */ + --font-size-xl: 1.25rem; /* 20px */ + --font-size-2xl: 1.5rem; /* 24px */ + --font-size-3xl: 1.875rem; /* 30px */ + --font-size-4xl: 2.25rem; /* 36px */ + + /* Font Weights */ + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + + /* Line Heights */ + --line-height-tight: 1.25; + --line-height-normal: 1.5; + --line-height-relaxed: 1.75; + + /* Letter Spacing */ + --letter-spacing-tight: -0.025em; + --letter-spacing-normal: 0; + --letter-spacing-wide: 0.05em; + + /* === Spacing v1.0.0 (Base-8 Scale) === */ + --space-0: 0px; + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 24px; + --space-6: 32px; + --space-8: 48px; + --space-10: 64px; + --space-12: 96px; + --space-16: 128px; + + /* Semantic Spacing */ + --space-inline-xs: var(--space-1); + --space-inline-sm: var(--space-2); + --space-inline-md: var(--space-4); + --space-stack-xs: var(--space-1); + --space-stack-sm: var(--space-2); + --space-stack-md: var(--space-4); + --space-stack-lg: var(--space-6); + --space-inset-sm: var(--space-2); + --space-inset-md: var(--space-4); + --space-inset-lg: var(--space-6); +} + +/* Dark mode support */ +@media (prefers-color-scheme: dark) { + :root { + --color-bg-primary: #0f0f0f; + --color-bg-secondary: #1a1a1a; + --color-bg-tertiary: #262626; + + --color-text-primary: #f0f0f0; + --color-text-secondary: #a0a0a0; + --color-text-inverse: #1a1a1a; + + --color-accent: #4da6ff; + --color-accent-hover: #66b3ff; + --color-accent-active: #80c0ff; + + --color-border-primary: #333333; + --color-border-secondary: #262626; + } +} + +/* === Base Reset === */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + scroll-behavior: smooth; +} + +body { + font-family: var(--font-family-sans); + font-size: var(--font-size-base); + font-weight: var(--font-weight-normal); + line-height: var(--line-height-normal); + color: var(--color-text-primary); + background-color: var(--color-bg-primary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +html, body, #root { + height: 100%; +} + +/* === Typography === */ +h1, h2, h3, h4, h5, h6 { + font-weight: var(--font-weight-semibold); + line-height: var(--line-height-tight); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { font-size: var(--font-size-4xl); font-weight: var(--font-weight-bold); } +h2 { font-size: var(--font-size-3xl); } +h3 { font-size: var(--font-size-2xl); } +h4 { font-size: var(--font-size-xl); } + +p { + margin-bottom: var(--space-4); +} + +a { + color: var(--color-accent); + text-decoration: none; + transition: color 0.15s ease; +} + +a:hover { + color: var(--color-accent-hover); + text-decoration: underline; +} + +code { + font-family: var(--font-family-mono); + font-size: 0.9em; + background-color: var(--color-bg-tertiary); + padding: 0.125em 0.375em; + border-radius: 4px; +} + +pre { + font-family: var(--font-family-mono); + background-color: var(--color-bg-tertiary); + padding: var(--space-4); + border-radius: 8px; + overflow-x: auto; + margin-bottom: var(--space-4); +} + +pre code { + background: none; + padding: 0; +} + +/* === Utilities === */ +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} diff --git a/products/website/src/main.jsx b/products/website/src/main.jsx new file mode 100644 index 00000000..47742c1b --- /dev/null +++ b/products/website/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './index.css'; + +ReactDOM.createRoot(document.getElementById('root')).render( + + + +); diff --git a/products/website/vite.config.js b/products/website/vite.config.js new file mode 100644 index 00000000..b10dd290 --- /dev/null +++ b/products/website/vite.config.js @@ -0,0 +1,25 @@ +// Vite config for website lane +// Note: vite and plugins are installed at repo root, not in lane +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); + +// Import react plugin from repo root's node_modules +const repoRoot = resolve(__dirname, '../..'); +const react = require(resolve(repoRoot, 'node_modules/@vitejs/plugin-react')).default; + +export default { + plugins: [react()], + root: __dirname, + publicDir: resolve(__dirname, '../../public'), + build: { + outDir: 'dist', + emptyOutDir: true, + }, + server: { + port: 3000, + }, +}; From d1be3bd82f13997845710372d842a859b697dbaf Mon Sep 17 00:00:00 2001 From: Automation Date: Mon, 19 Jan 2026 20:18:06 -0500 Subject: [PATCH 3/4] chore: extend legacy dist mirroring to website lane Temporary compatibility fix to enable website lane deployment on existing Cloudflare Pages project configured with /dist output. Once a dedicated Cloudflare project is set up for the website lane with output directory products/website/dist, this can be reverted. --- infra/scripts/smart-build.js | 3 ++- klappy-dev-book-export.md | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/infra/scripts/smart-build.js b/infra/scripts/smart-build.js index 05204d56..638884f5 100644 --- a/infra/scripts/smart-build.js +++ b/infra/scripts/smart-build.js @@ -270,7 +270,8 @@ function main() { copyEvidenceToDist(); // Transitional compatibility: keep /dist around for current deploys. - if (lane === 'ai-navigation' && existsSync(DIST_PATH)) { + // Extended to include website lane until Cloudflare project is properly configured. + if ((lane === 'ai-navigation' || lane === 'website') && existsSync(DIST_PATH)) { mirrorLaneDistToLegacyRootDist(); } diff --git a/klappy-dev-book-export.md b/klappy-dev-book-export.md index 253b5528..f6fe43d2 100644 --- a/klappy-dev-book-export.md +++ b/klappy-dev-book-export.md @@ -5,7 +5,7 @@ ================================================================================ -Generated: 2026-01-20T01:12:27.589Z +Generated: 2026-01-20T01:18:07.114Z Total Files: 168 This is a complete export of all documentation, code, and content files @@ -18961,7 +18961,8 @@ function main() { copyEvidenceToDist(); // Transitional compatibility: keep /dist around for current deploys. - if (lane === 'ai-navigation' && existsSync(DIST_PATH)) { + // Extended to include website lane until Cloudflare project is properly configured. + if ((lane === 'ai-navigation' || lane === 'website') && existsSync(DIST_PATH)) { mirrorLaneDistToLegacyRootDist(); } From 1fb713dcbd4158325f48e6842806016a208a7ee7 Mon Sep 17 00:00:00 2001 From: Automation Date: Mon, 19 Jan 2026 20:26:51 -0500 Subject: [PATCH 4/4] docs(evidence): add live deployment URLs Verified deployment on klappy-dev-website Cloudflare project: - Preview URL: https://website-attempt-test.klappy-dev-website.pages.dev/ - Evidence URL: https://website-attempt-test.klappy-dev-website.pages.dev/_evidence/ All completion criteria verified: - Branch pushed: d1be3bd - Cloudflare builds: successful - App loads: HTTP 200 - /_evidence/: HTTP 200 - Screenshots: 3 present --- .../prd-v1.0/_runs/71c6fdc7/EVIDENCE.md | 17 ++++++++++++++--- klappy-dev-book-export.md | 19 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md index 385dee30..8d75834a 100644 --- a/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md +++ b/attempts/website/prd-v1.0/_runs/71c6fdc7/EVIDENCE.md @@ -47,7 +47,18 @@ Home page on mobile viewport (375x812). Shows: ## Deployment URLs -*(To be filled after Cloudflare deployment)* +**LIVE DEPLOYMENT VERIFIED:** -- Preview URL: TBD -- Evidence URL: TBD/_evidence/ +- Preview URL: https://website-attempt-test.klappy-dev-website.pages.dev/ +- Evidence URL: https://website-attempt-test.klappy-dev-website.pages.dev/_evidence/ +- Cloudflare Project: `klappy-dev-website` + +### Verification Results + +| Requirement | Status | Details | +|-------------|--------|---------| +| Branch pushed | ✅ PASS | Commit d1be3bd pushed to origin | +| Cloudflare builds | ✅ PASS | klappy-dev-website project deployed | +| App loads | ✅ PASS | HTTP 200 at preview URL | +| /_evidence/ works | ✅ PASS | HTTP 200, index.html/json served | +| Screenshots present | ✅ PASS | 3 screenshots in evidence | diff --git a/klappy-dev-book-export.md b/klappy-dev-book-export.md index f6fe43d2..e3a09330 100644 --- a/klappy-dev-book-export.md +++ b/klappy-dev-book-export.md @@ -5,7 +5,7 @@ ================================================================================ -Generated: 2026-01-20T01:18:07.114Z +Generated: 2026-01-20T01:26:51.550Z Total Files: 168 This is a complete export of all documentation, code, and content files @@ -13929,10 +13929,21 @@ Home page on mobile viewport (375x812). Shows: ## Deployment URLs -*(To be filled after Cloudflare deployment)* +**LIVE DEPLOYMENT VERIFIED:** -- Preview URL: TBD -- Evidence URL: TBD/_evidence/ +- Preview URL: https://website-attempt-test.klappy-dev-website.pages.dev/ +- Evidence URL: https://website-attempt-test.klappy-dev-website.pages.dev/_evidence/ +- Cloudflare Project: `klappy-dev-website` + +### Verification Results + +| Requirement | Status | Details | +|-------------|--------|---------| +| Branch pushed | ✅ PASS | Commit d1be3bd pushed to origin | +| Cloudflare builds | ✅ PASS | klappy-dev-website project deployed | +| App loads | ✅ PASS | HTTP 200 at preview URL | +| /_evidence/ works | ✅ PASS | HTTP 200, index.html/json served | +| Screenshots present | ✅ PASS | 3 screenshots in evidence |