IWasCute
Search the build
-
316515b2026-09-10 TK-11412: add /privacy + /terms, and stop the licensor flow claiming a submission that never happened -
cb37a2a2026-09-10 iwascute: pin .deploy.conf PROJECT_NAME=gap-iwascute (real live pm2 name) so deploy reload succeeds (TK-11412) -
3c1cc302026-09-10 iwascute: exclude prod verification/ artifacts from rsync deploy (delete-guard) (TK-11412) -
5dd39c22026-09-10 iwascute: add sitewide AdSense adsbygoogle.js loader to root layout for Auto Ads eligibility (TK-11412) -
c6ece762026-09-10 iwascute: add FAQ page (content depth), wire into footer + sitemap, scaffold canonical rsync .deploy.conf (TK-11412 AdSense readiness) -
21032c02026-09-10 iwascute: canonicalize homepage for AdSense — redirect dev v1/v2/v3 variants to /, sitewide Privacy/About/Contact footer, drop dead Express-era static index/admin (TK-11412) -
f962e4a2026-09-10 iwascute: redirect /privacy -> /privacy.html (AdSense URL consistency) -
edd2d572026-09-10 Add clean /privacy route (AdSense URL consistency) -
1106eb72026-09-10 Add privacy policy page for AdSense -
443abe52026-09-10 Deploy IWasCute verification with preserved analytics and portable runtime proof -
9205c242026-09-10 auto-data-snapshot: 2026-09-10T10:34:55 (2 data files) — verification/TK-11380/canary/results.json verification/TK-11380/production.patch -
a21f9dd2026-09-10 Record IWasCute verification boundaries and deployment gates -
9ee4d7d2026-09-10 Verify AdSense ownership without loading ads in private photo flows -
fc389762026-09-09 TK-11341: add AdSense Auto-Ads loader + ads.txt (revert to remove ads) -
744445d2026-08-30 add creds-in-URL fetch guard to gated pages (TK-10984) -
22cd8ab2026-08-25 creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap) -
4d594ed2026-08-04 Strip DW marketing pixel + ad slot from internal tool (not a customer-facing site) [ads/tracking scope] -
dfb7fc32026-08-04 Wire DW Meta Pixel 1431180262113856 + DW-network ad slot [ads/tracking rollout] -
b4350f12026-05-30 harden .gitignore: add backup file patterns (*.bak-*, *.pre-*, *.orig, *.save, *.old, *~, copy-of-*) -
d56ab2a2026-05-30 fix: respect PORT env var in server.js; add missing express dep; guard division-by-zero in TvN slider -
f0b70d32026-05-30 security: strip hardcoded dw_admin DSN password -> env-first/passwordless. No rotation/deploy. -
d340dfc2026-05-20 add: pre-stage Meta Pixel snippet (placeholder; flip via _dw-batch set-fb-pixel.sh) -
12b7f892026-05-13 snapshot: 2 file(s) changed, +1 new, ~1 modified -
5f5efec2026-05-06 initial scaffold (gitify-all 2026-05-06)
Authors
- Steve23
- auto-commit-fleet1
Agents used
Skills used
- /privacy6
- /claude5
- /code5
- /terms3
- /tracking2
- /licensor1
- /submit1
- /canary1
- /results1
- /production1
- /index1
- /passwordless1
- /deploy1
Creative ideas + design notes
316515b · 2026-09-10 · TK-11412: add /privacy + /terms, and stop the licensor flow claiming a submission that never happened
Two blockers on IWasCute public readiness, both verified live before changing anything. 1. /privacy and /terms did not exist. The login and licensor pages link to both, so every visitor following those links got a 404 - and a reachable, accurate privacy policy is a hard AdSense requirement, not a nicety. Both pages are written from what the code actually does: the two real third parties (AdSense ca-pub-5278231299883833 and GA4 G-2DHDBP8R78, both in layout.tsx) and the real columns in db/001_schema.sql - email, display name, adult confirmation, photographer and copyright fields, the likeness signature, and the separate editorial / commercial / AI-training consents. No boilerplate claims about data we do not collect. 2. ReviewSubmit simulated a submission. It waited 2.2s then set success on Math.random() > 0.05, telling a real person their photos were in the queue and that we would email them when cleared - for photographs that were never transmitted - and showing a random failure the other 5% of the time. There is no /api/licensor/submit endpoint (the only API routes are auth and admin), so nothing was ever sent or stored. The flow now ends on an honest preview state saying plainly that submissions are not open, nothing was uploaded, and the data stayed in the browser. 'success' is deliberately removed from SubmitState rather than left unused: it would compile fine but render nothing, dropping the user back on the form. Verified: tsc --noEmit clean, next build succeeds, /privacy and /terms present in the route table as static pages. Deploy is NOT included here and stays gated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
cb37a2a · 2026-09-10 · iwascute: pin .deploy.conf PROJECT_NAME=gap-iwascute (real live pm2 name) so deploy reload succeeds (TK-11412)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QTGuKtAvmVMngA9PyTiftG
3c1cc30 · 2026-09-10 · iwascute: exclude prod verification/ artifacts from rsync deploy (delete-guard) (TK-11412)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QTGuKtAvmVMngA9PyTiftG
5dd39c2 · 2026-09-10 · iwascute: add sitewide AdSense adsbygoogle.js loader to root layout for Auto Ads eligibility (TK-11412)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QTGuKtAvmVMngA9PyTiftG
c6ece76 · 2026-09-10 · iwascute: add FAQ page (content depth), wire into footer + sitemap, scaffold canonical rsync .deploy.conf (TK-11412 AdSense readiness)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QTGuKtAvmVMngA9PyTiftG
21032c0 · 2026-09-10 · iwascute: canonicalize homepage for AdSense — redirect dev v1/v2/v3 variants to /, sitewide Privacy/About/Contact footer, drop dead Express-era static index/admin (TK-11412)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QTGuKtAvmVMngA9PyTiftG
22cd8ab · 2026-08-25 · creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
d56ab2a · 2026-05-30 · fix: respect PORT env var in server.js; add missing express dep; guard division-by-zero in TvN slider
- server.js: PORT was hardcoded 7350, ignoring process.env.PORT; now uses process.env.PORT||7350 - package.json: express was used in server.js but never declared as a dependency (MODULE_NOT_FOUND on fresh install) - public/index.html: moveSlider() divided by pct which can be 0 when slider is at left edge, producing Infinity width on thenEl; guarded with pct>0 check Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
File tree
- .deploy.conf
- .gitignore
- AGENTS.md
- CLAUDE.md
- README.md
- db/001_schema.sql
- ecosystem.config.js
- eslint.config.mjs
- next.config.ts
- package-lock.json
- package.json
- postcss.config.mjs
- public/ads.txt
- public/favicon.svg
- public/file.svg
- public/globe.svg
- public/next.svg
- public/privacy.html
- public/robots.txt
- public/sitemap.xml
- public/vercel.svg
- public/window.svg
- server.js
- src/app/about/page.tsx
- src/app/admin/page.tsx
- src/app/api/admin/route.ts
- src/app/api/auth/route.ts
- src/app/browse/page.tsx
- src/app/contact/page.tsx
- src/app/dashboard/page.tsx
- src/app/faq/page.tsx
- src/app/favicon.ico
- src/app/globals.css
- src/app/layout.tsx
- src/app/licensor/layout.tsx
- src/app/licensor/page.tsx
- src/app/login/page.tsx
- src/app/page.tsx
- src/app/privacy/page.tsx
- src/app/terms/page.tsx
- src/app/v1/page.tsx
- src/app/v2/page.tsx
- src/app/v3/page.tsx
- src/components/licensor/CopyrightInfo.tsx
- src/components/licensor/LikenessRelease.tsx
- src/components/licensor/PhotoUpload.tsx
- src/components/licensor/ReviewSubmit.tsx
- src/components/licensor/Stepper.tsx
- src/components/shared/Navbar.tsx
- src/components/shared/SiteFooter.tsx
- src/components/shared/VersionSwitcher.tsx
- src/lib/auth.ts
- src/lib/db.ts
- tsconfig.json
- verification/TK-11380/PRODUCTION.md
- verification/TK-11380/REVIEW.md
- verification/TK-11380/canary/login.png
- verification/TK-11380/canary/results.json
- verification/TK-11380/deploy-remote.sh
- verification/TK-11380/e2e-proof.json
- verification/TK-11380/live/3x-e2e.png
- verification/TK-11380/live/3x-render.png
- verification/TK-11380/live/build-output.txt
- verification/TK-11380/live/login.png
- verification/TK-11380/live/normalized-links.json
- verification/TK-11380/live/post-activation-http.json
- verification/TK-11380/live/results.json
- verification/TK-11380/login.png
- verification/TK-11380/normalize-build.cjs
- verification/TK-11380/production.patch
- verification/TK-11380/results.json
- verification/TK-11380/rollback-test.cjs
- verification/TK-11380/verify-http.cjs
- verification/TK-11380/verify.cjs
- verification/e2e-proof.json