Dashboard
Use the Posnic Notification Centre
The bell combines a temporary realtime activity feed with low-stock status and optional browser push. It helps staff notice changes, but its badge and entries are not an audit log or task list.
- Menu path
- Dashboard header -> notification bell
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/layouts/header.html single notification centre, low-stock section and push button, frontend/static/script/js/core/PosnicPro.js realtime EventSource, bellFeed storage, badge, routing and push opt-in, api/src/realtime/low-stock-push.js threshold, throttle, recipient and payload rules, api/src/realtime/push.js per-user device subscriptions, VAPID identity and stale-subscription cleanup, demo.posnic.io notification control observed on 2026-09-08
Open and Read the Bell
- Select the bell in the top-right header. The badge is one combined attention count, not two separate counters.
- Read the Activity area first. Each row names a broad type of change, its relative time and, when grouped, a multiplication count.
- Select an activity row to close the dropdown and open its related Posnic page.
- Review the Low Stock section separately and select View All when stock action is required.
- Use the destination list or report to verify the actual record. The bell never replaces transaction history or an audit report.
- Close the panel after review. Opening it has already marked the current badge items as seen on this device.
What Activity Can Appear
The realtime signal carries only an entity name. Posnic deliberately reports a broad event such as Sales activity; it does not invent a customer, amount, item or employee detail that the signal did not contain.
| Bell label | Opens | Required read access |
|---|---|---|
| Sales activity | Sales | Sales |
| Inventory updated | Items | Items |
| Receiving activity | Purchases/receivings | Purchase |
| Customer records changed | Customers | Customer |
| Supplier records changed | Suppliers | Supplier |
| Categories changed | Categories | Category |
| Expense recorded | Cash Book/expenses | Expenses |
| Register activity | Registers | Sales |
| Staff clock activity | Users | User |
| Table / KOT activity | KOT history | Sales |
How the Activity Feed Behaves
- The browser receives other-till change signals through an EventSource connection. It reconnects automatically after an interruption.
- Only recognized entity types for which the signed-in user has the required read permission are recorded.
- Consecutive changes of the same type within 60 seconds are combined into one row with a count such as x3.
- A new grouped row increases the unseen badge by one; additional changes merged into that row do not each add another unseen count.
- The feed keeps at most 20 rows, newest first, and stores them only in the current page's memory.
- Reloading, signing out, closing the app or opening another device does not provide a durable history of these rows.
- Nothing yet means this page session has no permitted activity rows. It does not prove that no work occurred.
Understand the Badge and Seen State
The badge combines unseen activity rows with the number of low-stock items above a locally remembered low-stock watermark. Opening the dropdown clears the activity unseen count and moves the low-stock watermark to the current count.
- The badge is capped visually at 99+.
- Opening the bell marks items seen even when the operator does not select a row or View All.
- The low-stock list remains visible after the badge clears; seen does not mean restocked or resolved.
- When stock improves below the remembered watermark, Posnic lowers the watermark so a later increase can light the badge again.
- The low-stock seen watermark is local to that browser or desktop profile, so another till can show a different badge.
- A zero badge is an attention state, not evidence that every notification-related task is complete.
Enable Browser Notifications on a Trusted Device
- Open Posnic in a supported secure web browser and select the notification bell.
- Select Enable notifications on this device. The control is hidden when Notification, Service Worker or Push Manager support is unavailable.
- Approve the browser permission prompt only on a trusted business device.
- Wait for Posnic to retrieve the shop's public push key and register this browser subscription for the signed-in user.
- Confirm the Posnic success message. Reopen the bell; the button should now read Send test notification.
- Select Send test notification and confirm the operating-system alert appears.
- Repeat the opt-in separately for every browser profile or device that should receive alerts.
Know What Device Push Sends Today
The wired automatic push producer is low stock. It sends a count and a destination link, not item names, quantities, customer data or transaction values.
| Rule | Current behavior | Operational consequence |
|---|---|---|
| Trigger | A stock-moving change asks the server to consider low stock. | Push is best effort and never blocks the sale or stock operation. |
| Throttle | At most one low-stock check per shop process every six hours unless explicitly forced by tests. | An immediate second stock change may not create another push. |
| Threshold | The widest configured notification range across the shop's branches is used. | The push count is shop-wide and can differ from one branch's Low Stock page. |
| Included items | Available quantity at or below the threshold; instant items are excluded. | The notification is based on stored quantity, not supplier lead time or sales velocity. |
| When sent | Only when the low-stock count grows beyond the previously stored count. | A flat count stays quiet; restocking down re-arms a later increase. |
| Recipients | Subscribed users who currently have Items read access. | Removing Items read access prevents later automatic low-stock delivery. |
| Delivery lifetime | Web Push is sent with a one-hour TTL. | An offline device may miss an old alert after that delivery window. |
| Desktop app | The push button is hidden where no service worker registration exists; the source notes Electron does not register it. | Use the in-app bell and Low Stock page in the desktop till rather than expecting OS push. |
Permission and Privacy Boundaries
- Activity rows are filtered using the signed-in user's current module read permissions before they enter the feed.
- The Low Stock View All action is itself gated by Item read, write or delete access in the header markup.
- Automatic low-stock push recipients must hold Item read access, even if an older device subscription still exists.
- One user can subscribe several devices. Each browser endpoint is stored separately for that user.
- A browser endpoint that answers 404 or 410 during delivery is removed as stale.
- Do not enable device push on a public or personally shared computer. Browser notifications can appear outside the open Posnic tab.
Notification Centre Versus Source Records
| Need | Use | Why |
|---|---|---|
| Notice another till changed something | Notification activity feed | Fast, broad, temporary signal. |
| Identify who changed a record and exactly what changed | Relevant history or audit log | The realtime entity signal contains no actor or field detail. |
| Work every low-stock item | Inventory -> Low Stock / View All | The badge can be cleared without stock being resolved. |
| Prove a sale, return or payment | Sales History and the related report | A bell row is not financial evidence. |
| Check register accountability | Register details and Daily Close | Register activity only indicates that some register change occurred. |
| Confirm a test push path | Send test notification | This tests subscription and delivery, not automatic low-stock trigger timing. |
Troubleshoot Alerts
| Symptom | Likely reason | Next step |
|---|---|---|
| Bell says Nothing yet | No permitted realtime events reached this page session, or the page was reloaded. | Use the related module/report; do not wait on the bell. |
| Expected activity type never appears | The user lacks its mapped read permission, the entity is unsupported, or EventSource is disconnected. | Verify permissions and network, then inspect the source module directly. |
| Several changes show as one row | Same-entity events within one minute are intentionally grouped. | Open the destination list to inspect individual records. |
| Badge reset but low stock remains | Opening the panel marks the current count seen; it does not resolve stock. | Select View All and complete the inventory workflow. |
| Enable button is absent | The browser lacks required APIs/service worker registration, or this is the desktop Electron app. | Use a supported secure browser for push; the in-app bell remains available. |
| Permission prompt no longer opens | Browser notification permission was previously denied or blocked. | Change the Posnic site's notification permission in browser settings, then reopen the bell. |
| Test notification fails | Subscription, network, server push dependency or OS delivery failed. | Check site permission and OS focus settings, reopen the page, then subscribe/test again. |
| Automatic low-stock alert did not arrive immediately | The six-hour server throttle, unchanged count, one-hour delivery TTL or recipient permission can suppress it. | Use the Low Stock page as the authoritative work list and test push separately. |
| Push count differs from this branch | Automatic push uses the widest configured threshold across branches. | Review each branch threshold and reconcile on the Low Stock page. |
| Alert is visible on a shared PC | Push was enabled for that browser profile. | Remove the site's notification permission and subscription access, then sign out. |