Skip to content

The top toolbar

The operation console’s top toolbar is a fixed strip above the tile grid. It gives you at-a-glance situational awareness — connection health, alerts, assigned docks, device status — and is always clickable even when a tile is full-screen.

Reading the toolbar, left to right

1. Back arrow (arrow_back)

Returns you to the Operations list (/operations). Pressed mid-operation it simply leaves the console view — the operation stays running and you can rejoin later.

2. ARGUS logo + mission identity

Shows the ARGUS mark, the mission’s name, the optional codename, and the mission ID. Below 768 px viewport width, mission name + codename are hidden to preserve toolbar button space; the ID stays visible. Click the name to jump to the mission detail page.

3. Blackbox recording indicator (conditional)

A pulsing red dot with label “REC” shows only while the blackbox replay recording service is capturing this operation. If you don’t see it, the mission isn’t being recorded for replay.

4. Network status button

A single icon that represents the whole connectivity layer:

IconStateMeaning
cloud_doneOnlineAll critical paths healthy.
cloud_queueDegradedSome sync pending or one subsystem reporting issues.
hubMesh-onlyLiveKit SFU unreachable, using peer-to-peer mesh fallback.
cloud_offOfflineNo outbound connectivity. Operations continue with local-only data.

A numeric badge on the icon shows pending-sync count — writes queued for upload when you’re offline.

Click the chip to open a status menu listing:

  • Internet — true/false plus the current latency.
  • Firebase — Firestore listener + auth state.
  • Signaling — TACLINK signaling backend.
  • Mesh peers — count of directly-connected peers in the mesh fallback.
  • SFU backend — current SFU region / status.

This is the primary diagnostic when you see video freeze or PTT stutter.

5. DJI dock assignment (home_work)

Shows a numeric badge of docks currently assigned to this operation. Click to open the dock-assignment menu:

  • Assign — pick any unassigned dock that belongs to your org and attach it to this mission. Enables auto-stream and DJI tile bindings.
  • Release — detach a dock. Its stream stops, its ingress is deleted, and auto-stream stops watching it for this mission.

If your org has no DJI docks or you don’t have the dji.assign capability, the button still renders but the menu is empty.

6. Serial / Arduino status (usb, desktop only)

If you’ve set up a serial handshake with an ARGUS Arduino / microcontroller peripheral (debugged in /joystick-debug), this chip shows the current handshake phase. Click to jump straight to the joystick-debug view for deeper diagnostics.

7. Joystick / WebHID status (sports_esports, desktop only)

Shows whether a gamepad or HID joystick is currently connected. Colours match the connection state; click for a device-details popover. See Input controls for the mapping.

8. Tasks (assignment, conditional)

If your layout contains a Task Board tile, this button shows the unfinished-task count. Clicking toggles the Task Board tile to the front of its region.

9. Checklists (checklist)

Shows the total count of checklists attached to this mission. Click to open the Checklists side panel (slide-in from the right). Visible state: ops-tb-checklists-btn--active while the panel is open.

10. Master caution (warning)

Always present. Shows unacknowledged alert count as a badge. Colour states:

  • Idle (no badge) — no unacknowledged alerts.
  • --active (amber glow) — warnings exist.
  • --critical (red glow, subtle pulse) — at least one critical alert is unacknowledged.

Click to open the Master Caution log menu:

  • Each entry shows severity icon, title, timestamp, optional source peer.
  • Click an entry → if the alert has a location, the map pans to it.
  • Clear All (bottom of menu) — acknowledges every visible alert.
  • Per-row click — dismisses that individual alert.

What feeds master caution

Alerts arrive from three layers:

  • Local in-memory pushes — from the frontend itself (e.g. a detection overlay raising a flagged match, a client-side CAS warning). These are NOT persisted — they live only for your session.
  • Copilot alerts in Firestore — the backend writes critical events to missions/{missionId}/copilot_alerts. The console listens in real time and pushes matching entries to the master caution. These survive refresh; see copilot alerts for the full event list.
  • CAS demo — the Developer → CAS Demo button injects scripted alerts into the same Firestore collection for training.

Acknowledging an alert is per user — your ack doesn’t clear it for other participants. To permanently dismiss, an admin must delete the Firestore doc.

11. Weather widget

A compact forecast pulled from the operation’s venue coordinates. Shows current temperature, wind, and a condition icon. Hover for the next-hour forecast.

12. AI copilot (auto_awesome, permission-gated)

Toggles the copilot drawer (slide-in from the right). Opens the mission-scoped copilot chat. Hidden for users without the copilot.use capability.

13. Settings drawer (tune, accent color)

Opens the settings drawer on the right — layout picker, tile assignments, voice commands, developer, CAS demo.

What’s not here

For transparency, several things you might expect on a tactical toolbar don’t exist in the current build:

  • No E2E encryption padlock. E2E is on by default per-op and the indicator is implicit; if you see persistent crypto errors, they surface as master-caution alerts.
  • No mission-clock in the toolbar itself. The operation’s uptime shows in the mission-summary tile (add the tile if you want it).
  • No “record this screen” button. Session replay is controlled by the blackbox indicator (it’s mission-level, not operator-level).