Newsletter status: In progress. See
README.mdfor conversion guide.
v2606.10.0 — June 10, 2026
MRs: !2117, !2115, !2114, !2113, !2112, !2111, !1878, !1859
Highlights
AegisDoc — in-house document generation and e-signature engine (!1878) AegisDoc is now integrated into the monorepo, replacing PandaDoc for receipt generation. Receipts are generated server-side using sandboxed QuickJS templates, rendered to PDF via Cloudflare Workers, and delivered through the existing documents modal. The system supports workflow-based signing, payment steps, and template-driven naming — all without third-party dependencies for document creation.
Heartbeat — AI-driven job monitoring (!1859)
The new Heartbeat system runs scheduled AI analysis on jobs, producing read-only summaries visible below the admin summary on the job activity page. It includes cost breakdowns, a self-improving AI dashboard for reviewing suggestions, and configurable zone-level enable/disable. An update_summary AI function lets admins request fresh AI-generated summaries on demand.
Dialpad voicemail, missed calls, abandoned calls, and recording handling (!2114, !2117, closes #6269)
All major Dialpad call event types are now handled: voicemail transcription, missed calls, abandoned calls, and call recordings. A new queued event handler stamps dialpadMainCallID correctly so subsequent webhook events (hangup, recording, etc.) reliably find the parent comment thread. Call center names appear in comments and reporting metadata.
Cyclical period buckets for dynamic reports (!2115) Dynamic reports now support period-based grouping (weekly, monthly, quarterly) with cyclical bucketing. This lets you break report data into time-based columns and compare periods side by side.
Features
- Self Improving AI dashboard with job analysis, page diff application, and focus area suggestions (!1859)
- Period bucket grouping option for dynamic reports (!2115)
- Handle Dialpad voicemail, missed, abandoned, and recording events with rule triggers (!2114, closes #6269)
- Fix
dialpadMainCallIDstamping on datadip and add queued event handler (!2117) - Pre-check “send receipt” when customer has email or phone (!1878)
Fixes
- Fixed
dialpadMainCallIDnot being stamped on datadip comment threads, causing subsequent webhook events to silently fail (!2117) - Updated OTR calculator Total Flat Rate formula per stakeholder review (!2113, closes #6329)
- Improved GraphQL error handling for network parse errors — treats them as transient retryable failures (!2112, closes #6316)
- Added explicit email and phone validation in the new opportunity customer step to prevent malformed data (!2111, closes #6332)
Other
- Integrated Aegis module into monorepo Docker builds and CI pipeline (!1878)
- Switched monorepo to default Aegis registry consumption (!203b59c)
- Regenerated GraphQL types after app merge (!03bf7b)
v2606.08.0 — June 8, 2026
MRs: !2110, !2109, !2108, !2107, !2106, !2099, !2095, !2094, !2093, !2092, !2091, !2090, !2089, !2088, !2087, !2086, !2085, !2084, !2083, !2082, !2080
Highlights
Crew pay calculator — determine amount to pay crew from job events (!2099, closes #6181, #6246)
The OTR calculator now includes a crew pay section that lists crew from a job’s events, lets operators select which parts of the job each crew member participated in, add tips, and track total owed vs. paid per crew member. A new eventCrewMember group-by option has been added to dynamic reports for tracking event-level crew data.
Vancouver calculator v1 (!2080, closes #6107) A new Vancouver-specific moving estimate calculator supports weight sourcing (manual, inventory, storage profile, historical), automatic crew sizing, pricing resolution against the product catalog, and a “Create Estimate” workflow that attaches charges to the job.
Ops Readiness dashboard — billed columns, collapsible details, charge dedup (!2090, !2084) The Ops Readiness dashboard now shows calculated vs. billed crew, labor, drive, and totals with inline diff lines. Collapsible detail columns reduce clutter, and a shared-events toggle lets franchises filter appropriately. Backend fan-out dedup prevents inflated row counts.
NSC calculator — elevator type and floor efficiency modifiers (!2082) The NSC calculator now differentiates elevator types (bookable, freight, not-bookable) with granular per-type-per-floor efficiency modifiers, replacing the flat elevator discount.
Performance
- Added database index for
CalendarEvent.status_bookedproperty (!2088, closes #6254) - Optimized job filtering for last scheduled event period (!2085)
- Removed dynamic reports fan-out trap — 300+ lines of duplicated column logic consolidated (!2093)
Features
- Show job timeline or creation date with tooltip in job header (!2109, closes #6177)
- Persist calculator state when creating a new job from an opportunity (!2108, closes #6328)
- Disable “Create Estimate Charges” button on closed jobs (!2110, closes #6313)
- Add pay button to booking modal (!2089, closes #6184)
- Dispatch date remarks — zone admins and Karve admins can set remarks on calendar dates, visible in schedule views (!2086)
- Calculate possible contact times (call times) for AI (!2095, closes #6023)
Fixes
- Fixed broken layout when Street View is unavailable (!2107, closes #6293, #2697)
- Fixed charges displayed without name in work orders after product deactivation (!2106, closes #6300)
- Fixed crew member unable to be added from dispatch (!2101, closes #6303)
- Fixed revenue dashboard
discountedSubTotalexcluding shared-in charges (!2092) - Fixed booking modal not retrieving events (!2094)
- Fixed white screen after clicking job code in email (!2096, closes #6138)
- Fixed PandaDoc
document.completedhandling (!2091) - Removed embedded URL from franchise (!2087, closes #6243)
- Fixed unrecoverable service worker state on iOS 16, preventing stuck loading screens (!2083)
Other
- NSC calculator v2605.18.0 with elevator type + floor efficiency modifiers (!2082)
v2606.01.0 — June 1, 2026
MRs: !2105, !2104, !2103, !2102, !2101, !2100, !2098, !2097
Highlights
Storage locations excluded from dispatch displays and routing (!2103) Storage locations no longer appear on the dispatch page or in route optimization. Dispatchers now see only operational locations, reducing clutter and preventing storage stops from skewing route calculations.
Optimized Street View map loading with deferrable views (!2097) The Street View component is now lazily loaded using Angular deferrable views, reducing initial page weight and speeding up the dispatch experience on slower connections.
Performance
- Lazy-loaded Street View map component using Angular deferrable views (!2097)
Features
- Exclude storage locations from dispatch displays and route optimization (!2103)
- Add crew size input to NSC calculator (!2104)
Fixes
- Fixed FullCalendar modules causing prebundling errors (!2105)
- Fixed errors when opening a dynamic report from a URL path (!2102)
- Fixed inability to add crew members from the dispatch page (!2101)
- Fixed duplicate calendar events being created during job updates (!2100, closes #6144)
- Fixed NSC calculator not opening from the latest version link (!2098)