(public) A slow export of offline system logs no longer delays the upload response, so devices no longer time out and retry the same upload. A single failed export batch loses only that batch instead of the rest of the file.
(public) Offline log uploads no longer exhaust the service's memory: a device retrying the same file resumes where the previous attempt stopped and eventually receives a success response, ending the retry loop. A slow or unavailable log store no longer silently drops offline logs.
(public) Uploads that are aborted mid-transfer or exceed the size limit now fail immediately instead of leaving the request without a response or accepting a truncated file as complete.
(public) Offline System.SystemLog actions are additionally published to the offlineActionsFromDevice AMQP exchange (for ESD exporting purposes), with Prometheus counters for published and failed entries
(public) File extension is appended to uploaded file paths based on detected MIME type across all upload routes (/upload/raw, /upload/image-data-uri, /upload/file)
(public) Content-based MIME type detection (stream sniffing) when Content-Type is missing or is application/octet-stream — supports PNG, JPEG, WebP, BMP, and TIFF signatures
(public) Offline actions files are processed directly by this service instead of uploading them to the storage. The response still contains an URI for BC but it's an empty string and not intended to use anymore.
(public) Uploading files via endpoint POST /upload/file is more efficient as it streams files directly to the destination instead of saving them to the local file system first
(public) Added support for sessionId route suffix, which can be used for upload authorization during remote desktop session. The functionality is off by default. That solves backwards compatibility of standalone Upload service and usage of this lib in other usecases.