- Remove scraper health check (port 3008) since dev:browser-use
was removed from dev:start; always report scraper as ready
- Add checkPort helper with localhost fallback for frontend
check to handle Windows IPv6/IPv4 resolution issues
Skip browser/Facebook detection in /setup/status when port 3008
is not reachable, so first_run only depends on env + Ollama.
This prevents the setup wizard from showing endlessly when
browser-use service is not running.
These two processes exit with code 1 (Python not found / watch mode crash)
and are non-essential for the CRM. The core services needed are:
AI server (3001), Signaling (3007), and Next.js (3006).
- 86 catch blocks in 49 API route files now return the actual error message via error.message
- 14 campaign/lead/config catch blocks that lacked console.error now log errors
- 17 client pages/components now show toast.error notifications on API failures
- Silent .catch(() => {}) and finally-only try blocks now surface errors to users
Lead Scoring:
- lead_scoring_config table with configurable feature weights
- Scoring engine: boolean, keyword, and range-based feature scoring
- Settings tab: configure scoring features, run scoring on all leads
- ml_score + ml_score_details columns on leads table
- API: /api/leads/score, /api/leads/score/config
- mlScore returned in lead detail and list APIs
Email Campaigns:
- email_campaigns, email_campaign_steps, subscribers, logs tables
- Campaign list page with status badges and subscriber counts
- Campaign detail with step management, subscriber search/add, send
- Drip logic: steps with configurable delay days, template variables
- Variable replacement ({{name}}, {{email}}) in email bodies
- Sidebar: Campaigns nav item
- Migration 024: adds capacity_hours column to users (default 40h/week)
- /api/resource-planning: aggregates hours from time_entries, open tasks,
active projects per user with utilisation calculations
- /resource-planning page: overview stats cards, per-member capacity bars
with colour-coded status (green=available, yellow=busy, orange=near
capacity, red=overloaded)
- Sidebar: new Resources nav item (BarChart3 icon)
Added res.ok guards on projects and time-tracking pages so that
setProjects receives [] instead of an error object when the API
returns a non-200 response.
- Kanban board with drag-and-drop per stage, colour-coded cards, score bars
- Project Management with milestones, Gantt timeline, inline add milestone/task
- Proposal/Quote builder with line items, VAT, terms, e-signature capture
- Time Tracking with stopwatch, manual entry, hours-by-project chart
- Custom Fields system: admin-defined fields per entity (leads/customers/
projects/opportunities) with drag-and-drop reordering in settings
- Reusable CustomFieldsSection component for entity detail pages
- Customers API endpoint
- All builds pass with zero errors