3.7 KiB
3.7 KiB
Daily Log — Feb 19, 2026
CRESyncFlow Major Session (10PM - 1AM)
Project Setup
- CRESyncFlow at
/tmp/CRESyncFlow, running on port 8900 - GHL MCP server on port 3461 (228 tools, 12 view tools)
- Git remote:
git.nicholai.work/jake/CRESyncFlow - Safety tag:
v1-pre-mcp-refactor(restore point before MCP restructure)
Commits Pushed to Gitea
- Full CRESyncFlow build — Reonomy scraper v14, Anthropic OAuth, MCP Apps, theme system (41 files, 1647 insertions)
- Dependencies & docs — README, standalone scraper, setup.sh script, npm scripts
- Fixed MCP App rendering — Replaced broken iframe (module script silently failed in iframes) with native UITreeRenderer
- Real interactive MCP App components — Ported 7 apps + shared components from The-Complete-GHL-MCP (65 apps). KanbanBoard with drag-drop, DataTable with sorting, MetricCard, PageHeader, etc. (2344 lines added)
- Persistent AI sidebar — Right 1/5th of every page, 3 contextual suggestion bubbles that adapt per view + live data (unread count, deal count, etc.). Minimizable.
- Co-pilot mode — Agent breaks out of chat to drive CRM UI. Typing animation (45 chars/sec), action bubble extraction from AI responses, AIActionContext dispatch, purple co-pilot indicator. Full flow: AI suggests → user clicks action → navigates to Conversations → agent visibly types draft.
- MCP Apps architecture restructure (in progress via sub-agent) — Converting dashboard views into proper MCP Apps with AppHost + AppBridge (JSON-RPC 2.0 postMessage protocol)
Key Technical Decisions
- Iframe module script bug:
<script type="module" crossorigin>silently fails to execute inside iframes. React never mounts, #root stays empty. No errors. Fix: either remove crossorigin, use document.write(), or render natively (we chose native rendering initially, now moving to proper MCP Apps architecture) - MCP Apps skill says: NEVER use dynamic JSON tree rendering. Use Direct Component Composition per app instead. I violated this and Jake caught me.
- Architecture direction: Each software integration = MCP server. Each dashboard view = MCP App. Agent interacts through MCP protocol natively (callServerTool, updateModelContext, sendMessage).
Files Created/Modified
/tmp/CRESyncFlow/components/AISidebar.tsx— Persistent AI chat sidebar/tmp/CRESyncFlow/components/mcp-apps/— 7 app components, shared components, CSS, types/tmp/CRESyncFlow/components/MCPAppRenderer.tsx(replaced UITreeRenderer.tsx)/tmp/CRESyncFlow/hooks/useTypingAnimation.ts— Co-pilot typing animation hook/tmp/CRESyncFlow/contexts/AIActionContext.tsx— Event bus for co-pilot actions/tmp/CRESyncFlow/scripts/setup.sh— Full dependency setup script/tmp/CRESyncFlow/server/reonomy-scraper-standalone.js— v14 CLI scraper
Reasoning Mode Enabled
- Jake noticed I wasn't checking skills before building. I built a static UITreeRenderer that the MCP Apps skill explicitly warns against.
- Root cause: tunnel vision on debugging, skipped skill check step.
- Fix:
/reasoning onenabled (visible thinking). Forces me to pause and check skills before acting. - Jake asked if I can toggle reasoning dynamically like model switching — I can't, it's session-level only. Potential Clawdbot feature request.
Sub-Agent Status
mcp-apps-restructurespawned on Opus — converting CRESyncFlow to MCP Apps architecture with AppHost/AppBridge. 15-min timeout. Still running at compaction time.
Infrastructure Notes
- Vite dev server died during HMR and needed restart (process
sharp-slug-2killed) - Claude OAuth token expired during testing — chat API returned "Failed to fetch"
- Browser automation: used
profile=clawdfor all browser testing