Build Log · June 20, 2026
The Capture Notebook
ForgeHome stopped being a task manager and started being a household mind — a place where thoughts land before they have a shape.
- ForgeHome
- Capture
- AI
- Hardening
- ChatGPT bugs fixed
- 4
- new table (captureItems)
- 1
- new shared utils (date.ts, chatgpt.ts, calendarImportStatus)
- 3
- files hardened (UTC drift, zero-duration events, sortOrder magic number, day-brief cache)
- 7
ChatGPT bugs fixed
new table (captureItems)
new shared utils (date.ts, chatgpt.ts, calendarImportStatus)
files hardened (UTC drift, zero-duration events, sortOrder magic number, day-brief cache)
Timeline
Start
ChatGPT's bug report
4 real issues identified from last session's retro
30m
All 4 bugs fixed
UTC drift, zero-duration events, sortOrder:40, day-brief caching
1h
Notebook design agreed
Capture is a landing pad, not a task queue
2h
Notebook built and deployed
captureItems table, NotebookInput, NotebookList, Today nudge
2.5h
ChatGPT research wired in
openInChatGPT extracted to shared util, proven in 2 places
Close
Deployed to home.forgekits.build
Clean build, all 22 pages, DB migrated
What shipped
forgehome/lib/date.ts — localDateStr() and localDateOffset() using Intl, timezone-safe for US East
forgehome/lib/chatgpt.ts — openInChatGPT({ text, context, type }) shared util, context-aware prompts, clipboard fallback
captureItems schema table with status enum (raw/suggested/routed/calendar_created/saved_note/archived/dismissed)
calendarImportStatus column on routeItems (unconfirmed/confirmed/dismissed) — replaces sortOrder:40 magic number
Capture Notebook page — textarea-only input, no form fields, voice support, AI classifies in background
NotebookInput component — drop thought, hit 'Drop it', save is instant, classification is async
NotebookList component — Needs sorting / Still here / Saved notes sections with inline expand-to-act cards
Today nudge — quiet count badge below header, links to Notebook, no guilt tone
Research in ChatGPT — context-aware prompt per capture type, opens new tab + copies to clipboard
RouteItemCard — Search icon in action row on every active route item, same openInChatGPT util
Google Calendar write-back fix — end = start + 60min, never zero-duration again
Day-brief caching — in-process Map keyed by household+date+itemHash, same state = same brief
“Capture is not a task queue. It's a place where thoughts go to become something.”