Worth testing first
If you only have twenty minutes, these are the changes most likely to affect your day — and the ones where we'd most like to hear if something feels off.
- Check the total on an order you gave a discount toAdd a discount to an order and watch the Total, not just the Discount line. Until this month the discount was shown but never actually subtracted, so the customer was charged the full amount.
- Discount a single line on an order that already existsClick the line total on an order. You can now take a percentage or an amount off one item, with a reason, after the order has been created — not only while building it.
- Build a cart that carries more than one strainA cart with a sativa and an indica in it is now one product, not two. Up to five strains per variant.
- Turn on the demo org and click aroundThe header toggle fills a sandbox business with real products, purchase orders, customers and orders. Safe to break — it is a separate business, and it resets.
- Open any list and use the ⋯ menu on a rowOrders, customers, suppliers, warehouses, menus, campaigns and drivers all now behave like the products list: same tabs, same filters, same row actions.
- Look at a product that is still a draftIts own page used to say "not visible to customers" and "on storefront: 1 of 1" at the same time. Those now agree.
Numbers that were wrong
- A discount you entered was never taken off the order total. The Discount line appeared on the order, but the Total ignored it — so an order showing $8 off still charged the full amount, everywhere it was displayed. This is the one worth checking against anything you invoiced recently.
- Draft products claimed to be on the storefront. A product page could show a warning that customers could not see it directly above a green "On storefront" badge and a count saying otherwise. Nothing was ever wrongly on sale — the badge and the count were simply reading a different rule from the banner. All three now answer the same question.
- Orders, customers, suppliers and warehouses stopped at fifty. The products list was fixed last month; the same silent cap was still on four other lists. Everything is reachable now.
- A purchase order total could quietly understate itself. Lines with no cost recorded were simply left out of the sum, so the total looked complete and was not. Uncosted lines are now called out before you place the order.
New
- Carts that carry several strains. A single cart product can hold up to five strains — a sativa and an indica in the same unit, priced and stocked once. Previously this could only be recorded as separate products, which made stock counts wrong.
- A demo business you can safely break. One toggle in the header fills a separate sandbox business with a full set of realistic data: products with stock, purchase orders at every stage, customers, orders, deliveries and production runs. It is a real business record rather than a fake screen, so everything behaves exactly as the live one does. Use it for training, for demos, or to try something you would not risk on real data.
- A review step before an order is placed. Create Order now ends with a summary of what you are about to commit — the last flow in the app that still submitted without one.
- A quick-actions menu on every row. The ⋯ menu that products had is now on every list. Whatever you can do to a selection, you can now do to a single row without selecting it first.
- Discounts on a line of an existing order. Click a line total to take a percentage or an amount off that item, with a reason from your own list and an optional note. The order records who applied it and why.
- Projects are now Locations. Renamed throughout, with proper address details on each one and a quicker way to switch between them.
Clearer to use
Most of this month went here. Eleven list pages, five pickers and every empty screen in the app now behave the same way as each other.
- Every list page works like the products list. Orders, customers, suppliers, warehouses, menus, campaigns, drivers and the rest: the same tabs, the same filter and display controls, and the same URL you can bookmark or send to someone.
- Variant pickers group their options. The five remaining pickers that showed one long flat list now group by product, the way the others already did.
- Order history is readable. The activity drawer shows who did what in plain language, with names and photos instead of an id fragment, and you can attach a note to an entry.
- Modals stop scrolling their own headers away. The title and the buttons stay put; only the content scrolls. The save button no longer disappears off the bottom of a long form.
- The sidebar fits on a laptop. It was scrolling vertically at common screen heights, so the bottom items were unreachable without scrolling the navigation itself.
- Brand is a dropdown of brands you already use. On every screen where a product is created or edited. Twenty suppliers spelling the same brand three ways is what made the brand filter useless.
- Onboarding asks for an address properly. Street, city, state and postcode, like every other address in the app, instead of one free-text box.
- Empty screens and error messages. Every empty state now has an icon and distinguishes "nothing here yet" from "nothing matches your filter". When something fails to load in the background you now get told, rather than being left with a blank panel.
- Shipping starts blank on a new order. It was pre-filling with your default option, which meant a shipping charge nobody consciously chose could end up on the order. The default is still one click away in the list.
- Dashboard chart controls do something. The 7d/30d/90d/1y buttons were decorative.
Safer
- Suspending a business now actually locks it. Suspension changed a status and nothing else — everyone in that business kept full access to read and change their data. It is now refused at the door, on every request.
- Being signed out at random. On a slow connection the app could decide you were logged out while you were using it, and bounce you to the login screen. It now waits, and if something genuinely fails it says so and offers to retry instead of throwing you out.
- You have to pick a location before the app will open one. If you run several, the app used to quietly drop you into whichever one it picked, including through search. It now asks first, and the navigation stays hidden until you answer.
- Production can no longer consume stock that has not arrived. An older path into production could draw from a purchase order line that was still in transit.
Around thirty individual items shipped in this release. If something here does not behave the way you expect, tell us which screen you were on — that is usually enough for us to find it.