← All releases

QA Release — 2026-07-07

Tag qa-2026-07-07 · Created: 2026-07-14 · Last Updated: 2026-07-24

What shipped to QA in this release (changes since 2026-06-22), grouped by area. The Ref column is stable — cite it when reporting. Rows marked → How to test are expanded at the bottom.

✨ Highlights

You stay signed in
Refreshing (F5) or opening extra tabs no longer logs you out; find it in Sign-in & behind the scenes.
Clickable rows
Click anywhere on a table row to open it; find it in Across both portals.
Bulk-add products
Add many products to a category at once; find it in Merchant portal.
Dashboard date filter
Filter the merchant dashboard by date range; find it in Merchant portal.
Public IDs in links
Merchant & device pages now use short public IDs; find it in Admin portal.

🖥️ Admin portal 19

Type What changed Where to check Ref
New A merchant's detail page has a Locations tab. Merchants › detail › Locations #545
New Edit a merchant's contact info in a new two-column layout. Merchants › detail › edit contact #653
New The audit log shows the entity name and a readable description. Audit log › description column #592
New New date and date-range pickers; the audit log filter was redesigned. Audit log › date selector #591
Improved Merchant pages now use short public IDs in their links — old bookmarks with number IDs no longer open, use the current links. Merchants › open a merchant #715
Improved Device pages now use short public IDs in their links — old number-ID links no longer open. Devices › open a device #692
Improved The partner phone field has a country-flag picker, and email/phone are clickable. Partners › edit › phone #666
Improved Devices show the location name instead of a number. Devices › list #605
Fixed The merchant list shows each merchant's real location count (it always showed 0 before). Merchants › list #556
Fixed Summary cards on list pages now total the whole filtered list, not just the current page. → How to test List pages › summary cards #587 #588
Fixed The partner and industry filters on the merchant list actually filter now. Merchants › filters #519 #532
Fixed The audit log date filter works. Audit log › date filter #577
Fixed The audit log opens on the last 7 days. Audit log › first open #640
Fixed Search the audit log by email. Audit log › search by email #580
Fixed Search AI logs by email, and the "Pending review" filter works. AI logs › search #703
Fixed A failed form submit now shows the field-level reason instead of a generic "Bad Request". → How to test Any form › submit invalid data #600
Fixed Lists load without flickering. Any list › load / next page #558
Fixed Lists show 10 rows per page by default. Any list › pagination #570
Fixed Template search no longer flickers or loses focus. Templates › search #573

🏪 Merchant portal 8

Type What changed Where to check Ref
New The dashboard has a date-range filter. Dashboard › date filter #638
New Add many products to a category at once with a new picker. Categories › add products #673
New The access log has search and a date range. Access log › search & dates #677 #647
New Country picker and phone field with a default country. Forms › country / phone #509
Improved The portal uses the new shared date pickers. Any date field in the portal #608
Fixed The product header shows the price, not the MSRP. → How to test Products › detail header #672
Fixed Inventory documents no longer change the location price. → How to test Inventory › documents #693
Fixed A category's product count now includes products added with "Add existing products" — it counts active products assigned directly to that category, not those sitting in its sub-categories. Categories › detail › count pill & tab badge #680

🧩 Across both portals 20

Type What changed Where to check Ref
New Table rows are clickable — click a row to open it (opening in a new tab works too). Any table #707
Improved Consistent page headers and titles across both portals. Page headers #626 #637
Improved Filter dropdowns are searchable and no longer snap back when cleared. Filter bars #564
Fixed Filter dropdowns drop the redundant "All" option and their screen-reader labels are translated. Filters › any dropdown #574 #575
Fixed Wide tables scroll properly on phones. Tables on mobile #572
Fixed Long text wraps in tables instead of overflowing. Tables with long text #616
Fixed Long values wrap on detail rows. Detail rows with long values #604
Fixed Action columns show an "Actions" header instead of a blank one. Tables with an actions column #694
Fixed Filter buttons wrap on small screens. Filters › narrow screen #681
Fixed Duplicate notifications no longer stack up. → How to test Pop-up notifications #516
Fixed Notifications close when you change page, so a message about the previous screen no longer lingers — error notifications still stay put until you navigate or close them. Notification › then change page #618
Fixed Notifications are solid and pause when you hover them. Pop-up notifications #695
Fixed Closed side panels can't be tabbed into with the keyboard. → How to test Side panels #512
Fixed The calendar shows above side panels and dialogs. → How to test Date picker inside a panel #606
Fixed Prices and quantities reject out-of-range or over-precise values with a clear error. → How to test Price / quantity fields #696
Fixed Date fields highlight in red when invalid — not just showing the message. → How to test Date fields with validation #636
Fixed Placeholder text is easier to read. Input placeholders #571
Fixed Phone numbers are click-to-call correctly. Clickable phone numbers #705
Fixed Buttons show a hand cursor on hover. Buttons (hover) #711
Fixed The page title no longer shows through the top bar when scrolling. Scroll any page with a title banner #687

🔑 Sign-in & behind the scenes 3

Type What changed Where to check Ref
Improved You no longer get logged out when you refresh the page (F5) or have several tabs open — your session stays put. → How to test Admin & merchant portal › sign in, refresh, open a 2nd tab #698 #699 #700 #701 #712
Fixed Contact phone numbers are saved in a standard international format, so the country flag shows correctly — contacts saved before this release keep the old format until you re-save them. Save a contact with a phone #688
Fixed The Sync Monitor pending panel no longer errors — it shows a "coming soon" empty state (live sync data isn't wired yet). Admin › Sync Monitor #641

🧪 How to test 10

Only the items that need more than a glance. Click to expand.

#587 #588 — Summary cards total the whole filtered list
#600 — A failed form submit shows the field reason
#672 — Product header shows the price, not the MSRP
#693 — Inventory documents no longer change the location price
#516 — Duplicate notifications no longer stack up
#512 — Closed side panels can't be tabbed into with the keyboard
#606 — The calendar shows above side panels and dialogs
#696 — Prices and quantities reject out-of-range or over-precise values
#636 — Date fields highlight when invalid
#698 #699 #700 #701 #712 — You stay signed in (refresh / multiple tabs)

🔧 Technical — not QA-testable 5

Referenced in development but with nothing to verify through the normal portal flow — listed so a referenced number never dead-ends.

Ref What Why not testable
#582 AI logs reject malformed date ranges. No UI trigger — the AI Logs page never sends date params; reachable only via a malformed query param against the API (→ 400).
#690 Audit log hardening: email search treats special characters literally, and inverted date ranges are rejected. Backend hardening — the literal-character case needs specially seeded emails, and the date picker won't produce an inverted range; verified via API/integration tests.
#686 Removed a browser console warning on the Code field of create/edit side panels (drawers). No visible change — internal cleanup. Only shows as the absence of a warning in the browser console (F12).
#574 (screen-reader part) Filter dropdown screen-reader labels are translated. Needs a screen reader / DOM inspection — no visible change for a sighted tester. (The visible part — dropping the redundant "All" option — is in the table above.)
#693 (label part) Product label no longer prints $0.00 for received goods. No Labels screen yet (/labels = "Coming soon"); reachable only via the API.