---
url: https://flip-chart.ru/developers/en/on-premise/updates/releases/v1.5.0.md
description: >-
  Local AI core ai-core, extended LDAP and Active Directory sign-in, space
  document registry and structure, polls, slides, HTML blocks and new table cell
  formats.
---

# v1.5.0

Release date: 2026-11-11

The release adds the local AI core ai-core, extended LDAP sign-in, the space document registry, polls, slides and HTML blocks on the board. The license key format has changed.

## New features

* AI features through the local AI core ai-core: image generation in the «flip AI» panel, «Edit with AI» and «Remove Background» for images on the board. ai-core is an optional component; connection and requirements are described in [ai-core configuration](/en/on-premise/config/ai-core).
* LDAP and Active Directory sign-in: several domain controllers, an additional account filter `UserFilter`, automatic addition of a user to the space on first sign-in, and binding of a flip profile to a persistent directory account identifier (for example, `objectGUID`). (backend)
* Space document registry: the «All documents» section in the left menu, a document list with filters by team, creator, tag, folder and flip, a document trash and document search.
* The «Structure» panel on a flip: a tree of the space's teams, folders, flips and documents with search and a tag filter.
* «Read only» mode for a document and the «Linked documents» block in the document card with incoming and outgoing links.
* The «Poll» element in the «Facilitator tools» menu: «Anonymous voting», «Multiple answers», «Correct answer» and «Space members only» settings.
* The «Slides» tool: a slide deck made of frames on the board with templates, «Fullscreen» mode with presenter notes and a show started with «Start presentation». Only space members can start a show.
* The «HTML block» tool: an HTML page on the board in an isolated frame with the «Edit HTML» editor. HTML size is up to 2 MB.
* «Checkbox» and «Dropdown» table cell formats in the «Cell format» menu; when a row or column has repeated values, «Make a dropdown?» is suggested. (frontend)
* New MCP server tools: image generation and background removal (`get_image_generation_info`, `generate_image`, `place_generated_image`, `remove_background`), polls (`add_poll`), the space document registry (`list_space_docs`, `list_space_doc_filters`, `get_space_docs_structure`), slides (`add_slide_deck`, `add_slide`) and HTML blocks (`add_html_block`, `update_html_block`). (mcp-server)

## Improvements

* New license key format. A previously activated key remains valid; a new key is activated only in the new format, and a key in the old format is rejected. (backend)
* If the PostgreSQL server time is behind the last time recorded by the application by more than 14 hours, the license is treated as expired until the time is corrected. (backend)
* With LDAP enabled, sign-in with a flip password is disabled; the administrator specified during installation signs in with their password. (backend)
* Accounts disabled in Active Directory cannot sign in when `Attributes.AccountStatus: userAccountControl` is set; LDAP sign-in attempts are limited to 10 per minute per login. (backend)
* Permission and tag cache reset no longer scans all Valkey keys: removing a member from a team does not block Valkey. (backend)
* The «Rounding corners» setting for images in the «Border» menu. (frontend)
* A frame drawn inside another frame takes the elements under it. (frontend)
* Apple Pencil support on iPad: palm touches are ignored while drawing with the pen, and the board does not follow a pen hovering without touching the screen. (frontend)
* The team list in the left menu is split into «My teams» and «I'm a member». (frontend)
* The space profile overview shows the number of flips created, members, teams and license usage. (frontend)
* The interface `index.html` file is served with the `Cache-Control: no-cache` header: after an update, the browser loads the new interface version without clearing the cache. (frontend)
* The `get_elements` tool returns at most 500 elements and 256 KiB per call with the `truncated` flag and the `nextOffset` offset; `search_elements` also returns the `truncated` flag. (mcp-server)
* A request to `/mcp` with a body larger than 8 MiB is rejected with code 413. (mcp-server)
* The Go runtime memory limit (`GOMEMLIMIT`) is set automatically to 80% of the container memory limit if the `GOMEMLIMIT` variable is not set. (mcp-server)

## Configuration changes

### backend

* `AI.LocalCore.BaseURL` — added. ai-core API address: scheme, host and port, without a path; an empty value or a missing `AI` section disables AI features. Example: `http://flip-ai-core:9100`. See [backend configuration](/en/on-premise/config/backend#ai).
* `AI.LocalCore.Token` — added. ai-core access token, at least 32 characters; matches `Auth.Local.Token` in the ai-core configuration. Example: the output of `openssl rand -hex 32`. See [backend configuration](/en/on-premise/config/backend#ai).
* `Auth.LdapAuthConfig.Address` — format changed: a list of domain controller addresses tried in order when one is unavailable. A string with one address or comma-separated addresses is supported. Example: `["ldaps://dc-1.example.ru:636", "ldaps://dc-2.example.ru:636"]`. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).
* `Auth.LdapAuthConfig.UserFilter` — behavior changed: the filter is applied when searching for an account (previously it was not used). RFC 4515 LDAP filter syntax without placeholders; a syntax error is a startup error. Example: `(memberOf=CN=allow-flip,OU=Groups,DC=example,DC=ru)`. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).
* `Auth.LdapAuthConfig.LoginAttributes` — added. LDAP attributes used to find an account by the entered login; defaults to the attribute from `Attributes.Mail`. Example: `[userPrincipalName, mail]`. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).
* `Auth.LdapAuthConfig.AutoJoinSpace` — added. With `true`, a user who passes `UserFilter` becomes a space member on first sign-in without an invitation. Example: `true`. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).
* `Auth.LdapAuthConfig.Attributes.ID` — added. Attribute with a persistent account identifier used to bind the flip profile. Example: `objectGUID`. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).
* `Auth.LdapAuthConfig` — startup validation added: `Attributes.Mail` is required, addresses use only the `ldap://` or `ldaps://` scheme, `UseTLS: true` cannot be combined with `ldaps://`. On error, backend does not start. See [backend configuration](/en/on-premise/config/backend#ldapauthconfig).

## Upgrade steps

1. Connect ai-core or disable it. ai-core is enabled in the Helm chart (`values.yaml`) and `docker-compose.yaml` templates:
   * to connect it, create the `flip_ai_core` database, set the connection string (`AI_CORE_POSTGRES_DSN` in `.env` for Docker Compose, the `ai-core-config` secret for Kubernetes), fill in the ai-core configuration and the `AI` section of the backend configuration as described in the [instructions](/en/on-premise/config/ai-core); provide outbound HTTPS access to `ai.flip-chart.ru`;
   * to disable it, set `ai-core.enabled: false` in `values.yaml` or remove the `flip-ai-core` service from `docker-compose.yaml` (see [Disabling](/en/on-premise/config/ai-core#disabling)).
2. If LDAP sign-in is used, check the `Auth.LdapAuthConfig` section of the backend configuration before the update:
   * set `Attributes.Mail`;
   * remove `UseTLS: true` for `ldaps://` addresses;
   * check `UserFilter`: the filter is now applied; remove it if no restriction is needed.
3. Check time synchronization (NTP) on the PostgreSQL server — the license validity check depends on it.
4. To renew a license, request a key in the new format: a key in the old format is not activated.
5. Do not interrupt the first backend start after the update. If the start was interrupted, check for invalid indexes with `SELECT indexrelid::regclass FROM pg_index WHERE NOT indisvalid;`, drop the indexes found with `DROP INDEX CONCURRENTLY <index>;` and restart backend; if an index is not recreated, run its `CREATE INDEX CONCURRENTLY` statement from the migration file in the `/flip/migrations` directory of the backend container.

::: warning Database migrations
On the first start, backend builds indexes on the `elements` and `flips` tables (`CREATE INDEX CONCURRENTLY`). On large databases backend takes longer to start; writes to the tables are not blocked while the indexes are built. If a migration fails on a lock timeout, restart the backend container.
:::
