Skip to content

Notifications and the app

XLR8 runs in the browser and can also be installed as an app on your phone or computer. Installed or not, it can send push notifications when an agent files an issue, a pull request is merged, or something is due, even while XLR8 is closed. All settings for this live under Settings → Notifications.

XLR8 is an installable web app. Installing it gives it its own window and an icon on your home screen or in your app launcher; it is the same XLR8 with the same data.

  • Android, Chrome: open the ⋮ menu and choose Install app. Settings → Notifications shows this hint on Android while XLR8 runs in a browser tab rather than as the installed app.
  • Desktop, Chrome or Edge: use the install icon in the address bar or the install entry in the browser menu.
  • iPhone and iPad, Safari: use Share → Add to Home Screen.

The installed app offers two shortcuts on its icon, Inbox and New issue. On Android, once XLR8 is installed through Chrome, it also appears in the share menu of other apps: sharing a link or text to XLR8 creates an issue in the inbox right away, with an Undo button in case you shared the wrong thing.

Notifications are turned on per device, because each browser has its own permission.

  1. Open Settings → Notifications on the device that should receive them.
  2. Under This device, switch Notifications on this device to On.
  3. Allow notifications when the browser asks.
  4. Click Send next to Test notification to check that it arrives.

Repeat this on every device you want to be notified on. The Devices list at the bottom shows all registered devices, when each was last notified, and failed attempts. Remove unregisters a device.

If the switch is disabled, the line below it tells you why:

  • “Only possible over https”: open XLR8 through its https address.
  • “This browser cannot receive push notifications”: try another browser. On iPhone and iPad, add XLR8 to the home screen first; Safari currently allows web push only for web apps on the home screen.
  • “Blocked in the browser”: you declined the permission earlier. Allow notifications for the site in the browser’s site settings (on Android, in the app settings).
  • “Not set up on the server”: the instance has no push keys yet. See For self-hosters.

Under Events you choose which events notify you. This setting applies to all devices.

Event When On by default
New issue from an agent An agent creates an issue in the inbox yes
Comment from an agent An agent comments on an issue yes
Due and overdue A morning summary of open issues due today or overdue yes
PR merged A pull request linked to an issue was merged yes
PR linked A pull request was linked to an issue no
Sprint ending In the morning on the day before the sprint ends and on its last day yes

The pull request events need the GitHub integration. Issues in dormant teams do not count for the due summary.

  • Morning notifications (due issues, sprint ending) arrive at 08:00, German time (Europe/Berlin), at most once a day each.
  • Bundling: XLR8 waits about ten seconds before sending, so several issues from one agent run arrive as one notification (“3 new issues”) instead of a flood.
  • No buzzing while you work: if XLR8 is open, visible and in use on any of your devices (input within the last three minutes), nothing goes to your phone. The notification appears inside the app instead, with a sound (if sounds are on) and an Open button. If no open window shows it within 45 seconds, for example because you just closed it, the push goes out after all.
  • Tidy notification shade: tapping a notification opens what it is about: the issue, the inbox for several new issues from an agent, the Active list sorted by due date for a summary of several due issues, or the sprint for Sprint ending. Notifications of issues you have already read are cleared from a device the next time XLR8 is open there.

XLR8 picks up new versions on its own. When you come back to the app and the last check was more than ten minutes ago, it asks the server for the current version. If a new one is out and nothing unsaved is open, it reloads right away. If you are in the middle of typing or have the create dialog open, it shows New version of XLR8 with a Reload button instead, so you can finish first.

Push notifications need a VAPID key pair on your Convex deployment. Without it, the switch shows “Not set up on the server”. Generate and store the keys with one command from the repository:

Terminal window
node tooling/vapid.mjs # production deployment
node tooling/vapid.mjs --local # local development backend

The script writes VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY and VAPID_SUBJECT straight into the Convex environment; the private key never appears in your terminal. For production it takes the contact address that push services require from appUrl in your instance settings; pass --subject https://… or --subject mailto:… to use another. You do not need to back it up: if it gets lost, run the script again with --force, and every device subscribes again the next time it opens XLR8. For the deployment’s other settings, see Convex setup.

Notification texts are English unless the deployment sets XLR8_LOCALE=de (see Language).