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

  1. Full CRESyncFlow build — Reonomy scraper v14, Anthropic OAuth, MCP Apps, theme system (41 files, 1647 insertions)
  2. Dependencies & docs — README, standalone scraper, setup.sh script, npm scripts
  3. Fixed MCP App rendering — Replaced broken iframe (module script silently failed in iframes) with native UITreeRenderer
  4. 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)
  5. 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.
  6. 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.
  7. 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 on enabled (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-restructure spawned 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-2 killed)
  • Claude OAuth token expired during testing — chat API returned "Failed to fetch"
  • Browser automation: used profile=clawd for all browser testing