Map: nothing on the wall grabs attention — NEW lane, audible cue and in-tab notifications for new Majors/path growth #238

Closed
opened 2026-10-05 02:08:35 -04:00 by logan · 0 comments
Owner

Problem

The rail sorts worst-first (liveWall.ts worstFirst), so a brand-new minor that is escalating sits under stale Majors. There is no tone, flash, 'NEW' tag or browser notification anywhere in drb-frontend. The only push path is alerter.py posting keyword/talkgroup matches to a Discord webhook (alerter.py:133 _match_rule), which alerts on calls, not incidents.

Who asked

TOC, NEWS, FD, GSOC, HOBBY (5 of 8). 'The wall depends on someone staring at it.'

Proposal

Client-only phase (this issue):

  • 'NEW · last 15 min' strip above the worst-first rail; new pins pulse for 2 min.
  • Optional audible cue (off by default; needs a user gesture per browser autoplay policy) on: Major opened, severity escalated, path gained a stop, configurable priority keywords (MAYDAY, 10-13, shots fired).
  • Web Notifications API when the tab is hidden, honouring the active filter; body carries the Gate A machine-output notice.
    Server-side geofenced rules and PWA push are the separate NEXT issue.

Data source and terms

Browser APIs only.

Effort

S/M

Acceptance criteria

  • Opening a Major in a test org triggers the strip, pulse and (if enabled) tone within one snapshot.
  • Notifications never fire for incidents filtered out of view.
  • No tone plays without an explicit user opt-in.

Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items).
Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.

## Problem The rail sorts worst-first (`liveWall.ts` `worstFirst`), so a brand-new minor that is escalating sits under stale Majors. There is no tone, flash, 'NEW' tag or browser notification anywhere in `drb-frontend`. The only push path is `alerter.py` posting keyword/talkgroup matches to a Discord webhook (`alerter.py:133` `_match_rule`), which alerts on calls, not incidents. ## Who asked TOC, NEWS, FD, GSOC, HOBBY (5 of 8). 'The wall depends on someone staring at it.' ## Proposal Client-only phase (this issue): - 'NEW · last 15 min' strip above the worst-first rail; new pins pulse for 2 min. - Optional audible cue (off by default; needs a user gesture per browser autoplay policy) on: Major opened, severity escalated, path gained a stop, configurable priority keywords (MAYDAY, 10-13, shots fired). - Web Notifications API when the tab is hidden, honouring the active filter; body carries the Gate A machine-output notice. Server-side geofenced rules and PWA push are the separate NEXT issue. ## Data source and terms Browser APIs only. ## Effort S/M ## Acceptance criteria - Opening a Major in a test org triggers the strip, pulse and (if enabled) tone within one snapshot. - Notifications never fire for incidents filtered out of view. - No tone plays without an explicit user opt-in. --- Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items). Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.
logan added the
type
feature
area/maparea/frontend
priority
p2
labels 2026-10-05 02:08:35 -04:00
logan closed this issue 2026-10-05 03:53:42 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logan/server-26#238