> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Release notes

This is a high level list of the most notable changes.
Refer to the [changelog](./full_changelog) for more details.

## 0.9.15

Released on May 29, 2026.

### Summary

* [Atoti UI development build](#atoti-ui-development-build)

### Improvements

#### Atoti UI development build

Atoti UI is served using its development build when [`__debug__`](https://docs.python.org/3/library/constants.html#debug__) is `True`.

* While prototyping (for instance when working on a new [`app extension`](./api/atoti.config.session_config#atoti.SessionConfig.app_extensions)), the default behavior serves the development build for better debuggability.
* In production, running Python in [optimized mode](./getting_started/deployment/deployment_setup#python-optimized-mode) sets [`__debug__`](https://docs.python.org/3/library/constants.html#debug__) to `False` which in turn serves the faster production build.

## 0.9.14

Released on April 17, 2026.

### Summary

* [OpenTelemetry instrumentation](#opentelemetry-instrumentation)

### New features

#### OpenTelemetry instrumentation

The main functions and methods of the library emit OpenTelemetry spans.
See [`atoti_observability`](./api/atoti_observability#module-atoti_observability) for example traces.
The spans help identify where time is spent while building the data model of a [`Session`](./api/atoti.session#atoti.Session) and loading data into it.

Applications are encouraged to create their own OpenTelemetry spans around their own key operations instead of relying on primitives such as [`timeit`](https://docs.python.org/3/library/timeit.html#module-timeit).

## 0.9.13

Released on March 10, 2026.

### Summary

* [New switch mode](#new-switch-mode)
* [Distributed tracing](#distributed-tracing)
* [Cloud storage packages renamed](#cloud-storage-packages-renamed)

### New features

#### New switch mode

Pass `mode="hierarchy"` [`shift()`](./api/atoti.function.shift#atoti.shift) to drive the shift by the members of the hierarchy instead of by the values of the input measure in the query result.

#### Distributed tracing

[`atoti-observability`](./api/atoti_observability#module-atoti_observability) shows how to configure OpenTelemetry to export both the Atoti Python SDK and Atoti Server spans to the same trace.

### Improvements

#### Cloud storage packages renamed

To avoid confusion with the upcoming Atoti Intelligence plugins, the cloud storage plugins have been renamed to better reflect their purpose:

* `atoti-aws` → [`atoti-storage-aws`](./api/atoti_storage_aws#module-atoti_storage_aws)
* `atoti-azure` → [`atoti-storage-aws`](./api/atoti_storage_azure#module-atoti_storage_azure)
* `atoti-gcp` → [`atoti-storage-aws`](./api/atoti_storage_gcp#module-atoti_storage_gcp)

The old packages are still supported but using them will raise a [`FutureWarning`](https://docs.python.org/3/library/exceptions.html#FutureWarning).

## 0.9.12

Released on January 23, 2026.

### Summary

* [Parquet source offloaded to a plugin](#parquet-source-offloaded-to-a-plugin)
* [Default to query timeout defined server-side](#default-to-query-timeout-defined-server-side)

### Improvements

#### Parquet source offloaded to a plugin

The Java dependencies required to load Parquet files are heavy (tens of MBs).
To avoid bloating projects that do not use Parquet files, the support for loading Parquet files has been moved to the `atoti-parquet` plugin.
For retro-compatibility the plugin is installed by default until the next breaking release.

#### Default to query timeout defined server-side

Unless specified otherwise, [`atoti.Session.query_mdx()`](./api/atoti.Session.query_mdx#atoti.Session.query_mdx) and [`atoti.Cube.query()`](./api/atoti.Cube.query#atoti.Cube.query) will use the timeout defined in [`shared_context`](./api/atoti.Cube.shared_context#atoti.Cube.shared_context) instead of a hardcoded default of 30 seconds.

## 0.9.11

Released on December 16, 2025.

### Summary

* [Hierarchy description](#hierarchy-description)
* [Faster security configuration](#faster-security-configuration)

### New features

#### Hierarchy description

The [`atoti.Hierarchy.description`](./api/atoti.Hierarchy.description#atoti.Hierarchy.description) property allows configuring the description of a hierarchy to help end users understand its purpose.

### Improvements

#### Faster security configuration

The security configuration is kept in memory for faster access, both when editing it and when executing queries.

## 0.9.10

Released on October 31, 2025.

### Summary

* [Python 3.14](#python-3-14)

### New features

#### Python 3.14

Added support for [Python 3.14](https://docs.python.org/3/whatsnew/3.14.html).

## 0.9.9.2

Released on October 20, 2025.

Special bugfix and improvement release.
Refer to the [changelog](./full_changelog#id51) for more details.

## 0.9.9.1

Released on September 30, 2025.

Special bugfix and improvement release.
Refer to the [changelog](./full_changelog#id59) for more details.

## 0.9.9

Released on September 22, 2025.

### Summary

* [HTTP client](#http-client)
* [Custom measures](#custom-measures)
* [Spring Boot Admin](#spring-boot-admin)
* [Smarter session URL detection in JupyterLab extension](#smarter-session-url-detection-in-jupyterlab-extension)

### New features

#### HTTP client

[`atoti.Session.client`](./api/atoti.Session.client#atoti.Session.client) provides:

* [`http_client`](./api/atoti.Client.http_client#atoti.Client.http_client): an HTTP client able to make authenticated HTTP requests on Atoti Server.
* [`get_path_and_version_id()`](./api/atoti.Client.get_path_and_version_id#atoti.Client.get_path_and_version_id): a utility to get the path to a specific endpoint.

#### Custom measures

[`plugin_measure()`](./api/atoti.function.plugin_measure#atoti.plugin_measure) allows defining measures based on Java measure plugins contributed through [`extra_jars`](./api/atoti.config.session_config#atoti.SessionConfig.extra_jars).

#### Spring Boot Admin

[`Spring Boot Admin plugin`](./api/atoti_spring_boot_admin#module-atoti_spring_boot_admin) exposes a web interface to monitor resource usage, manage loggers, interact with JMX beans, and more.

### Improvements

#### Smarter session URL detection in JupyterLab extension

[`atoti.Session.link`](./api/atoti.Session.link#atoti.Session.link) and [`atoti.Session.widget`](./api/atoti.Session.widget#atoti.Session.widget) more reliably detect the URL at which they can connect to the session from the browser running JupyterLab.

## 0.9.8

Released on August 12, 2025.

### Summary

* [Proxy](#proxy)
* [Increased generated JWT key pair size](#increased-generated-jwt-key-pair-size)

### New features

#### Proxy

[`atoti.Session.proxy`](./api/atoti.Session.proxy#atoti.Session.proxy) provides a way to forward requests made to Atoti Server to another server.
This is used internally by [`atoti.Session.endpoint()`](./api/atoti.Session.endpoint#atoti.Session.endpoint).

### Improvements

#### Increased generated JWT key pair size

When [`atoti.JwtConfig.key_pair`](./api/atoti.config.security.jwt_config#atoti.JwtConfig.key_pair) is `None`, the automatically generated key pair will use 3072 bits instead of the old 2048 bits.

## 0.9.7

Released on July 01, 2025.

### Summary

* [Role-based hierarchy visibility](#role-based-hierarchy-visibility)
* [Hierarchy organization through folders](#hierarchy-organization-through-folders)
* [Pre-aggregate all measures](#pre-aggregate-all-measures)

### New features

#### Role-based hierarchy visibility

[`atoti.Hierarchy.viewers`](./api/atoti.Hierarchy.viewers#atoti.Hierarchy.viewers) can be changed to control which user can see each hierarchy in Atoti UI (or other compatible clients).

#### Hierarchy organization through folders

[`atoti.Hierarchy.folder`](./api/atoti.Hierarchy.folder#atoti.Hierarchy.folder) can be changed to indicate to Atoti UI (or other compatible clients) in which data model folder each hierarchy should be displayed.

### Improvements

#### Pre-aggregate all measures

Setting [`atoti.AggregateProvider.measures`](./api/atoti.aggregate_provider.aggregate_provider#atoti.AggregateProvider.measures) to `None` will pre-aggregate all eligible measures.

## 0.9.6

Released on May 17, 2025.

### Summary

* [Distributed data overlap](#distributed-data-overlap)
* [Distributed data rollover](#distributed-data-rollover)
* [Context manager to unlock experimental features](#context-manager-to-unlock-experimental-features)
* [Query filter on hierarchy members](#query-filter-on-hierarchy-members)
* [Dense date shift](#dense-date-shift)

### New features

#### Distributed data overlap

[`allow_data_duplication`](./api/atoti.distribution.query_cube_definition#atoti.QueryCubeDefinition.allow_data_duplication) makes it possible to have several data cubes with duplicated data.

#### Distributed data rollover

[`unload_members_from_data_cube()`](./api/atoti.QueryCube.unload_members_from_data_cube#atoti.QueryCube.unload_members_from_data_cube), paired with the data overlap feature, can be used to move data from one cube to another seamlessly (without downtime).

#### Context manager to unlock experimental features

[`experimental()`](./api/atoti.experimental#atoti.experimental) provides granular selection of allowed experimental features.

### Improvements

#### Query filter on hierarchy members

Previously, hierarchy conditions passed to [`atoti.Cube.query()`](./api/atoti.Cube.query#atoti.Cube.query)’s *filter* parameter only accepted member paths.
This release allows passing hierarchy conditions on members too.

#### Dense date shift

[`date_shift()`](./api/atoti.function.date_shift#atoti.date_shift) has a new *dense* parameter to get values even when the input measure has no contribution on the original date.
