> For the complete documentation index, see [llms.txt](https://adatrack.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adatrack.gitbook.io/docs/changelog/2026-08.md).

# August 2026

## v1.9.0

### Added

* **Indoor Floorplans.** Fixed sensors inside buildings — air quality, CO₂, occupancy, cold storage, leak detection — can now be placed on an actual floorplan instead of being invisible on the live map. Create a **site** for each building, upload one image per level (PNG, JPEG, WebP, or a page of a PDF, rasterised in your browser with a live page picker), and drag your devices onto the plan. Clicking a placed device opens the same details panel and dashboard the live map uses, so an indoor device behaves exactly like an outdoor one.
* **Georeferencing.** Two calibration points — a spot on the plan plus its real-world coordinates — fix a floorplan's scale, rotation and position. Calibrated floors give placed devices real latitude/longitude, draw the plan in place on the live map when you zoom past street level, export as GeoJSON, and offer a copy-paste decoder snippet so devices reporting their own indoor x/y produce coordinates that geofencing, alerting and the Travel Log can see.
* **Live indoor positioning.** For deployments running UWB or BLE positioning, a placement can follow the device's own telemetry instead of staying where it was dropped: pick the X/Y payload keys, the units (pixels or metres) and the origin corner, with a live preview. If a device goes quiet for five minutes its marker falls back to its saved position, dimmed and labelled, rather than disappearing.
* **Site pins on the live map.** Sites appear as building glyphs on the live map; clicking one opens the full floorplan viewer in a drawer without leaving the map.
* **Placement automation events.** `floorplans.device_placed` and `floorplans.device_moved` are published for use as **AdaTrack Flow** triggers, carrying the site, floor, level, pixel position, positioning mode and — on a calibrated floor — derived coordinates.
* **CSV and GeoJSON export** of the devices placed on a floor.

Indoor Floorplans ships as a plugin, enabled under **Admin → Plugins**; self-hosted deployments need a Standard-tier licence carrying the `plugin:floorplans` feature. Administrators can tune the per-user site limit, per-site floor limit, and maximum floorplan upload size in the plugin's settings. See the [Indoor Floorplans](https://github.com/AdaTrack/adatrack_platform/tree/main/docs/gitbook/documentation/features/indoor-floorplans.md) documentation for a full walkthrough.

***

## v1.8.1

### Added

* **AI Token Metering.** AI Assistant plugin usage — both chat messages and AI Analysis workflow nodes — now counts against a per-tier monthly AI Tokens quota, visible on the Billing page alongside your other usage charts. Flexible-tier accounts can consume above their included allotment as metered overage, billed the same way as other usage-based resources. Administrators can grant bonus AI Tokens per user from the Admin page, and self-hosted Standard/Enterprise licenses now carry an AI Tokens allotment.

### Fixed

* **AI Analysis workflow nodes** no longer bypass quota enforcement — previously this call path had no rate limiting, quota check, or usage tracking at all.
* **Workflow node fields for plugin-registered nodes** (e.g. the AI Assistant plugin's `ai_analysis` node) that referenced upstream data could show as unresolved in the workflow editor; field resolution now works correctly for plugin-contributed nodes.
* **Stale node edges** could remain visible in the workflow editor after deleting a node; deleting a node now correctly removes its connected edges.
* **Workflow registration** no longer race-conditions against service startup ordering, which could intermittently leave plugin-registered workflow nodes unavailable right after a restart.
* **Route stop check cron** no longer errors out on certain route configurations.
* **Emails sent without attachments** (e.g. some alert and workflow notification emails) no longer fail to send.
* Light-mode text contrast fixed in the workflow test-run modal.

***

## v1.8.0

### Added

* **Route Planning.** A new top-level feature for defining where a device *should* go, not just recording where it's been. Build reusable routes from an ordered list of stops — by clicking the map, searching an address, or importing an existing Travel Log trip — and assign them to devices for execution. While a route is active, AdaTrack tracks the device's real-time position against the planned path, estimates ETA to the next stop, detects arrival/departure at each stop via the existing Geofencing engine, and raises deviation alerts the moment a device strays off-path. Route events (`route.deviation_started`, `route.stop_arrived`, `route.completed`, etc.) are available as **AdaTrack Flow** trigger nodes and dispatch through your existing alert channels, and both the AI Assistant and Chat Bot plugins can read routes and executions.
* **Route Builder UX.** The Route Builder's map now auto-fits to your stops (with a manual Recenter button), supports address search for adding stops, offers a freeform **Manual** path mode for shaping the route by dragging it on the map, and lays the stop list out as a horizontally scrollable timeline instead of a cramped vertical stack. A new **Import from Trip** action seeds a route's stops from a previously recorded Travel Log trip.
* **Road-Snapped routing options & Optimize Route.** Road-Snapped path mode now supports avoid-tolls / avoid-highways / avoid-ferries toggles and a live-traffic-aware profile. A one-click **Optimize Route** action reorders up to 12 stops for a shorter or faster trip via the Mapbox Optimization API, with configurable start/end locking. The stop timeline now shows real distance (and, for Road-Snapped routes, drive time) between every consecutive pair of stops instead of a blank connector line.
* **Automatic route execution (device assignment).** Routes can now be armed with one or more devices ahead of time. The platform automatically starts an execution the moment an assigned device is detected near the route's first stop, and re-arms itself afterward (after a short cooldown) — ideal for recurring runs like a daily delivery route or school bus route, with no manual re-scheduling required. Auto-started executions are visibly tagged in the Route Progress Panel.
* **Travel Log trip descriptions.** Trips now have a free-text, user-editable description field, automatically populated from a route's description when the trip originates from a route execution. The Travel Log trip list can also be filtered by planned route.
* **Route Planning quotas & billing.** Saved Routes, Address Lookups, and Route Navigation Lookups are now full tier-based quotas visible on the Billing page, with Flexible-tier accounts able to purchase metered overage the same way as other billable resources. Interactive address search and route-preview lookups are quota-enforced; background operations like saving a Road-Snapped route are never blocked, only tracked.
* Refreshed Travel Log trip list and filters panel layout.

### Fixed

* **Route Optimization Lookup usage** now correctly appears in the Billing page's usage summary; it was being tracked but silently omitted from the quota API response.

***

See the [Route Planning](https://github.com/AdaTrack/adatrack_platform/tree/main/docs/gitbook/documentation/features/route-planning.md) documentation for a full walkthrough.
