ALL MEMOS
Download .docx
CHILDHOOD — changelog · 2026-05-13
P0 polish pass — "sketch to real product"
What changed
Age picker + 7-letter library
- Added a horizontal pill-row age picker (ages 5, 7, 8, 10, 12, 15, 17)
- Today's letter (age 7) fetched live from S3 (
note.json) on every load
- 6 letters hard-coded inline with realistic prose in Harnoor's voice at each age
- Switching ages re-renders the full letter view (salutation, body, doodles, audio, share card) without a page reload
Voice quality — confirmed ElevenLabs
- Lambda
gen_childhood already uses eleven_turbo_v2_5 via innerverse/elevenlabs-api-key + innerverse/elevenlabs-voice-childhood — no change needed
- MP3s confirmed present for 2026-05-09 through 2026-05-13 at
innerverse-apps/childhood/harnoor/{date}/letter.mp3
- Audio player upgraded: scrubber bar, elapsed time display, stop button, ElevenLabs badge
- Modal (shoebox letters) has its own independent audio player
Reply ritual
- Textarea: "write back to your N-year-old self"
- Save to
localStorage keyed by age — persists across sessions
- "Get their reply (Pro)" button: shows "coming after launch" toast — Stripe placeholder
Share card
- Dynamic headline: "today my N-year-old self wrote me a letter"
- Watercolor bleed background (CSS radial-gradient)
- IG-story-friendly quote extraction (first meaty sentence ≤100 chars)
- Copy-to-clipboard + native Web Share API
Tier visibility
- Free: 1 letter/day at age 7 (today)
- Pro: full library access, AI replies, custom age picker — shown inline but non-blocking
- Early access section preserved (free during launch, email capture wired)
Sticky bottom CTA
- Fixed bar: streak count (localStorage), "don't break it", gold "Go Pro" button
- Streak auto-increments daily on open
PWA manifest
<link rel="manifest" href="/manifest.json"> added
theme-color meta set to --paper (#f5ecd9)
Shoebox archive
- All 7 letters rendered as scrap cards with age tag + NEW pip on today's
- Click → opens modal with full letter text + audio player
Why
Audit classified CHILDHOOD as "Partial" — static audio player, one hardcoded track, no personalization visible to the user. Gap to real product: wire S3, add age progression, add reply ritual, add social share. Done in this pass.
Deploy
- S3 key:
innerverse-apps/childhood/index.html
- Bucket:
innerverse-voice-scratch
- CF distro:
E2XCVIHF61KT85 (childhood.silentinfinity.com)
- CF invalidation:
IS0J7X9LVVJNNSTDGQGPLTE8U