TrackeraX v4.6.0
TrackeraX 版本说明和完整更新日志 4.6.0 (minor) — 2026-09-20.
New Features
- The event video downloads by itself — Every alert now has a “Download the event video” checkbox. When that alert fires on a device with a camera, the platform asks the camera for the video of those seconds by itself, the device uploads it through its own FTP account, and the file ends up attached to the event with a “View evidence” link in the event list. Before, the recording had to be requested by hand and then found in the gallery. It is off by default because downloading video uses the vehicle data plan.
- New task in four steps, with the map built in — Creating a task is no longer one long form but a guided wizard: task details, pickup, delivery and a final summary. The map is embedded in each step, so the point is set by clicking or by typing the address, without opening another window on top. The summary also draws the route from pickup to delivery with its estimated distance and duration.
- Task sets and a full task list — Tasks that repeat can be saved as a set and reused when creating a new one. There is also an All tasks tab with the filters laid out in a grid, and status and priority shown as coloured labels.
- Tasks moves to the main menu — Tasks is no longer hidden inside Tools; it now sits in the main menu, below Chat, in all six designs. It can be hidden from Menu visibility like any other entry.
- Chat: start, clear and delete conversations — The side list now shows only the devices that already have a conversation, and a + button opens the full list to start a new one. The gear menu clears or deletes the conversation, and individual messages can be removed one by one.
- EcoDrive: daily timeline and trip detail — View details now shows a gauge for the score, one card per event type with its accumulated duration, and a timeline per day, from 00:00 to 24:00, separating moving time in green, idling in orange and stopped time in grey. Opening a single trip shows its route on the map, with its own timeline and summary.
- The map centre is set by clicking — In Server settings the map centre latitude and longitude no longer have to be typed: there is a map underneath where you click or drag the marker, and the zoom you leave it at sets the default zoom level.
- Popup preview inside the form itself — Previewing a popup used to save a real notification to the administrator and required opening the map in another tab to see it. It is now shown inside the same form, in its real position, banner included.
- Route run history — Every time a vehicle assigned to a route drives through it, the pass is recorded: start, end, duration, driver and the largest distance it strayed from the corridor. A route done three times in one day now shows the three runs with who drove each one. Available from the route menu in the side panel and from the routes table.
- Bulk route assignment — Routes and vehicles can now be paired in bulk from a single screen: pick several routes, several devices, and choose whether to add, replace or remove. The same screen lists every current assignment, filterable by route or by device, showing who assigned it and when, with a button to undo any one of them. A device's routes are also visible from its own edit screen.
- Planned distance and duration per route — A route now carries a description, its length —worked out automatically from the drawn path— and an estimated duration you can set yourself, pre-filled from the length when you leave it empty. The run history compares each actual run against that plan and flags the ones that overrun.
- Routes only apply during their shift — An assignment can now carry a schedule: a start time, an end time and the days of the week. Outside that window the route is not enforced — no deviation alerts and no runs recorded — so a morning delivery route no longer raises alarms all night. If a shift ends with the vehicle still on the route, the run is closed rather than left open.
- Planned vs actual report for routes — A new report compares what a route was supposed to be against what actually happened: number of runs, planned distance and duration, actual average and total, how far off the duration ran, the largest deviation from the corridor, how much of the reporting stayed inside it, and who drove.
- Import route assignments from a CSV — Pairing a fleet with its routes no longer has to be done by hand: a two-column file (route, device) does it in one go. Either side can be a name or an id, and the device can also be its IMEI. Lines that do not match are skipped and reported instead of stopping the import.
- Routes can be drawn and edited on the new map — Drawing a route no longer depends on the old map engine. On the new one you can draw it, drag any point, add a point by pulling the middle of a segment, and remove one with a right click. It works by touch too, and the colour updates as you pick it.
- Routes can be imported from GPX — Besides KML, a route can now come from a GPX file — what a GPS records or what Strava and Garmin export. Recorded tracks and planned routes are both read, and a track split into several segments comes in as one route rather than several.
- Route assignments can expire on their own — An assignment can now carry a start and an end date, on top of its weekly hours. A seasonal route set to run through the end of the month simply stops applying afterwards, with nobody having to remember to unassign it. Both days count, and the dates follow your own calendar.
- Delete your account from the app — The user requests deletion from the app: the account is suspended and the request shows up under Administration › Logs › Account deletion, where the administrator confirms the final deletion or reactivates it. The main account cannot be deleted.
- Lighter map for the mobile app — New get_devices_map method and map format for get_devices_latest: the map receives only what the marker needs (about four times less data) and the detail with sensors, services and driver is fetched when the device sheet opens. The app uses it only when the server has it; older servers keep working as before.
- The new map catches up with the classic one — Google and Bing layers, traffic, aircraft, history with arrows, sharing and follow mode, geofence, route and POI editing, and 3D terrain with one button. If the browser cannot run it, the classic map opens instead.
- New report: maximum speed per vehicle — One row per vehicle with the highest speed it reached in the range you choose, when it happened, who was driving and at what address, linked straight to the map. The list is sorted from highest to lowest, so the fastest vehicle comes first. No speed limit needed: it measures the peak whether or not it was a violation, which is what sets it apart from the overspeed reports. A vehicle that reported nothing still shows up, marked as no data, unless you tick the option to skip blank results.
- New report: driver history — Every driver change on a vehicle was already being stored, but there was no way to see it. The new report shows it: when the change happened, who left the vehicle, who took it and why — card read, assigned by hand, engine off or unrecognised card. Useful to know who was driving at a given moment without cross-checking reports.
- Talk through the camera from the browser — The live player now has a push-to-talk button: your voice leaves the browser and comes out of the camera in the vehicle. Until now you could only hear what was going on inside it, with no way to answer.
- Health check for each device — A single call now answers whether a device is connected, how long since it last reported, whether what it sends can be decoded and whether it has a GPS fix. It tells you in seconds if the problem is the device, the SIM or the installation.
- Play a recording, not just download it — The recordings window now plays a clip in the browser: a play button on each row, pause, resume, fast forward and frame by frame, and a 24-hour timeline in which every recording is a block you can click to watch it. Before, the only option was to ask for the file and wait for it. The window also lets you choose the storage the camera should read from, main or backup, and the stream quality, before searching.
- Background downloads with their own panel — Asking a camera for a recording file no longer means losing track of it. Every request goes to a panel that shows whether it is queued, finished or failed, with a Retry button, and it refreshes by itself while you keep working.
- Telemetry API: devices that arrive from another platform — A device can now exist on the platform without ever connecting to a GPS port: an outside system posts its positions over HTTPS and they end up in the same place as the rest, with the same events, alerts, geofences, reports and live map. Administrators and resellers manage each integration from the panel: create, rotate and revoke its token, choose which devices it may report for, read the request log with the reason for every rejection, and see the daily counters. It ships switched off and has its own public documentation.
- The alerts of each client, from the panel — Records now has a page that lists every alert a client has configured, with its type and the devices it covers, and lets you delete one that is no longer wanted. Editing is still done from the client's own session, so that their devices and geofences are never mixed with someone else's.
- Each client's SMS gateway, from the panel — The SMS gateway a client has set up for their own alerts can now be reviewed and edited from the panel, without signing in as them.
- Push registrations per client — A new page lists the mobile sessions registered for push notifications and lets you revoke one, which is what is needed when a phone is lost or a client reports notifications arriving twice.
- Video inside a popup or the top banner — A popup or the top banner can now embed a YouTube, Vimeo or Google Maps player. Everything else is still stripped out, so the message cannot be used to load outside content.
Improvements
- The device stops sending video when nobody is watching — Closing the browser tab left the device uploading video and burning the vehicle data plan, because closing a browser tells the device nothing. Now, if a channel goes a minute with nobody watching it, the server tells it to stop. The wait is configurable and can be turned off.
- Reports are grouped in the selector — The report type list was one flat list of almost a hundred entries. It now comes split into eleven headings by subject: general information, trips, geofences and POIs, speed, EcoDrive, fuel, engine, routes, drivers, device status and administration. Report names do not change, they are only grouped.
- Clear report names instead of generic ones — Thirty reports had names that did not say what they showed ("Automon Custom Report", "Events report", "Geofencing report", "Trip details", "Speed report") or were badly translated. Each report is now named after what it actually shows, and no name is repeated among the 97 reports in the list.
- Side tabs on the long forms — Windows with many tabs (device, user, settings, alerts, send command) now show them in a column on the left, with the icon above the label. They all fit at a glance, without truncating or wrapping onto a second row.
- Titles now say what is being added or edited — Sixty windows said only Add new or Edit, without saying what of. They now read Edit user, Add expense type, Edit geofence group, and so on.
- The configured date and time formats are honoured — The date and time formats set in the server settings now apply to the date and time picker and to the task summary. Before, the internal format was always shown.
- Popups display on mobile and in all six designs — The top banner was missing from the kiosk and map dashboard designs, and did not show on mobile. It now appears in all six, with a close button remembered for the session, and the popup scrolls when the content does not fit the screen.
- Broadcast messages say why they failed — The list now has a Failed column with the reason behind the first errors. Each batch also resolves mail availability and phone tokens once instead of per user.
- Server settings reorganised — The settings are grouped into cards and the map list can be collapsed, so the page is no longer one endless column.
- Dashboard distance block: faster and theme-aware — The block no longer forces a white background in dark theme, starts on Today and offers Today, Week or Month. The calculation now runs in the database instead of in memory, so it loads far quicker.
- Show only the user's own command templates — A new device option so that, alongside GPRS templates only, the device lists just the templates created by the user and leaves out the administrator's global ones. The filter also applies when sending, not only when listing.
- Device selector pagination — In the device selectors the pages were stacked one under another. They are back on a single row.
- Route cards in the side panel — Routes are no longer a bare line with a name. Each one now shows its colour, how many devices are assigned to it, its length and its last run, with the driver and an in-progress mark when the vehicle is on it right now.
- Devices column in the routes table — The routes list shows how many devices are assigned to each route, and the count links straight to that route's run history.
- Assignment history is now visible — Who assigned a vehicle to a route and when was already being recorded but was not shown anywhere. It now appears in the assignments table and on the device's Routes tab.
- Faster route list — Route length is stored instead of being recalculated for every row on every load of the side panel.
- Assignment list shows which pairings have a schedule — The assignments table marks the ones limited to a time window, so it is clear at a glance which routes are enforced around the clock.
- One corridor width, not two — The distance a vehicle may stray from its route is now set per assignment and used both by the deviation alert and by the run history. Before, the alert used a configurable value and the history a fixed one, so a vehicle could be off route for one and on route for the other.
- Warning when route schedules overlap — Assigning a vehicle to a route whose hours clash with another of its routes now says so, naming the vehicles. It does not block: overlapping can be deliberate.
- Route schedules use the weekly grid — A route assignment's hours are set with the same weekly grid as alerts, so a route can have a morning and an afternoon shift on the same day.
- Alerts that need confirmation no longer queue behind other jobs — Fuel, sudden sensor change, device unplugged and movement start are confirmed by their own process. They used to share the queue with imports and video conversion, which can take up to an hour, and the confirmation could be lost.
- Sudden sensor change alert: sensor picked by name, unconfirmed events flagged — The specific sensor is picked by name and the dropdown shows how many devices have it, so you know before saving how many are left out. If the device stops reporting before confirmation, the event is flagged as "unconfirmed". The default type is the most common sensor in the fleet.
- The API reports which devices have a camera — get_devices and get_devices_latest include has_camera and camera_channels, and the API documentation now describes the recording list, download and live-stream mode methods with their real parameters.
- Live video: per-device authorisation, ready to switch on — The panel can issue a two-minute grant tied to the device and channel, and the video service requires it before opening the stream. It ships off and is enabled once the updated video service is deployed.
- The GPS service starts even if the licence server is down — A freshly installed node without a cached licence keeps receiving positions for 72 hours while the licence server comes back. It used to drop them until it got an answer.
- Phone sign-in accepts the number with or without prefix — Phone sign-in also tries the normalised number, so it no longer matters how it was typed at sign-up. The API also returns the country prefix and no longer duplicates it when saving.
- Help Centre brought up to date — Covers routes (assignment, deviation, runs and KML import), the four-step tasks, chat, EcoDrive, popups, side tabs and the mandatory CARTO key.
- Event lookup: one-line type filter — The event-type cards that took half the screen become chips with search, "Show all" and the active one first. They render properly in the dark theme.
- Popups: rich-text editor and timed duration — Content supports bold, lists and links; the duration can be unlimited or N seconds with a countdown and manual close. The notice floats above the map and follows the theme.
- Icon upload: several at once and dark theme — When creating a device or a sensor several icons can be dropped at once, and the upload area no longer stays white in the dark theme.
- Logo & appearance uses the same sections as Settings — Brand and theme, Login page and Texts and apps. The public card promotion lives there with its explanation instead of in Server settings.
- Basic layout: Help shown as an icon — In the Basic layout header, Help is shown as an icon only, in the same colour as its neighbours.
- FTP backup: passive mode, SSL and timeout — The three options were already stored but did not appear in the backups panel. They can now be configured.
- Routes opens as a full module from the menu — The Routes menu on the map now opens a window with the list, assignments, runs, import and export, like the other modules. The assignments form is organised in tabs (main, settings, schedule and assigned), with the same schedule grid as alerts. Creating and editing a route still happens on the map and returns to the module afterwards; the Routes layer button keeps the side list to toggle routes on and off.
- Consistent tooltips across the system — Every button, link and icon with a help text now shows it with the theme's tooltip on hover, instead of the browser's grey box. Form fields and table cells are left as they were.
- Chat: it is now clear which devices you can chat with — The chat's + button now explains that only devices reporting through the tracker app are listed. Messages also show the time in your format, the app receives the alert in your language, and the list only refreshes when something changed.
- Teltonika devices report their attributes without assigning a model to each one — The tracking server reads a Teltonika's data according to the device model: with no model set, values such as battery level, fuel, ICCID or analog inputs came through as unnamed numbers. Setting it device by device was not practical on a large fleet, so the platform now assumes an FMB-series model for any Teltonika without one and publishes it automatically. A model assigned to a specific device still takes precedence, so mixed fleets are unaffected. The Teltonika model list also grows from 5 to 43 entries, including generic per-family options for when the exact model is unknown.
- Five new map layers — LocationIQ Dark and Light plus three Geoapify layers were added, and LocationIQ now runs on our own key instead of a third-party one.
- Reports with a map stop failing and let you pick the layer — OpenStreetMap was blocking the map images inside reports. The platform now follows their usage policy, the map layer can be chosen per report, and tiles load only when the map is actually shown.
- The map picker only lists layers that work — Some layers only work on the classic map and others only on the new one. Each engine now lists its own, and the layer you picked is no longer lost when you switch engines.
- “Has camera” filter in the device list — The device filter has a new checkbox to show only the vehicles that have a camera.
- SD card recordings use the device's real channels — The channel picker now reads the channels the device actually has and adds an “all channels” option. Picking one channel now really filters the list.
- Text colour of the login form — Appearance has a new colour for the text inside the login panel, which was unreadable over a dark background.
- JT808 devices report the start and the end of the trip — The platform now keeps the time and the coordinates the device sends when a trip starts and when it ends, instead of discarding them.
- Help page for camera events — The Help Centre now explains the ADAS, DMS, BSD and video events: what triggers each one and what you see when it fires.
- Theme Pro: its own icons in the menu — Devices, Areas and the rest of the menu now use the theme's own icons, and Tasks sits inside Tools in this theme.
- A softer look for grouped markers — When several vehicles sit on top of each other, the number is now shown on a solid circle with a soft glow behind it, instead of the cut rings. The colour still tells you how many are grouped.
- Broadcast messages are no longer cut off halfway — A slow mail server or a slow push used to kill the send at thirty seconds, and the message then waited an hour for its retry. The limit is now two minutes. This is the most likely explanation for broadcasts that were reported as sent and never arrived.
- Video conversion no longer waits behind imports — Converting a recording used to share the line with imports and report generation. It now runs on its own process, so a long conversion does not hold up the rest of the work.
- Alert confirmations run exactly once — The checks that confirm an alert a few seconds after detecting it, for fuel level, sudden sensor change, movement start and power cut, now run a single time whichever process picks them up. Depending on who took the job, one of them could run three times and emit the same event more than once.
- The Records menu stays highlighted — Opening any of the pages that hang from Records, such as deletion requests, integrations, client alerts or push registrations, now keeps that entry highlighted in the side menu.
- The app API can also play recordings — The mobile API gained the methods to start a playback, control it (pause, seek, fast forward) and read the background download queue. It could already list and download recordings; now an app can show them too, and the three methods are described in the API documentation.
Fixes
- The EcoDrive score is now the same on screen, in the report and in Excel — The five EcoDrive reports gave scores that could not be compared with each other: in some 0 was best and in others 100, and overspeeding was penalised by number of times in some and by duration in others. All five now use the same scale as the module, where 100 is perfect driving, and the same colour thresholds. The EcoDrive report also delivered a different score in Excel than on screen: the file left out harsh turns and computed the overspeed penalty from an empty column. That is fixed, and the report gains the harsh turn column, the overspeed count and a period summary with trips, moving time, idling, engine hours and fuel.
- Seven reports that would not open work again — The checklist, device expenses, geofences by shift, geofence stops (plain and by shift), general information by shift and daily cleaning reports failed when generated. The checklist one never opened, for any user. The rest failed when the report had been saved or scheduled before one of its options was added. Now a missing option falls back to the same value the form proposes instead of breaking the report. The daily cleaning report was also fixed for the case where the vehicle was still inside a zone when the selected period ended, which left it without an exit time and failed.
- The route was invisible while editing it with the layer off — With show routes turned off on the map, clicking edit made the route appear and vanish instantly, and the same happened when changing its colour. It now stays visible while editing and hides again on save or cancel. Fixed the same way for points of interest.
- The location picker hijacked the main map — Opening a task's location picker reset the map on screen and took layers such as the aircraft one with it. It no longer touches the main map.
- Windows that went dead when reopened — After closing and reopening Chat, Tasks or Broadcast messages, the search box, the pagination and the counters stopped responding, and the location picker came up blank. Fixed in all four.
- Injected content in popups — A popup's name and position were printed unescaped in the administrator table, so a reseller could inject code that ran in the administrator's browser. They are now escaped, and the position and rules are validated on the server.
- Popups were reachable by direct address — The menu only showed them to administrators and resellers, but operators and supervisors could get in by typing the address. The module itself now blocks that.
- An invisible popup swallowed map clicks — The popup took up its space before being shown and captured clicks meant for the map; it could also end up underneath the side panels.
- Popups were marked as read too early — A popup counted as read the moment it was drawn, so navigating away before it finished meant never seeing it again. It is now marked when you close it.
- Map counters did not match the list — The status chips counted only the devices ticked on the map, Expired and Not connected always stayed at zero, and clicking a chip gave a list that did not match the number. Counter and filter now use the same criteria, resolved on the server.
- A new task set did not appear in the dropdown — After creating a set from its own tab you had to close and reopen the window before you could pick it in New task. The list now reloads on create, edit and delete.
- CARTO maps silently stopped loading — CARTO began requiring an API key for its base maps. The field has been added to Server settings and, until a key is set, those layers are not offered instead of coming up grey.
- Untranslated text in the lookup tables — The tables showed No data available in table when there were no results. Translated everywhere.
- Opening Routes from Devices showed an empty panel — Going from Devices to Routes left the panel blank until you passed through Geofences and came back. Tab switching no longer depends on which tab was open before.
- The Visible switch in the routes table did nothing — The switch read data the view never wrote, so it never changed a route's visibility.
- Schedule grid buttons could move the wrong table — With an alert open behind another window, the day and workdays buttons of one weekly grid acted on the other. Each grid now only responds to its own buttons, and reopening a window no longer stacks up click handlers.
- Schedules drifted by an hour after the clocks changed — A schedule saved during summer time started an hour late once the clocks went back, on alerts and on route assignments alike. Schedules are now stored in local time and converted at the moment they are checked, so the change of hour no longer moves them. Existing schedules keep working as before and correct themselves the next time they are saved.
- Assigning a route could wipe an existing schedule — Adding devices to a route, or importing assignments from a file, cleared the schedule and corridor width already set on assignments that existed. Those settings are now left alone unless you actually change them.
- Editing a route reset who assigned it and when — Changing a route's name marked all its assignments as just made by whoever edited it. That history is now kept, and only new assignments record a date.
- Sudden sensor change alert: the full cycle now closes — A single real change produced several events in a row; percentage mode never confirmed on short-range sensors and always did on large tanks; a 0-second confirmation was not saved; and the specific sensor was stored by an id valid for one device only. There is now a cooldown after confirming, the threshold is compared in the same units, 0 is honoured, and percentage mode on a sensor without a range is rejected when saving.
- Cameras: only users with access to the device can view or edit them — Knowing the id, it was possible to list, create or move to another device the cameras of someone else's devices, both recording and live ones.
- Account deletion can no longer be triggered by a link — The API deletion request is no longer accepted as a plain link: it requires a submit request. In addition, a manager only sees and resolves requests from their own branch.
- Assigning users to an alert is limited to your own — When creating or editing an alert through the API, user ids outside your scope are ignored.
- A client cannot be attached to someone else's manager — When saving a client, the manager must be yourself or someone within your branch.
- A public card link cannot be moved to another card — When editing a link, the card it belongs to is fixed.
- Imports only accept users within your scope — In device and task imports, the user or e-mail given in the file must be within the importer's scope.
- Password recovery honours the change lock — If password changes are locked for a user, e-mail recovery (web and API) does not change it either.
- Broadcast messages no longer mark failures as sent — A rejected e-mail or a push notification that reached no device is recorded as failed. Invalid push tokens are removed automatically and stop raising errors.
- Google sign-in: no automatic sign-up and token verification — No new accounts are created unless Google sign-in is enabled by default, and the token sent by the app is verified against Google before being accepted.
- An unreadable Excel warns instead of failing — Importing a corrupt Excel file returned a 500 error; it now shows "invalid format" and writes it to the log.
- A licence cache glitch no longer locks the panel — An unreadable licence cache was treated as a denial and the whole panel answered 503. It is now discarded and re-synced. The health page and the routes used by devices and the driver app are not subject to that block.
- Fuel alerts: a confirmation no longer clears another detection's lock — If the confirmation outlived the lock, it cleared the next detection's lock on finish and events were lost or duplicated. It now only releases its own.
- Queued commands are no longer sent twice — When a device connected twice in a row, the same pending command could go out twice. The row is now claimed before sending.
- A routes module failure no longer interrupts position saving — Run tracking runs inside position saving; an internal error there lost the batch. It is now logged and saving carries on.
- Routes: group validated by owner and export errors shown — When saving a route only your own group is accepted. If an export fails, the warning is shown instead of an empty download.
- New map: parity fixes against the classic one — Second click on a marker, cluster list, popup when switching device, follow mode during refresh, names on hover, POI deletion, tails and inaccuracy in history, zoom buttons and layer change without losing the selection.
- Saving the push token from the app failed — Five API methods failed with a 500 error when registering the push token after a deployment. In addition, SIM blocking, subscription cancellation and three report errors that were silently swallowed are now recorded.
- The RAG report no longer warns about the duration column — The driving (RAG) report raised a warning for a column that report type does not compute.
- One-time access token: only for users within your scope — A manager could request an access token for any e-mail, the administrator's included, and sign in as that account. It is now limited to their own branch, and the token is valid once even if two attempts happen at the same time.
- Custom events: the "between" condition worked backwards — A "between 10 and 20" condition matched outside the range and failed inside it, because the type was stored as text. Fixed and covered by a test.
- History: current values no longer appear in old positions — For sensors that report occasionally, history and reports filled the gaps with today's value even for positions from weeks ago. Only the last value known before each position is used now.
- Expense invoice numbers per account — Invoice numbering is per user, but the system required it to be unique across the whole server: a user collided with someone else's numbers and could tell whether that number existed in another account. Each account now keeps its own numbering. Requires running migrations.
- Card payments: the charge is checked against the order — Card payments only checked that the charge succeeded, not that it matched the order: a smaller or already used charge could activate a larger order, reloading the confirmation page added another period, a cancellation rejected by the provider was silently taken as done, and the order was not checked against its owner. Amount, currency and order are now compared, the confirmation is not repeated, a warning is raised when the provider does not confirm the cancellation, and the order must be your own.
- Changing the password also signs the apps out — Changing the password closed the web session and notifications, but the app kept its previous session. It is now signed out as well.
- Stops and engine report: errors recorded and translatable texts — A database error while generating the report was silently lost, and headings and the map link always came out in Spanish. The error is now recorded and the texts follow the user's language.
- CSV import: a row with extra columns no longer stops the import — A row with a different number of columns than the header stopped the whole import with an error. That row is now skipped and the rest is imported.
- History export: each user only downloads their own files — The download link for an exported history did not check who was asking. It now only serves files generated by the user themselves.
- The app API reports camera support in the list and map too — Camera information only came in the full device detail; the app's list and map did not receive it.
- Position saving failures are logged again — Since June, an error while saving positions was only reported to the external error service; without it configured, no trace was left. It is now also written to the server log.
- Deleting a task set did not refresh the table — After confirming the deletion of a task set the table did not reload (the refresh function was lost at build time). Fixed; requires rebuilding the scripts.
- An alert without a user no longer stops the alert check — If an alert from a deleted user remained, the periodic process that checks alerts aborted and did not continue with the rest. That alert is now skipped.
- Command history does not show other users' phone numbers — The sent-commands history showed the phone number of whoever sent each command, visible to any user of the device. It is now shown only if you have permission over that user.
- Closing a window opened over another no longer breaks the one below — When a window was opened on top of another (for example route runs from the route list) and then closed, the one below lost its dark backdrop and the page scrolled behind it. The lower window is now kept intact. Requires rebuilding the scripts.
- Chat: view and edit permissions are now enforced — A user with the chat permission disabled could still open and write conversations from the web. View, edit and delete permissions for chat are now enforced. Managers and administrators also see the conversations of every device they have access to, and each participant can delete their own messages.
- Chat: sending, refreshing and cleanup made reliable — If a message could not be sent the text was lost silently; it is now kept and the error is shown. The conversation kept refreshing even when the real-time connection failed, the counter in the Material layout never updated, searching from the second page returned nothing, two conversations could be created for the same device, users assigned to a device after its chat existed received no alerts, and deleting a device or a user left leftovers in the chat. All fixed.
- Paydunya payment notices come through again — The authenticity check on the payment notice did not match what the gateway actually sends, so no legitimate notice got through and the payment was not activated on its own. It is now checked the way their documentation describes.
- Recordings requested over FTP never arrived — The camera accepted the request and uploaded nothing, so the clip never showed up.
- The ignition duration alert fired while the vehicle was moving — The idling alert counted ignition time even when the vehicle was not idling.
- Resellers could not pick the map layer in reports — The report map picker listed no layers for them.
- Cancelling a new route left the map in drawing mode — After cancelling, the next click on the map still added a point.
- The panel still said “Devices” while creating a route — The side panel title did not follow the route form.
- Console error when the top banner loaded — The banner script ran before the page was ready.
- The client form failed to open in some languages — A translation stored as a list broke the client create and edit screens.
- One report did not open — Opening it hit a method that no longer existed.
- Adding a device restarted the tracking service — Creating a device restarted the tracking service every time, which took it offline for a few seconds and made the app show “Unable to connect to tracker server”. On one server that meant 214 restarts in a week, up to three in half a minute. The restart now happens only when data forwarding is actually changed.
- Circular geofences could stop firing — On installations where an optional database function had never been created, every check against a circular geofence failed silently: the alert simply never went off. The distance is now worked out without that function, with the same result down to the metre.
- Free plans could not be ordered — Checking out a free plan ended in an error because its confirmation page did not exist. The page is there now, and confirming activates the subscription for real instead of reporting a successful payment that activated nothing.
- Content injected through a popup or the top banner — The HTML of a popup and of the top banner was published exactly as it had been written, so whoever could create one could run code in the browser of everyone who saw it. It is now cleaned before being shown: formatting, lists and links are kept, scripts and event handlers are removed.
- Scheduled reports could stop being generated — If the daily run skipped a report for any reason, its lock was left in place and that report was not generated again until the lock expired. The lock is now released on every exit.
- Coordinates sent to the geofence lookup were not checked — The latitude and longitude sent when asking which geofences contain a point went into the query without validation. They are now checked, and anything that is not a coordinate returns no result.
- The “add sensor” button did nothing — In the sensors widget the button that adds a sensor pointed, because of a typo, at a window that does not exist, so clicking it did nothing at all.
- Editing a sudden sensor change alert failed — Opening an alert of the “sudden sensor change” type for editing returned a server error instead of the form. It opens normally now.
- Two columns of the seat belt report showed their internal name — In the seat belt report the duration and score columns printed their internal key instead of the heading, because of a typo. They read correctly now.
- Starting live video showed an internal error message — When live video could not be started, the internal error text was sent to the browser. A clear message is shown now and the detail goes to the error log.
- The movement start alert could be confirmed against stale data — The confirmation of the movement start alert ran before the new positions had been stored, so it could judge on old data. It now waits a few seconds before checking.
- A fuel alert could release another detection's turn — When two fuel level detections overlapped, the failure of one released the lock belonging to the other, and both could end up being processed at the same time.
- Five labels were shown as their internal name — Filter, device plan, device type and IMEI, no POIs and order not found appeared as their internal key in every language. They are translated now.
Device Support
- Howen MDVR recorders (H-Protocol) — First stage of support for Howen MDVR recorders over their own protocol: registration, heartbeat, position, status and their alarm catalogue, which covers driver assistance (collision, lane departure, pedestrian, traffic signs, harsh braking), driver monitoring (fatigue with level, phone, smoking, eyes closed, yawning, driver change) and blind spot. Ignition, trips, driver card and mileage are read as well. Commands to the recorder and its video arrive in the next stage.