Layout — the tile grid
The operation console replaces the rest of the ARGUS shell with a full-viewport tile grid. Each tile is a self-contained widget (map, streams, chat, telemetry, flags, timeline, …) that you slot into a region of whichever layout preset you’ve picked.
The 14 layout presets
Presets are organised in three groups. Open the settings drawer (tune icon, top-right) to see them. Click a preset thumbnail to switch — the switch is instant and the tiles that carry over keep their state.
Basic (4 presets)
- 1×1 — one full-screen tile.
- 2×1 — two columns, one row (the default on first sign-in).
- 1×2 — one column, two rows.
- 2×2 — four equal quadrants.
Asymmetric (7 presets)
- 2L1R — two stacked tiles on the left, one tall tile on the right.
- 1L2R — mirror of 2L1R.
- 3T2B — three small tiles on top, two wider tiles below.
- 2T3B — mirror of 3T2B.
- 3×1 — three columns, one row.
- 1×3 — one column, three rows.
Advanced (3 presets)
- 3×2 — six tiles in two rows.
- 2×3 — six tiles in three rows.
- 3×3 — nine tiles — the densest option, best at 1440p or above.
On first sign-in you get the 2×1 preset with Map in region 1 and Streams in region 2. From that point on your last-used preset and tile assignments are restored on every refresh.
Assigning tiles to regions
Under Tile Assignments in the drawer, each region of the current layout shows a dropdown labelled Tile 1, Tile 2, … Pick which tile to render there.
The full tile list
Every option offered by the dropdown, alphabetised with the icon you’ll see next to each:
| Tile | Icon | What it does |
|---|---|---|
| Map (2D/3D) | terrain | Unified 2D / 3D / photoreal map. Exactly one Map must be present per layout — the console auto-re-balances if you swap it out elsewhere. |
| Streams | videocam | TACLINK streams grid + VMS + DOCKS tabs |
| Drone Stream (live) | videocam | Each active stream appears as its own pickable option in the dropdown under a “Live streams” optgroup |
| Assets | group | Tagged vehicles, radios, gear |
| Comms Log | radio | PTT transcription + text chat, combined |
| Flags Log | flag | List of every flag dropped on the map |
| Timeline | timeline | Chronological op-wide event log |
| Op Summary | summarize | Summary card (mission name, duration, roster) |
| Flight Log | flight | Selected drone’s lifecycle events |
| Checklists | checklist | Mission checklists |
| Task Board | assignment | Mission-local tasks |
| Teams | groups | Team roster |
| Op Chat | forum | Text-only chat channel |
| Replay | slow_motion_video | Scrubbable mission replay |
| Fleet | airplanemode_active | Aircraft + dock roster |
| MAVLink | settings_input_antenna | Raw MAVLink inspector (MAVLink drones only) |
| Media | perm_media | Mission media search |
| Indoor 3D | view_in_ar | Indoor reconstruction viewer |
| DJI Dock | home_work | Per-dock status + controls |
| AI Search | image_search | Search detections + transcripts |
| Workflows | account_tree | Active workflow automations |
| Empty | crop_square | Blank placeholder |
Some tiles are permission-gated — if you don’t have the capability, the option doesn’t
appear. Common gates: map.view, drones.stream, admin.view.
Full-screen swap (hover menu)
Hovering a tile reveals a floating tile-swap button in the tile header. Click it to open a Material menu listing every other tile you can swap into this region. Click any row and the two tiles exchange positions — no state loss for either.
A tile-swap menu can also be opened by right-clicking inside a tile’s header area; the menu opens at the cursor.
There is no keyboard shortcut for swap. This is intentional — cycling tiles mid-operation with a stray keystroke would be worse UX than a deliberate click.
Where your layout is saved
Layout choice and per-region tile assignments are persisted to your browser’s
localStorage under the key ops.layout. That means:
- Per user, per browser. Not per-mission and not synced across devices.
- Survives refresh and tab close. Not cleared on sign-out.
- First time you open a mission on a new device you get the default 2×1 with Map + Streams.
- To reset, clear your browser’s localStorage for the ARGUS origin, or pick a preset manually from the drawer.
Layouts are not shared with teammates and cannot be pinned to a mission for every participant. This is a known limitation (see release notes for future plans).
The “one-map invariant”
Every layout must contain exactly one Map tile. If you change a tile dropdown such that no map is visible anywhere, the console auto-assigns Map to the region you just cleared, bumping the tile you picked to the position Map came from. This keeps the map always reachable even during heavy layout juggling.
Responsive behaviour
The grid is pure CSS grid-template with 1fr units — tiles proportionally scale
with the viewport. There’s no explicit collapse to a single-column “mobile” layout; the
tiles just shrink with the window.
- At < 768 px viewport width the top toolbar hides the mission name + codename to preserve button space. Mission ID stays visible.
- At that same breakpoint some button labels in the toolbar and settings drawer collapse to icons only.
- The settings drawer always caps at
90vwso it never covers the entire viewport.
Keyboard accessibility
- Tab moves focus through every focusable element inside the grid.
- Inside a tile, Tab stays inside the tile’s own focus loop.
- F6 jumps between tiles at the region level (skipping nested focus traps).
Related
- PTT & comms — the floating PTT widget that sits on top of the grid.
- Settings drawer — everything you configure without leaving the console.
- Voice commands — the 17 recognised phrases you can speak instead of clicking.