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.
| 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 |
| 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 |
| 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 |
| 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 |
Only the items that need more than a glance. Click to expand.
$90.99 Price, not $30.00 MSRP.$25.00) that has never been stocked at location X.$9.00) and complete it.$25.00, not $9.00.10.123) was silently rounded, and an oversized value failed with an opaque error.10.123 → inline "Maximum 2 decimal places"; type a 20-digit number → "Value is too large"; type letters → "Enter a valid number".10.12 → accepted./api, so the session survives F5 and is coordinated across tabs./login./login immediately.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. |