Release
Operations are now drawn and edited directly on the map instead of typed into a form, and dispatch gains a searchable Assign Unit that shows how far each officer is from the call, right-click menus on calls and officers, and a new per-grade permission letting supervisors move other people between callsigns. Three long-standing bugs are fixed along the way: officers showing as available while on a call, the tablet opening a default page on top of your open windows, and the heatmap crashing the whole MDT. The dispatch tablet also stops re-rendering itself every five seconds.
Replace every file in the resource. Around seventy files changed across the Lua, the tablet and all fifteen translations, so there is no useful list — drop the whole folder in and put your own config/ back.
What to keep from your current install: anything you edited under config/ and custom/, which is everything escrow leaves editable. Nothing else in the resource is yours.
MANAGE_CALLSIGNS lets an officer put somebody else on a callsign, by drag and drop or from a right-click menu. It is a command-rank power, so it is off for everyone until you grant it — an existing install is unchanged and nobody gains it by updating.
Grant it in Admin → Dispatch → Permissions for a whole department, or on a single grade under Grade Overrides. A fresh install grants it to grades 3 and 4 alongside Manage Employees, the same way hiring and firing already worked.
Two columns are added to qs_police_operatives on boot: status and priority. Existing operations get planning and medium, and nothing is rewritten. There is nothing to import.
Around 160 new strings across all fifteen languages. If you have edited your locale files by hand, note that the in-game locale updater overwrites them from Weblate — keep your changes somewhere else.
Agents on Duty counted everyone as free. The roster is sent in a light form that carries the assignments as identifiers, and the tablet only read the other field, which that form leaves empty — so the answer was always "nobody is on a call". Both are read now, and the assignments are refreshed by every path that pushes the roster instead of six of the ten.
Switching between the admin menu and the normal menu announced "Opened default page" and jumped to it, even with four windows already open, and coming back to the game menu always landed on the main page. Switching swaps the open windows, and the check that ran afterwards was reading the list from before the swap — so it looked for admin windows among game windows, found none, and opened the default.
Closing a tab could replace the MDT with an error screen. Background tabs are hidden, so a map inside one measures zero pixels wide, and the heatmap plugin hands a zero-width canvas to a browser call that refuses it. It now skips drawing a map with no size and paints again when the tab comes back.
MANAGE_CALLSIGNS lets a supervisor put another officer on a callsign or take them off one, by dragging them between units or from the right-click menu. It is off until you grant it, and the server checks it on every request rather than trusting the tablet.
The tablet did not record which menu the stored windows belonged to, so a resource restart that left admin windows open read them as normal ones and lost them on the next switch. Neither menu remembered which window you had in focus either, so returning to one landed on whichever tab happened to be last.
Clicking a call or an officer to put it on the map did nothing. The map published itself through a callback that the mapping library removed two major versions ago, so the reference the rest of the page used was never filled in.
The officer popup assumed the rank was always text. Frameworks that report it as a number took the entire map down with it.
Cameras saved by a previous session did not appear in the list until one was placed again.
Icons were requested from a path qs-inventory does not serve, so every item in the evidence and equipment screens rendered blank.
Markers, routes, perimeters, circles and rectangles are placed, dragged and reshaped directly on the map, with a themed toolbar, right-click actions and a layer list. Each feature carries a label, a category and its own measurements — a route's length, a perimeter's area. Operations also gain a status and a priority.
It was nested lists, all collapsed, showing a name and a job code. It is now one open list you can search by name, callsign or job, with each officer's distance from the call and the nearest first. Assigning a unit also tells you whether it worked; it used to succeed and fail in the same silence.
Calls lead with their title and a priority colour down the edge, show their location without being expanded, and take less room. Clicking one centres the map on it, and the call you are on keeps its pulsing marker. Agents on Duty opens with how many are on duty, free and on a call, and each unit shows free-versus-total without being expanded.
On a call: centre it on the map, accept or leave it, hide it, copy its coordinates or id, assign a free unit, close it. On an officer: show them on the map, watch their bodycam, and — with the new permission — move them to another callsign.
The small dispatch widget, the radar, its remote and the radar history each have a corner grip: drag it, roll the wheel over it to fine-tune, double-click to go back to the original size. The size is remembered per panel. The grip only appears while the small menu is open, which is the only time there is a cursor to use it with.
The overlay for looking through a placed camera was rewritten and split into its own module.
Plans were mirrored onto the game map as plain blips, which showed where a shape roughly was but not what it was. Waypoints from the planner still work.
The roster arrives every few seconds whether or not anything changed, and each arrival re-rendered every page of the MDT — the map, the lists, all of it. Updates that carry nothing new are now dropped before they reach the interface.
Markers were rebuilt on every push, blips rewrote their sprite and colour whether or not they had moved, and the server walked the whole roster once per recipient. All three now do the work only when something actually differs.