Build Log · June 21, 2026
Forge: Quick Capture
Closed the human-input loop — Gino can now push field context into the event furnace from his phone in under 10 seconds.
- Forge
- Capture
- Mobile
- Events
- capture flows shipped
- 4
- new event types
- 2
- schema changes
- 0
- spins
- 0
capture flows shipped
new event types
schema changes
spins
Timeline
Start
Scoped Session 3 = Capture
Capture is not a page — it's an entry point into the event furnace
Plan
Plan approved with 7 amendments
Single options endpoint, no leadStatus mutation, full event-display support
Build
Furnace + presentation layer first
note_added + call_outcome_recorded wired across all 6 presentation points
Build
CaptureSheet + 4 sub-forms
One sheet, step state machine, shared searchable Picker
Build
Floating launcher in the app shell
Mobile FAB above bottom nav, desktop button in sidebar
Quench
tsc --noEmit clean, committed
9 files, no schema migration
What shipped
Floating Capture button — mobile FAB (above bottom nav, safe-area aware) + desktop sidebar button, living in the app shell not the nav
CaptureSheet — one bottom-sheet orchestrator with a step state machine (menu | customer-memory | job-note | call-outcome | new-lead)
Customer Memory capture → memory_captured event → appears in Customer Detail Forge Memory hub
Job Note capture → note record + note_added event
Call Outcome capture → call_outcome_recorded event (event only, no leadStatus mutation)
New Lead capture → contact + contact_added, optional deal + deal_created using defaultStageId
getCaptureOptions server action — loads contacts/activeDeals/defaultStageId once per open, client filters locally
Two new event types fully wired across write-event.ts and event-display.ts
“Capture is how Forge stops being a smart inbox and becomes a memory engine.”