# v88 — Almost forever

<div align="left"><figure><img src="https://3495989837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE5Ketpww1s7TauSAJrJ8%2Fuploads%2FlMKHSPxFaNafAhGIQbqu%2Fimage.png?alt=media&#x26;token=e0e83e38-5876-4a85-a3ce-0f4687cc4c2b" alt="" width="285"><figcaption></figcaption></figure></div>

## Features

* [Timeseries Database](https://docs.heisenware.com/app-builder/build-backend/functions-library/storage/timeseries-database): table management, direct writes, auto downsampling
* [Photo widget ](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets/photo)with selectable resolution
* [Extensions](https://docs.heisenware.com/app-builder/build-backend/functions-library/extensions) to power-up apps with any custom code running cloud or on-prem
* [Industrial Blockchain](https://docs.heisenware.com/app-builder/build-backend/functions-library/extensions/industrial-blockchain) Extension
* [Process Simulator](https://docs.heisenware.com/app-builder/build-backend/functions-library/extensions/process-simulations) Extension
* [RAG AI](https://docs.heisenware.com/app-builder/build-backend/functions-library/extensions/rag-ai) Extension
* One-command [on-premise installer](https://docs.heisenware.com/tutorials/on-premise-installation)
* [Docker Agent](https://docs.heisenware.com/release-notes/broken-reference) allowing to run all our connectors on any hardware supporting Docker
* The [File Uploader](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets/upload) widget can now directly upload photos as well
* The [Barcode](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets/barcode-qr) widget can now scan several barcodes at once with the camera staying opened

## Fixes

* [File Uploader ](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets/upload)when using buffer storage and multi-file upload option.
* Fixed different behavior between App Builder preview and production apps with respect to widget positioning when using `Top Bar` or `Top Bar and Bottom Tabs`  in the [App Settings](https://docs.heisenware.com/app-builder/build-frontend/pages-and-navigation#in-app-navigation). Production app widgets rendered to low in `y` (by the height of the top bar).
* Fixed broken `fontSize` setting for the [Button](https://docs.heisenware.com/app-builder/build-frontend/widgets/trigger-widgets/button) widget
* When duplicating [Sections](https://docs.heisenware.com/release-notes/broken-reference), all previously existing widget links get cleaned which wasn't the case before
* Fixed [onJsonMessage](https://docs.heisenware.com/app-builder/build-backend/functions-library/connectors/mqtt-client#onjsonmessage) and [onStringMessage](https://docs.heisenware.com/app-builder/build-backend/functions-library/connectors/mqtt-client#onstringmessage) not behaving correctly when used multiple times
* Fixed dependency issue (realizing serial data transfer) causing immediate crash of the [Modbus](https://docs.heisenware.com/app-builder/build-backend/functions-library/connectors/modbus) Agent
* Fixed missing arrow when linking event handler items to inputs in the flow builder
* Fixed loading correct initial page when app is using programmatic page switch

## Changes

* Renamed input widget [File](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets/upload) to `Upload`. Added fresh categories for filtering uploaded data, most importantly added `Photo`
* Activating event flow from backend only in test mode

## Breaking Changes

* When `Top Bar` or `Top Bar and Bottom Tabs` widget in the App Builder need to be re-positioned to result in the same production app (see [Fixes](#fixes))&#x20;
* The [`readXlsx`](https://docs.heisenware.com/app-builder/build-backend/functions-library/connectors/file-i-o#readxlsx) function does not anymore return an object with the sheet name as sole key, but in cases of a single sheet returns the array of rows directly
