Synthesized from 6 Linear project update(s).
Infrastructure
Replaced the flat-file `claude-log.md` logging system with Linear Project Updates as the single source of truth for session records.
What changed
- Deleted all `claude-log.md` files (admin, thespraytool, atoka-mayor, safari-crm — 59 entries total)
- Rewrote `claude-log-sync.sh` to read from Linear GraphQL API instead of markdown files
- Rewrote `ClaudeLogParser.php` and `SyncClaudeLogsCommand.php` to fetch Linear project updates
- Updated `~/.claude/CLAUDE.md` and `~/Developer/CLAUDE.md` directives
- Updated 20 skill files replacing all claude-log references with Linear
- Migrated all 59 historical entries to this Linear project as 6 consolidated updates
New pipeline
Session work → Linear Project Update (technical record)
↓
claude-log-sync.sh --date YYYY-MM-DD
↓
claude.thehiddendoor.ai (reflection/narrative)
Why
Linear is already the work management hub. Keeping technical session logs there instead of scattered markdown files consolidates the record. The dev blog gets synthesized reflections rather than raw technical dumps.
Reflection: This is a cleaner separation of concerns — Linear holds the raw technical record, the blog holds the narrative. The sync pipeline stays but now reads from a structured API instead of parsing markdown, which is more reliable.
General
**[The Spray Tool] Historical Log Migration — March 2026 (14 entries, 2026-03-01 to 2026-03-11)**
---
Payments & Pipeline (Mar 1-5)
- **Disable automated measurement** (soft kill switch) — toggle to prevent auto-trigger
- **Per-app & prepay Stripe payment at checkout** (Mar 3) — split payment flows
- **AI-powered campaign creation dialog** (Mar 4) — natural language → campaign config
- **Pipeline summary card on dashboard** (Mar 5) — visual funnel
- **Bug fixes**: ghost labels, snap threshold, create order button (Mar 5)
- **Notifications tab redesign**: Email/SMS toggle matrix (Mar 5)
CRM & Data (Mar 9-10)
- **Data recovery + Customer screen CRM redesign** (Mar 9) — rebuilt customer detail view with contact info, service history, measurement data, quote/order timeline
- **AI training pipeline, ArcGIS parcel fallback, and batch detection fixes** (Mar 10) — wired up RunPod training, added ArcGIS as fallback parcel data source, fixed batch detection queue
AI & Measurement (Mar 11)
- **Multi-class scene segmentation (10-class AI detection)** — expanded from binary lawn/not-lawn to 10 classes: lawn, tree canopy, driveway, structure, pool, mulch bed, gravel, sidewalk, fence, garden
- **Edit Property Measurement dialog overhaul** — redesigned measurement editing UX with polygon overlay, class breakdown chart, editable area fields per class
**[The Spray Tool] Historical Log Migration — February 2026 (30 entries, 2026-02-12 to 2026-02-26)**
---
Infrastructure & Architecture (Feb 12)
- **Decompose 14 giant Vue components** + fix all CI checks (Issue #117)
- **Eliminate hardcoded colors**, make Nebula theme fully token-driven (#101 finding #12)
- **Add interfaces for 14 services** (#101 finding #8)
- **Fix quote sending + SES email** (Issues #102, #106)
- **Fix 404/400 errors** (Issues #136, #133, #135)
Email & Auth (Feb 14-16)
- **Migrate email from AWS SES to Twilio SendGrid** — full DNS auth, SPF/DKIM/DMARC
- **Fix send-quote undefined relationship** + production error triage
- **Production console error triage** — CSP, missing tables, diagnostics
- **RemeasureDialog 404 fix** + multi-environment domain setup
Auth & Dashboard (Feb 19)
- **Auth page fixes**, dashboard migration ticker, property backfill worker
Email & Quotes (Feb 23)
- **Email infrastructure fixes** — queue, SMTP, DNS, SendGrid
- **Update quote email** with confirm CTA and consistent URLs
- **Remove accept_promo auto-confirmation** from quote flow
- **Nebula theme for marketing and auth pages**
Major Feature Sprint (Feb 24 — 13 entries in one day)
- **Annual prepay discount feature** (v2.0.7)
- **Quote page improvements** — changelog, pricing, accepted badge colors
- **Pay Now button** on accepted quotes
- **Fix annual discount not saving**, payment dialog, mobile widget email
- **Add conditional product display rules**
- **Add Invoices tab** with Stripe payment data
- **Revamp Quick Measure → Quick Calculator** flow
- **Help & Docs knowledge base** + dashboard fixes
- **AI Chat CRM Copilot (Lawn Buddy)** → renamed to Bermuda
- **Help page redesign** (Protocol-inspired docs layout)
- **Fix Bermuda panel background** + add resize handles
Widget & AI (Feb 25)
- **Mobile widget redesign** — instant quote with property insights + product pricing
- **Auto property insights** — lot size, structure footprint & max lawn
- **Persist polygon measurement data** for re-measure (#143)
- **Fix AI chat tenant scoping** + chat persistence
- **Fix campaign editing** in order detail views (#145) + FAB overlap fix
Marketing (Feb 26)
- **Complete marketing site renovation** (issue #161)
**[THDCRM] Historical Log Migration — March 2026 (3 entries)**
---
2026-03-14 — Jobber Dashboard Overhaul: Period Comparisons, Tab Redesigns & Bug Fixes
Major pass across all 6 Jobber integration tabs for ProComfort. Added period-over-period comparisons to every tab, redesigned Team/Customers/Jobs tabs to match HCP and RealGreen patterns.
**Mystery Bug**: Production had 30 orphaned commits from a previous Claude session. Also tracked down ghost "$0 revenue" element — `InsightSummaryCard.vue` treating `dashboard.revenue` (object `{value, change}`) as plain number.
**Period comparisons** added to all tabs using `priorPeriod()` helper — Overview, Revenue, Team, Pipeline, Jobs all show ↑/↓ N% change indicators.
**Tab redesigns**: Team tab replaced DataTable with HCP-style tech cards (per-tech revenue, utilization bars, callback rate badges). Customers tab reorganized with hover tooltips, reactivation alerts, CLV distribution. Jobs tab expanded from 3 to 7 KPIs.
**Fixes**: overviewSummary reading object as number → $0, insight popovers were placeholder TODOs, Jobs tab KPIs didn't respond to period toggle, duplicate class attribute breaking Vite build.
**[THDCRM] Historical Log Migration — February 2026 (7 entries)**
---
2026-02-28 — Fleet Security Hardening, Email Standardization & Zenthic Landing Page
Major security day: investigated brute-force attacks across all WP sites, built `thd-security-hardening.php` MU-plugin (REST API user enumeration block, XML-RPC kill, author archive block, login rate limiter), deployed to all 10 WordPress sites. Cloudflare WAF rules across 5 zones. Standardized email on FluentSMTP + Brevo for ProComfort, Snell, Patton. Deployed Zenthic.space landing page.
2026-02-28 — Modular CRM Integration System: Housecall Pro Dashboard
Built complete CRM integration framework: `site_integrations` registry table, HousecallProService (470+ lines), 8 Vue components, Pinia store with 15 getters. First integration syncs 23,676 jobs + 21,829 customers for Patton Plumbing. Lead source attribution dashboard showing revenue by channel.
2026-02-28 — Google Integration Cleanup, Twilio DNS, Support Wireframe
Merged PR #33 (26 files, +2,182 lines), filed issue #34 with 14 problems, fixed 9 in PR #35. Set up Twilio SMS with Cloudflare DNS. Updated wireframe with GitHub Issues in Support view.
2026-02-19 — Patton Leak Detection: 25-Page Site Build
Built and deployed complete 25-page WordPress website for Patton Leak Detection — 6 service pages (1,500-2,000 words each), 7 city pages with Memphis-specific content, 3 blog posts, JSON-LD schema mu-plugin, SureRank SEO, FluentForm booking, nginx security headers. Lighthouse: Performance 87, SEO 100, A11y 96. Traditional timeline: 2-4 weeks. Done in one session.
2026-02-19 — Peel Law Firm: 7-Page Site with Parallel Agents
Built 7-page personal injury attorney site (peel.zenthic.space) using parallel background agents to write 6 pages simultaneously. Navy/gold theme (Merriweather + Inter), FluentForm, schema mu-plugin. Introduced parallel authoring workflow.
2026-02-19 — CSB LAW: Full Attorney Site via Forge API
Built 5-page attorney website (colleen.zenthic.space) entirely through Forge API + WP-CLI. Diagnosed GP 3.6 typography migration bug (two-layer system: `typography` for CSS + `font_manager` for Google Fonts loading).
2026-02-13 — Stripe Revenue Dashboard + Site Provisioning + Command Bar
Three major features: (1) Admin Stripe revenue dashboard with MRR, growth %, subscriber breakdown. (2) One-click site provisioning — 8-step queued job (Forge site → MySQL → WordPress → SSL → Cloudflare DNS → CDN config → finalize). (3) CommandBar with natural-language domain input + ProvisionDialog with real-time 8-step progress timeline.
**[Safari Lawn Care] Historical Log Migration (3 entries, 2026-03-07 to 2026-03-08)**
---
2026-03-08 — Data Cleanup Audit, 3-Year Audit, Cancel Profiles Deep Dive
Major analytical session. Built two new reports and heavily expanded cancel profiles.
- **AuditPrograms Fix**: Fixed slide 6 pricing chart rendering vertical instead of horizontal
- **AuditCancelProfiles Expansion**: 3 new slides — employee × unhappy customer chart, primary tech attribution table (2020-2025), days-since-last-service analysis
- **3-Year Audit (NEW — 12 slides)**: Strategic report focusing on 2023-2025 — customer retention (-14%), employee turnover (11 techs departed), revenue masked by price increases, cohort retention, 5-step action plan
- **Zero-Service Customer Investigation**: 1,439 customers never received a single service (790 still "active"), only 1 ever paid ($440 total)
- **Data Cleanup Audit (NEW — 9 slides)**: Built `/api/data-cleanup` endpoint, 9-slide report showing 2,542 real active out of 8,966 "active", $49K uncollected, 2,730 missing emails, 53 duplicate groups
Key findings: 72% of "active" customers haven't been serviced since 2024, 100% of services since 2024 have NULL route assignment, all 106 products have $0 pricing.
---
2026-03-07 — Cleanup, Pan/Zoom Map, Copilot Restore, Revenue Fix
- Deleted 13 legacy HTML report files, added interactive pan/zoom to SVG territory map
- Restored AI Copilot with SPA slug-based route detection
- **Revenue definition fix**: Discovered AI was reporting $617K (cash collected from rg_history) instead of $1.3M (actual revenue from rg_services.price)
---
2026-03-07 — Dashboard Frame, Skeleton Loading, and Laravel Boost
Massive session transforming data.safarilawn.com from static HTML slideshows into a proper data intelligence platform.
- **Homepage overhaul**: Visual "equation" funnel (15,824 Customers × 78,874 Programs → 560,559 Services = $31.3M Revenue)
- **Skeleton-first loading**: Homepage went from 17s cold to instant first paint with async stats fetch + 7-day cache
- **Dashboard report frame**: Created `/report/{slug}` with sidebar nav, keyboard shortcuts, mobile responsive
- **Laravel Boost**: Installed v2.2.3 for direct DB/route/tinker access