Tag
qa-2026-07-20· Created: 2026-07-20 · Last Updated: 2026-07-24
What shipped to QA in this release (changes since 2026-07-07), 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 | Register a POS terminal from the Devices tab — the button used to be a stub that only showed a toast. → How to test | Admin › Merchants › detail › Devices | #844 |
| New | Filter invitations by pending / accepted / expired. | Admin › Users › Invitations | #819 |
| New | Edit a merchant's country, which also sets how phone numbers typed elsewhere are interpreted. | Admin › Merchants › detail › edit | #759 |
| Fixed | The Devices tab shows each terminal's real status — every device used to read "No connection", including live ones — and a failed register now shows the reason instead of closing silently. → How to test | Admin › Merchants › detail › Devices | #868 |
| Fixed | Deactivating a device in the global registry works — it used to show a success message and leave the device active. | Admin › Platform › Devices › Deactivate | #878 |
| Fixed | A merchant's Modules tab lists its module toggles — the grid used to come up empty for every merchant. | Admin › Merchants › detail › Modules | #897 |
| Fixed | Inviting a partner user from a partner's page works — it used to fail with a generic error. | Admin › Partners › detail › invite user | #895 |
| Fixed | The AI logs and AI prompts detail pages open — the links were broken and led nowhere. | Admin › Platform › AI logs / AI prompts | #848 |
| Fixed | Notification template pages open — the links were broken and led nowhere. | Admin › Platform › Notification templates | #877 |
| Fixed | Revoking an invitation works — the button used to fail silently and leave the invitation active. | Admin › Users › Invitations › Revoke | #831 |
| Fixed | User filters reset when you switch tabs, so a role picked on one tab no longer sticks on another and returns 0 results. → How to test | Admin › Users › Platform / Partner / Merchant tabs | #719 |
| Type | What changed | Where to check | Ref |
|---|---|---|---|
| New | Initialize a new location from a template store — it copies the template's price, cost, and tax-group overrides. → How to test | Portal › Locations › New › Initialize | #839 |
| New | An Active sessions page lists every device signed into your account and lets you sign them out. → How to test | Portal › Settings › Sessions | #748 |
| New | While building a purchase order you can pull in the products that are below their reorder point. → How to test | Portal › Purchase Orders | #884 |
| New | Set a product's reorder point and restock level per location — these are what the reorder proposal and the low-stock lists read. → How to test | Portal › Products › detail › Inventory | #777 |
| New | Filter the Purchase Orders and Receipts lists by location and supplier; the receipt search also matches the linked PO number now. | Portal › Purchase Orders / Receipts › filters | #749 |
| New | Record a supplier's minimum order quantity per product — leave it empty for no minimum. | Portal › Products › detail › Suppliers | #776 |
| Improved | A customer certificate's issued date can no longer be set in the future — the expiry date is still unrestricted. | Portal › Customers › Certificate | #862 |
| Improved | A product's Pricing, Inventory, and Taxes tabs list every active location — a store selling at the base price used to be missing from them entirely. | Portal › Products › detail › Pricing / Inventory / Taxes | #849 |
| Improved | Completing a receipt links any product received off-supplier to that supplier and records the cost you paid. → How to test | Portal › Purchase Receipts › Complete | #906 |
| Improved | The Movement log lost its "Reset to last 7 days" button — the date picker's own preset and Clear filters already do it. | Portal › Inventory › Movement log › filters | #860 |
| Fixed | Applying a price change now actually updates the prices, instead of reporting "Applied" while changing nothing. → How to test | Portal › Pricing › apply a price change | #886 #866 #864 #873 |
| Fixed | Clearing a variant's barcode sticks — blanking the field and saving used to be silently ignored (setting or changing one always worked). → How to test | Portal › Products › Variants | #816 |
| Fixed | Your unsaved edits in a create drawer survive a background session refresh. → How to test | Portal › any create drawer | #755 |
| Fixed | Opening a location or supplier with a Puerto Rico phone number no longer flips its Country to Puerto Rico and marks the form changed. → How to test | Portal › Locations / Suppliers › edit | #750 |
| Type | What changed | Where to check | Ref |
|---|---|---|---|
| New | Click anywhere on a table row to open its detail — the whole row is the link. | Any list page | #720 #769 |
| New | Select several rows on a document grid and act on them in one go. → How to test | Document grids with checkboxes | #829 |
| Improved | Summary cards show the total across the whole filtered list, not just the page you are on. → How to test | Dashboard & list pages › summary cards | #756 |
| Improved | Date fields are full width with a clearer calendar affordance. | Any date picker | #859 #814 |
| Improved | Notifications use a distinct on-brand icon per type. | Any pop-up notification | #802 #725 |
| Improved | Table typography and spacing match the design system across every grid. | Any data grid | #815 #757 #746 #735 |
| Fixed | Filter chips clear reliably when removed. | Any filtered list | #718 |
| Type | What changed | Where to check | Ref |
|---|---|---|---|
| New | Support access asks for a reason before entering a merchant, and the access is time-capped. → How to test | Support access › pick a merchant | #736 |
| Fixed | If support access fails while the reason dialog is open, the dialog now shows the error — it used to just sit there with no feedback. | Support access › reason dialog | #782 |
Only the items that need more than a glance. Click to expand.
+1 787 silently switched the Country field to Puerto Rico — even on a record stored as US — and marked the form changed, so an untouched edit saved US → PR.+1 787… phone and Country = United States. Portal → Locations (or Suppliers) → open it for edit.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 |
|---|---|---|
| #792 | Client-IP handling behind the proxy, so rate limiting and audit key off the real caller. | Backend hardening. The real IP already resolved correctly on the current hosting — this closes a header-spoofing gap, reachable only by forging request headers, not through the portal. |
| #789 #737 | Merchant business attributes (country, currency, timezone) moved to a dedicated endpoint. | No visible change — the same values arrive by a different route. Verified by API/integration tests. |
| #824 | The device registration service and its platform endpoints. | Backend half of the Devices tab work above (#844); on its own there is no screen to open. |
| #833 | Internal AI-log identifiers promoted to public ids. | Data-layer change behind the AI logs pages (#848); nothing in the UI shows it. |
| #785 | Device activation returns the merchant id. | API-only, and its consumer is the POS terminal at first boot — nothing in either portal shows it. |
| #801 | A purchase order can only have one open draft receipt. | The portal already blocked this in the normal flow; the gap was on direct API calls, so it needs a non-UI path to reproduce. |