# Release notes - 13 July 2026

Version 1.28.0, released 2026-07-13. Source: https://vektortms.com/releases/release-2026-07-13

> This release adds bill of lading templates and service log PDF export, and fixes problems with rate confirmations, tenders, dialogs and documents across dispatch and billing.

![Release notes - 13 July 2026](https://storage.googleapis.com/vektor-public-storage/changelog/cover/530d125f734d24ed0a240569.jpg)

## At a glance

- Bills of lading can be generated from document templates, and sending one from an order works again.
- Rate confirmations can be edited again, and customer rate confirmations generate with the correct order details.
- The Reject button is back on tenders, and expired or already handled tenders say so.
- Service logs can be exported as a PDF.
- Dialogs stay open when you click past their edges or choose a value from a dropdown inside them.

## Improvements

### Pages share one layout, so headers, filters and tables sit in the same place across the dashboard

- Why we changed it: Screens had grown apart over time, with page titles, action buttons and filter rows landing in slightly different positions depending on which area you opened.
- How it helps: Moving between dispatch, fleet and billing screens no longer means hunting for the controls, and there is more usable room for the table itself.
- How to use it: Nothing to switch on. Open any dashboard page to see the updated layout.

### Temperature notes take longer text and failures are reported instead of passing silently

- Why we changed it: The note field on temperature requirements cut off entries that were too short for real instructions, and errors while saving gave no feedback.
- How it helps: Full cooling instructions fit in the note, and if a save does not go through you see it rather than assuming the value was stored.
- How to use it: Open the temperature settings on an order and type the note; the longer limit applies right away.

### Service logs can be exported as a PDF

- Why we changed it: Service history could only be read on screen, with nothing to hand to an owner, an auditor or a shop.
- How it helps: Maintenance staff can save or send a service record as a document without retyping it.
- How to use it: Open a service log and use the PDF export action.

### Settlement emails start from a default message instead of an empty body

- Why we changed it: The settlement email template opened blank, so whoever sent it wrote the covering text from scratch every time.
- How it helps: Settlements go out with consistent wording and less typing, and the text can still be edited before sending.
- How to use it: Send a settlement by email; the default text is filled in and can be changed.

### Address search returns suggestions faster and more consistently as you type

- Why we changed it: Each keystroke in address lookup was handled as a separate unrelated request, which made suggestions slower and less reliable.
- How it helps: Entering pickup, delivery and facility addresses takes fewer corrections and less waiting.
- How to use it: Nothing to switch on; it applies wherever you search for an address.

### Pages load faster because time zone data is now cached instead of looked up on every request

- Why we changed it: Every request re-read time zone information from the database, adding delay across the dashboard.
- How it helps: Screens and lists respond quicker, especially under heavy use.
- How to use it: Nothing to switch on.

### Accounting sync shows the vendor error returned by the bookkeeping system

- Why we changed it: When a vendor failed to sync, the screen gave no indication of what the bookkeeping system had rejected.
- How it helps: Billing staff can read the actual reason a vendor did not sync and fix the record instead of guessing.
- How to use it: The error appears on the vendor when a sync fails.

### Company setup now includes a guided card for installing the browser extension

- Why we changed it: Setting up the browser extension was not part of the guided company setup, so new accounts had to find the steps on their own.
- How it helps: New accounts get the extension installed as part of the setup checklist instead of hunting for instructions.
- How to use it: Go to company setup and follow the extension setup card.

### Bill of lading documents can be built from reusable email templates

- Why we changed it: There was no template category for bills of lading, so each one had to be composed from scratch.
- How it helps: Staff send bills of lading with consistent wording instead of rewriting the message each time.
- How to use it: Create or pick a bill of lading template when sending the document.

### Brokers can use the fuel card integration

- Why we changed it: The fuel card integration was only available to carrier accounts.
- How it helps: Broker accounts get the same fuel card data and transactions without a separate workaround.
- How to use it: Enable the fuel card integration in settings on a broker account.

### Bills of lading can be generated from document templates

- Why we changed it: Bills of lading had to be produced outside the product or from a fixed layout.
- How it helps: The document comes out with your own layout and order data already filled in.
- How to use it: Pick a bill of lading template when generating the document on an order.

### You can create a role directly while adding a customer member

- Why we changed it: Roles had to exist before a member could be added, which meant leaving the form and coming back.
- How it helps: Admins set up a new member and the role they need in one pass.
- How to use it: In the customer member create form, use the create role button next to the role field.

### The accounting integration now pulls vendor details along with the rest of the synced records

- Why we changed it: Vendor information was not retrieved during the sync, so vendor records had to be checked or completed by hand in the accounting system.
- How it helps: Accounting staff see matching vendor details on both sides and spend less time reconciling them.
- How to use it: Nothing to switch on; the next sync fetches vendor details.

### You can sync carriers on demand and see the status of the last sync in a popover

- Why we changed it: Carrier records refreshed only on their own schedule and there was no way to tell when the last refresh happened or whether it worked.
- How it helps: Staff can pull current carrier data right before booking and see at a glance if the sync succeeded.
- How to use it: On the carriers list, use the Sync Carriers action and open the status popover next to it.

### Table grid lines are darker, so rows and columns are easier to follow across wide tables.

- Why we changed it: The light grid lines made it hard to track a row across a wide table, especially on bright screens.
- How it helps: Data is easier to read at a glance and there is less chance of reading a value from the wrong row.
- How to use it: Nothing to switch on; it applies to tables across the dashboard.

### New locations and schedules start with no facility type preselected

- Why we changed it: New locations and schedules picked up a facility type by default, so a wrong type could be saved without anyone choosing it.
- How it helps: The facility type on a new location reflects what someone actually picked.
- How to use it: Create a location or schedule and choose the facility type yourself.

## Fixes

### The tender acceptance screen now tells you when a tender has expired or was already handled

- Why we changed it: Opening an expired or no longer valid tender link showed a screen with no explanation, leaving the user unsure whether the tender was gone or the page had failed.
- How it helps: Whoever opens the link sees the actual state of the tender and can stop waiting or follow up instead of retrying a dead screen.
- How to use it: Open a tender acceptance link after it has expired to see the message.

### Address autocomplete now returns suggestions while you create a company

- Why we changed it: The address field on the company creation form stopped offering suggestions, so addresses had to be typed in full and were easy to get wrong.
- How it helps: Addresses on new companies can be picked from suggestions again, which keeps them consistent and geocoded correctly for later use in planning and dispatch.
- How to use it: Create a company and start typing in the address field; suggestions appear as you type.

### Typing in rich text fields no longer triggers keyboard shortcuts

- Why we changed it: Keystrokes inside editable content areas were picked up as shortcuts, so typing could fire an unrelated action or move you off the field.
- How it helps: Notes and other rich text fields accept normal typing, including keys that are bound to shortcuts elsewhere.
- How to use it: Nothing to switch on. Type in any rich text field.

### Fuel transactions can be unassigned from a company again

- Why we changed it: Once a fuel transaction was linked to a company there was no way to undo it, so a wrong assignment stayed on the record.
- How it helps: Mis-assigned fuel transactions can be corrected instead of living with the wrong company on fuel costs and reports.
- How to use it: Open the fuel transaction and clear the assigned company.

### Money code exports keep the expected column order and no longer fail with an error

- Why we changed it: Exported money code files came out with columns in the wrong order, and some exports ended in an error instead of a file.
- How it helps: The exported file can be opened and reconciled straight away without rearranging columns or retrying.
- How to use it: Export money codes as usual.

### Customer rate confirmations generate again with the correct order details

- Why we changed it: Rate confirmation generation for customers was failing or producing documents with missing details.
- How it helps: Dispatchers can produce a rate confirmation for a customer straight from the order without redoing it by hand.
- How to use it: Open the order and generate the customer rate confirmation as usual.

### Dialogs stay open when you click past their edges

- Why we changed it: A click that landed on the page behind a dialog closed it, losing whatever had been typed.
- How it helps: Work entered in a dialog is no longer lost to a stray click.
- How to use it: Nothing to switch on.

### Carrier creation keeps running in the background when you step back to the driver info and signature form

- Why we changed it: Going back to the driver info and signature step during carrier creation interrupted the process, so the carrier was not created.
- How it helps: You can move back through the form without losing the carrier you were adding.
- How to use it: Create a carrier and navigate back to the driver info and signature step; the creation completes on its own.

### Rate confirmations can be edited again

- Why we changed it: Opening a rate confirmation for editing did not let changes be made or saved.
- How it helps: Corrections to a rate confirmation can be made in place instead of recreating the document.
- How to use it: Open the rate confirmation on an order and edit it as usual.

### Pressing Enter in transaction search runs the search

- Why we changed it: The search field ignored the Enter key, so the search only ran when the button was clicked.
- How it helps: Looking up a transaction is faster and behaves the way the rest of the search fields do.
- How to use it: Type in the transaction search field and press Enter.

### Training progress shows real completion instead of 0%, and restricted tools stay hidden from users without permission

- Why we changed it: The leaderboard reported everyone at 0% regardless of progress, and one internal tool was reachable by users whose role did not allow it.
- How it helps: Managers see who has actually completed training, and access follows the permissions that were set.
- How to use it: Open the training leaderboard; permissions apply automatically.

### Choosing a value from a dropdown inside a dialog no longer closes the dialog

- Why we changed it: Selecting an option from certain dropdowns dismissed the surrounding dialog and lost the entries made so far.
- How it helps: Forms in dialogs can be filled in without starting over.
- How to use it: Nothing to switch on; open any dialog with a dropdown.

### Invoice age now shows the correct number of days on the invoice list

- Why we changed it: Invoice age was calculated or displayed incorrectly, so aging figures did not match how long an invoice had actually been outstanding.
- How it helps: Billing staff can trust the age column when chasing unpaid invoices and building aging reports.
- How to use it: Open the invoice list; the age is recalculated automatically.

### The invite team members form no longer blocks you over empty invite rows

- Why we changed it: Blank rows in the invite form were validated as if they had been filled in, so the form refused to submit.
- How it helps: Admins can send invites without deleting leftover empty rows first.
- How to use it: Go to team settings, add invites and submit; empty rows are ignored.

### The bill of lading is no longer regenerated each time the send dialog is opened

- Why we changed it: Every open of the Send BOL dialog produced a new document, creating duplicates and slowing the dialog down.
- How it helps: The document stays the same between openings, so what is sent matches what was reviewed and there are no duplicate files on the order.
- How to use it: Open the Send BOL dialog as usual; the existing document is reused.

### Sending a bill of lading works again from the order documents

- Why we changed it: The endpoint behind sending a bill of lading was not wired into the service, so the send action failed.
- How it helps: Dispatchers can send the bill of lading to the recipient without falling back to email attachments.
- How to use it: Open an order, choose Send BOL and pick the recipient.

### The compare documents dialog shows the documents again instead of opening empty

- Why we changed it: The dialog rendered no documents at all, so there was nothing to compare.
- How it helps: Staff can put two documents side by side and check them without downloading both.
- How to use it: Select documents on an order and choose Compare.

### The loaded miles label is back on the manifest miles badge

- Why we changed it: The label had disappeared from the miles badge, leaving the number without saying which miles it was.
- How it helps: Dispatchers can tell loaded miles from total miles at a glance on the manifest.
- How to use it: Open a manifest; the badge shows the label again.

### The permission for viewing settlement transactions is enforced again.

- Why we changed it: The view settlement transactions permission had no effect, so access did not match what was configured for the role.
- How it helps: Only staff with the permission can see settlement transactions, so payroll figures stay with the people meant to see them.
- How to use it: Check the role's permissions under settings; existing settings now take effect.

### The Revenue Type dropdown on the settlement page scrolls, so every option can be reached.

- Why we changed it: The dropdown list did not scroll, so options below the visible area could not be selected.
- How it helps: Settlement revenue types can be picked correctly without workarounds.
- How to use it: Open a settlement and open the Revenue Type dropdown.

### The X clear button in input fields responds where it is shown.

- Why we changed it: The clickable area of the clear button did not line up with the icon, so clicks often missed it.
- How it helps: Clearing a field takes one click instead of several tries.
- How to use it: Nothing to switch on; it applies to inputs with a clear button.

### Driver percentage pay rates keep their decimals instead of being rounded off

- Why we changed it: Percentage values on driver pay were rounded to whole numbers, so a rate entered with decimals did not come back the way it was typed.
- How it helps: Pay percentages stay exactly as entered, so driver settlements calculate from the rate the carrier agreed to.
- How to use it: Nothing to switch on. Open a driver's pay settings and enter a percentage with decimals.

### Sending invoices in a batch no longer zooms the page.

- Why we changed it: Starting a batch invoice send shifted the page zoom, leaving the screen at the wrong scale mid-task.
- How it helps: Billing staff can send a batch of invoices without resetting the view afterwards.
- How to use it: Select several invoices and use batch send.

### The schedule dialog opens again

- Why we changed it: The dialog for opening a schedule failed to appear, blocking the work that starts there.
- How it helps: Scheduling can be done from the dialog as before, without a workaround.
- How to use it: Nothing to switch on. Open the schedule dialog as usual.

### The Reject button is back on tenders

- Why we changed it: The button to reject a tender was missing, so dispatchers could accept but had no way to decline from the tender view.
- How it helps: Tenders can be declined directly, keeping the tender list accurate without contacting the broker separately.
- How to use it: Nothing to switch on. Open a tender and the Reject button is there next to Accept.

### Invoice logs and their columns line up correctly

- Why we changed it: The invoice log view had misaligned columns and cramped styling that made entries hard to read.
- How it helps: Billing staff can scan invoice history without columns running into each other.
- How to use it: Open an invoice and look at its logs.

### Sending a bill of lading from an order works again

- Why we changed it: The order screen called the wrong query when sending a bill of lading, so the send could fail.
- How it helps: Dispatchers can send the bill of lading from the order without the action failing.
- How to use it: Open an order and send the bill of lading as usual.

### The Create Facility dialog opens and works correctly in Safari

- Why we changed it: After a recent change to dialogs, the Create Facility dialog rendered broken in Safari.
- How it helps: Safari users can add facilities without switching browsers.
- How to use it: Open Create Facility in Safari.

### The push-to-driver-app toggle now shows its current state right away

- Why we changed it: Switching the toggle did not update visually, so it was unclear whether the push had been turned on.
- How it helps: Dispatchers can see at a glance whether sending to the driver app is enabled.
- How to use it: Flip the push-to-driver-app toggle and watch it update.

### Percentage values sit on the same line as the figures they belong to in analytics

- Why we changed it: Percentages were vertically misaligned in analytics cards, making the numbers awkward to read.
- How it helps: Analytics figures read cleanly at a glance.
- How to use it: Open analytics; nothing to switch on.

### The Assign Transaction dialog keeps its shape and its image stays aligned

- Why we changed it: The dialog rendered deformed and the image sat off to one side.
- How it helps: Assigning a transaction is readable and the attached image shows where it belongs.
- How to use it: Open Assign Transaction on a transaction.
