Changelog

What we shipped.
Honestly.

We publish what we ship every week. No hype, no "AI-powered" re-rewrites of existing features. If something's on the roadmap, it's on the roadmap — not in the changelog.

Session 9
April 24, 2026

Timesheet + gross margin + brand-voice glossary + mobile drawer

Owner timesheet report with KPI cards and daily breakdown. Labor cost + gross-margin aggregate on the Reports page. Per-tenant AI brand-voice glossary appended to every Claude system prompt. Mobile nav collapses into a slide-in drawer. Seasonal auto-pause now fires subscription.paused / subscription.resumed emails per affected client.

  • Timesheet view at /employees/{id}/timesheet — shift vs visit minutes + idle highlight.
  • ReportBuilder::laborCostByEmployee() + ::grossMarginRecent().
  • AI glossary appended to every system prompt (dunning + summary + reply + translate).
  • Per-tenant AI credit cap with monthly usage meter.
  • Mobile hamburger drawer with Work / Sales / Money / Admin grouping.
Session 8
April 24, 2026

Nav reorg + inbox translation + tech shifts + settings audit

Owner nav reorganized from 17 flat links into 4 primary + 4 grouped dropdowns. AI-translate button per inbox message with show-original toggle. Tech shift clock-in/out with live timer. Settings audit log capturing before→after diff.

  • Inbox per-message 🌐 translate action with show-original toggle.
  • Tech home page "On the clock" card with live minute counter.
  • Audit log viewer at /audit-log with per-field before→after diff.
  • Dispatcher per-visit weather risk ring (amber + ⚠ prefix).
  • booking.approved + booking.declined templates + triggers.
Session 7
April 24, 2026

Earnings tab + payout workflow + AI replies + weather

Employee earnings tab on every employee show page (MTD/YTD/projected/book size + 12-month trendline). Commission payout workflow: build → approve → mark-paid with CSV export. AI reply suggestions in the inbox (3 tones). Per-lat/lng cached weather on the dispatcher header.

  • EmployeeController@show hydrates 5-KPI commission panel + Chart.js trendline.
  • CommissionPayoutController — build/approve/markPaid + streamable CSV.
  • AiComposer::suggestReplies() with 3-tone fallback shape.
  • WeatherFetcher service + dispatcher header weather chip.
  • Seasonal auto-pause by month-window + tag, scheduled daily at 03:00 UTC.
Session 6
April 24, 2026

Commissions Phase 1 + PWA scaffolding + AI audit trail

The commission system that the gameplan calls out as a category-defining moat. 5 new tables, 2 rule kinds (flat bounty + % lifetime), full owner UI. PWA manifest + service worker with network-first HTML strategy. Every AI call now writes an audit row (even fallbacks).

  • commission_plans, employee_commission_plans, attributions, accruals, payouts tables.
  • Accrual ledger with rule_snapshot JSON — editing plans never rewrites history.
  • PWA: manifest.webmanifest + service-worker.js (versioned cache, network-first HTML).
  • ai_requests audit table — polymorphic subject + tokens + duration + source.
  • Notification per-trigger toggles on Settings page.
Session 5
April 24, 2026

Proof-of-service UI + cron + AI composer + tags + search

Signature pad + GPS breadcrumb capture UI. Full artisan cron wiring (dunning/quote expiry/outgoing transport). AiComposer service with graceful fallback. Client tags with colored badges. Global SQL search.

  • Alpine signature-pad canvas on tech visit page, stores inline SVG.
  • GPS breadcrumb sampling every 60s (capped at 200 samples).
  • dunning:tick + quotes:expire + outgoing:tick artisan commands.
  • AiComposer::draftDunning() + ::summarizeVisit() with fallback + audit.
  • Client tags + tag-filter pills on /clients index.
  • Global / search across clients, visits, invoices, quotes.
Session 4
April 24, 2026

Runtime checklists + route optimizer + reports + settings

Tech renders per-service checklist at runtime; saves responses to visit_field_values. Route optimizer with nearest-neighbor + 2-opt. Reports page with 5 metrics (MRR, revenue by service, AR aging, collection, top clients). Owner settings hub organized by mental model.

  • Runtime checklist rendering with conditional_on + live done-count.
  • RouteOptimizer service (Haversine + 2-opt) + dispatcher "Optimize" button.
  • ReportBuilder with per-tenant 1h cache; Chart.js on the client.
  • time_entries + auto-bucketing from en_route → complete.
  • Settings hub with Branding / Communication / Reviews sections.
Session 3
April 24, 2026

Checklists + zones + inbox v1 + dunning + reviews

Service checklist builder (owner side). Property zones. Unified inbox v1 (list + thread pane). Dunning scheduler with 4-step cadence. Review automation with rating-routing.

  • service_checklists + items tables; Alpine-driven editor.
  • property_zones + inline zone manager on property show.
  • Unified inbox with list + thread pane + composer with channel picker.
  • DunningScheduler (3/7/14/30-day cadence from due_date).
  • Public /r/{token} review page — stars 4-5 to Google, 1-3 to private feedback.
Session 2
April 24, 2026

Dispatcher + quoting + request queue + message pipeline

Dispatcher day-view with drag-drop between techs. Quotes with line items + optional upsells. Customer-initiated booking request flow. Outgoing message queue infrastructure.

  • ScheduleController day-view with capacity meters + weather overlay.
  • quotes + quote_line_items with auto-numbering (Q-YYYYMM-###).
  • Public /q/{token} accept page with optional-upsell selection.
  • booking_requests table + client portal request form + owner approve queue.
  • outgoing_messages queue + DispatchTemplatedMessage service.
Session 1
April 24, 2026

Phase 1 foundations — localization + template studio + Stripe groundwork

Session 1 was the initial infrastructure lift for the Phase 1 push: per-user locale, message template system, Stripe Connect schema, MagicLink extension for SMS signup.

  • users.locale + clients.preferred_locale + tenants.default_locale.
  • SetLocale middleware with session → user → tenant → config precedence.
  • message_templates table + MessageTemplateRenderer with locale fallback.
  • DefaultMessageTemplateSeeder (12 defaults across EN+ES × email+SMS).
  • Stripe Connect fields on tenants + card-on-file fields on clients.
Roadmap

What's in flight.

The next four quarters, honestly. Dates slip; priorities change. Every item below is actively scoped.

Q3 2026
Gusto direct integration for commission payouts
soon
Q3 2026
Satellite auto-quote with polygon draw (Mapbox + Claude vision)
soon
Q3 2026
Offline photo upload queue via service worker + IndexedDB
soon
Q3 2026
Voice-to-text notes (EN + ES) on tech visit screen
soon
Q4 2026
Portuguese (PT) language across UI + messages
soon
Q4 2026
Public embeddable booking widget for lead capture
soon
Q4 2026
REST API + webhooks (public) with Sanctum tokens
soon
Q4 2026
VROOM advanced route optimizer with time-window + skill constraints
soon
Q1 2027
Native iOS + Android wrappers (PWA-backed)
soon
Q1 2027
SSO (Google, Okta, Azure AD) on Enterprise
soon

Ready to run
the greenest show in town?

Start free for 14 days. Bring your whole crew. Keep your data forever.