Mobile app

Mobile push notifications

The mobile app supports OS-level push notifications — new message, new task, urgent escalation — wired through the standard browser Push API.

Subscribing

The first time the operator opens the mobile app ships, the app prompts for notification permission. Grant → the subscription token is saved server-side against the operator's user row.

To re-prompt later: Settings → Notifications → Mobile push → tap Enable.

What fires a push

  • New guest message on a thread you're routing to.
  • Task assigned to you.
  • Critical escalation (e.g. Send Check-in BLOCKED for a check-in today).

The set of triggers is configurable per-template in the Task Templates editor — same surface as in-app + WA notifications.

Deep-linking

Tapping a push notification opens the app to the right entity:

  • New message → opens the thread.
  • Task assigned → opens the task drawer.
  • Critical escalation → opens the affected reservation.

Earlier the push tapped opened the app home (/m/pulse) regardless of payload — that the service worker honours.

Badge counts

The bottom tab bar carries badges:

  • Inbox — count of unread / unanswered threads. Visible from any tab.
  • Pulse — count of overdue auto-resolves blocked by failed conditions.

On iOS PWA install, the app-icon badge mirrors the Inbox count.

Resolving tasks on mobile

Earlier the mobile task list was read-only — operator could see tasks but not resolve them. inline; tap to act. Full parity with desktop.

Reply with template on mobile

The mobile Inbox composer earlier only had AI Suggest + free composer; the reply-with-template dropdown from desktop was missing.

Calendar / occupancy view on mobile

The mobile Pulse tab earlier showed Auto-resolves + Unanswered + Per-property panel, but the calendar / occupancy view (data was fetched but not rendered)..

Phone-on-/v28 redirect to /m

When a phone-sized viewport loads /v28/..., the app now redirects to the equivalent /m/... route instead of showing the desktop chrome cramped onto a phone. Earlier the operator was stranded on the desktop surface with no link to mobile.

PWA mount crash fix

The mobile PWA mount earlier crashed with a TypeError on /m/pulse (a threadsQ.data cast lie latent ).

Source: the FlatsBratislava operator manual.