Grasshopper 3.26.04 Release Notes
Features
Driver App Enhancement
Enhanced GPS Locating Tracking
Overview
The Driver App now collects and transmits GPS location data continuously while a route is active, enabling more accurate tracking of real-time driver positions, route execution visibility, and future analytics such as route duration and delay detection.
Key Enhancements
- GPS location is collected every 1 minute and stored locally on the device while a route is active.
- Location data is transmitted to the server every 30 minutes for persistence and reporting.
- Tracking is active only during an active last-mile route and stops automatically at midnight.
- Location data is available for the Live View dispatcher map and the public tracking page.
Driver Start Route
Overview
Drivers must now explicitly start a route before accessing stop details or performing any delivery actions. This introduces a formal route start flow with order status validation, manifest tracking, and geo-location activation — providing accurate route start timestamps for operations and reporting.
Key Enhancements
- A new Start Route action is presented to the driver at the manifest level on the correct delivery date.
- The app validates that all orders are in a valid status before allowing route start; invalid statuses trigger an error message prompting the driver to contact the dispatcher.
- On confirmation, route start time, geo location, and source (driver/dispatcher) are recorded.
- All relevant orders are aligned to ‘Out for Delivery’ status upon route start.
- Drivers cannot access stop details or perform delivery actions without starting the route.
- Manifest tracking records are created automatically at route start.
- A calendar view highlights dates with assigned open manifests for the driver.
Driver End Route
Overview
A formal End Route flow has been introduced to capture accurate route end timestamps and stop geo-location tracking when a driver completes their last stop. The system supports two end-of-route scenarios: routes ending at the last stop and routes requiring a return to the hub.
Key Enhancements
- When the last stop is completed, the driver receives a confirmation message and the route is ended.
- For hub-return routes, the driver is notified to return to the hub; geo-fencing automatically ends the route upon arrival.
- Route end time, geo location, and source are recorded and added to manifest tracking.
- Geo-location tracking is terminated at route end or automatically at midnight if the route remains open.
- Friendly completion messages are shown to the driver upon route end.
Driver Offline Mode
Overview
Drivers can now complete delivery actions — including closing stops, capturing signatures, and uploading photos — while their device is offline. Actions are queued locally and synced to the server once connectivity is restored, ensuring no data is lost during low-signal deliveries.
Key Enhancements
- An ‘Offline Mode’ indicator is displayed across all screens when the device has no internet connection.
- This feature is designed for a single stop with no internet reception.
- Arrived on Site and Consignee Available timestamps are recorded locally using the actual event time and synced later.
- OTP step is bypassed in offline mode with an appropriate tracking note.
- Image uploads are queued locally and transmitted once connectivity is restored.
- All offline-recorded actions are clearly labeled in tracking with both the recorded time and sync time (e.g., ‘Recorded offline at 10:42, synced at 11:15’).
- Stop completion (POD, waiver) is fully supported in offline mode.
Central Geo Location Service
Overview
Grasshopper has migrated from local geo-location storage to a centralized geo-location service. All geo-dependent features — including the Live View dispatcher map and the public tracking page — now retrieve driver location data from the centralized service, with no change in user experience.
Key Enhancements
- Live View page now retrieves real-time driver location from the Centralized Geo Location Service.
- Public Tracking page now retrieves truck location from the Centralized Geo Location Service.
- Location update frequency is maintained at or better than prior performance.
- Fallback and error handling are in place for missing geo data.
- A new dedicated API for submitting geo locations from the Driver App has been implemented.
Driver Notes Indicator
Overview
A visual notification icon now appears on stop cards in the Driver App when an order contains important notes, ensuring drivers are alerted to review relevant information without needing to check every order manually.
Key Enhancements
- A notification icon is displayed on the stop card for any order that has driver notes.
- The indicator is also visible when the driver opens the stop details.
- Only orders with notes display the icon, reducing unnecessary friction for orders without notes.
Bill of Lading (BOL) Document Upload
Overview
Drivers can now capture and upload a signed Bill of Lading directly from the Driver App. BOL images are stored under a dedicated asset type, accessible from the Grasshopper web app and via our APIs.
Key Enhancements
- A new ‘Bill of Lading’ option is available in the Driver App upload flow for all stops across all shippers.
- BOL images are stored under the BILL_OF_LADING asset type and linked to the relevant stop and order.
- BOL documents are accessible in the Grasshopper web app and via the Grasshopper APIs.
- Available on both iOS and Android with no per-shipper configuration required.
Track Item Delivery Source
Overview
The system now records and exposes how each item delivery was completed — either via the Driver App or via the Web UI. This improves traceability, supports SLA compliance, and enables dispute handling for shortages and claims.
Key Enhancements
- A new delivery_source field is populated for all item delivery actions, with values of driver_app or web_user.
- The field is included in relevant APIs and webhook payloads.
- Order tracking messages now indicate the delivery source (e.g., ‘Order delivered — reported by driver’).
- Backward compatible — historical records default to null.
- No impact on existing delivery flows or integrations.
Service Photo Labeling
Overview
Service and installation photos captured by drivers are now correctly labeled in the system, making it easier to identify and retrieve on-site service documentation from order assets.
Key Enhancements
- Photos taken during a service or installation stop are now stored using the ‘On-site Service’ label.
- Consistent labeling improves searchability and clarity of order photo records.
Infrastructure Upgrades
Overview
This release includes a set of foundational infrastructure upgrades to improve platform stability, performance, and maintainability. These changes are transparent to end users.
Key Enhancements
- Upgraded Next.js to the latest supported version.
- Upgraded Node.js runtime to the latest LTS version.
- Upgraded Babel and Jest testing framework.
- Refactored Jarvis reporting code to query Aurora DB directly.
- Removed unused internal utility functions to reduce code footprint.
- Added MixPanel analytics event for Retailer UI login tracking.
- Fixed missing schema update for ManifestRouteSchema.
UI Infrastructure Improvements
Overview
Internal UI infrastructure improvements have been applied to standardize page layouts and component structure across the platform, resulting in a more consistent look and feel.
Key Enhancements
- All existing page top headers have been migrated to a new standardized header component.
- Filter margin styling has been removed and standardized across pages.
UI List Component Enhancements
Overview
Improvements have been made to list picker components used across the platform, providing users with more flexible and intuitive list management capabilities.
Key Enhancements
- List Picker now supports sorting of labels in the target frame.
- New List Picker and Chip List Picker UI components introduced for improved list interaction patterns.
Defects
Driver App
Reject Order Screen — Unresponsive Buttons Fixed
Overview
Certain rejection reason buttons on the Driver App reject order screen were unresponsive. The root cause was that some rejection reasons incorrectly required a photo before allowing selection. The logic has been updated to only enforce photo capture when configured in advanced settings.
Key Enhancements
- Rejection reasons that do not require a photo (e.g., ‘Left at Warehouse’, ‘Cancelled by Shipper’) can now be selected without triggering the camera.
- Photo enforcement is now driven by the advanced settings configuration for each rejection reason.
- All rejection reasons have been reviewed and corrected accordingly.
Driver App — Incorrect accepted_by Field Corrected
Overview
The Driver App was incorrectly populating the accepted_by field with the vendor/company name instead of the name of the individual who received the delivery. This caused incorrect data to appear in delivery confirmations and downstream integrations.
Key Enhancements
- The accepted_by field now correctly captures the full name of the person who accepted the delivery.
- For unattended deliveries, the field is left empty as expected.
- Fix applies to all attended delivery completions across all carriers.
Web App & Platform
Add Charges Feature Restored
Overview
The ‘Add Charges’ action was missing from the Orders grid following a recent platform upgrade. The feature has been restored and the charge modal has been updated with improved accessorial filtering.
Key Fixes
- Restored the ‘Add Charge’ action to the Orders grid, available via the icon bar and right-click context menu.
- The Add Charge modal now filters accessorials correctly when ‘Accessories’ is selected — excluding shipper-specific, region-based, and percentage-rate accessorials.
- ‘Assembly’ has been removed from the charge type dropdown options.
Delivery Report — Excess Apostrophe Removed
Overview
An extraneous apostrophe character was appearing in delivery report output. This has been corrected to ensure clean, properly formatted report data.
Key Fixes
- Removed excess apostrophe from delivery report field output.
Missing Vendor ID in Imported Orders
Overview
Imported orders were missing the vendor ID field, causing inconsistencies in order data and downstream processing. The import flow has been corrected to populate the vendor ID correctly.
Key Fixes
- Vendor ID is now correctly populated for all orders created through the import flow.
Route Planner — Incorrect Stop Count Fixed
Overview
The stop count displayed in the Route Planner date header was incorrectly including hub/depot waypoints in the total, causing the displayed count to be higher than the actual number of delivery stops.
Key Fixes
- The stop count now accurately reflects only active delivery stops, excluding hub and depot waypoints.
- Fix verified across multiple routes with varying stop counts.
Import File — Services Supported as Separate Records
Overview
Service items were incorrectly tied to individual line item rows in the import file, implying a one-to-one relationship with items and causing structural inconsistencies. Services are now imported as independent records with their own row structure.
Key Fixes
- Service items are now imported as separate rows in the import file, independent of line items.
- Service records are identified by the presence of a service_code field.
- Clear validation rules distinguish service records from line item records — a row cannot contain both a SKU and a service code.
- Service items are validated against the shipper’s service catalog.
- All existing import validations remain in effect for line item records.
Service Items Displayed in Incorrect Manifest Entries
Overview
Service items were incorrectly appearing in manifest content entries that are not relevant to customer-facing stops, such as vendor pickup and return-to-vendor entries. Services are now shown only for delivery and pickup-return stops at customer addresses.
Key Fixes
- Service items and service icons are now shown only on delivery-to-customer and pickup-return-from-customer entries.
- Vendor pickup and return-to-vendor entries no longer display service items or service icons.