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 3 of 4

  1. Wednesday, January 14, 2026

    15 updates

    4:13 AM · ZRosserMcIntosh

    Fix customer lookup - remove user_id field that doesn't exist in customers table

    4:01 AM · ZRosserMcIntosh

    Fix multiple issues:

    • 1. Customer lookup - use exact match + ilike, maybeSingle() to avoid errors
    • 2. Upload API - include job_id/customer_id to create attachment record server-side
    • 3. Jobs page - simplified upload to let API handle DB insert
    • 4. Close conversation - update local state immediately + better error handling
    3:41 AM · ZRosserMcIntosh

    Fix file uploads and message disappearing issues

    • Add server-side upload API using service role key to bypass RLS
    • Update customer and job pages to use API for uploads
    • Fix DispatchMessenger optimistic updates being wiped by loadMessages
    • Track pending messages with ref and preserve during data refresh
    Fix3:27 AM · ZRosserMcIntosh

    multiple issues - messages, uploads, job attachments

    • Fix optimistic message handling in DispatchMessenger
    • Replace temp messages with real response from API
    • Don't remove temp messages on realtime events
    • Better error logging for storage uploads
    • Added upsert and cacheControl options
    • Added file upload capability to job detail page
    • Added attachments list with preview links
    • Load and display existing attachments
    Fix3:14 AM · ZRosserMcIntosh

    conversations API and customer lookup debugging

    • Remove Supabase relation joins from conversations query (causing silent failures)
    • Manually fetch related data (customers, latest messages) to avoid join issues
    • Add extensive logging to customer lookup to debug phone matching
    • Add debug query to show all matching customers including inactive ones
    Fix3:05 AM · ZRosserMcIntosh

    multiple issues

    • Run the SQL in supabase/migrations/20260114_storage_bucket.sql in Supabase Dashboard
    Fix2:34 AM · ZRosserMcIntosh

    switch to ChatWidgetEnhanced on main site and fix API payload

    • Replace ChatWidget with ChatWidgetEnhanced in layout.tsx
    • Fix conversation API payload format (was using nested customer object)
    • API expects customer_phone, customer_email, customer_name at top level
    • Fix response handling (conversation_id not conversation.id)
    • Add source_page to conversation metadata
    Fixdispatch2:23 AM · ZRosserMcIntosh

    completely separate queries to avoid Supabase RLS join issues

    • Load jobs without any Supabase relations
    • Load customers separately and join in JavaScript
    • Load employees separately and join in JavaScript
    • Skip dispatch_events to avoid RLS issues
    • Add detailed error logging for debugging
    • This avoids all foreign key relation RLS problems
    Fixdispatch2:11 AM · ZRosserMcIntosh

    resolve Failed to load dispatch data error - removed problematic Supabase foreign key relation syntax and manually join employee data

    Featurechat2:08 AM · ZRosserMcIntosh

    redesign widget flow - message first, 33% larger for accessibility

    • Changed flow from phone-first to message-first for more natural conversation
    • First step: 'How can we help?' - this message becomes initial conversation message
    • Second step: Phone number lookup to identify customer
    • Third step: Identity confirmation ('Are you [name]?') or name collection if new
    • Fourth step: Connect to live agent chat
    • Increased widget size by 33% (507px × 747px) for elderly customers
    • Increased all font sizes by 22-33% throughout for better readability
    • Simplified flow removes confusing all-at-once info collection
    • Widget now optimized for ~33% of customer base who are boomers
    Featurechat1:56 AM · ZRosserMcIntosh

    add enhanced chat widget, dispatch messenger, customer lookup, PDF export, and mark-read API

    Feature1:21 AM · ZRosserMcIntosh

    Add customer analytics and fix Create Job button

    • Added Average Customer Lifetime Value metric (total revenue / customer count)
    • Added Average Jobs Per Customer metric (with 2 decimal precision, e.g., 2.54)
    • Added Average Job Value metric already existed
    • All customer metrics now visible in overview section
    • Fixed Create Job button to actually open the job creation modal
    • Button now functional and triggers setShowNewJobModal(true)
    • Customer value over time
    • Service frequency per customer
    • Revenue optimization opportunities
    Fix1:05 AM · ZRosserMcIntosh

    Clarify invoice attachment workflow for legacy invoices

    • Updated upload modal to clearly show which job the invoice is being attached to
    • Invoice association is now fully manual (user selects the job)
    • OCR extracts original invoice number from paper/PDF for reference only
    • Original invoice number preserved in database even if different from job number
    • Updated viewer to show both: attached job number AND original invoice number
    • Added helpful context in upload modal about how the system works
    • Enhanced success message to clarify attachment and OCR results
    • Updated schema comments to explain legacy invoice handling
    Feature12:56 AM · ZRosserMcIntosh

    Add Google Cloud Vision OCR integration for invoice scanning

    • Created /src/lib/ocr.ts with Google Cloud Vision API integration
    • Automatic text extraction from uploaded invoice images (JPG, PNG)
    • Intelligent parsing to extract invoice #, date, total amount, line items
    • OCR data stored in job_attachments table for full-text search
    • Added NEXT_PUBLIC_GOOGLE_VISION_API_KEY to environment config
    • Updated customer detail page to process OCR on image upload
    • Shows extracted data summary after successful upload
    Feature12:43 AM · ZRosserMcIntosh

    Dashboard fixes, payroll system, and invoice attachments

    • Fixed v1/v2 table inconsistencies across dashboard pages
    • Reports page: Now uses jobs_v2, invoices_v2, estimates_v2, correct time entry columns
    • Jobs page: Uses jobs_v2 table, added job detail page (/dashboard/jobs/[id])
    • Estimates page: Uses estimates_v2 and customers table
    • Payments page: Uses invoices_v2 table
    • Integrations page: Calendar sync shows 'coming soon' instead of non-existent endpoint
    • Chat stats: Added stats endpoint to /api/conversations route
    • New payroll system (supabase/migrations/20260113_payroll_schema.sql):
    • employee_pay_config: hourly/salary rates, tax info
    • pay_periods: pay period management
    • payroll_items: individual paychecks
    • pto_balances and pto_requests: PTO management with approval workflow
    • tax_documents: W-4, I-9 storage
    • deduction_types and employee_deductions: benefits deductions
    • payroll_audit_log: audit trail
    • Employees page: Added PayrollTab and PTOTab with full functionality
    • Pay config management (hourly/salary, tax status)
    • Pay period creation and management
    • PTO balance tracking and request workflow
    • Invoice attachments (supabase/migrations/20260113_job_attachments.sql):
    • job_attachments table for storing invoice PDFs/images
    • OCR fields for future text extraction and searchability
    • Customer detail page: Attach/view invoices on jobs
    • In-app PDF/image viewer for invoices
    • Archived legacy files to src/app/dashboard/_archive/
  2. Tuesday, January 13, 2026

    11 updates

    11:54 PM · ZRosserMcIntosh

    Remove redundant search bar and add lifetime value sorting

    • Global search (Cmd+K) still available at top
    • Keeps type filters (All, Residential, Commercial) and status filters (Active, Inactive, All)
    • New option in Sort by dropdown
    • Shows 'High → Low' or 'Low → High' instead of 'A → Z' for lifetime value
    • Sorts customers by total revenue from jobs
    11:21 PM · ZRosserMcIntosh

    Add clock in/out widget to sidebar and fix jobs/lifetime value

    • Added compact clock in/out button above user profile in sidebar
    • Shows elapsed time when clocked in (updates every second)
    • Green button when clocked in, blue when clocked out
    • Directly clock in/out without navigating to time page
    • Load actual jobs count from jobs_v2 table per customer
    • Previously hardcoded to 0
    • Calculate lifetime value from sum of job total_price
    • Display actual customer revenue instead of /bin/zsh.00
    11:12 PM · ZRosserMcIntosh

    Customers page: default to Active filter, remove stats boxes

    • Changed default status filter from 'all' to 'active'
    • Reordered status filter buttons: Active → Inactive → All Status
    • Removed stats cards (Total Shown, Active, Inactive, Residential, Commercial) - belong in reports
    • Cleaned up unused StatCard, UsersIcon, and HomeIcon components
    8:10 PM · ZRosserMcIntosh

    Fix customer page issues: global search navigation, display, buttons

    • Fix global search (CommandPalette): Changed customer href from query param (?id=) to path-based URL (/customers/xxx)
    • Fix display: Updated formatCurrency to handle null/undefined values
    • Add Edit Customer button: Opens modal to edit customer details
    • Add New Job button: Opens modal to create new job for customer
    • Add Call button: Opens tel: link for customer phone
    7:27 PM · ZRosserMcIntosh

    Job number format update and UI improvements

    • Changed job_number from SERIAL to TEXT format (ZIP-MMDDYY-SEQ)
    • Updated all 3,703 imported jobs with new job number format
    • Updated Job interface to use string for job_number
    • Changed Overview tab to display job number as link with date and truncated description
    • Changed Jobs tab to card layout with full, non-truncated descriptions
    • Added customer ZIP code to job numbering logic
    Feature6:18 PM · ZRosserMcIntosh

    Add job history import script and jobs_v2 schema migration

    • Created import_job_history.py script to parse and import historical job data from CSV
    • Parses Notes column to extract individual jobs separated by dates (MM-DD-YY/YYYY format)
    • Matches customers by name and associates jobs with customer_id
    • Auto-categorizes job types (maintenance, repair, installation, inspection, etc.)
    • Extracts total price from job descriptions where available
    • Imports 3,703 jobs from 430 customers successfully
    • Added 20260113_jobs_v2_columns.sql migration
    • Adds description, completion_notes, internal_notes columns
    • Adds job_type for job categorization
    • Adds total_price for cost tracking
    • Adds scheduled_start/end and actual_start/end timestamps
    • Adds source field to track import origin
    Fixdashboard/customers1:13 AM · ZRosserMcIntosh

    show primary address in location column; style: compact stat cards

    Fix1:07 AM · ZRosserMcIntosh

    restore inactive customer status and update display names to Last, First format

    • Customers with INACTIVE label are now marked inactive (294 customers)
    • Customers without INACTIVE label remain active (138 customers)
    • Display names updated from 'First Last' to 'Last, First' format
    • Added scripts for customer status fix and verification
    Feature12:49 AM · ZRosserMcIntosh

    add customer sorting and Google Maps integration

    • Add sorting options to customer list (Last Name, Display Name, Date Added)
    • Implement ascending/descending sort toggle with visual indicators
    • Add embedded Google Maps to property cards in customer detail page
    • Add 'Get Directions in Google Maps' links for property navigation
    • Display property access notes in customer detail view
    • Fix select element accessibility with aria-label
    • Add NavigationIcon component for directions link
    Fix12:43 AM · ZRosserMcIntosh

    Customer dashboard now shows all customers with status filter

    • Add active/inactive status filter to customer dashboard
    • Show all 432 customers by default (was filtering to 138 active only)
    • Visual indicator for inactive customers (grayed avatar, 'Inactive' badge)
    • Updated stats to show Active/Inactive breakdown
    • Fix import script to not auto-deactivate customers with INACTIVE label (label is just metadata, not a deletion marker)
    • Reactivated 294 customers in database that were incorrectly marked inactive
    Feature12:26 AM · ZRosserMcIntosh

    Complete HVAC customer data consolidation and import pipeline

    • Add Python consolidation script (hvac_data_consolidation.py)
    • Merge Jobber (137) and Airtable (430) customer datasets
    • Fuzzy matching on email, phone, address + name
    • 431 contacts, 423 locations, 133 matches, 0 conflicts
    • Deterministic UUID generation for contact/location IDs
    • Create database migration (20260112200000_hvac_import_fields.sql)
    • Add HVAC-specific fields: access codes (garage, door, alarm)
    • Add filter specifications (7 slots with quantities)
    • Add UV light, communication preferences
    • Add import tracking fields (import_contact_id, import_location_id)
    • Add helper functions: upsert_customer_from_import(), upsert_property_from_import()
    • Implement import automation (import_customers_to_supabase.py)
    • Transform consolidated CSV data to database format
    • Successfully imported 431 customers, 417 properties
    • 6 properties failed (missing city/zip - documented)
    • Create REST API routes for customers
    • GET/POST /api/customers (list with search/filter, create)
    • GET/PATCH/DELETE /api/customers/[id] (retrieve, update, soft-delete)
    • GET/POST /api/customers/[id]/properties (list, create with auto-primary)
    • Update customers dashboard (src/app/dashboard/customers/page.tsx)
    • Remove non-existent jobs_v2 table reference
    • Improve error handling and empty states
    • Add display_name generation for new customers
    • Expand search to include first_name, last_name fields
    • Update mobile models to v2 schema
    • iOS Customer/Property models with all HVAC fields
    • Android Customer/Property domain models
    • Android CustomerDto/PropertyDto network DTOs
    • Android CustomerEntity with Room persistence and JSON serialization
    • Computed properties: fullName, fullAddress, filters list
    • 432 customers (431 imported + 1 existing)
    • 417 properties
    • Import sources: merged (133), jobber_only (4), airtable_only (297)
    • All data accessible via web dashboard at /dashboard/customers
  3. Monday, January 12, 2026

    1 update

    10:19 PM · ZRosserMcIntosh

    Add push notifications infrastructure and cross-repo audit

    • Added push_tokens table migration for storing device tokens
    • Created push notifications API endpoint (/api/notifications/push)
    • Added notification event system with type definitions
    • Added push notification utility library
    • Created cross-repo audit documentation
    • Updated dependencies (added @react-native-firebase/messaging types)
  4. Sunday, January 11, 2026

    1 update

    Feature7:20 PM · ZRosserMcIntosh

    Add API infrastructure for integrations, webhooks, and Android sync

    • Add API status endpoint (/api/integrations/status) for health checks
    • Implement QuickBooks OAuth 2.0 flow (/api/integrations/quickbooks)
    • Create webhook receivers for Square, Jobber, and Twilio
    • Add database migration for integration support tables
    • Create comprehensive Android integration documentation:
    • API_CONTRACT.md - REST API specifications
    • DATA_MODELS.md - TypeScript/Kotlin model mappings
    • SYNC_ARCHITECTURE.md - Offline-first sync strategy
    • AUTHENTICATION.md - Auth implementation guide
    • WEBHOOKS.md - Webhook architecture and handlers
    • PUSH_NOTIFICATIONS.md - Firebase Cloud Messaging setup
    • TESTING.md - Testing strategies for Web and Android
    • SCHEMA_MIGRATION.md - Database consolidation plan
    • Integration connections storage (OAuth tokens, metadata)
    • Device token management for push notifications
    • Webhook logging and audit trail
    • OAuth state management with CSRF protection
    • RLS policies for new tables
    • Comprehensive handler implementations for all integrations
  5. Wednesday, January 7, 2026

    3 updates

    4:52 PM · ZRosserMcIntosh

    Marketing site fixes & employee dashboard improvements

    • Fix silent email failure: return false when SMTP unconfigured instead of silently succeeding
    • Add database fallback: contact form succeeds if either email OR database save works
    • Conditionally render Jobber portal link only when URL is configured
    • Rebalance header CTA: Call Now is primary, Customer Login is secondary
    • Add ContactPage JSON-LD schema for local SEO improvement
    • Create Privacy Policy and Terms of Service pages with proper metadata
    • Add verification code support for Google Search Console and Bing Webmaster Tools
    • Fix dashboard sidebar logo: use normal logo instead of inverted/whited out version
    • Hide footer on dashboard and portal pages to prevent overlap with sidebar
    Refactor3:11 PM · ZRosserMcIntosh

    Move Android app to separate repository

    • Removed android/ folder from web repository
    • Android app now maintained in separate maverick-android repo
    • Updated ANDROID_SETUP.md to reflect new repository structure
    • Cleaner separation allows independent CI/CD and team workflows
    • Both apps share same Supabase backend
    Feature1:27 AM · ZRosserMcIntosh

    Add complete Android app with offline-first sync architecture

    • Implemented Kotlin/Jetpack Compose Android app
    • Offline-first note sync with Room database
    • Retrofit + OkHttp with bearer token auth and auto-refresh
    • WorkManager for background sync with exponential backoff
    • Hilt dependency injection
    • Material3 theme with Maverick branding
    • MVVM + Clean Architecture (data/domain/ui layers)
    • NotesListScreen with search and sync status
    • NoteEditorScreen with create/edit/delete
    • Full conflict detection and resolution support
    • Encrypted SharedPreferences for secure token storage
    • Comprehensive documentation and setup guide
  6. Tuesday, January 6, 2026

    2 updates

    Docs1:59 AM · ZRosserMcIntosh

    add comprehensive SEO verification document

    • Verified all 27 pages have unique metadata and canonicals
    • Confirmed all 26 sitemap URLs exist and build successfully
    • Documented schema.org implementation across all page types
    • Verified dynamic OG image wiring for 19 pages
    • Confirmed image alt text on all public-facing images
    • Documented build success (83 pages generated)
    • Created checklist for production deployment and testing
    • Added next steps for Google Search Console and performance
    Fix1:35 AM · ZRosserMcIntosh

    wire up dynamic OG images properly with hasDynamicOgImage flag

    • Add hasDynamicOgImage flag to PageSEOConfig interface
    • Update generatePageMetadata to conditionally skip images property when using opengraph-image.tsx files (Next.js handles automatically)
    • Add hasDynamicOgImage: true to all service page configs (5 services)
    • Add hasDynamicOgImage: true to city page config generator (14 cities)
    • Add hasDynamicOgImage: true to home page config (uses root OG image)
    • Update static page configs with proper ogImageAlt text
    • Remove references to non-existent static OG image files
    • Dynamic opengraph-image.tsx files are properly used by Next.js
    • Canonical URLs are set per-page (not overridden by layout)
    • All 27 public pages have unique title/description/canonical
    • Service and city pages use their tailored dynamic OG artwork
  7. Monday, January 5, 2026

    14 updates

    Feature10:14 PM · ZRosserMcIntosh

    enhance SEO with dynamic OG images and comprehensive documentation

    • Add dynamic OpenGraph image generation for all service pages
    • Add dynamic OpenGraph image generation for all city pages
    • Each page now has unique branded OG image (1200x630)
    • Service-specific icons (fire, snowflake, wrench, etc.)
    • Location-specific branding for city pages
    • Improved social sharing engagement
    • Remove static OG image references in favor of dynamic generation
    • Confirm all 27 pages have unique metadata
    • Confirm all pages have proper canonical URLs
    • Image alt text audit completed (all images have descriptive alt)
    • Schema.org implementation verified on all public pages
    • Create comprehensive SEO_ENHANCEMENT_SUMMARY.md
    • Update SEO_IMPLEMENTATION.md with recent improvements
    • Document next steps for performance testing and GSC setup
    • Add performance optimization checklist
    • Service OG images use Next.js ImageResponse API
    • City OG images dynamically display city name
    • All images generated at build time for performance
    • Consistent branding across all OG images
    Docs9:52 PM · ZRosserMcIntosh

    remove emojis from all markdown files for professional appearance

    • Replaced checkmarks with [DONE] text
    • Replaced X marks with [NOT DONE] text
    • Replaced warning signs with [WARNING] text
    • Removed all decorative emojis (rockets, tools, charts, etc.)
    • Cleaned up 39 markdown files across all documentation folders
    • Documentation now has a more professional, human-written appearance
    Chore9:34 PM · ZRosserMcIntosh

    organize documentation and configuration files into folders

    • Move markdown files to docs/ with subfolders:
    • docs/setup/ for setup guides and deployment docs
    • docs/guides/ for feature implementation guides
    • docs/summaries/ for changelogs and status reports
    • Move email templates to supabase/emails/
    • Move SQL schemas and migrations to supabase/sql/
    • Move upload script to scripts/
    Featureseo9:28 PM · ZRosserMcIntosh

    Comprehensive SEO improvements

    • Add per-page unique metadata with generateMetadata()
    • Create dynamic service pages (/services/[slug]) with 5 services
    • Create dynamic city pages (/service-area/[city]) with 14 cities
    • Add Schema.org JSON-LD for all pages (Service, FAQ, Breadcrumb, LocalBusiness)
    • Remove hardcoded canonical, add proper per-page canonicals
    • Add OpenGraph and Twitter card tags with metadataBase
    • Create dynamic OG image generation
    • Update sitemap to include all new routes (26 total pages)
    • Add SEO utilities in src/lib/seo.ts
    • Add enhanced schema generators in src/lib/schema.ts
    • Document changes in SEO_IMPLEMENTATION.md
    Docs8:03 PM · ZRosserMcIntosh

    Add comprehensive chat system README

    Docs8:02 PM · ZRosserMcIntosh

    Add final status report - Chat system live and operational

    Docs7:50 PM · ZRosserMcIntosh

    Add comprehensive testing and deployment documentation

    • CHAT_TESTING_GUIDE.md: Detailed step-by-step testing instructions
    • TEST_NOW.md: Quick start testing guide
    • TEST_LIVE_STATUS.md: Current live test status and results
    • DEPLOYMENT_SUMMARY.md: Complete deployment overview and architecture
    Feature7:48 PM · ZRosserMcIntosh

    Add complete chat schema and Twilio setup guides

    • Populate empty chat_schema migration with full schema (tables, functions, RLS, realtime)
    • Create standalone chat schema (supabase-schema-chat-standalone.sql) for independent installation
    • Add comprehensive Twilio setup guide (TWILIO_FULL_SETUP_GUIDE.md)
    • Add installation success documentation (CHAT_INSTALLATION_SUCCESS.md)
    • Add quickstart guide (QUICKSTART_CHAT.md)
    • Add installation steps guide (CHAT_SCHEMA_INSTALL.md)
    • Add verification SQL queries (verify-chat-schema.sql)
    • Web chat widget support
    • Customer matching by phone/email
    • RLS policies for employees and anonymous users
    • Real-time message updates via Supabase Realtime
    • Foundation for SMS and AI summaries (Twilio/OpenAI)
    Docs1:19 PM · ZRosserMcIntosh

    Add comprehensive documentation for time entry editing feature

    Feature1:15 PM · ZRosserMcIntosh

    Add owner-only time entry editing functionality

    • Add isOwner() and canEditTimeEntry() helper functions to types
    • Create PUT /api/time/edit endpoint for updating time entries
    • Create GET /api/time/all endpoint for viewing all employees' entries
    • Add Edit button in time tracking table (visible to owners only)
    • Add comprehensive edit modal with date/time pickers for clock in/out
    • Implement business rule: owners cannot edit their own time entries
    • Add calculated hours preview in edit modal
    • Include session notes editing capability
    • Full validation on clock times (out must be after in)
    • Auto-calculate minutes_worked on save
    Docs2:13 AM · ZRosserMcIntosh

    Add comprehensive ROI analysis for Twilio Chat + AI integration

    • Detailed efficiency analysis across all roles (CSR, dispatch, techs)
    • Conservative estimate: 65-75% overall efficiency increase
    • 33+ hours/day recovered across organization
    • M+ annual value from time savings + revenue capture
    • OpenAI API ROI: 280,653% return on /year investment
    • Highlights tech handoff as the biggest money maker
    • Shows AI enables 600-1500% faster diagnosis vs manual
    • Business case for immediate OpenAI API key deployment
    Feature2:06 AM · ZRosserMcIntosh

    Add customers and properties tables for chat system

    • Create customers table with full contact/billing info
    • Create properties table for service locations
    • Add RLS policies for employee access
    • Add indexes for phone/email lookups
    • Auto-update triggers for updated_at fields
    • Required for ChatWidget customer creation
    Fix1:07 AM · ZRosserMcIntosh

    Remove orphaned code from page-old.tsx causing TypeScript compilation error

    Feature12:17 AM · ZRosserMcIntosh

    Add floating chat widget to homepage and push chat schema to Supabase

    • ChatWidget now appears on all pages (bottom-right corner)
    • Export ChatWidget from components index
    • Add standalone chat schema migration (no FK dependencies)
    • Schema includes: conversations, participants, messages, summaries
    • Full RLS policies for service_role, authenticated, and anon users
    • Auto-update trigger for last_message_at
  8. Sunday, January 4, 2026

    2 updates

    Feature11:11 PM · ZRosserMcIntosh

    Complete Twilio Conversations integration with AI summaries and tech handoffs

    • Add Twilio SMS and Conversations SDK support
    • Create conversation management API endpoints:
    • POST /api/conversations - create new conversations
    • GET/PATCH /api/conversations/:id - manage conversations
    • POST /api/conversations/:id/messages - send/receive messages
    • POST /api/conversations/:id/summary - AI-powered summaries
    • POST /api/conversations/:id/tech-handoff - technician handoff summaries
    • Add auth token endpoint with rate limiting for web chat
    • Enhance AI summarization with tech handoff-specific prompt
    • Add tech handoff button to employee dashboard
    • Update ChatWidget to use new API endpoints
    • Update chat dashboard with improved UX and tech handoff feature
    • Add comprehensive TWILIO_SETUP.md documentation
    • Configure environment variables (account SID, auth token)
    Feature10:32 PM · ZRosserMcIntosh

    implement dashboard unification with tabs and calendar views

    • Merge contacts into customers page with tabs
    • Consolidate invoices into payments page with tabs
    • Redirect legacy contacts/invoices URLs to unified pages
    • Add calendar view toggle (day/week/month/list) to schedule page
    • Implement global command palette with ⌘K shortcut
    • TabGroup: URL-synced tab navigation
    • CommandPalette: Global search with keyboard shortcuts
    • ViewToggle: Calendar view switcher
    • SLABadge: Status indicator badges
    • QuickActions: Inline action menus
    • /src/app/dashboard/layout.tsx: Added CommandPalette integration
    • /src/app/dashboard/customers/page.tsx: Added tabs + ContactsView
    • /src/app/dashboard/payments/page.tsx: Added tabs + InvoicesView
    • /src/app/dashboard/schedule/page.tsx: Added ViewToggle + 4 views
    • /src/app/dashboard/contacts/page.tsx: Redirect to customers?view=contacts
    • /src/app/dashboard/invoices/page.tsx: Redirect to payments?view=invoices
  9. Saturday, January 3, 2026

    1 update

    Docs7:49 PM · ZRosserMcIntosh

    Add dashboard employee invitations guide

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!