Live from GitHub · Refreshed hourly

Software Updates

Every change shipped to the Maverick Mechanical platform — features, fixes, and improvements. Pulled directly from our GitHub repository.

By the Numbers

Lines of Code

105,872

Web platform — TypeScript, React, Tailwind, SQL

Characters Written

3.83M

3,831,351 total characters

Updates Pushed

183

exact commit count on main

Current Version

v0.1.83

build 183 · 4137d79

API Endpoints

97

individually routed — Stripe's public API has ~400

Database Models

119

across 78 schema files — most SaaS platforms have 20–50

System Permutations

10^29

2^97 endpoint combinations — more than atoms in the observable universe (10^80)

Project Age

6mo 9d

since Dec 9, 2025

Pre-AI Dev Hours

3.5K hrs

105,872 lines ÷ 30 LOC/hr — equivalent to 1.7 years (senior engineer, no AI)

With-AI Dev Hours

0.9K hrs

4× AI productivity multiplier (2024–2026 studies) — equivalent to 110 days

Equivalent Firm Cost

$220,567

live ticker · Maverick rate: $250 USD/hr

Hours estimated from source line count at 30 LOC/hr (industry benchmark for production-quality TypeScript/React without AI assistance), with a 4× multiplier for AI-assisted development per published 2024–2026 enterprise studies. Equivalent Firm Cost uses a $250/hr loaded billable rate reflecting a premium engineering firm building enterprise-grade SaaS — and ticks up live, because the project is still being actively built.

183 updates shipped

Page 2 of 4

  1. Friday, February 27, 2026

    1 update

    1:08 AM · ZRosserMcIntosh

    V1→V2 table migration: eliminate all contacts/jobs/invoices/payments V1 refs

    • 58 V1 table references eliminated across 12 source files
    • contacts→customers: contactSync, Jobber webhook, portal routes, Twilio, dashboard
    • jobs→jobs_v2: Jobber webhook, jobs/sync, CommandPalette
    • invoices→invoices_v2: Square webhook, Jobber webhook, invoices/send
    • payments→payments_v2: Square webhook (removed dual-write pattern)
    • contactSync.ts: major rewrite using native jobber_id/airtable_id columns
    • All column mappings updated (full_name→display_name, address→billing_address, etc.)
    • Clean build verified - zero errors
    • Only remaining V1 ref: 1 in _archive dead code
  2. Thursday, February 26, 2026

    1 update

    Docs4:30 PM · ZRosserMcIntosh

    comprehensive audit & updates — scrub secrets, fix outdated statuses, update 16 files

    • Scrub Twilio SID/Auth Token from TWILIO_IMPLEMENTATION_GUIDE and TWILIO_QUICKSTART
    • Scrub Brevo API key from BREVO_QUICK_START
    • API_SECURITY_CHECKLIST: Mark RLS migrations as Applied, rate limiting as Done (7 endpoints)
    • BUG_STATUS_SUMMARY + CURRENT_BUGS: Mark DispatchMessenger race condition as Fixed
    • SQL_SCHEMA_STATUS: Add 5 missing migrations to applied list
    • SECURITY_REMEDIATION_ROADMAP: Update rate limiting (done), V2 migration progress
    • DATA_MODELS (android): Fix role enum (owner/developer/team_lead/employee, not admin/manager)
    • DASHBOARD_UNIFICATION_PLAN: Mark as Completed, link to _COMPLETE doc
    • UI_REORGANIZATION_SUMMARY: Note old /dashboard/time pages still need deletion
    • COMPREHENSIVE_INTEGRATION_PLAN: Add Feb 2026 status update header
    • CROSS_REPO_AUDIT: Add staleness warning
    • SUPABASE_SETUP: Add V2 tables note
    • Create DOCS_AUDIT.md with full 57-file audit report
  3. Wednesday, February 18, 2026

    8 updates

    Feature5:50 PM · ZRosserMcIntosh

    critical fixes + high-priority improvements

    • DispatchMessenger: fix race condition where messages disappear
    • Block realtime conversation reload during active send (isSendingRef)
    • Block loadMessages when pendingMessageRef is set
    • Add 1.5s delayed reload after send completes to sync state
    • Rate limiting on all 7 public/portal API endpoints: portal/login, portal/register, portal/forgot-password, portal/check-email, portal/dashboard, service-request, contact (10/min public, 100/min authenticated, with Retry-After headers)
    • Brevo test/health endpoint: GET for config check + sender verification, POST for test email sends (used by developer console)
    • Square health endpoint: verifies API key + location configuration
    • Invoice send route: try invoices_v2 + customers first, fall back to legacy invoices + contacts (V2 data model migration)
    • Portal check-email: try customers table first, fall back to contacts
    • CommandPalette: migrate contacts → customers, jobs → jobs_v2, invoices → invoices_v2 (all with legacy fallbacks)
    • Developer email-templates: add 'developer' to allowed roles
    • Job schedule form: replace manual end time with duration dropdown, auto-calculate completion time, computed preview display
    • Job schedule API: add 4 debug log points for email diagnosis
    Fix9:30 AM · ZRosserMcIntosh

    portal dashboard race condition, scheduling email fallback, deposit column mapping

    8:44 AM · ZRosserMcIntosh

    Fix 6 issues: password eye icons, schedule button, Google Calendar auth, portal spinner, email preview

    • 1. Password reveal eye icons on all 6 password fields (login, portal login/register/confirm, reset password)
    • 2. Schedule & Assign button now shows for lead/estimate/pending/scheduled statuses with Reschedule label
    • 3. Google Calendar auth: Bearer token support in all 4 API routes + GoogleCalendarSync component
    • 4. Portal spinner fix: new /api/portal/dashboard route using service role to query v2 tables (jobs_v2, estimates_v2, invoices_v2, customers) bypassing RLS mismatch
    • 5. Email preview: 3 new system templates (scheduling confirmation, invoice, estimate) with preview + test send in developer console
    • 6. Portal registration: now searches customers table (new schema) before contacts (legacy) for matching
    • 7. SQL migration: portal customer read policies for v2 tables
    Feature8:07 AM · ZRosserMcIntosh

    schedule & assign with Brevo email, photo gallery, standalone audit page

    • Fix audit-logs API bug: auth_user_id → user_id (was returning empty results)
    • Add /api/jobs/schedule endpoint: assign tech, set schedule window, send Brevo confirmation email to customer with date/time/address/tech details
    • Job detail page: Schedule & Assign modal with tech dropdown, datetime pickers, duration, email confirmation checkbox
    • Job detail page: Photo gallery section with image grid, click-to-expand detail modal, per-photo notes, upload/delete support
    • Add Attachment.notes field + migration: ALTER TABLE job_attachments ADD COLUMN notes TEXT
    • Create standalone /dashboard/audit page with full activity trail: stats cards, filter by action/table/date/search, expandable rows showing IP, location, device, browser, user agent, JSONB details
    • Add Audit Log link to sidebar Administration section with clipboard-list icon
    Fix7:28 AM · ZRosserMcIntosh

    add job_number generation to job creation (jobs page + API)

    • jobs/page.tsx: Generate ZIP-MMDDYY-SEQ job number from property/customer zip
    • api/jobs/route.ts: Same job_number generation for API-created jobs
    • Fixes: null value in column 'job_number' of relation 'jobs_v2' violates not-null constraint
    7:03 AM · ZRosserMcIntosh

    Add People & HR section, org switcher, SaaS admin console (dark mode), and Careers page

    • Sidebar: Added 'People & HR' section with Team and Careers links
    • Sidebar: Moved Employees out of Administration into People & HR as 'Team'
    • Sidebar: Added org switcher below logo (Maverick / SaaS toggle)
    • /dashboard/saas: Full dark mode SaaS admin console with its own layout
    • Own sidebar with SaaS-specific nav (Organizations, Subscriptions, MRR, etc.)
    • KPI cards, quick actions, org table, platform health status
    • Violet/purple theme, fully dark bg-[#0a0a0f]
    • /dashboard/careers: Careers & Job Postings page with CRUD form
    • Parent layout passes through directly for /dashboard/saas routes
    6:40 AM · ZRosserMcIntosh

    Sidebar sections, developer console enhancements, multi-tenancy plan

    • Reorganize sidebar into 8 logical sections: Operations, Financial, Assets, Communication, Reports, AI Tools, Administration (with section headers)
    • Developer console: add Email Templates tab with HTML preview + test send via Brevo
    • Developer console: add Customer Portal Preview tab with iframe previews of /portal/login and /pay, plus route inventory
    • New API: /api/developer/email-templates (GET list all, POST test send)
    • Multi-tenancy architecture plan (docs/MULTI_TENANCY_PLAN.md) for selling Service Maverick to other HVAC companies
    Fix6:18 AM · ZRosserMcIntosh

    job creation + customer edit — align with actual DB schema

    • Loads customer properties, auto-selects primary property
    • Shows resolved address with green checkmark
    • 'Service is at a different address' checkbox for manual entry
    • Insert only uses actual jobs_v2 columns (property_id instead of non-existent service_address/city/state/zip)
    • do_not_service → do_not_contact (actual column)
    • preferred_contact → preferred_contact_method (actual column)
    • notes → internal_notes (actual column)
    • Removed non-existent columns from API allowedFields: phone_3, address, city, state, zip, labels, descriptor, misc_info, receives_*, text_enabled_phone
  4. Tuesday, February 17, 2026

    5 updates

    Fix8:25 PM · ZRosserMcIntosh

    RLS policies use user_id not auth_user_id

    Fix8:24 PM · ZRosserMcIntosh

    employee_profiles FK uses user_id not id

    Fix8:23 PM · ZRosserMcIntosh

    dashboard bugs, audit logging, developer console

    • Jobs page: 7 fixes (jobs_v2 table, customers FK, customer_id column, display_name field, snake_case job types, lead/estimate status, filters)
    • Customer detail: alt_phone → phone_secondary, default state TX → GA
    • Schedule page: jobs → jobs_v2, contacts → customers FK hints
    • Equipment page: contacts → customers, company → company_name, two-step client-side load (equipment FK is legacy contact_id)
    • Reports page: contacts → customers, pending → lead/estimate filter
    • War room: removed $49 competitor pricing reference
    • Codebase-wide: tune-up → seasonal maintenance (docs, SEO, services)
    • Audit logging system (src/lib/auditLog.ts) with IP/geo extraction
    • Audit logs API route (GET /api/audit-logs) with admin-only access
    • Developer Console page (/dashboard/developer) with 4 tabs: Audit Logs, System Health, Email Test, Webhooks
    • SQL migration: audit_logs table + job-attachments storage bucket
    • Audit logging integrated into customers CRUD + file upload routes
    • JobStatus now includes 'lead' and 'estimate' values
    Feature7:15 PM · ZRosserMcIntosh

    Brevo email API integration

    • Added brevoClient.ts with complete Brevo REST API implementation
    • sendEmail() for transactional emails (HTML + text)
    • sendTemplateEmail() for template-based emails
    • sendSMS() for one-way SMS notifications
    • createOrUpdateContact() for contact sync
    • testBrevoConnection() for health check
    • Added test endpoint at /api/test/brevo
    • GET - Check connection and account status
    • POST - Send test email
    • Added comprehensive quick start guide
    • Deployment steps for Vercel
    • Domain verification instructions (SPF, DKIM, DMARC)
    • Usage examples and best practices
    • Template creation guide
    • Environment variables configured in .env.local
    • BREVO_API_KEY
    • EMAIL_FROM=service@maverickmechanical.us
    • EMAIL_FROM_NAME=Maverick Mechanical
    Feature7:02 PM · ZRosserMcIntosh

    Square webhooks + portal bug fixes

    • payment.completed/updated/failed — sync to payments, deposits, invoices
    • refund.created/updated — adjust balances, mark deposits cancelled
    • customer.created/updated — bidirectional sync with customers table
    • invoice.created/updated/payment_made/canceled — status sync
    • dispute.created — CRITICAL SMS alert to owner with deadline
    • dispute.state.updated — notify on win/loss, restore/deduct funds
    • Fixed signature verification (now includes notification URL per Square spec)
    • Idempotency via event_id deduplication
    • SMS alerts for disputes + failed payments
    • Processing metrics (processing_time_ms)
    • Webhook logs + notifications tables
    • Added onAuthStateChange listener to fix race condition on login redirect
    • Fixed portal-auth.tsx is_verified → email_verified column mismatch
    • SQL migration fixes is_portal_customer() and get_portal_customer_id() functions
    • Added is_verified as synced alias column for backwards compatibility
    • Enhanced error logging with full Supabase error details
    • COMPREHENSIVE_INTEGRATION_PLAN.md — Square API audit, Brevo SMTP plan, 25 API recommendations
    • OPENCLAW_IMPLEMENTATION_PLAN.md — AI agent integration roadmap
  5. Sunday, February 15, 2026

    1 update

    Feature3:24 AM · ZRosserMcIntosh

    complete deposit enhancement suite

    • SMS notifications via Twilio on deposit creation + payment confirmation
    • Branded HTML email templates (deposit created, reminders, paid receipt)
    • Automated deposit reminders cron (Vercel Cron daily @ 2PM UTC)
    • Progressive frequency: daily near expiry, every 2d final week, every 4d otherwise
    • Max 5 reminders, auto-expire past-due deposits
    • Deposit templates system (Standard 50%, 25% Down, Full Prepay, Flat )
    • DB table + API endpoints + quick-selector UI in CollectDepositModal
    • Customer detail page: new Deposits tab + pending deposits in overview
    • Estimates page: bulk deposit collection, template selector, SMS/email checkboxes
    • Deposit-aware estimate-to-invoice conversion (applies deposit as payment)
    • Payments page: Copy Deposit Link, Resend, Convert to Invoice actions
    • Dashboard: admin deposit analytics widget (pending/collected/overdue/rate)
    • Customer portal: deposits section with Pay Now buttons + stat card
    • Deposit page: enhanced ACH/Zelle section with transfer instructions
    • SQL migration: notification tracking, deposit_templates table, job deposit fields
    • Vercel cron config for automated reminders
    • OpenClaw opportunities documentation
  6. Saturday, February 14, 2026

    1 update

    Feature2:57 AM · ZRosserMcIntosh

    add deposit collection system for quoted jobs

    • Add deposit_requests table with Square payment link integration
    • Create /api/deposits/create endpoint for generating deposit requests
    • Create /api/deposits/[id] endpoints (GET public, PATCH admin)
    • Add /deposit/[id] customer-facing payment page with multiple options
    • Update estimates page with 'Collect Deposit' button and modal
    • Add 'Deposits' tab to payments dashboard with full management view
    • Integrate Square webhook handler for automatic CC payment detection
    • Calculate credit card processing fees (2.9% + /bin/zsh.30 per transaction)
    • Support percentage or fixed amount deposits
    • Enable cash/check and ACH payment options without fees
    • Customers see real-time fee breakdown for CC vs cash/check
    • Admin can record manual payments (cash, check, Zelle, ACH)
    • Deposits linked to estimates for tracking
    • 30-day expiration with status tracking
    • Square payment links auto-generated when API credentials available
  7. Thursday, February 12, 2026

    1 update

    4:09 AM · ZRosserMcIntosh

    Wire 5 invention pages to real Supabase data

    • Ghost Job Detector: queries jobs_v2 + invoices_v2 to find missing/underbilled invoices
    • Shame Clock: queries customers + jobs_v2 for maintenance gap calculations
    • Parts Oracle: queries scheduled jobs with keyword-based parts prediction
    • Mood Ring: queries chat_conversations + chat_messages for sentiment scoring
    • Time Machine: pulls real baseline metrics for what-if business simulations
  8. Wednesday, February 11, 2026

    1 update

    Fix6:51 PM · ZRosserMcIntosh

    pricebook item_type union type error blocking Vercel build

  9. Sunday, February 8, 2026

    1 update

    Feature2:27 PM · ZRosserMcIntosh

    Build all 10 AI Inventions + update dashboard nav + platform selling page

    • Add Invention #8: Customer Mood Ring (sentiment scoring)
    • Add Invention #9: War Room (competitive intelligence)
    • Add Invention #10: Time Machine (what-if simulator)
    • Update dashboard layout.tsx: add all 10 invention pages to admin sidebar nav
    • Add 7 new icon components (GhostIcon, AcademicIcon, MapIcon, MicrophoneIcon, CubeIcon, HeartIcon, ShieldIcon)
    • Update platform/page.tsx: add 'Only on Service Maverick' section showcasing all 10 inventions
    • Add inventions data array with emoji, title, description, and tags
    • Update Pro tier features: add Ghost Jobs, Parts Oracle, Mood Ring, Time Machine
    • Update Enterprise tier features: list all 10 AI Inventions
    • Add 10 new comparison table rows (all Maverick, none on ServiceTitan)
    • Move Platform link to footer only (removed from header nav)
  10. Saturday, January 17, 2026

    1 update

    Fixcustomers4:39 AM · ZRosserMcIntosh

    format display_name as 'LAST, FIRST' and add migration

  11. Friday, January 16, 2026

    2 updates

    Feature8:37 PM · ZRosserMcIntosh

    Add interactive Google Maps service area map

    • Create ServiceAreaMap component with real Google Maps API integration
    • Display all 14 Georgia service cities with markers and coverage areas
    • Update service-area page to use interactive map instead of placeholder
    • Add Google Maps API setup documentation
    • Include TypeScript types for Google Maps (@types/google.maps)
    • Add API key configuration to environment variables
    • 14 blue markers for each service city (Northside Atlanta, Sandy Springs, Dunwoody, Roswell, Johns Creek, Smyrna, Alpharetta, Canton, Milton, Marietta, Acworth, Woodstock, Kennesaw, Cartersville)
    • Semi-transparent circles indicating ~5 mile service radius
    • Clickable info windows with city names
    • Responsive design for mobile and desktop
    • Professional error handling and loading states
    7:38 PM · ZRosserMcIntosh

    Add automated daily backup system

    • Backup tables for customers, properties, jobs_v2, job_attachments
    • Automated daily backups at 2 AM UTC via pg_cron
    • 90-day retention with automatic cleanup
    • Backup monitoring dashboard at /dashboard/admin/backups
    • Manual backup trigger option
    • RLS protection (admin-only access to backups)
    • Tracks backup runs with status, duration, and error messages
    • Accidental schema changes
    • SQL migration errors
    • Data corruption
    • Human error
    • run_daily_backup() - Master backup function
    • backup_customers/properties/jobs/attachments() - Individual backups
    • cleanup_old_backups() - Removes old data
  12. Thursday, January 15, 2026

    9 updates

    9:48 PM · ZRosserMcIntosh

    Fix RLS policies after database reset

    • Updated is_employee() and is_admin_user() functions to check employee_profiles table
    • Fixed RLS policies for customers, properties, jobs_v2, job_attachments, assets, invoices_v2
    • Changed employees table references to employee_profiles
    • OCR and invoice attachment system preserved and working
    • All 3,703 imported jobs now accessible with proper authentication
    Fix9:23 PM · ZRosserMcIntosh

    Change job source from 'import' to 'phone' to comply with database constraint

    • The jobs_v2 table has a CHECK constraint that only allows specific source values
    • 'import' was not in the allowed list, causing insertion failures
    • Changed to 'phone' as historical jobs came from phone calls
    • Successfully imported 3,703 jobs from CSV file
    Feature8:12 PM · ZRosserMcIntosh

    recover customer addresses and add intelligent geocoding

    • Add missing import columns to customers and properties tables
    • Successfully restore 417 customer properties from CSV backups
    • Intelligently geocode 5 remaining addresses using geopy
    • Add helper scripts for data recovery and geocoding
    • All 422 properties now linked to customers with complete address data
    Feature6:10 PM · ZRosserMcIntosh

    Deploy employee metrics and ServiceTitan schema to production

    • Complete ServiceTitan CRM schema (customers, properties, jobs, estimates, invoices, dispatch)
    • Full Employee Metrics/HRIS system (20+ tables for HR, training, performance, safety)
    • Metric catalog with 100+ pre-defined metrics (KPIs, analytics, tracking)
    • All tables with Row Level Security policies based on visibility levels
    • Migration utilities and diagnostic SQL scripts
    • Successfully deployed to live Supabase instance
    Feature6:32 AM · ZRosserMcIntosh

    Complete employee metrics and portal system

    • Add comprehensive employee metrics database schema with 20+ tables
    • Create TypeScript types for all employee metrics entities
    • Seed 100+ metrics across all categories (HRIS, time, performance, etc)
    • Implement employee metrics API with role-based visibility filtering
    • Create employee dashboard pages:
    • My Metrics: Overview and metrics dashboard
    • My Training: Training records and certifications
    • My PTO: Leave balance and request management
    • My Assets: Equipment and tools inventory
    • My Profile: Personal and employment information
    • My Performance: Goals, reviews, and coaching
    • My Schedule: Shifts and on-call rotations
    • My Security: 2FA, sessions, and access logs
    • Create HR admin console for viewing all employee data
    • Add dashboard data aggregation API
    • Implement role-aware visibility for sensitive data
    4:23 AM · ZRosserMcIntosh

    Fix Customer type missing billing fields in DispatchMessenger

    1:35 AM · ZRosserMcIntosh

    Fix customer edit form to use correct billing_* field names

  13. Wednesday, January 14, 2026

    18 updates

    8:13 PM · ZRosserMcIntosh

    Add mobile OCR integration documentation

    • Update MOBILE_INTEGRATION_ROADMAP.md marking OCR/attachments complete
    • Add MOBILE_OCR_INTEGRATION.md with implementation details for Android and iOS
    Fix7:18 PM · ZRosserMcIntosh

    customer edit modal uses API (bypasses RLS); add OCR text search to CommandPalette; add mobile integration roadmap

    7:04 PM · ZRosserMcIntosh

    add sync/delete APIs; OCR total extraction fix; enforce invoice_number = job_number on upload; UI: attachment view/delete buttons & Maverick Vision modal; audit script for invoice amounts

    5:32 PM · ZRosserMcIntosh

    Add enhanced DispatchMessenger with resizable columns, customer info panel, job/invoice history, and schedule job button

    5:26 PM · ZRosserMcIntosh

    Fix duplicate messages, customer sending status, default to Messages tab

    5:15 PM · ZRosserMcIntosh

    Fix getConversation fallback to include all fields including channel

    5:10 PM · ZRosserMcIntosh

    Add more logging to API routes for debugging conversation lookup

    5:09 PM · ZRosserMcIntosh

    Add fallback logic to getConversation - simple query first, then relations

    5:08 PM · ZRosserMcIntosh

    Add debugging logs to getConversation to diagnose 404 errors

    Fix7:05 AM · ZRosserMcIntosh

    add accessibility attributes to customer edit modal form fields

    Fix7:01 AM · ZRosserMcIntosh

    add accessibility attributes to job edit modal form fields

    6:27 AM · ZRosserMcIntosh

    show alert if message send fails, keep failed message visible

    Fix5:17 AM · ZRosserMcIntosh

    add isSendingRef to prevent loadMessages from running during send

    Fix5:16 AM · ZRosserMcIntosh

    prevent conversation reference changes from triggering loadMessages

    4:46 AM · ZRosserMcIntosh

    Fix chat display name format and add extensive logging for message debugging

    • Show 'Zachary Rosser McIntosh' instead of 'McIntosh, Zachary Rosser'
    • Add console logging throughout message send/receive flow
    • Log when loadMessages is called and if pending messages exist
    • Log realtime message events
    4:37 AM · ZRosserMcIntosh

    Remove duplicate realtime publication commands from migration

    4:36 AM · ZRosserMcIntosh

    Add RLS policy for anonymous chat users

    • Fix chat_messages SELECT policy for anon users (customer widget)
    • Fix chat_conversations SELECT policy for anon users
    • Add anon INSERT policy for chat_messages
    • Enable realtime publication for chat tables
    4:35 AM · ZRosserMcIntosh

    Add Edit modal for job detail page

    • Added showEditModal state and editForm state
    • Added handleOpenEdit and handleSaveEdit functions
    • Connected Edit button to open modal
    • Modal allows editing: title, description, type, priority, price, notes

Maverick Mechanical Heating & Air

View on GitHub

Maverick Mechanical

How can we help you?

Hi there! 👋 We're here to help with all your HVAC needs. Whether you need AC repair, heating service, or just have questions - we're ready to assist!