All releases
May 2026

May 2026 Updates

Dashboard demo mode, Neo4j history projections for reports, invoiced revenue column, inbound/outbound call icons, and more.

This is a technical changelog intended for developers and the Move Right team. For customer-friendly release highlights, subscribe to our newsletter.

Newsletter status: In progress. See README.md for conversion guide.


v2605.06.1 — May 6, 2026

MRs: !2062, !2059, !2054, !2051, !2043

Highlights

Exact email and phone search now bypasses fulltext (!2051, closes #6083, closes #6084) Full email addresses like johnedrinkwater@gmail.com were being treated as broad fulltext queries, dominated by common tokens like “gmail.com” and causing slowdowns. Exact email and phone lookups now use direct match instead, making contact searches deterministic and fast.

Street View maps show the correct location (!2054, closes #6046) The job map component has been switched to use the Google Street View Static API, eliminating cases where indoor views were shown instead of the correct outdoor street view for the address.

Charge reordering now persists correctly (!2043, closes #6100) Reordering charges and clicking save no longer silently drops the new order. The work orders reducer has been fixed to properly track and persist charge ordering changes.

Performance

  • Exact email and phone lookups bypass fulltext search, eliminating slow queries dominated by common tokens like gmail.com (!2051)

Features

  • Added Accountant role scoped to the Turpin franchise with appropriate permissions (!2059, closes #6182)

Fixes

  • Fixed email rules with toSpecificEmails not validating addresses before sending, causing silent failures for malformed recipients (!2062)
  • Fixed Street View map displaying indoor photos instead of the correct outdoor view for an address (!2054, closes #6046)
  • Fixed charge reordering not persisting when saving (!2043, closes #6100)

v2605.06.0 — May 6, 2026

MRs: !2061, !2057, !2056, !2055, !2053, !2052, !2049, !2048, !2047, !2046, !2045, !2044, !2042, !2041, !2039, !2038, !2037, !2035, !2034, !2033, !2032, !2031

Highlights

Dashboard Demo Mode (!2033)

You can now toggle Demo Mode from the user profile menu to view the dashboard with curated fixture data. This is useful for training, presentations, and screenshots without exposing real customer information. Demo data responds to period, currency, and filter controls just like live data.

Invoiced Revenue column in Dynamic Reports (!2031, closes #6160)

A new “Invoiced Revenue” column is available in dynamic reports, giving visibility into finalized invoice amounts alongside realized and scheduled revenue. Documentation for the requirement and calculation logic has been added.

Neo4j history projections for reports (!2045, !2245ab8c0ad)

Reports now use Neo4j history projections instead of live Elasticsearch queries. This improves report query performance and decouples reporting from the main history feed. A resumable backfill CLI has been added to populate projections from ES into Neo4j with progress tracking and resume support.

Distinct icons for inbound and outbound calls (!2039)

The call log now shows different icons for inbound versus outbound calls, making it easy to scan the timeline and identify call direction at a glance.

Performance

  • Reports now read from Neo4j history projections instead of live ES queries, reducing load on Elasticsearch and improving report response times (!2045)
  • Added index on openphoneCallId to prevent delayed processing of call events (!2049)
  • CallRail precall webhook early exit when CallRail integration is disabled (!2030)

Features

  • Dashboard demo mode with curated fixture data that responds to period, currency, and filter controls (!2033)
  • Invoiced revenue column in dynamic reports (!2031, closes #6160)
  • Job start dwelling type available as a group-by option in dynamic reports (!2032)
  • Distinct icons for inbound and outbound calls in the timeline (!2039)
  • Default-long-no-time intake variant for long-form intake without time selection (!2061)
  • Sharing events are now recorded in job history (!2046)
  • Job watchers update in the Business page UI after switching zones (!2047)
  • Improved Quo webhook event handling: resolve call participants for any event order, add parent comments for transcripts, summaries, and recordings (!2041)
  • Email rules can now target a specific email address instead of all job crew and customer (!e883d6d035)
  • setStageEstimateAt now set consistently for jobs entering the estimate stage (!4825e4dc04)

Fixes

  • Fixed QuickBooks export failures caused by missing configuration, undefined item maps, and disabled integration checks (!2056, !2055, !2053)
  • Fixed auth crash and white screen on deauthentication — deferred userId assignment until after refresh token check (!2048)
  • Fixed CalendarEvent history chunking for large related sets (!2052)
  • Fixed “Go to Job” navigation crash when data is invalid (!2038)
  • Fixed total price to customer calculation missing additionalChargePrice (!2037, closes #6149)
  • Fixed adding a custom charge erasing unsaved selected regular charges (!2042)
  • Fixed stale zone responses overwriting the active zone after a zone switch (!2035)
  • Fixed customer billingAddress undefined crash on overview page (!2034)
  • Fixed pipeline row revenues not summing to group total — rows now display “None” as attention placeholder to prevent double-counting (!de76cf662f, !4b176519ca)
  • Fixed demo mode fixtures to respond correctly to period, currency, and filter controls (!aac0421f00)
  • Fixed race condition in Quo webhook event handling — added Redis lock to prevent duplicate parent-level comments (!2044)
  • Fixed role guard and ref-count loading flag issues in dashboard demo mode (!df9aa7c1e6)
  • Fixed frontend.demo-mode incorrectly included in OPERATIONS_PERMISSIONS (!ebed4a1e9f)
  • Fixed guard against undefined currentZone in menu item template (!a1fa99beed)
  • Fixed strict form validation for saving only on new opportunity v4 (!f8e8fa012e)
  • Fixed prompt to discard invalid new opportunity data on job page navigation (!a1d635ecc4)
  • Fixed “OTR Fees” typo in dashboard (!2057, closes #6160)
  • Fixed invoice lifecycle event history preservation (!7fe3b59ee1)

Other

  • Resumable Neo4j backfill CLI for report history projections, replacing ES-based migration 43 (!50a2d6a523, !e980d61349)
  • CodeRabbit review fixes: lock projections, stage timestamps, report queries, and backfill robustness (!e980d61349)
  • Release skill updated to include intake/mr-cli version bumps and auto-publish (!719190b79c, !fde983a1db)
  • Invoice revenue requirement documentation added (!b22228b100, !26c6cb4bca, !da04e5858d)