6.2026.0904.2
Release 6.2026.0904.2
Release Notes for update version release 6.2026.0904.2
On Premise subscribers: this release moves ToolHound to .NET 10. Version 6.2026.617.0 and the 0723 hotfix were both built on .NET 8, so the .NET 10 Hosting Bundle must be installed on the web server before the update is applied. The database update now applies automatically. See Installation & Upgrade section below.
Large databases: this update includes a cleanup of unused inventory-location rows that locks and rebuilds a large table. If your database is large, apply this update during a planned maintenance window rather than letting it run under normal traffic. Take a backup and confirm you have transaction log and disk headroom first.
This release also includes a database update and a stored procedure change. See Installing an Update using the Installer for the revised prerequisites.
Enhancement Highlights
*** Effective with this update, the usage statistics collected for Cloud subscribers cover every client. Sign-ins and inventory activity from ToolHound Mobile, ToolHound Kiosk and API integrations are now recorded alongside browser activity, tagged with the client they came from — previously only browser activity was visible. The statistics are recorded by ToolHound's own servers; the Mobile and Kiosk apps do not send anything themselves.
Each person's record includes their email address and name so that activity can be attributed to a user. Element text is never collected, and session recording is disabled. This release also sets a first-party th6-workstation cookie so that shared-login sites can be counted by workstation.
On Premise installations are unaffected and transmit nothing.***
Browser
- The entity drop down has been removed from several places in different Transactions menu items.
- Revenue to Date is now tracked for bulk and consumable items on both Transaction Rental and Transfer Rental, in addition to serialized items.
- Bulk Change Type is a new option under Inventory. Upload a list of part numbers from a CSV, TXT or Excel file, preview which ones can be converted, and change them all to one inventory type at once. The preview marks each row before anything is applied. A part number that can't be converted doesn't stop the rest.
A part can only become Serialized if it has no quantity of any kind — on hand, issued, reserved, in a kit, in transit, or committed to a requisition, transfer request, purchase requisition or purchase order. NonStock parts can never become Serialized. - Five new Tier 1 exception KPIs are now available on the Dashboard, highlighting exceptions that require attention without having to run a report first.
- The Inventory Map now includes a GPS tracked only filter to limit the map to items that report a GPS position.
Mobile & Integration APIs
- A sync health check endpoint is now available to confirm that a device or integration is synchronizing successfully and to report the cursor it should resume from.
- New batch endpoints are now available for retiring inventory (POST api/InventoryRetire/Batch) and for changing item status (POST api/ChangeItemStatus/Batch), allowing many items to be submitted in a single call rather than one request per item.
Installation & Upgrade
- Database updates now apply automatically. The Home screen update prompt has been removed, and a server-side sweep updates pending databases shortly after startup, including databases nobody has logged into. Logging in to a database that is behind requests its update immediately.
- Logins are refused briefly while a database update is starting or running, rather than leaving the user waiting behind the migration. An interrupted update can be retried, and repeated failures are bounded so a failed update cannot lock a database out permanently.
- Every update attempt is recorded, including the trigger, the source and target versions, the outcome and the stage reached, so a failed update can be diagnosed after the fact.
- On Premise installations are updated by the application itself. There is no separate script for a site administrator to run.
ENHANCEMENTS
Browser
- Performance improvement: Inventory and Employees (Personnel) search return results substantially faster.
- Performance improvement: Transaction, Transfer and Receive Transfer imports are substantially faster, particularly for large files.
- High volume search screens now display a confirmation, including a note about the possible delay, when a search is run with no criteria entered.
- Serialized Items calculate the Warranty Expiry date from the Received Date plus the Part Number's warranty period, and recalculate it if either changes. A manually entered expiry date is kept through later edits; clearing the field returns it to automatic calculation. The same rules apply to the API, including batch updates.
- Item status changes and changes to quantity on hand now record the user who made the change and the date and time it was made.
- Check Lists now include a Notes field.
- Partial billing restricts the location picker to valid stocking points only, so a bill cannot be raised against a location that cannot hold inventory.
- Consumable issues are no longer included in the Transaction Rental On Rent figures. Consumables are issued rather than rented (which was inflating on rent quantities and values).
- ToolHound no longer creates an empty inventory-location row for every part at locations that cannot stock inventory, and switching a Location or Location Type between stocking and non-stocking now reconciles those rows in both directions. Rows holding quantities, costing, revenue or usage history are retained. Existing unused rows are removed by the database update.
- The Inventory Map and the Serialized Items map have been upgraded to MapLibre GL 5.24.0 from 4.7.1. Camera roll is now enabled and the drag rotate gesture pivots on the centre of the screen, so the rotate gesture will feel different to users familiar with the previous behaviour. This is intended.
Reporting Enhancements
- All reports now run asynchronously. A long running report no longer holds resources for the rest of the site, and other users can continue working while it completes.
- Transaction Charges on the Dashboard can now be grouped by Employer or by Location.
- Total Revenue is now available as a column on the Inventory and Inventory By Location reports, with a footer total on Inventory By Location. Labels are included in English, French Canadian and Mexican Spanish.
Mobile & Integration APIs
- Change stamping is now applied by database trigger on the inventory tables used for sync, so any change to an item is captured and nothing is missed between syncs.
- Additional fields have been added to the inventory sync and lookup payloads to close gaps where the device did not receive the full record.
Platform & Security
- ToolHound has been upgraded to .NET 10.
Fixes
Browser
- Close Count would time out and re-apply the quantity on hand on retry.
- Saving a Location would clear the rate sheet assignments on that location.
- A Transfer Request with no lines would crash approval routing. A zero line request is now rejected.
- Force SSO Sign Out was not forcing a fresh sign in challenge on the first login after the setting was enabled, allowing the previous account to be re-used on a shared device.
- Sign in could take up to 100 seconds when the usage statistics endpoint was unreachable. The call now runs off the sign in path; sign in completes in well under a second under the same conditions.
- The Transaction Rate Sheet grid was misaligned and did not fill the available width on wide screens.
- Transfer All never completed: creating the transfer was rejected by the database, so the screen has not worked in any shipped release. Validate, confirm, process and summary now produce a usable transfer.
- A refused login left the rejected password in the field. The field is now cleared and the cursor returned to it.
- Meter Readings would discard a lookup search if the screen's focus handling fired while the user was still typing.
- Colour picker inputs formed a widening staircase down the grid on Inventory Statuses, Location Types and the Work Order lookup screens.
Reporting
- The Advanced Filter tab and the Filter tab did not agree: the same date returned different rows and totals depending on which tab it was entered in. Reported against the Charges report; the fix applies to all reports.
- The <> and != operators on a date column now exclude the whole local day, so they are once again complementary with =. Previously neither operator matched correctly.
- Report date filters were shifted by a double time zone conversion, returning records from the wrong day.
- Dashboard elements that carry a date range parameter were not receiving the same date conversion as reports.
- Relative date parameters (@p_Today, @p_ThisWeek and similar) would error for users in a time zone that transitions at midnight.
- Duplicating a report that contained expression based columns would drop those columns from the copy.
- Barcodes and QR codes were not displayed correctly on inventory reports.
- Inventory By Location and Peak Usage would fail with a SQL binding error caused by a missing inventory-location join.
- The Location ID quick filter on Inventory Valuation had stopped working.
- Packing Slips and the Transfers reports showed the From Location in place of the To Location, so transfer paperwork named the wrong destination.
- Packing Slips, billing addresses and report addresses used stale free-text state values instead of the current State lookup. Free text is still used for countries that do not have a State lookup.
- Reports on multi-language databases could return duplicate lines, one per locale.
Mobile & Integration APIs
- The last changed dates returned in the InventoryID sync payload were not the true newest values, causing devices to re-request records that had not changed and to miss records that had.
Installation & Upgrade
- Registration would fail on case sensitive file systems because of the file name casing of the French data load script.
- Taking the site offline for an update showed the hosting platform's own error page. A ToolHound maintenance page is now served instead. This is available for cloud deployments, not on premise deployments.
Known Issues
- A number of date columns are still printed in UTC on the page, so the displayed day can differ by one from the day selected in the filter. This affects Work Order scheduled, closed and created dates, Rental created and required dates, Count closed date, Count detail counted date, Daily Workforce date, Transaction due date, and Transfer last billing date. The filtering itself is correct. A fix is tracked for a following release.
- Warranty expiry dates that were calculated incorrectly by earlier versions are not corrected by this update. Because a stored expiry date cannot be distinguished from one a user entered by hand, existing dates are left as they are. Clear the field on an affected item to have it recalculated from the Received Date.