Newsletter status: In progress. See
README.mdfor conversion guide.
v2607.08.1 — July 8, 2026
MRs: !2146, !2168, !2171, !2172
Highlights
New OTR Labor Tracking dashboard (!2146, closes #6281) Ops can now manage paid vs. unpaid labor at the job × crew member level directly in Move Right, replacing the external spreadsheet workflow. Edit paid amounts, mark rows “paid in full,” and use bulk “Pay all jobs in this group” scoped to a payout period — saving triggers a server-side calculator run to refresh totals. Payout period grouping and unpaid-overdue highlighting make it easy to see which jobs need attention.
Streamlined virtual estimate booking flow (!2171)
A new streamlined-estimate-booking intake variant (inactive by default, reachable via ?streamlined URL param) removes the photo upload and text/email-only steps, moving date selection up right after move size. A new StreamlinedDateSelector shows a flat list of available dates with expandable time slots and explanatory virtual walkthrough copy — reducing friction for customers booking virtual estimates.
Abandoned call double-text fix (!2171) Dialpad fires hangup events on both call-center and user targets for inbound calls, which was creating duplicate abandoned comments and double-sending the abandoned-call text. A Redis dedup lock now ensures only the first hangup is processed, matching the existing transcript dedup pattern.
Features
- New Call/Job reporting columns for abandoned-call analytics:
callAbandoned,jobHadAbandonedCall,jobOriginIsInboundCall,jobAbandonedThenConnected, plus a more robustcallDirectionderivation across Dialpad/Twilio (!2171) - Zone-scoped virtual estimator filtering (
intake.virtualEstimators) restricts which estimators appear for virtual availability per zone (!2171) - Configurable exception email allowlist (
jobs.autoAssignAgentExceptionEmails) allows protected-role unassignment under specific configured conditions (!2168)
Fixes
- Fixed CSV upload error when crew members without emails are present and edited to add an email (!2172)
- Fixed Dialpad abandoned call double-processing causing duplicate comments and double texts (!2171)
- Restricted unassign of Sales Agent / Estimator to admins and sales managers, closing a loophole where agents could strip protected roles via
removeUsers(!2168, closes #6481)
Other
- Removed
jobAgent.reassignfromAGENT_PERMISSIONS; admins and sales managers now inherit it viaMANAGER_PERMISSIONS(!2168) - French translation fixes: “Seleccionado” → “Sélectionné”, “using” → “à l’aide de” (!2171)
v2607.08.0 — July 8, 2026
MRs: !2169, !2167, !2166, !1898
Highlights
Forwarded customer email replies now create job comments (!1898, closes #5367)
When a single-unit inbox ignores the reply-to address and a customer reply lands back at moveright.info, staff can now forward that reply to a zone-specific +reply@ address and Move Right will automatically parse it, find the right job by customer email, and add the reply as a comment — then notify all job watchers. This closes a long-standing gap where replies from certain single-unit inboxes were lost.
Aegis document completion emails refined (!2167, closes #6480, #6464, #6461) Signature-request emails no longer attach the PDF (so customers must sign via the link), while completed documents now automatically email a signed PDF copy to signer roles and job watchers. Estimate visibility on the Work Orders tab is fixed, and invoice display names now read “Invoice” + invoice number with the remaining balance on a separate line.
OTR System Revenue drill-down improvements (!2169) Drill-down cells in the OTR System Revenue dashboard are now clickable links that open the underlying reports in a new tab, and headers now match calculator labels for less confusion. CSV/clipboard exports preserve readable cell text for linked values.
Features
- Configurable text parts for the intake form, initially configured for Turpin (!2166, closes #6447)
Fixes
- Fixed estimates not showing on the Work Orders tab (!2167, closes #6464)
- Fixed invoice display name and balance formatting (!2167, closes #6461)
- Signature-request emails no longer attach the PDF, ensuring customers sign via the link (!2167, closes #6480)
- Signed PDF copy now sent to signer roles and job watchers on Aegis document completion (!2167)
- Fixed document container alignment (!2167)
Other
- Hotfix functions deploy trigger for v2607.06.0 (!2165)
v2607.06.0 — July 6, 2026
MRs: !2164, !2163, !2162, !2160, !2158, !2157, !2156, !2155, !2154, !2153, !2152, !2151, !2150, !2149, !2148, !2147, !2145, !2144, !2143, !2142, !2141, !2140, !2139, !2138, !2137, !2136, !2135, !2134, !2133, !2132
Highlights
OTR System Revenue dashboard replaces the external labor tracker (!2136, closes #6280) The OTR (Operations Tracking & Revenue) dashboard now lives inside Move Right instead of an external spreadsheet. You can see system revenue, labor tracking, and per-franchise breakdowns filtered by zone and period, with drill-down links into the underlying reports. This is the first dashboard built on the new dynamic-reports engine.
Movers Assistance estimate & standard invoice templates in AegisDoc (!2163, !2139) We added a branded Movers Assistance estimate template and a dynamically branded standard invoice template, both rendered through AegisDoc. The old PandaDoc-based flow is now fully replaced for these document types, with clickable contact info, conditional discount totals, and improved PDF pagination.
Legacy frontend code removed (!2155)
The jobsv2, jobsv3, and legacy Estimates modules are gone. Job pages now live under a single job/ module, the schedule is booking-schedule, and shared Quill/template tooling moved to shared/. This deletes thousands of lines of dead code and makes the job page noticeably faster to load and navigate.
Performance
- Dynamic-reports engine powers the new OTR dashboards and filters — aggregated queries now use valid output aliases for ORDER BY (!2160)
- Prophet dynamic pricing retuned to use real capacity and keep raw q10, sharpening the discount gate (!2152)
Features
- OTR System Revenue dashboard with zone-scoped reports, job-count column, and drill-down links (!2136, closes #6280)
- Movers Assistance estimate template with brand color support (!2163)
- Dynamically branded standard invoice template; receipts and invoices now render via AegisDoc (!2139, !2163)
- Job area filter added to dynamic reports (!2154)
- New calculator columns available in dynamic reports for the OTR dashboards
- Manager role now has dispatch permissions (!2150, closes #6453)
- Autodial time improvements (!2140, closes #6429)
Fixes
- Fixed duplicate SMS comments showing in the UI when sending texts (!2156, closes #6458)
- Fixed password-update cypher query failing for certain users (!2157, closes #6426, #6463, #6456, #6455)
- Fixed Ask-Bee scheduling next-day calls within business hours (!2153)
- Fixed Yembo sync search logic and added handler for
smart_consult_scheduled(!2151, closes #6376) - Fixed jobs not searchable by customer email after the email is updated from the Job Page (!2145, closes #6445, #6444)
- Fixed errors when an inventory room or item is not found (!2144)
- Fixed Aegis estimates missing the “View as” option in the Documents tab (!2143, closes #6472)
- Fixed watchers not notified when a customer replies to an email with a document (!2137)
- Fixed “Cannot set quantity of undefined” on inventory (!2144)
- Fixed new-opportunity location wizard not persisting unsaved changes (!2135)
- Added a warning tooltip when the Continue button is disabled in intake (!2134, closes #6421)
- Corrected floor options and added a Storage Unit building type prompt (!2132)
- Fixed percentage rates defaulting to 0 in the Movers Assistance estimate (!2163)
- Fixed
transparentaccent colors hiding template headers (!2163) - Fixed Anthropic prompt caching via
anthropic-betaheader (!2162) - Added anchor tag and clickable link/website support in Aegis documents (!2139, !2149)
- Improved estimate and invoice template layout density and balanced two-column inventory (!2158, !2149)
- Narrowed BaseUser fragment and patched node-fetch for Node v24 compatibility (!2138)
- Fixed backup script shell quoting and added
--backup-fileflag (!2133)
Other
- New CI deploy policy: pushes to
apponly deploy on a release version-bump commit or an MR merged with thehotfixlabel. Seedocs/ci-deploy-policy.md. - Large legacy code cleanup:
jobsv2/jobsv3→job,schedule-v3→booking-schedule, Quill template helpers →shared/(!2155) - Frontend tests added to CI/CD with Google Chrome replacing Chromium for Karma (!2147)
- Dockerfile fix for CI test environment (!2164)
- Removed legacy EstimateHelperService, add-event-button, and
Estimatingmenu item (!2155) - Standardized job module import paths and removed version suffixes (!2155)
- Functions bundle deployed to Cloudflare R2 via the
deploy-functionsjob (!2148, !2141) mirror-aegistriggered for the new AegisDoc template releases (!2142)