**********************
FlexMeasures Changelog
**********************
v0.31.0 | February 28, 2026
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. warning:: As of this version, power schedules will no longer appear flipped (in UI charts) when they are recorded on *consumption* sensors.
Please note that:
- Schedules obtained via the dedicated API endpoints for scheduling are not affected by this change!
- The ``consumption_is_positive`` sensor attribute governs the sign of schedules saved to the database.
The sign convention of UI charts is to simply match what is in the database.
- If you inadvertently make use of the `sensor data API endpoint `_ to fetch *schedules*,
or have reporters that compute reports on *schedules*, rather than on *measurements*, be advised that you may experience flipped results.
You may need to adjust your client-side code or reporter configuration accordingly.
(Updating a reporter configuration automatically leads to a fresh data source for the saved time series.)
- Finally, if you maintain a plugin with a custom ``Scheduler`` class that returns time series to be saved on power sensors, we recommend incrementing the version of the ``Scheduler`` class.
This will yield a fresh data source for new schedules and allow you to discriminate your flipped schedules, which, for instance, will make it easier to flip back the historical schedules if you later want to.
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
New features
-------------
* Improve CSV upload validation by inferring the intended base resolution even when data contains valid gaps, instead of requiring perfectly regular timestamps [see `PR #1918 `_]
* New forecasting API endpoints, and all timing parameters in forecasting CLI got sensible defaults for ease of use `[POST] /sensors/(id)/forecasts/trigger `_ and `[GET] /sensors/(id)/forecasts/(uuid) `_ to forecast sensor data [see `PR #1813 `_, `PR #1823 `_, `PR #1917 `_ and `PR #1982 `_]
* Support setting a resolution when triggering a schedule via the API or CLI [see `PR #1857 `_]
* Support variable peak pricing and changes in commitment baselines [see `PR #1835 `_]
* Support storing the aggregate power schedule [see `PR #1736 `_]
* Make listing public assets on account page optional [see `PR #1872 `_]
* Step-by-step replay in the UI, using the **n** key to go to the **n**\ ext time step [see `PR #1898 `_]
* Support changing a sensor's timezone in the UI [see `PR #1900 `_]
* Improved the UX for creating sensors, clicking on ``Enter`` now validates and creates a sensor [see `PR #1876 `_]
* Show zero values in bar charts even though they have 0 area [see `PR #1932 `_ and `PR #1936 `_]
* Added ``root`` and ``depth`` fields to the `[GET] /assets` endpoint for listing assets, to allow selecting descendants of a given root asset up to a given depth [see `PR #1874 `_]
* Give ability to edit sensor timezone from the UI [see `PR #1900 `_]
* Support creating schedules with only information known prior to some time, now also via the CLI (the API already supported it) [see `PR #1871 `_].
* Added capability to update an asset's parent from the UI [`PR #1957 `_]
* Add ``fields`` param to the asset-listing endpoints, to save bandwidth in response data [see `PR #1884 `_]
.. note:: For backwards-compatibility, the new ``fields`` parameter will only be fully active, i.e. also returning less fields per default, in v0.32. Set ``FLEXMEASURES_API_SUNSET_ACTIVE=True`` to test the full effect now.
* Allow testing out the scheduling CLI without saving anything, using ``flexmeasures add schedule --dry-run`` [see `PR #1892 `_]
* Allow unsupported ``flex-context`` or ``flex-model`` fields to be shown in the UI editors (they will be un-editable) [see `PR #1915 `_]
* Add back save buttons to both ``flex-context`` and ``flex-model`` UI editors [see `PR #1916 `_]
* Add a documentation section on the concept of ``Commitments`` [see `PR #1849 `_]
* Add resolution column to sensors list on asset context page [see `PR #1986 `_]
Infrastructure / Support
----------------------
* Upgraded dependencies [see `PR #1847 `_]
* End support for Python3.9 [see `PR #1965 `_]
* Improve general description on SwaggerDocs page and add three settings for hosts: FLEXMEASURES_SUPPORT_PAGE, FLEXMEASURES_SIGNUP_PAGE and FLEXMEASURES_TOS_PAGE [see `PR #1851 `_ and `PR #1889 `_]
* Allow plugins to register forecasters [see `PR #1863 `_]
* Support setting a ``custom-scheduler`` by name [see `PR #1924 `_]
* Allow plugin schedulers to skip saving any sensor data, while still making their results retrievable [see `PR #1933 `_]
* Migrated JSON fields to JSONB, so they can be used to look up sensors, attributes, sources [see `PR #1867 `_]
* Use ``flexmeasures jobs stats`` to show statistics of the job queueing system [see `PR #1838 `_]
* Less verbose error logs given common HTTP requests such as those leading to 404 (Not Found) responses [see `PR #1883 `_]
* Refactor base.html template from 1500 to ~300 lines [see `PR #1868 `_]
* 2FA UX: Hide rescue form by default & improve main message [see `PR #1875 `_]
* Add extra security layer to check for breached passwords [see `PR #1919 `_]
* Support and document data container in docker compose stack better [see `PR #1790 `_]
* Improve reported test coverage by including doctests and bringing back CLI tests to GitHub Actions [see `PR #1914 `_ and `PR #778 `_, respectively]
* Add DEFAULT_DATASOURCE_TYPES and use it in CLI and status page [see `PR #1938 `_]
* Fix README badges [see `PR #1913 `_]
* Allow seeing complete datetimes in the audit log [see `PR #1949 `_]
* Add latest dependabot alert suggestions [see `PR #1959 `_]
* Add standardized GitHub Copilot agent environment setup file for consistent development environment across agent sessions [see `PR #1962 `_, `PR #1963 `_ and `PR #1964 `_]
Bugfixes
-----------
* Fix: schedules are no longer saved upside down [see `PR #1348 `_]
* Fix: visiting the job page for any forecasting job led to a server error ("Object of type datetime is not JSON serializable"), by storing serialized kwargs in forecasting job meta [see `PR #1990 `_]
* Fix: flex-context dialogue is empty when flex-context has two booleans with the same value [see `PR #1907 `_]
* Bring back the ability to show (timed) annotations on the sensor page, and add some color highlighting, too, while we're at it [see `PR #1967 `_]
* Fixed toast notification display on the sensor detail upload form [see `PR #1921 `_]
* Fix: return validation errors instead of database errors for API/CLI fields that map to database objects [see `PR #1923 `_]
* Correct field documentation for flex-config fields that strictly allow sensor references [see `PR #1951 `_]
* Have the ``StorageScheduler`` correctly combine multiple sessions targeting the same sensor [see `PR #1948 `_]
* Mutate job state when running ``flexmeasures jobs run-job `` [see `PR #1929 `_ and `PR #1930 `_]
* Prevent inplace operation when using ``simplify_index`` [see `PR #1931 `_]
* Fix API tests failing with 401 UNAUTHORIZED when run in isolation by properly setting Flask-Security's ``fs_authn_via`` attribute in the ``requesting_user`` fixture [see `PR #1960 `_]
* Fix ReadTheDocs build pipeline [see `PR #1972 `_]
v0.30.3 | January 12, 2026
============================
Bugfixes
-----------
* Fix graphs & KPI data failing to load when daily KPIs are configured for the asset [see `PR #1909 `_]
* Fix ``delete-beliefs`` CLI command to correctly apply the ``--source`` filter when deleting beliefs, preventing unintended removal of beliefs from other sources [see `PR #1903 `_]
* Fix concatenation of DataFrames with mixed-order index level when dropping unchanged beliefs, which could cause saving data to fail in rare cases of running ``flexmeasures add report`` [see `PR #1905 `_]
v0.30.2 | January 6, 2026
============================
Bugfixes
-----------
* Make ``soc-usage`` & ``soc-gain`` fields editable again in the UI [see `PR #1860 `_]
* New sensors created through the API and UI get the server timezone rather than :abbr:`UTC (Coordinated Universal Time)` [see `PR #1894 `_]
* Correctly derive the shared unit in charts showing multiple temperature sensors [see `PR #1890 `_]
* Prevent duplicate forecasts from being saved when re-running the forecasting pipeline within the same resolution window by preserving the non-floored ``belief_time`` using a new ``save_belief_time`` field [see `PR #1853 `_]
* Keep around finished forecasting jobs just as long as finished scheduling jobs (configurable through the ``FLEXMEASURES_PLANNING_TTL`` config setting) [see `PR #1870 `_]
v0.30.1 | December 9, 2025
============================
Bugfixes
-----------
* Greatly reduce the number of various deprecation warnings when dealing with time series data [see `PR #1858 `_]
v0.30.0 | December 2, 2025
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. warning:: If you make use of ``flexmeasures add report`` with the ``--start-offset`` and/or ``--end-offset`` options (for instance, in a cron job), please check whether the report period logged by the CLI command still fits your use case.
Your offsets may need to be adjusted in relation to your ``FLEXMEASURES_TIMEZONE`` config setting (its offset with respect to :abbr:`UTC (Coordinated Universal Time)`).
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``) and ``flexmeasures add initial-structure``.
New features
-------------
* Improve ``flexmeasures add forecasts`` CLI command with clearer success and error messages when creating jobs or beliefs [see `PR #1822 `_].
* Major overhaul of ``flexmeasures add forecasts`` (use the ``--help`` option to learn more) [see `PR #1546 `_, `PR #1744 `_ and `PR #1834 `_]
* The new ``commitments`` field in the ``flex-context`` can be used to specify previous commitments (e.g. market positions) that the scheduler needs to take into account [see `PR #1754 `_ and `PR #1793 `_]
* Many more field descriptions in Swagger, including flex-model and flex-context fields [see `PR #1777 `_ and `PR #1841 `_]
* Maps auto-zoom to cover the asset portfolio visible to the user, with fresh users prompted to pan to their own location when adding their first asset [see `PR #1644 `_]
* Sticky replay button for asset and sensor pages [see `PR #1739 `_]
* The ``flexmeasures delete beliefs``, ``flexmeasures delete nan-beliefs`` and ``flexmeasures delete unchanged-beliefs`` CLI commands now support limiting the action to a given set of data sources [see `PR #1770 `_]
* Let consultants see client assets on dashboard and group by account [see `PR #1763 `_]
* More explicitly represent the unit of sensors that record dimensionless data [see `PR #1802 `_]
* Allow modifying asset trees with the CLI using ``flexmeasures edit transfer-parenthood`` [see `PR #1773 `_]
* Expanded the sorting columns of "latest jobs" table [see `PR #1821 `_]
* Let users specify the unit, which uploaded data is based on [see `PR #1836 `_]
* Allow to keep legend combined below graphs, even with many plots (useful on narrow screens) [see `PR #1816 `_]
Infrastructure / Support
----------------------
* Upgraded dependencies [see `PR #1752 `_, `PR #1820 `_ and `PR #1842 `_]
* Speed up data searches by refactoring our filter for selecting data from the latest version of a data generating model [see `PR #1698 `_]
* Add new tutorial for PV curtailment and multi-asset scheduling [see `PR #1804 `_ and `PR #1846 `_]
* Drop need for .env file in favour of more adaptation of flexmeasures.cfg config file [see `PR #1759 `_]
* Support saving beliefs with a ``belief_horizon`` in the ``AggregatorReporter`` [see `PR #1735 `_]
* Support skipping a ``PandasReporter`` transformation if any of its (keyword) arguments has no data [see `PR #1669 `_]
* Assets now have an `external_id` field so data from external sources can be linked to the right FlexMeasures asset in custom integrations [see `PR #1774 `_ and `PR #1806 `_]
* Save buttons in UI editors (flex-model, flex-context and data dashboards) [see `PR #1764 `_]
* Improve performance of the endpoint profiler and support configuration using the new ``FLEXMEASURES_PROFILER_CONFIG`` setting [see `PR #1799 `_]
* Use ``SimpleWorker`` instead of fork-based ``Worker`` on macOS to prevent segmentation faults when running ``flexmeasures jobs run-worker`` for development purposes on macOS [see `PR #1818 `_]
* Move flex model UI schema to server side [see `PR #1830 `_]
* Fewer version details in OpenAPI specs, to make pre-commit step complain less [see `PR #1845 `_]
Bugfixes
-----------
* Fix unit conversion when scheduling a storage asset that deals with power sensors recording data in kWh units [see `PR #1784 `_]
* Fix interpretation of ``--start-offset`` and ``--end-offset`` options in ``flexmeasures add report`` [see `PR #1758 `_]
* Let users search for flex context sensors on whole site tree again [see `PR #1826 `_]
* Fix unintended date range hopping, a UI bug where date ranges set in URL parameters would be overridden by the user's previously selected date range (a session variable) [see `PR #1821 `_]
* Fix off-center map markers [see `PR #1840 `_]
* Resolved a crash in the "latest jobs" table when sorting was applied, and corrected a typo in the Jobs API Swagger UI documentation [see `PR #1821 `_]
* Enhance dates on UI(sensor page) to be human friendly when representing future dates [see `PR #1832 `_]
* Fix spinner not disappearing on the asset graph page [see `PR #1831 `_]
* Fix links to API endpoint docs in Sphinx documentation [see `PR #1843 `_]
v0.29.1 | November 5, 2025
============================
Bugfixes
-----------
* Support different but still compatible units in time series segments of variable quantities [see `PR #1792 `_]
* Fix account and `/assets/owned_by` pages rendering, giving them asset icons [see `PR #1772 `_]
* Fix bug when sending one sensor in flex-model when triggering schedule on asset [see `PR #1795 `_]
* Allow consultants to view client users [see `PR #1755 `_]
* Fix bug where removed flex-model fields don't show up under the dropdown for new fields, except after a page refresh [see `PR #1775 `_]
* Fix bug in displaying user audit log (incl. expanding its API schema) [see `PR #1779 `_]
* Support flex-context prices with SI-prefixed currencies (e.g. kEUR) [see `PR #1844 `_]
v0.29.0 | October 14, 2025
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
New features
-------------
* Added a UI editor (form modal) to edit an asset's flex-model [see `PR #1429 `_ and `PR #1565 `_]
* New CLI command for scheduling, with full flex-context and flex-model support as well as the option to set your scheduler class [see `PR #1713 `_]
* Full coverage of flex-context fields in the UI editor [see `PR #1689 `_]
* Touch up the KPI cards [see `PR #1731 `_]
* Touch up asset context page [see `PR #1732 `_]
* Allow ``PandasReporter`` configurations to skip a transformation in case any of the transformation ``args`` or ``kwargs`` is missing all data [see `PR #1717 `_]
* The ``flexmeasures delete unchanged-beliefs`` CLI command now supports limiting the action to a given period [see `PR #1720 `_]
Infrastructure / Support
----------------------
* Migrate data for the ``flex-model`` of an asset to a dedicated column in the database table for assets [see `PR #1429 `_]
* Updated dependencies [see `PR #1707 `_]
* Upgraded Docker Image Ubuntu 24, which uses Python 3.12 [see `PR #1723 `_]
* Include finished and canceled jobs in the overview printed by the CLI command ``flexmeasures jobs show-queues`` [see `PR #1712 `_]
* Improved flex-context modal UI and UI-backend functionalities&structure [see `PR #1704 `_]
* Removed the use of ``consumption_price_sensor`` from the ``ProcessScheduler`` and replaced with now mandatory ``consumption_price`` in the ``flex-context`` [see `PR #1729 `_]
* Removed obsolete UI view [see `PR #1743 `_]
Bugfixes
-----------
* Changed 422 response for asset PATCH endpoint to the format also used elsewhere [see `PR #1722 `_]
* Fix UI flex-context editor for flex-contexts with boolean fields (that were set through the API) [see `PR #1733 `_]
* Fix floating spinner on asset graphs page [see `PR #1738 `_]
* Make monitoring tasks & users robust against db issues [see `PR #1715 `_]
v0.28.2 | October 3, 2025
============================
Bugfixes
-----------
* Fix horizons in UI chart tooltips [see `PR #1730 `_]
* Fix UI chart for Charge Point sessions [see `PR #1699 `_]
* Fix two audit logs in the sensor API, which were not committed to db [see `PR #1721 `_]
v0.28.1 | September 18, 2025
============================
Bugfixes
-----------
* Fix schema validation in ``PATCH /assets/(id)`` [see `PR #1711 `_]
* Fixed example values for peak pricing and improved error message for incompatible price units set in the ``flex-context`` [see `PR #1710 `_]
v0.28.0 | September 10, 2025
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
This upgrade may take a few minutes, depending on how much time series data you have in your database (the data will be reindexed).
New features
-------------
* Display KPIs for asset sensors with daily event resolution [see `PR #1608 `_, `PR #1634 `_ and `PR #1656 `_]
* Ability to add users via API (POST /users) and in the UI (from an account page) [See `PR #1678 `_]
* Improved timestamp on sensor detail page to be more friendly [see `PR #1632 `_]
* Asset types support: new API endpoint (`GET /assets/types`), better docs and fix CLI command ``flexmeasures show asset-types`` [see `PR #1663 `_]
* Add ``--combine-legend`` option to flexmeasures show chart. When used, all legends are combined and displayed at the bottom of the chart. If not used (default = False), each chart will display its own separate legend (as on the asset page) [see `PR #1696 `_]
* Add support for using Swagger to generate API documentation [see `PR #1703 `_]
Infrastructure / Support
----------------------
* Upgraded dependencies [see `PR #1616 `_, `PR #1672 `_, `PR #1668 `_ and `PR #1690 `_]
* Removed support for Python3.8 [see `PR #1615 `_]
* Better support for using ``Sensor`` objects as dictionary keys [see `PR #1650 `_]
* Removed obsolete API blueprint for play mode and underlying backup file-based functionality [see `PR #1622 `_ and `PR #1630 `_]
* Faster data loading for the UI by vectorization of dictionary representations of sources and sensors, and of epoch conversion [see `PR #1641 `_]
* Refactor: Remove clunky calls to the API from within the UI view code [see `PR #1683 `_]
* Compress chart data sent to the UI charts [see `PR #1645 `_ and `PR #1691 `_]
* Better representation of changes in JSON structures in audit logs [see `PR #1700 `_]
Bugfixes
-----------
* Fixed usage of slow query for status page [see `PR #1638 `_]
* Fix editing of public assets in the UI [see `PR #1636 `_]
* Fix issue with :abbr:`DST (Daylight Saving Time)` transitions when processing variable quantities using the time series specification format, in flex-contexts and/or flex-models [see `PR #1681 `_]
* Add audit log entries when creating sensors, assets and accounts via the CLI [see `PR #1623 `_]
v0.27.4 | August 27, 2025
============================
Bugfixes
-----------
* Fix ``flexmeasures show reporters`` and ``flexmeasures show schedulers`` [see `PR #1674 `_]
* Show job information again on the job page on rq-dashboard, for scheduling jobs that set a specific ``belief_time`` and/or ``resolution`` [see `PR #1670 `_]
v0.27.3 | August 19, 2025
============================
Bugfixes
-----------
* Fix the time window in the UI from being replaced with :abbr:`NaN (not a number)` values when refreshing the asset graphs page [see `PR #1667 `_]
* Fix scheduling storage devices within a single time step [see `PR #1619 `_]
v0.27.2 | August 13, 2025
============================
Bugfixes
-----------
* Resolve issue where concatenating sensor data from updated reporters leads to a :abbr:`NaN (not a number)` source and crashing the asset graphs page [see `PR #1660 `_]
Infrastructure / Support
----------------------
* Faster data loading for the UI by caching dictionary representations of sources and sensors [see `PR #1647 `_]
* Modify a query to speed up a data availability check for forecasting [see `PR #1658 `_]
v0.27.1 | August 11, 2025
============================
Bugfixes
-----------
* Flex-context price sensors can have any shared unit [see `PR #1628 `_]
* Fix a few UI grievances in asset creation, esp. child assets [see `PR #1629 `_]
* Fix updating the URL query parameters upon date selection in the UI of servers in play mode [see `PR #1649 `_]
Infrastructure / Support
----------------------
* Automate release process to PyPI [see `PR #1657 `_]
v0.27.0 | July 20, 2025
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. note:: Preparatory warning: The following release will not support Python 3.8 anymore.
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
New features
-------------
* New API endpoint `[POST] /assets/(id)/schedules/trigger `_ to schedule a site with multiple flexible devices [see `PR #1065 `_]
* Add form to upload sensor data to the database [see `PR #1481 `_, `PR #1573 `_, `PR #1583 `_, `PR #1585 `_, `PR #1588 `_ and `PR #1590 `_]
* Improved the UX for creating child-assets and sensors in the UI [see `PR #1605 `_]
* Added :abbr:`2FA (two-factor authentication)` support for email and one time recovery, and also added ``_macros.html`` for UI components [see `PR #1555 `_, `PR #1564 `_ and `PR #1562 `_]
* Give consultants more permissions, so they can edit their client's accounts, assets and sensors. Also add test cases to check if these permissions work as expected [see `PR #1539 `_ and `PR #1550 `_]
* Allow editing users in the UI [see `PR #1502 `_]
* Scheduling job descriptions on the tasks page (RQ Dashboard) shows the whole flex-model and flex-context, including any server-side configuration of e.g. capacities [see `PR #1579 `_ and `PR #1601 `_]
* Smarter date range navigation [see `PR #1531 `_]
* Smarter toast notifications [see `PR #1530 `_]
* Move various warnings to toast notifications [see `PR #1529 `_]
* Document how to set a parent asset when creating an asset through the API, and show parent assets in ``flexmeasures show account`` [see `PR #1533 `_ and `PR #974 `_]
* Add ``flexmeasures show assets`` CLI command for listing public assets and option ``--account `` to list assets owned by a specific account [see `PR #1536 `_]
* Add ``flexmeasures jobs run-job`` CLI command to run a single job [see `PR #1602 `_]
* Add toggle to show sensor statistics based on selected date range [see `PR #1535 `_, `PR #1543 `_ and `PR #1589 `_]
* Scale sensor data to the lowest unit on graphs with multiple sensors and same dimension [see `PR #1534 `_ and `PR #1544 `_]
* Group statistics on the UI's sensor page by data source ID, and show the description and ID of each data source [see `PR #1548 `_]
Infrastructure / Support
----------------------
* Upgraded dependencies [see `PR #1450 `_, `PR #1527 `_, `PR #1532 `_, `PR #1567 `_, `PR #1611 `_ and `PR #1613 `_]
* Improved authorization checks for modifying roles [see `PR #1517 `_]
* In authorization, prevent accidental errors by not matching empty principals [see `PR #1556 `_]
* Tests: guarantee a clean db upon creating the test db [see `PR #1518 `_]
* Stopped testing Python3.8 in our GitHub Actions CI [see `PR #1541 `_]
* Stopped auto-deploying to Seita's staging server on commits to main. Kept scripts and documentation how to do it. Added short description of the two existing CI workflows [see `PR #1552 `_]
* Explain white-labeling in documentation [see `PR #1587 `_]
* Changed example ``docker-compose.yaml`` to persist database on local volume [see `PR #1584 `_]
Bugfixes
-----------
* Prevent redundant second call to fetch chart data on page load and start replay button [see `PR #1586 `_ and `PR #1596 `_]
* On the asset context page, send the highest ancestor as site_asset (then the asset context view uses this to look up sensors for the flex-context) [see `PR #1581 `_]
* Fix support for using 3-digit hex colors in account color scheme [see `PR #1569 `_]
* Fix deletion of sensors in the UI, also move the delete button for assets & sensors to the bottom of the page [see `PR #1597 `_]
v0.26.1 | June 9, 2025
============================
Bugfixes
-----------
* Fixed backwards compatibility for users still using deprecated flex-context fields [see `PR #1528 `_]
* Show job information again on the job page on rq-dashboard [see `PR #1526 `_]
v0.26.0 | June 3, 2025
============================
.. note:: Read more on these features on `the FlexMeasures blog `_.
.. warning:: Upgrading to this version requires running ``flexmeasures db upgrade`` (you can create a backup first with ``flexmeasures db-ops dump``).
New features
-------------
* Support saving the scheduled :abbr:`SoC (state of charge)` by referencing an appropriate sensor in the ``flex-model`` field ``state-of-charge`` [see `PR #1392 `_ and `PR #1406 `_]
* Allow relaxing :abbr:`SoC (state of charge)` minima and maxima, by setting penalties for not meeting these constraints, using two new ``flex-context`` fields [see `PR #1300 `_]
* Allow relaxing device-level power constraints, by setting penalties for not meeting these constraints, using two new ``flex-context`` fields [see `PR #1405 `_]
* Add flex-context fields to toggle on/off relaxation of various constraints [see `PR #1511 `_]
* Add sensor attribute (``frequency``) to align incoming measurements to a specified time interval [see `PR #1461 `_]
* Save changes in asset flex-context form right away [see `PR #1390 `_]
* Extending sensor CRUD functionality to the UI [see `PR #1394 `_ and `PR #1413 `_]
* Marker clusters on the dashboard map expand in a tree to show the hierarchical relationship of the assets they represent [see `PR #1410 `_]
* Load the sensors individually on the Sensors status page. Reload the jobs table using Ajax calls. Improve page performance and avoid timeouts [see `PR #1425 `_ and `PR #1466 `_]
* New pages for `Properties`, `Graphs`, `Context`, `Status` and `Audit Log`. Simplified the main asset page [see `PR #1416 `_, `PR #1387 `_, `PR #1442 `_, `PR #1470 `_, `PR #1473 `_, `PR #1478 `_, `PR #1480`_ and `PR #1482 `_]
* Only show important sensors statuses (flex-context and graph sensors) on the status page [see `PR #1439 `_]
* Let the user interact with the breadcrumbs on asset graphs page when the graphs are loading [see `PR #1472 `_]
* Added DB migrations to apply server defaults to ``generic_asset`` and ``data_sources`` tables [see `PR #1488