# Welcome

**fylr** is a configurable system for storing, organising and publishing structured data together with the files that belong to it. You define your own data model — the objecttypes, fields and relationships that fit your domain — and fylr provides the storage, search, versioning, permissions and APIs to work with it.

fylr is the **easydb 6** product line: a Go rewrite that keeps the easydb 5 API contract.

{% hint style="info" %}
Unless otherwise noted, this documentation describes the **latest published version of fylr**.
{% endhint %}

## Where to start

* [**Concepts**](/for-developers/concepts) — what fylr is built out of, in plain English (records, objecttypes, files, pools, masks, permissions, …). New to fylr? Start here.
* [**For users**](/for-users/getting-started) — finding, editing, collecting and exporting objects.
* [**For administrators**](/for-administrators/permissions) — datamodel, pools, masks, permissions and tools.
* [**For developers**](/for-developers/api) — the HTTP/JSON API reference, generated from fylr's OpenAPI specification.
* **Help & reference** — [FAQs](/help/faqs), [tutorials](/help/tutorials) and a [glossary](/help/glossary) of fylr terms.

Looking for the deeper API specification? The full **OpenAPI 3.1** file is available for download from the [API reference](/for-developers/api).


# Releases


# 2026

* [Release v6.34.5 (2026-09-02)](/releases/2026/v6.34.5)
* [Release v6.34.4 (2026-08-31)](/releases/2026/v6.34.4)
* [Release v6.34.3 (2026-08-11)](/releases/2026/v6.34.3)
* [Release v6.34.2 (2026-08-03)](/releases/2026/v6.34.2)
* [Release v6.34.1 (2026-07-21)](/releases/2026/v6.34.1)
* [Release v6.34.0 (2026-07-15)](/releases/2026/v6.34.0)
* [Release v6.33.2 (2026-06-25)](/releases/2026/v6.33.2)
* [Release v6.33.1 (2026-06-18)](/releases/2026/v6.33.1)
* [Release v6.33.0 (2026-06-04)](/releases/2026/v6.33.0)
* [Release v6.32.1 (2026-05-20)](/releases/2026/v6.32.1)
* [Release v6.32.0 (2026-05-05)](/releases/2026/v6.32.0)
* [Release v6.31.1 (2026-04-21)](/releases/2026/v6.31.1)
* [Release v6.31.0 (2026-04-09)](/releases/2026/v6.31.0)
* [Release v6.30.2 (2026-03-17)](/releases/2026/v6.30.2)
* [Release v6.30.1 (2026-03-12)](/releases/2026/v6.30.1)
* [Release v6.30.0 (2026-03-11)](/releases/2026/v6.30.0)
* [Release v6.29.1 (2026-02-11)](/releases/2026/v6.29.1)
* [Release v6.29.0 (2026-01-29)](/releases/2026/v6.29.0)


# Release v6.34.5 (2026-09-02)

Published 2026-09-02 12:14:47Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.5/fylr_checksums.txt)
* [fylr\_v6.34.5\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.5/fylr_v6.34.5_darwin_amd64.tar.gz)
* [fylr\_v6.34.5\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.5/fylr_v6.34.5_darwin_arm64.tar.gz)
* [fylr\_v6.34.5\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.5/fylr_v6.34.5_linux_amd64.tar.gz)
* [fylr\_v6.34.5\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.5/fylr_v6.34.5_windows_amd64.zip)

## Server

### Important

* **A workflow webhook is handed a short-lived token now.** A webhook that sends the access token receives one minted for that call — issued in the name of the person who triggered the transition, valid for 15 minutes — instead of that person's session token. A receiver that stored the forwarded token and used it hours later has to call back while the transition is fresh. See the full note under **Fixed**.

### Fixed

* **A workflow webhook can call back into the API again**: a webhook that sends the access token — the *Send Authorization Header* option, or `api_user_access_token` in its payload — forwarded the token of the request that triggered it, and since 6.34.0 a session token is bound to the browser it was issued in. The webhook target replays that token server-side, without the browser's cookie, so every call back into the API was refused with `401 UserRequired` and a webhook pointing at a plugin extension of the same instance stopped working. The webhook now receives a token minted for it: unbound, issued for the acting user, and bounded by a 15 minute lifetime rather than by the revoke that ends a plugin callback — a webhook target is a foreign service and may do its work after it has answered. Server-side plugin callbacks (`db_pre_save`, transitions, extensions, collection uploads, exports) were switched to such tokens in 6.34.0; the webhook action was missed at the time, it was not deliberately left out. Webhooks triggered by an API client or the password grant kept working throughout — those tokens are unbound — so this affects transitions triggered by people in the web frontend. It also keeps a session token with its full lifetime (24 hours by default) from being sent to a freely configurable, possibly external URL. See [Workflow webhooks](https://docs.fylr.io/for-administrators/readme/workflow-webhooks) and [Session binding](https://docs.fylr.io/for-developers/api/endpoints/api-oauth2#session-binding-anti-hijacking). \[99c160d7c]
* **No access token in a URL fylr fetches from itself**: the images of a workflow e-mail and the thumbnails of an XLSX export are fetched by fylr over HTTP from its own API, and both put the caller's access token into the URL. What grants access there is the signature the file URL carries; the token rode along unused, and a URL with a token in it outlives the request it belongs to, in logs and in proxies. The e-mail image is fetched as it was rendered now, and the export thumbnail signs its own request instead of depending on how the URL was rendered. Instances see no difference in the mails and sheets they produce. \[d3644c45b]
* **A failed request no longer crashes while its error is rendered**: when a request failed before the server's cache was loaded, translating the error message into the user's language ran on a context carrying neither a session nor a base configuration, and reading the missing configuration panicked the handler. The language preferences fall back to the default configuration now, and a request whose client has already hung up skips the error rendering altogether — there is nobody left to read it. That is the case this was reported for: a proxy in front of fylr aborts requests that queue behind a cache reload, and each aborted one left a stack trace in the log. No request answered a client differently because of it, and no process died — the HTTP server catches a panic per connection — but a single reload could fill the log with traces. \[5070a945e]

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.5
docker.fylr.io/fylr/fylr-server:v6.34.5
```


# Release v6.34.4 (2026-08-31)

Published 2026-08-31 10:58:46Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.4/fylr_checksums.txt)
* [fylr\_v6.34.4\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.4/fylr_v6.34.4_darwin_amd64.tar.gz)
* [fylr\_v6.34.4\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.4/fylr_v6.34.4_darwin_arm64.tar.gz)
* [fylr\_v6.34.4\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.4/fylr_v6.34.4_linux_amd64.tar.gz)
* [fylr\_v6.34.4\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.4/fylr_v6.34.4_windows_amd64.zip)

## Server

### Important

* **Clipping paths are honored more narrowly.** An image that carries a Photoshop path but designates none of them as *the* clipping path is no longer cut out along it, so such a file's previews now show the whole motif instead of a cut-out. Assets already in the instance keep the previews they have until their metadata is read again — check the affected files before [regenerating their preview images](https://docs.fylr.io/help/tutorials/for-system-administrators/regenerating-preview-images). JPEG and PSD are covered by the option now as well. See the full note under **Fixed**.
* **A session that fails the browser binding can no longer be refreshed.** `/oauth2/refresh` now requires the browser cookie the session was bound to. The web frontend handles this; a custom frontend or integration that answers `InvalidToken` with a refresh has to discard the session and log in again instead of retrying. Tokens issued to API clients are unbound and unaffected. See the full note under **Fixed**.

### Fixed

* **A SAML login no longer ends the browser's other sessions**: the identity provider posts its assertion cross-site, so the `SameSite=Lax` browser-id cookie does not ride along and fylr minted a fresh one for that request — handing the browser a new identity and rejecting every session token bound to the previous one. The other tabs stopped rendering and dropped to the login page, and the keep-login cookie stopped working. A cross-site request no longer establishes a browser identity; the same-site steps that follow the assertion carry the browser's own cookie and keep owning the binding. See [Session binding](https://docs.fylr.io/for-developers/api/endpoints/api-oauth2#session-binding-anti-hijacking). Rejections are also logged more usefully: they name what the request carried (`BrowserCookie=absent` or `mismatch`), and only a foreign cookie is a warning — a session whose cookie is simply gone is ordinary and logs at debug. \[857284c16]
* **A session that fails the browser binding can no longer be refreshed back to life**: `/oauth2/refresh` validated the refresh token but not the binding, so a client that answered a rejected token with a refresh was handed a new one carrying the same broken binding, which was rejected again in turn. A frontend retrying that loop could produce hundreds of rejected requests per second for as long as the tab stayed open. A refresh now has to come from the browser the session was bound to; unbound sessions (API clients, password grant, cross-origin logins) are unaffected. A client that meets `InvalidToken` should discard the session and start a new login rather than retry — see [Session binding](https://docs.fylr.io/for-developers/api/endpoints/api-oauth2#session-binding-anti-hijacking). \[aa08db14b]
* **The file-deletion janitor keeps finishing on large instances**: the background job that removes the files of superseded object versions could run for hours without ever completing, and while it did, no dead row anywhere in the database was reclaimed — the job holds a write transaction, which stops autovacuum instance-wide — and the janitor steps queued behind it never ran either. Its query looked up the candidate objects in a way PostgreSQL could only plan efficiently while that intermediate result was small enough to hold in memory, and the set grows with the version history, so every instance reaches the tipping point eventually. Both lookups of the query are index-backed anti-joins now, which no longer depend on that limit. A first part of this was fixed in 6.33.1. See [Removing file links from historic versions](https://docs.fylr.io/for-administrators/readme/services#removing-file-links-from-historic-versions). \[cecfe7ed0]
* **root can change its own password again**: setting a new root password in the frontend was answered with *The user type "system" doesn't allow to set a password* since 6.34.0. Restricting password management to the user types that actually log in with a fylr-managed password had left out `system` — the type of the root user, which does log in with one. The other types keep the restriction: `ldap` and `sso` authenticate against the external directory or identity provider, an `email` user only follows a collection share link, and the anonymous and collection users never log in with a password at all. As before, root cannot be reset by email from the password-forgot page; a root password is set with a password, or through [`POST /api/v1/user`](https://docs.fylr.io/for-developers/api/endpoints/api-user). \[b9dbeef69]
* **A `HEAD` request for a file in an S3 location answers again**: asking for just the headers of a download — what a client does to read size, type or file name without fetching the bytes — answered `400` for every file stored in an S3 location that **fylr** delivers itself, while `GET` on the same URL worked. The signed storage URL is issued for `GET`, and an S3 signature covers the method, so the forwarded `HEAD` came back from the storage as `403`. The storage is always asked with `GET` now; the body is still not sent to the client. See [`/api/v1/eas/download`](https://docs.fylr.io/for-developers/api/endpoints/eas/download). \[91ae519c5]
* **Backup dumps restore under `ON_ERROR_STOP` again**: the dump emitted a `setval` for every table it lists as owning a sequence, but the `task` table has none — its ids are assigned by **fylr**, not by the database — so a strict psql restore aborted on that statement. The table no longer claims a sequence. See [Restoring a copy](https://docs.fylr.io/for-administrators/backup-manager#restore). \[17669478d]
* **Only a designated clipping path clips a preview**: an image that carries a Photoshop path without designating one of them as the clipping path was cut out along that path anyway, so its previews showed a masked motif while the download stayed whole. Whether an image clips is decided by the clipping path **Photoshop** records, and the path is addressed by the name recorded with it rather than by taking the first one — a name with an umlaut in it finds its path as well, whether the file was written on macOS or on Windows. A clipping path saved without a name keeps its meaning, the first path. Besides TIFF this now covers JPEG and PSD, which carry the same metadata; for a JPEG the path is reported but not applied, because its versions are JPEG and have no transparency to cut a background out of — a custom version that writes PNG does clip it. Reading the clipping path no longer scans the whole image, so the previous limit of 200MB for that check is gone. Assets already in an instance keep the clipping they were produced with until their metadata is read again. The name of the clipping path is reported in the technical metadata as it reads, whichever system the file was saved on. See [Clipping paths](https://docs.fylr.io/for-administrators/readme/file-worker/preview-configuration#clipping-paths). \[4aec70b8d]
* **A tiled watermark is tiled on a custom rendition too**: a watermark configured as tiled in the pool or objecttype covered the normal renditions in tiles, but a download through a custom rendition preset placed a single watermark wherever the gravity pointed instead. Custom renditions are produced by their own recipe, which was never told about the tiling — the watermark image, its placement, its size and its transparency all reached it, only the tile flag was missing. See [Watermarks](https://docs.fylr.io/for-administrators/permissions/pools#watermarks) and [Custom Version Presets](https://docs.fylr.io/for-administrators/readme/file-worker/custom-version-presets). \[f72462b4b]
* **A watermark sized in percent no longer breaks the download of a custom rendition**: if the watermark size was given as a percentage rather than in pixels, a custom rendition with that watermark failed to be produced at all and the download stayed empty, with `exec #0: exit status 1` in the log. The percentage refers to the size of the converted image, which was read back from the rendition file — and that file is never written while the rendition is streamed straight to the download, as custom renditions are. Pixel sizes were unaffected, as were the normal renditions, which are written to disk. See [Watermarks](https://docs.fylr.io/for-administrators/permissions/pools#watermarks). \[f72462b4b]

## Frontend

### Fixed

* **Pool short links no longer hang on the splash screen**: Opening a link that addresses a pool by its short name could leave the frontend on the welcome splash forever. The splash paints over the dialog layer, so a dialog raised while the apps were still loading — a login prompt, an error, a confirmation — was invisible, and loading kept waiting for an answer that nobody could give. The splash now steps aside for the first dialog that is not a passive notice. (4bc8a8480)
* **"Add to collection" for users without collections**: The search context menu hid the entry for users who had no collection yet but were allowed to create one, so neither the right-click menu nor the three-dot menu offered a way to start the first one. Accounts that already owned a collection were unaffected, which made the report look like a rights problem. The entry now stays visible whenever the collection manager offers to create a new collection. See [Collections](https://docs.fylr.io/for-users/quick-access/collections-and-presentations). (ca8803077)
* **Moving a shared collection warns before it changes the owner**: Dropping a collection into a tree that belongs to somebody else hands it, and all of its subcollections, over to the owner of the new parent, and the previous owner silently loses access. The move is now confirmed first, naming both owners, and dropping onto the *My collections* header takes the same path instead of moving right away. A move the user may not make is refused as the drop happens — it needs write and ACL rights on the collection plus create on the new parent — so no dialog appears for a move that could only end in a server error. See [Setting up collection sharing](https://docs.fylr.io/help/tutorials/for-administrators/setting-up-collection-sharing). (fd249b855) (7e1f3e3c9)
* **Quick Access hides object types the user cannot read**: The *Quick Access* panel listed every object type configured for it, including the ones the user has no read right on, so picking one of them led to an empty result. A single aggregation now tells which of them actually hold something the user may see and the rest are left out. If that request cannot be answered the panel is shown unfiltered, so it is never emptied by accident. See [Quick Access](https://docs.fylr.io/for-users/quick-access). (2e07e26af)
* **A refused token ends the session instead of retrying without limit**: When the server refused a session token, the frontend refreshed it and retried the request with no limit, so a session that could not be repaired kept a client sending requests at full rate. The decision now sits in one place: a batch of parallel failures triggers a single refresh, a refreshed token that is refused on first use ends the session, further refreshes back off and are capped, and the tokens are cleared before the login screen appears. Once the session is over no further requests go out, and the user's other tabs are told over a BroadcastChannel instead of each running the same loop on its own. The Safari fallback header also kept sending the dead token on a retry, and the logout event listener was registered before the version was known, so it never took effect at all. See [Session binding](https://docs.fylr.io/for-developers/api/endpoints/api-oauth2#session-binding-anti-hijacking). (8be5463ed)
* **Downloading records from a connector instance**: The download dialog offered custom renditions for records that come from a connected instance, and that section left an undefined entry in the form data, so collecting the file URLs crashed and the *Download* button never became enabled. Custom renditions are produced server-side from the original while the connector dialog only hands out ready file URLs, so they are no longer offered there. See [Connector](https://docs.fylr.io/for-administrators/plugin-manager/connector). (4f43ee0ac)
* **Crop frame when a rendition fixes both width and height**: Entering a width and a height on a *Resize/Crop* rendition collapsed the crop frame to a few pixels, so the selection shown on the asset no longer matched the area that would be downloaded — the downloaded file itself was correct. Locking a ratio reshaped the current crop, which only ever shrinks, and typing a height digit by digit fired intermediate extreme ratios that compounded it further. The crop is now re-fitted to the largest frame that fits the image. See [Custom Version Presets](https://docs.fylr.io/for-administrators/readme/file-worker/custom-version-presets). (bc19f135b)
* **CSV import into nested fields inside nested fields**: Columns that address a row of the outer nested field — `events[1].dates[].date` — were assigned to the wrong row: a value belonging to the second event landed in the first one behind an empty row, and a field mapped only for the second event went to the first. The innermost index is now counted per outer row, columns are grouped by their indices instead of being kept in a sparse list that lost the link to its configuration, and indices with more than one digit are recognized. See [CSV Importer](https://docs.fylr.io/for-administrators/tools/csv-importer/general-information). (9322985eb)
* **CSV import into a linked object's localized field**: A column that addresses a field inside a linked object names it after a `#`, but a localized field is itself stored as `name#de-DE`, so only the part before the second `#` was compared and such a column never matched. The comparison also went through the option label, which changes with *Show Display Names*, so the same header matched or not depending on that checkbox. The option's value is used now, longest match first. (9fde69d03)
* **CSV import into a date and time field**: A value carrying only a date was stored with a time of 02:00, because the importer forced full second precision and read the value as UTC, so an imported 18:00 came out as 20:00 in Berlin. The value is now formatted with the precision the target field accepts, a date stays a date, and a value that cannot be parsed is marked invalid instead of being dropped in silence. Date and time values written without seconds, such as 2026-05-15 14:30, are recognized as well. (a8a34e212) (CUI, 26004c0a)
* **Copy buttons in the ACL manager**: *Copy selected row* stayed enabled with nothing selected and threw when it was clicked, and the minus button failed the same way silently. *Copy all rows* only turned on with more than one row, so a pool holding a single permission could not be copied at all. Both buttons now follow the selection, and the pressed state stays on the button that was actually used. See [Pool permissions](https://docs.fylr.io/for-administrators/permissions/pools). (7b120e9b0) (12b8d087b)

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.4
docker.fylr.io/fylr/fylr-server:v6.34.4
```


# Release v6.34.3 (2026-08-11)

Published 2026-08-11 19:16:21Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.3/fylr_checksums.txt)
* [fylr\_v6.34.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.3/fylr_v6.34.3_darwin_amd64.tar.gz)
* [fylr\_v6.34.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.3/fylr_v6.34.3_darwin_arm64.tar.gz)
* [fylr\_v6.34.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.3/fylr_v6.34.3_linux_amd64.tar.gz)
* [fylr\_v6.34.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.3/fylr_v6.34.3_windows_amd64.zip)

## Server

### Fixed

* **`skip_constraints` now unlocks every known event type when writing events**: `POST /api/v1/event` and `/api/v1/event/list` accepted the system event groups for a root session that passed `skip_constraints=true`, but the `TASK` group was missing from that list and was rejected regardless of the parameter. A fylr-to-fylr restore that includes the event log aborted on the first task event with `The event type TASK_INSERT is not allowed`, so such an instance could only be migrated by dropping the event log (`--include-events -`). Any event type the server knows can be written with `skip_constraints` now; unknown types stay rejected. \[6ac8d919e]

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.3
docker.fylr.io/fylr/fylr-server:v6.34.3
```


# Release v6.34.2 (2026-08-03)

Published 2026-08-03 13:26:20Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.2/fylr_checksums.txt)
* [fylr\_v6.34.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.2/fylr_v6.34.2_darwin_amd64.tar.gz)
* [fylr\_v6.34.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.2/fylr_v6.34.2_darwin_arm64.tar.gz)
* [fylr\_v6.34.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.2/fylr_v6.34.2_linux_amd64.tar.gz)
* [fylr\_v6.34.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.2/fylr_v6.34.2_windows_amd64.zip)

## Server

### Fixed

* **Regional-variant database language no longer breaks pool and message sorting**: configuring a database language that is a regional variant of a frontend language — for example data language en-GB while the frontend languages include en-US — renamed the frontend-localized index fields of pools, messages, collections and groups after the database language. Their frontend-keyed values were silently dropped from the index, and every sort on these fields failed the whole search, leaving the web frontend stuck on its loading screen. The index fields keep the frontend language names now; a reindex (offered when saving the languages) rebuilds an affected index. \[e66e366f4]
* **A restore honors the requested `--file-api` method again**: since v6.34.0 the restore routed each file by its source leave flag alone, overriding the chosen method. `rput_leave` / `rput_bulk_leave` copied originals stored in the source's own storage into the target (sync status `pending_copy_internal`) instead of keeping them as references, and `put` sent `rput` for every file not packed into the backup, so the target had to fetch the bytes itself instead of receiving them from the restore tool. Leave is now additive — the run method or the source flag — and `put` streams again; a source-leave file still stays leave in every run method. \[79cc021ec]
* **Tag manager opens even when a workflow action's plugin is missing**: `GET /api/v1/transitions` answered "Request caused a panic" (400) when a workflow transition carried a plugin action whose plugin is no longer installed — for example after a migration or after removing a plugin — which broke the "Tags & workflows" page in rights management. Such an orphaned action is now returned with its stored configuration instead; saving a workflow set that still contains it remains rejected until the plugin is installed again or the action is removed. \[53de67e26]
* **Watermarked custom renditions work when a caption is configured**: An on-demand custom rendition with the watermark option delivered a damaged (empty) file whenever the pool or object type also had a caption configured — the streamed production lost its output when watermark and caption were both active. The rendition now carries the watermark and the caption together, like the regular watermarked preview versions. BMP renditions from these steps stay 24 bpp truecolor, and the `/inspect` exports file viewer shows bmp, gif and webp images inline. \[a3a0429b8]
* **A plugin update can no longer be swallowed by a stale checksum**: the boot-time plugin sync for url plugins configured in `fylr.yml` kept the stored zip but adopted the freshly probed checksum of the install URL — a release published between the stored zip and that probe was considered "already installed" and never fetched (this is what repeatedly hit the geo-json plugin). The stored zip and its checksum now always travel together: the checksum comes from the download that delivered the zip, and a plugin-manager save applies a release pending at the install URL directly. \[271d6c5c5]
* **Section-scoped config save resolves cross-section references against the stored config**: Saving a single config section validated the sections it did not carry using their default values, so a section that references another — for example a custom version preset pointing at a configured color profile — could fail to save on its own section path (the referenced value looked unset) and only went through when both sections were sent in one request. Such a save now validates against the stored configuration, and a section stored earlier with `save=ignore_errors` (or a stored produce config left stale by an environment change such as an update or a removed plugin) no longer blocks or re-prompts an unrelated section's save. \[b14d87971]
* **Inspect "Show for" works with a section anchor selected**: On the `/inspect` pages, choosing a user in the "Show for" select while a Section anchor was active built a malformed URL with the query behind a duplicated `#fragment` — the user scope was silently dropped and the page was left dimmed. The query is now placed before the fragment and the page reloads with the chosen scope applied. The System page's sub-page menu also no longer renders as a small indented list but uses the standard inspect menu style. \[0781b977f]
* **Selected color profile is embedded in custom versions and produced file variants**: downloading a custom version or preset that combined a color space with a color profile delivered the file without the ICC profile and with wrong (linear RGB) colors. The selected profile now defines the output and is embedded; "RGB" without a profile resolves to the default sRGB profile. `/api/v1/eas/produce` accepts `colorspace` and `colorprofile`; the croptool dialog offering the two selects is a webfrontend deliverable. \[c354aa44a]
* **One stale sort field no longer takes down every search**: a sort on a field missing from the read index — left behind when a datamodel commit or a language change is confirmed with reindex "skip" — made OpenSearch reject the whole query with "No mapping found … in order to sort on", which hung the webfrontend at load. Unmapped fields now sort as if the value were missing, and the painless sorters skip fields absent from a document's mapping. The now-unreachable error `IndexErrorWaitForReindex` is removed — clients that matched on that code no longer receive it. \[7c1ac1bc1]
* **Video renditions encode about three times faster by default**: the video cookbook's default ffmpeg options change from `-preset slow -crf 18` to `-preset fast -crf 20`, which is visually indistinguishable for downscaled web playback renditions at roughly comparable file sizes, and the default encode timeout doubles from 1h to 2h, so very large source videos no longer hit the deadline kill mid-encode. Produce configs that override `ffmpeg_params` or `timeout` are unaffected; existing renditions only pick up the new options on a resync. \[027a6337d]
* **HEIC works in the crop tool, custom renditions and produce**: Downloading a HEIC asset as a custom rendition or with resize/crop parameters, and producing a new original from one, failed when the format was left unchanged — HEIC could be read but not written. `heic` is now a full produce format (input and output), so all of these deliver a real HEIC again, and `format=heic` can also be requested explicitly. Sources whose extension cannot be encoded at all (for example `jfif`) fall back to the produce recipe's default output format (`jpg`) instead of failing, and the exported file of a "keep the format" rendition is named after the actual output format. HEIC encoding needs libheif with the x265 encoder plugin: the official docker image now ships it (`libheif-plugin-x265`); other installations must provide an ImageMagick/vips whose libheif can encode HEVC. \[a15299b80]

## Frontend

### New

* **Color space and color profile when creating a file variant**: The *Create file variant* dialog of the crop tool now offers *Color space* and *Color profile* for image assets, the same selects the download dialog already had. Both are passed to the produce request, so a variant can be produced directly in RGB, CMYK or grayscale with a specific ICC profile embedded — previously the crop tool always kept the color settings of the original. Requires the server-side support for the two fields that ships in this release, see **Server** above. (8d53dda31)
* **Plugins can add entries to the search tools menu**: A new plugin type, `ez5.SearchToolPlugin`, registers on `SearchMain.toolPlugins` and contributes entries to the tools menu of the search. A plugin declares its entries in `getTools()`, can nest them into submenus, and reaches the search, its managers and the current selection from there; a group of its own gets its own header in the menu. A tool can also insert a query language element carrying a custom label instead of the raw query text. (cdc484a0f)

### Fixed

* **Date formats of a newly configured database language**: configuring a database language whose locale the frontend does not know — a regional variant such as en-GB, for example — copies the German locale as a template for its date formats. That copy failed as soon as any date field had been rendered, because the date component caches derived data on the very format objects being copied, and the login could end up stuck. The cached data is skipped when copying now. The date formats of the frontend language itself were never applied either, due to an inverted condition; they are applied again, and only when that language actually defines a calendar. (a0c2b828e)
* **Dragging over a collection you cannot read no longer pops errors**: dragging something over a collection the user has no read rights on ran a rights check on every hover tick, each one raising its own API error dialog mid-drag. The check stays silent and is not retried once it has failed, so the error is reported when the drop actually happens. (a6f61c611)
* **A right click no longer reloads the detail sidebar**: opening the context menu of a record in the search selects it, which made the detail sidebar drop what it was showing and load that record instead. The context menu selects the record for the actions in it without touching the sidebar; a normal click on an already selected record still loads it into an open sidebar. (1f921ff9e)
* **Re-enabled lists stay blocked**: A list that was disabled more than once kept a leftover overlay when it was enabled again, so its rows no longer reacted to clicks. This was visible in the pool editor: on the *Watermark* tab, switching the *Caption* setting to *None* or *Inherit from parent pool* and back to *Configure* left the field list disabled — only the add button responded. Disabling a list is now idempotent and enabling it removes the overlay in every case. (CUI, b885b7a9)

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.2
docker.fylr.io/fylr/fylr-server:v6.34.2
```


# Release v6.34.1 (2026-07-21)

Published 2026-07-21 16:39:29Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.1/fylr_checksums.txt)
* [fylr\_v6.34.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.1/fylr_v6.34.1_darwin_amd64.tar.gz)
* [fylr\_v6.34.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.1/fylr_v6.34.1_darwin_arm64.tar.gz)
* [fylr\_v6.34.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.1/fylr_v6.34.1_linux_amd64.tar.gz)
* [fylr\_v6.34.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.1/fylr_v6.34.1_windows_amd64.zip)

## Server

### Fixed

* **The login validity window works again for LDAP, SSO and email users**: Since 6.34.0, saving a user of type `ldap`, `sso` or `email` with `login_valid_from` or `login_valid_to` was rejected with `UnableToSetPasswordForUserType`, and a backup containing such a user could not be restored at all. The validity window is enforced by fylr for every authentication method, so it is settable for every user type again; only the password fields (`_password`, `_password_hash`, `require_password_change`) remain rejected for these types, and backup and restore now strip exactly those. Backups written by easydb 5 or by fylr before 6.34.0 therefore restore onto current servers, keeping each user's validity window. The matching user-editor fix ships in this release — see **Frontend** below. \[0f37420e6]
* **CMYK PDFs render color-managed previews**: Thumbnails and pages of PDFs with CMYK content (typical for print-production files) came out with visibly oversaturated, shifted colors. The mutool shipped in the fylr Docker image is now built with ICC color management enabled — Debian's `mupdf-tools` package disables it at compile time — so CMYK is converted through color profiles like in easydb 5. Self-hosted installations using a distribution mutool keep the old behavior until it is replaced with an ICC-enabled build. Already-produced previews update on the next (re-)production of the affected assets. \[804e6f8f7]

## Frontend

### Fixed

* **The user editor keeps the login validity window for LDAP, SSO and email users**: The editor hid *Login valid from* / *Login valid to* for users of type `ldap`, `sso` or `email` and cleared both values when such a user was saved. Since the validity window is enforced by fylr for every authentication method (see the server fix above), the editor now shows and saves it for every user type; only the password fields stay hidden for user types without a fylr-managed password. (a486ab80c)

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.1
docker.fylr.io/fylr/fylr-server:v6.34.1
```


# Release v6.34.0 (2026-07-15)

Published 2026-07-15 13:25:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.0/fylr_checksums.txt)
* [fylr\_v6.34.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.0/fylr_v6.34.0_darwin_amd64.tar.gz)
* [fylr\_v6.34.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.0/fylr_v6.34.0_darwin_arm64.tar.gz)
* [fylr\_v6.34.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.0/fylr_v6.34.0_linux_amd64.tar.gz)
* [fylr\_v6.34.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.34.0/fylr_v6.34.0_windows_amd64.zip)

## Server

### Important

* **This release forces a blocking re-index.** Two indexing changes — fulltext-only fields becoming sortable (see *Sorting a list by a fulltext-only field* under **Fixed**) and file content now following the file field's expert search (see *File content indexing follows the file field's expert search* under **Improved**) — only take effect for existing records once they are re-indexed, so the upgrade triggers a full re-index automatically. While it runs the instance is not available for normal use; only `/inspect/` is reachable. On a large instance this can take a while.
* **All web sessions are invalidated by the upgrade.** Web-app access and refresh tokens are now bound to the browser (see *Sessions bound to the browser* under **Improved**), so every existing session is dropped once on upgrade and users sign in again. API-client and password-grant tokens are unaffected.
* **Two-factor authentication is a licensed capability.** Enabling it requires a license that carries the `two_factor_auth` capability (see *Two-factor authentication* under **New**).
* **IIIF is now version 3.** The Image and Presentation APIs speak IIIF 3.0 and the image `info.json` uses the v3 field names; clients that still read the v2 `info.json` must be updated (see *IIIF Image and Presentation API upgraded to version 3* under **Improved**).

### New

* **`await_index` for `/api/v1/db`**: The object save (`POST`) and delete (`DELETE`) endpoints accept an `await_index=<seconds>` query parameter. The request then only responds once the search-index jobs it queued — including the dependent objects that are re-indexed with it — have been processed and the affected indices refreshed, so the change is already visible in `/api/search` when the response arrives. Without the parameter indexing stays asynchronous as before, so a search directly after a write may not yet find the change. If the jobs are not processed within the given number of seconds the request still succeeds (the change is stored) and reports the unfinished wait in the `X-Fylr-Error` / `X-Fylr-Error-Code` response headers rather than failing. The parameter is documented in the [`/api/v1/db` API reference](https://docs.fylr.io/for-developers/api/endpoints/api-db). \[ce1071d7e]
* **Custom rendition presets**: A new *Custom Rendition Presets* block in the base config (file worker tab) holds named presets of on-demand custom-version options — format, size, quality, watermark, color profile and so on. A download or export requests a preset by name (`type: "custom"` with `custom_version_preset: "<name>"`); the server produces the rendition on the fly and names the downloaded file after the preset instead of `custom`. Presets are shared by all users and validated on save: a unique name, a display name, and at least one effective setting are required. See [Custom Version Presets](https://docs.fylr.io/for-administrators/readme/file-worker/custom-version-presets#configuration). \[3005c140d] \[9ec3bd54c]
* **Consolidate duplicate linked objects**: A new background task module `consolidate_objects` merges duplicates of linked objects such as keywords, actors or places. The task re-links every reference to the chosen source objects — in any link field, top level or nested — to one target object of the same objecttype, then deletes the sources (recoverable from the trash). Links that reference a source through a reverse-edit column are re-linked like any others. A nested row whose link would duplicate a sibling row already linking the target is dropped, unless the row carries other data such as a remark. A dry run mode logs the planned work without changing anything, and the task log and version comments name sources, target and de-duplications with their display names. Bidirectional links are kept consistent: re-pointing one updates the mirrored entry on the target and removes the stale mirror from a kept source, and the auto-added mirror version on the target carries the consolidation comment as well. The task runs with the rights of the user who created it: creating a task is refused when the user may not delete the source records, and references the user may not modify are left untouched — the affected source record is then kept instead of being deleted with dangling references — and an unconfirmed save answers with a confirmation dialog (`202`, repeat with `confirm=yes`) previewing how many records reference the sources, broken down by objecttype with the affected fields, and what confirming does to the target and the sources. The task-manager picker and the editor's *Replace by another record…* shortcut are described under *Consolidate duplicate linked objects* in the **Frontend** section. See [`consolidate_objects`](https://docs.fylr.io/for-users/additional-features/background-tasks#consolidate_objects). \[4c27dc665] \[20bd549ba] \[39743944d] \[e1f495f53] \[4734b1978]
* **Two-factor authentication (local accounts)**: Logins can now require a second factor. It is enabled in the base config (*Access* → *Two-factor authentication*), where one or more methods are selected, and enforced per group via a new "2FA required" flag. Phase 1 ships the email one-time code: an enforced user receives a 6-digit code by email after the password step and enters it to finish signing in. `system:root` and users without an email address are exempt. The feature requires a license carrying the `two_factor_auth` capability: without it the base-config section is marked unavailable and cannot be enabled (unlicensed local test instances have it available), and the settings API reports the effective capability values. The email method is only offered once an email server is configured. The non-interactive password grant (OAuth2 password) cannot present a second factor, so for enforced users it is refused — unless the admin deliberately opts in via the new *Allow password grant* switch (to keep API clients with password credentials working). Wrong codes are limited (3 attempts by default) before a new login is required, and the `USER_LOGIN` event records which second factor was used (`two_factor`: the method, `<none>`, or absent when 2FA is off). Setup is described under [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). \[1eadff193] \[170ad6760] \[a325ab6f1] \[b28ee4bf8] \[79e922e59] \[0dd2e4bf5]
* **Two-factor authentication — authenticator app (TOTP) and passkey**: In addition to the email code, the second factor can now be a time-based one-time password from an authenticator app (Google / Microsoft Authenticator, …) or a passkey (WebAuthn — fingerprint, face recognition, security key). Enforced users who haven't enrolled yet are walked through setup at login (QR code for TOTP, the browser's passkey ceremony for passkeys); with more than one option a picker lets the user choose, and later logins go straight to the last-used method with a "use a different method" link. The TOTP secret is encrypted at rest (`fylr.encryptionKey`). Both enrollments can be reset by admins in the user editor and by the users themselves in their settings; the `USER_LOGIN` event records the method in its `two_factor` field. See [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). \[581f45f75]
* **Passwordless sign-in with a passkey**: When the passkey method is enabled, the login form offers "Sign in with passkey" — no username or password: the browser suggests the stored passkey right in the login field (conditional UI) or via the explicit link (which also covers signing in with a passkey from a phone). The device confirms with fingerprint / face recognition / PIN; since that is possession plus biometrics, a passkey sign-in counts as a full two-factor login. Passkeys are now enrolled as discoverable credentials to make this possible. See [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). \[581f45f75]
* **Search `boost` parameter**: Every element of the `search` array in `POST /api/v1/search` accepts an optional `boost` (number, default 1), as known from easydb 5: a higher boost gives objects matching that element a higher `_score`, so `should` elements combined with sorting by `_score` rank preferred matches first. It works with every element type (`match`, `in`, `range`, `complex`, `nested`, geo); negative values are rejected. See the [`/api/v1/search` reference](https://docs.fylr.io/for-developers/api/endpoints/api-search). \[b2643cc11]
* **"Stay logged in" on the login form**: An admin can offer a *Stay logged in* checkbox on the login form via the base config (*Login* → *Stay logged in*: off by default, or 7 / 30 days). With the box checked, a completed login — including a passed two-factor challenge, the SAML round-trip or a passkey sign-in — keeps the user signed in browser-wide for the configured duration: a fylr link opened in a new tab, window or after a browser restart no longer asks for the login. The label names the duration ("Stay logged in (30 days)"), the period extends on use, and logging out (or switching the option off) ends it everywhere. Technically this is a server-side session bound to a persistent, HttpOnly cookie — tokens, their lifetimes and rotation are unchanged, and nothing token-like is parked in the browser's web storage. Enabled under [*Login* → *Stay Logged In*](https://docs.fylr.io/for-administrators/readme/access) in the base config. \[bcb002a1a]
* **Term recalculation (`/inspect`)**: A new maintenance operation rebuilds the `term` / `object_term` suggestion tables for every current object, so changes that affect how terms are extracted (for example reworked custom-data-type field mappings) can take effect on existing records without re-saving them. Start it from the new *Term Recalculation* page under the backend's `/inspect` (also linked from `/inspect/terms`); it shows the status and the last runs. The recalculation runs in the background below normal saves and below a re-index, so the instance stays usable while it works (it can take hours on a large instance), and it never writes the objects — no new versions and no changelog entries. It also removes terms no longer referenced by any object and re-indexes all objects and terms in place afterwards. On a fylr update, releases that change term extraction can request the recalculation automatically. See [Suggestions and terms](https://docs.fylr.io/for-developers/concepts/search-and-events#suggestions-and-terms). \[f9812bb10]
* **Collection share links with an external base URL**: A collection share preset (*Rights management* → *Presets* → *Collections*) can carry an optional *External URL for sharing links* — an absolute `http(s)` base URL, for example a portal on `https://media.example.com`. Share links of entries using the preset are then built from that base instead of the server's own URL: the copy/open link buttons in the share editor and the link in the share notification email. Everything after the base is unchanged (`…/collection/<uuid>?…`), so any webapp that serves fylr's collection deep-link structure can be targeted, and one preset per target offers several portals side by side. The mailed link is recorded in the `EMAIL_SENT` event info as `CollectionURL`. Without a configured URL share links behave as before. In the API the preset gains an optional `share_url` (context `collection` only). See [Presets](https://docs.fylr.io/for-administrators/permissions/presets). \[897f5643b]

### Improved

* **Idle database connections are released**: fylr kept every pooled database connection open forever, so even a completely idle server pinned up to `maxIdleConns` PostgreSQL backends per pool. A pooled connection that has been idle for 30 seconds is now closed and its backend released; a busy server keeps reusing its connections and is unaffected. This lowers the connection pressure when many fylr instances share one PostgreSQL server. Configurable via the new `fylr.yml` settings `db.connMaxIdleTimeSec` (default 30, an explicit `0` restores the previous keep-forever behavior) and `db.connMaxLifetimeSec` (maximum total connection age, default `0` = unlimited). Both keys are documented in [`fylr.example.yml`](https://docs.fylr.io/for-system-administrators/configuration/fylr.example.yml). \[a8a14bcaa]
* **Metadata import assembles multi-column linked objects**: An import mapping can address several columns of the same linked object — for example a nested keyword's name and its localization. The columns zip positionally back into one linked object per row: the first mapped column is the lookup key. A key match links the existing object (the file's further columns are discarded — a file import never edits a shared vocabulary record), an unmatched key creates the linked object with all imported columns, and when several existing objects share the key name, the further columns pick the one the file agrees with. Localized values compare only the languages both sides have, since exported files fill missing translations with the fallback language. Both columns must be part of the linked objecttype's preferred mask. See [Metadata Mapping](https://docs.fylr.io/for-administrators/metadata-mapping#multi-column-linked-objects-import). \[2f28bfbd7] \[f166814e9]
* **Date ranges round-trip through metadata mappings**: A daterange field can now be imported from file metadata, completing the export that already existed. The import reads the "from - to" form fylr's own export writes (including a single date and open-ended ranges), so a daterange survives an export/re-import cycle; arbitrary external metadata is not parsed, as no standard metadata representation for date ranges exists. See [Metadata Mapping](https://docs.fylr.io/for-administrators/metadata-mapping#field-types). \[624e4ef67]
* **Object loading, rendering, search and indexing allocate far less memory**: A profiling pass over the hot paths cuts the server's memory allocation churn roughly in half. Object JSON now streams directly into the response instead of being buffered per object, per-object rights are computed once per batch of objects sharing the same pool, tags and owner, the version history of never-edited objects is derived from the already loaded row instead of re-queried, index documents are encoded into reused buffers, event batches are written with a single bulk INSERT, and large sub-search results are drained with `search_after` instead of increasingly expensive offsets. Large `/db` list pages load about a third faster; API responses and index documents are unchanged, so no re-index is needed. \[66ca71125]
* **Password management is limited to password-login user types**: Users of type email, ldap and sso authenticate outside fylr (or only through a share link), so fylr no longer accepts a password, a "require password change at next login" flag or a login-validity window (`login_valid_from` / `login_valid_to`) for them. `/api/user` rejects those fields, `/api/user/change_password` refuses the request, and the password-forgot page reports that the user type cannot set a password. Only easydb and easydb\_self\_register accounts keep fylr-managed password login. See [User types](https://docs.fylr.io/for-administrators/permissions/user#user-types). \[c205310f9]
* **Cross-platform release binaries are statically linked (cgo disabled)**: The downloadable macOS, Windows and Linux binaries are now compiled without cgo, so they cross-compile for every platform without a C toolchain; they are statically linked and use the pure-Go modernc SQLite driver. The official Docker image is unchanged — it keeps cgo and the C-based SQLite driver — and PostgreSQL deployments are unaffected. See [Download binaries](https://docs.fylr.io/for-system-administrators/installation#download-binaries). \[0ea378245] \[459d4e702]
* **Archived, deleted or disabled users are signed out immediately**: When an administrator (or the inactivity janitor) archives or deletes a user, or disables their login, fylr now revokes that user's access tokens and broadcasts a logout event, so any open sessions drop to the login page right away instead of continuing until the access token would have expired. The logout event carries the reason (archived, deleted, login disabled, or a login validity window that now excludes the user). See the [`USER_LOGOUT` event](https://docs.fylr.io/for-administrators/events/event-type-reference#user_logout). \[61033fffb]
* **Backup of polyhierarchical objects**: `fylr backup` now writes polyhierarchical objecttypes — records with more than one parent — which the backup previously skipped. Each record is placed into a backup payload by its depth (the length of its longest parent path), so that every parent of every branch lands in an earlier payload and the multi-parent graph restores intact. In an all-versions backup, a parent that only a historic version still links but that has since been purged is left out rather than written as an unresolvable reference, which would otherwise break the restore. See [fylr backup](https://docs.fylr.io/for-system-administrators/migration/backup). \[890c8f513]
* **IIIF Image and Presentation API upgraded to version 3**: The IIIF endpoints now speak the IIIF Image API 3.0 and Presentation API 3.0. The image `info.json` uses the v3 structure — `@context` `image/3`, `type` `ImageService3`, `id` (no longer `@id`) and a single `profile` compliance level — and now advertises the service's capabilities (`sizes`, a `tiles` pyramid, `extraFeatures` including `sizeUpscaling`, `extraQualities`, `extraFormats`, `preferredFormats`). The image request URL gains the v3 `^` upscaling size prefix (`^max`, `^w,h`, `^pct:n`, …); without it a size larger than the requested region is clamped to the region. Size and mirror handling were corrected along the way: `w,h` returns the exact size, percentage sizes scale both dimensions, and the `!` mirror reflects horizontally. Clients that read the v2 `info.json` must update for the new field names. See [IIIF](https://docs.fylr.io/for-administrators/iiif#key-features-in-fylr). \[2d8d9f7fe]
* **Import / object loading**: Importing and loading large numbers of objects is significantly faster. The object-deduplication step during a load no longer scales quadratically with the number of linked and parent objects, and reading database rows into objects — which happens on every `/api/db` object load — is around 20% faster server-side, with further speedups in the database layer. No data or behaviour changes. \[5bc8b0028] \[f24d5f440]
* **`/db` save and linked objects**: Saving an object no longer requires the `read` right on linked objects it leaves unchanged. Read is required only when a save introduces a link target at a new location — a field, or a nested row (identified by its `_uuid`) and sub-field — where the object did not already link it. Editors can now save records that carry links to objects they may not see (for example records in a restricted pool, linked by another user), as long as they do not move a link to a new place or replace it with a different, not-previously-linked target. \[319005b47]
* **Big geo shapes simplified in `_standard`**: A `geo_json` field can hold very large geometries — a country border at metre resolution is millions of vertices. The copy of such a value rendered into a record's `_standard` (used for searching, filtering and display) is now simplified with the Ramer-Douglas-Peucker algorithm down to at most `fylr.geo.standardMaxVertices` vertices per shape (default 100; set `0` to disable), instead of being copied verbatim. This keeps `_standard` — and the `geo_shape` derived for the search index — compact for records that carry or link big areas. The field value, downloads, exports and the field's own index keep full precision; only the `_standard` copy is bounded. See [`fylr.geo.standardMaxVertices`](https://docs.fylr.io/for-system-administrators/configuration/fylr.example.yml). \[a0f606760]
* **License expiration & version reminders**: The administrator warning mails around a license's end now distinguish the full lifecycle: a *paid period ending soon* warning before the end date, a *grace period ending* warning while the instance is in its two-month post-expiry grace period, and a new *license expired* notice once that grace period is over. For **buy** licenses — unlimited in time, but only valid for binaries released up to the license's end date — deploying a binary released *after* that date now sends a *binary too new* warning (such a binary will not run). The former "binary older than one year" rule no longer applies to subscriptions, which are purely time-based (end date plus the two-month grace). Mail dates use the unambiguous DD.MM.YYYY notation, and the license validation now reports the grace-period end date (`grace_to` = end date plus two months), which the license manager shows next to the end date. See [License management](https://docs.fylr.io/for-administrators/readme/license-management#expiration-warnings-and-notifications). \[cec36c34f] \[a8987dc28]
* **Custom tags in export metadata mappings**: Export mappings can now write custom XMP tags. A field's tag can be any `XMP-<group>:<tag>` path typed into the mapping editor — previously only import mappings accepted custom paths — and the server defines unknown tags on the fly via a generated ExifTool config: known groups (such as `dc`) extend the built-in table so the tag lands in the real namespace, while unknown groups get an ExifTool-convention namespace named after the group. A tag can be written as a single value, a list, or localized per language (the editor's *Typ* selector), which the server maps to the matching XMP string, Bag or lang-alt structure. The *Typ* options follow the selected tag's real capability: a built-in tag shows its fixed shape as pre-set checkboxes that stay visible but locked where the tag leaves no choice — only the list opt-out (write a single joined value instead of a list) remains selectable where the tag supports lists — while a custom tag offers both options freely. Only XMP is extensible; custom EXIF or IPTC tags are not offered. See [Metadata mappings](https://docs.fylr.io/help/tutorials/for-administrators/default-export-metadata-mappings). \[45640e705] \[6ea464acb] \[51beb4b55]
* **Web login hardening**: The OAuth2 web login callback is hardened — its response is served non-cacheable and its cross-origin access is scoped tightly. No configuration change and no change to the login experience. See the [OAuth2 login callback](https://docs.fylr.io/for-developers/api/oauth2#step-2-callback-from-fylr-to-the-local-http-server). \[4a771a952]
* **Sessions bound to the browser**: An access or refresh token issued to the web app is now tied to the browser it was issued in, via a signed, HttpOnly `fylr-browser-id` cookie that must accompany the token. Tokens issued to API clients and to the OAuth2 password grant are unbound and unaffected, as are logins delivered to a cross-origin (web-only) frontend. Tokens handed to server-side plugin callbacks (db\_pre\_save, transitions, extensions, collection uploads and exports) are likewise issued unbound and short-lived, so a plugin can still call back into the API; export callbacks now also honour a configured `plugin_user`. All existing sessions are invalidated once on upgrade, so users sign in again. \[c6e2d52df] \[387cf4f87]
* **Logout ends the whole browser session**: Logging out of the web app, and SAML Single Logout (both SP- and IdP-initiated), now revoke every token of the browser that triggered it — all of its tabs — instead of only the tab that was used, while sessions on other devices stay signed in. An explicit "sign out everywhere" still revokes the user's sessions on all devices. The logout is also published as a `USER_LOGOUT` event (carrying the scope and browser) on the event stream. See the [`USER_LOGOUT` event](https://docs.fylr.io/for-administrators/events/event-type-reference#user_logout). \[fc441ef1d]
* **Plugin zip must be stored locally**: Installing a plugin from a zip file (`type: "zip"`) through the plugin management API now requires the uploaded zip to be stored in fylr rather than left on a remote — the plugin manager has to read and unpack it. A `zip_file` that references a file with `leave_on_remote` set is now rejected with a clear error instead of being accepted and later failing to load. See [Plugin release](https://docs.fylr.io/for-developers/plugin/release). \[c27f7a724]
* **Metadata mappings updated after datamodel changes**: When a datamodel change is committed, metadata mappings (import and export) are now cleaned up in the same transaction: an Easydb field reference pointing at a datamodel field that the commit removed is dropped from the mapping, so mappings no longer carry references to fields that no longer exist. The mapping field itself is kept even when all of its references are removed this way, so it stays in place to be re-targeted. \[f45bb064d]
* **Clearer migration restore logging for files without a filename**: Restoring a backup with `--upload-versions` no longer floods the debug log with meaningless `Filename of file 0 is empty` lines. File versions take their name from the parent original, and the remaining fallback warning now names the file by id and the entity it belongs to — `<objecttype>:<system object id>` for object files, and `pool` / `user` / `group` / `objecttype` / `plugin` / `base config` for base-config and custom-data files. See [Migration restore](https://docs.fylr.io/for-system-administrators/migration/restore). \[5dda0fbab]
* **Migration restore prefills the easydb 5 video rename rule**: When a backup whose source is an easydb 5 instance is selected for restore in `/inspect/migration`, the *rename versions* table is now prefilled with `video.1920p:1080p` — easydb 5 names that video rendition `1920p` where fylr calls it `1080p`. The suggestion only appears for a freshly selected easydb 5 backup with no previous restore run; a restore resumed from a prior run keeps its saved rename list, including an empty one cleared on purpose. See [Rename Versions](https://docs.fylr.io/for-system-administrators/migration/renaming-renditions-during-migration#via-inspect-migration). \[fbd1088ca]
* **`/inspect` collection browser**: The Collections page of the `/inspect` console is now a searchable, paged tree browser. It pages through the collections, finds them by name or id, builds the ancestor chain up from every hit and expands branches on demand, and can filter by owner and user type, so it stays responsive on instances with very many collections. See [Collections](https://docs.fylr.io/for-system-administrators/inspect/collections). \[ce02ff875]
* **Workflow save reports invalid actions with clear errors**: Saving a workflow whose webhook action has no webhook selected — the default state while no Workflow Webhook is configured in the base config — used to fail with an internal error chain. The save is still rejected, but each case now returns a dedicated, translated message with its own error code, so the frontend can tell the user what to fix: no webhook selected, webhook name not found in the base config, unknown webhook callback, and change-owner action without an owner. See [Workflow webhooks](https://docs.fylr.io/for-administrators/readme/workflow-webhooks#callback-modes). \[caa7ebf01]
* **Logins may be up to 500 characters**: The API limit on `user.login` was raised from 100 to 500 characters. SSO-provisioned logins — for example Shibboleth persistent ids, which combine the IdP and SP entity URLs with an opaque handle — can exceed 100 characters; logging in with such an id worked, but `fylr backup` refused to read the user back and failed. The password limit stays at 100. \[9fcf54fe0]
* **Backups keep files lossless**: `fylr backup --include-files` packs file bytes into the backup itself (under `files/`), so the restore uploads them from the local backup instead of fetching them from the source — the restore no longer depends on the source instance staying reachable. It takes a mode: `--include-files=original` packs each non-leave file's original but not its renditions (preview versions), which the restore regenerates on the target, so this backup cannot be restored with `--upload-versions`; `--include-files=with-versions` also packs the renditions, so a restore with `--upload-versions` uploads them from the backup byte-identical instead of regenerating them (without it they are regenerated, exactly as for a URL-only backup). Renditions pack next to their original as `<id>-<original>-<version>.<ext>` under the original's id, and each packed rendition's `path` is part of the payload. Manual renditions — their original has *produce versions* off — cannot be regenerated, so the restore always uploads them, with or without `--upload-versions`, and keeps the original non-producing on the target. A manual rendition can itself be *leave on remote*; it is then never packed and returns as a reference to its upstream. Files stored *leave on remote* keep their real upstream URL: the backup requests it via the new `files_real_url=1` query parameter on the `/db` list endpoint (requires the *root* system right, since the upstream URL can be a pre-signed link that bypasses per-file permissions), and the restore re-creates them as references to that upstream — for a *with-versions* backup a leave original's packed renditions are uploaded from the backup too. The `/inspect/migration` backup form gets an *Include Files* selector, and its viewer browses nested backup directories. See [`--include-files`](https://docs.fylr.io/for-system-administrators/migration/backup#include-files). \[032b58353] \[f0e84d5231] \[2ce1477238] \[d24e3e1a3f]
* **File content indexing follows the file field's expert search**: The text extracted from a file (OCR and embedded file metadata) is written to a record's `metadata_fulltext` — and thus found by the expert / fulltext search — only when the file field has its *expert* search enabled. Before, file content was always indexed there regardless of the field's search settings, so it could not be kept out of the fulltext index. Existing instances need a re-index for the change to apply to records saved before the update; this release forces it (see **Important**). See [Search in text of files](https://docs.fylr.io/help/tutorials/for-administrators/search-text-in-images-or-office-files). \[89ccfb86f]
* **API responses opt out of caching by default**: Every API response now carries `Cache-Control: no-store, no-cache`, so browsers, shared proxies and CDNs never store responses — most of them carry data specific to the authenticated user. Caching stays available as an explicit opt-in: a `GET` with `?cache_seconds=<n>` answers with `Cache-Control: max-age=<n>, public` as before, and endpoints with their own caching policy (file downloads, IIIF tiles) keep setting their own header. \[5c3da1af6]
* **A base-config save that changes nothing is skipped**: Saving the base configuration with data identical to what is stored no longer performs an update. Previously every such save rewrote the configuration rows and made every server process reload the entire base configuration, and wrote a *Base Config Update* event — plugins or scripts that push their state into the config on a timer kept the whole installation busy with no-op reloads and flooded the event list. Now nothing is written, no reload happens and no event is recorded; a save that does change something behaves as before. \[01ec56cfa]

### Fixed

* **Faster first frontend load after a restart**: The plugin static files the web frontend loads were assembled on demand on the first request after a server start or update, reading each plugin's package as it went. The first user could therefore wait several seconds — long enough, on occasion, to see a blank page — while that ran. Those files are now prepared ahead of time: in the background at startup, and for a single plugin when it is installed or updated, so the first load is served from a ready cache. \[2128a6e95]
* **Legacy empty-string event data cleaned up on upgrade**: Older versions could leave stray `""` values in the `event` table's JSON `info` and `group_ids` columns; the upgrade rewrites them to NULL. \[48bb0fd7b]
* **Lists mapped into the same nested table align row-by-row**: When a metadata import mapping wrote two plain (non-localized) lists into the same nested table — for example a remark list and a linked keyword list — the second list's rows started after the first list's instead of pairing up with them. Each value now fills the first row that does not yet hold its field, the way localized lists already behaved, so all lists of one nested table land in the same rows. See [Metadata Mapping](https://docs.fylr.io/for-administrators/metadata-mapping). \[e6d2c4b7e]
* **List-valued metadata tags no longer carry a whitespace `val`**: In the file metadata JSON, every list (Bag) tag had a junk `val` consisting only of newlines and indentation, picked up from the XML around the list values. The `val` guess now only applies to scalar values; the list content stays in `prt` as before. \[5df103079]
* **LDAP connections**: With multiple configured LDAP connections, a dead first connection is now skipped and the next one is tried, instead of failing the login. A user search that matches more than one directory entry is always refused — previously three or more matches silently logged the user in as the first entry. And a connection's *CA certificate* setting is now actually used to verify the LDAP server's certificate; before, it was ignored and verification always ran against the system's trusted roots, so servers with a private CA could only connect with TLS verification disabled. See [LDAP login](https://docs.fylr.io/tutorials/ldap#user-login). \[61bf72940]
* **Nested sub-searches no longer truncate at 10,000 hits**: A sub-search (`"==?"`) matching more than 10,000 objects contributed only its first 10,000 hits to the outer search when it was placed inside a nested query. Sub-search drains now page with `search_after` over a point in time and re-drain from the start on every compile, so all hits are counted; this also lifts the `max_result_window` ceiling for very large drains. See [sub-searches](https://docs.fylr.io/for-users/search-and-filter/query-language#sub-search). \[66ca71125]
* **Custom metadata tags typed in lower case now import back**: A custom XMP tag whose name was entered starting with a lower-case letter (for example `XMP-custom:list`) exported correctly but was never read back, so a round-trip mapping imported nothing from those tags. ExifTool reads every tag with its name's first letter capitalized, so the import search generated from the name as typed no longer matched what was written to the file. The import now matches custom tags regardless of the letter case they were written in, which also repairs existing mappings without re-saving them; the mapping editor stores newly entered custom tags in ExifTool's canonical casing. See [Metadata mappings](https://docs.fylr.io/help/tutorials/for-administrators/default-export-metadata-mappings). \[4a07ab16d] \[be03768e42]
* **Image conversion fails on newer ImageMagick (HEIC on Windows)**: Images that take the ImageMagick path for conversion could fail to produce a preview, ending with *NoDecodeDelegateForThisImageFormat `convert`* in the logs and events. This affected HEIC files on installations whose `vips` was built without HEIC support — typically Windows — and formats such as ICO or PPM everywhere. fylr invoked ImageMagick through the deprecated `magick convert` sub-command, which newer ImageMagick 7 releases no longer accept, reading `convert` as an input filename instead. fylr now calls `magick` directly, with the input file ahead of the image operators as ImageMagick 7 expects; the IIIF tile renderer uses the same call. See [fylr on Windows](https://docs.fylr.io/for-system-administrators/installation/windows#magick.exe-imagemagick). \[e4820955e]
* **PDF and office thumbnails in webp**: A thumbnail or preview version of a PDF or office document configured to output `webp` failed to produce, ending with *Unsupported param value 'webp'*. The office cookbook's `browserthumbs` and `preview` recipes only allowed `png` and `jpg`, while the image cookbook's `browserthumbs` already allowed `webp`; a produce-config version shared by both — for example one named `browserthumbs` set to `webp` — therefore worked for images but failed for PDF and office files. Both office recipes now accept `webp` as well, and the rendition is produced as expected. \[94722488b]
* **Editing a collection share now re-checks the owner's rights**: When the rights preset of an existing collection share was changed, fylr saved the change without re-running the grantability check that creating a share goes through. Such edits are now validated just like new shares on every save endpoint, and warn when the owner is missing a required right. See [Setting up collection sharing](https://docs.fylr.io/help/tutorials/for-administrators/setting-up-collection-sharing). \[488fda280] \[933685092]
* **SAML login loop for users in many groups**: A SAML/SSO user whose identity provider sends many group memberships could no longer log in. fylr stored the whole login assertion inside the `fylr-saml-token` cookie, which then exceeded the browser's per-cookie size limit; the browser silently dropped the cookie and the login bounced back to the start. The SAML session is now kept server-side and the cookie carries only a short reference, so login works no matter how many groups a user has. Single sign-out keeps working for the whole session, and active SAML sessions are listed under `/inspect/saml-sessions/`. See [SAML setup](https://docs.fylr.io/tutorials/auth/saml#base-config). \[bf6f3ff65]
* **Collection shared twice with the same user**: Saving or restoring a collection whose access list references the same on-the-fly collection or email user more than once — for example a workfolder that was shared twice with the same recipient — no longer aborts the whole transaction with a database unique-key error. The user is created once and both access-list entries resolve to it; the access list is unchanged. \[4908aa514]
* **Migration backup lost user and group permissions and owners**: A backup written by `fylr backup` did not include the object permissions (*Permissions* tab) set directly on user and group records, and restoring a backup reset every user's and group's owner to `root`. Backups now carry both, so permissions and ownership of users and groups survive a migration. See [fylr backup](https://docs.fylr.io/for-system-administrators/migration/backup). \[cf3a87505]
* **File-production cache**: Produced renditions are now written to the cache atomically — under a temporary name that is moved into place only once the producing program has finished — instead of straight to their final cache path. An interrupted production (for example a worker killed by the OS while building the large intermediate image for an IIIF zoom of a very large asset) no longer leaves a partial file behind for later requests to pick up and serve, which could otherwise make IIIF zoom and tile requests for that asset fail. A periodic cleanup removes any leftover temporaries. \[80dbff4c2]
* **Slow plugin assets, intermittent white screen**: Every request for a file inside a plugin zip re-opened the whole zip from storage to read that one file, and the response forbade caching without offering a validator, so browsers re-fetched every plugin asset on every page load. With large plugin zips this cost seconds per tiny file and could leave the web frontend on a white screen while it loaded its plugin bundles. Requested files are now extracted once into a disk cache and served with an `ETag`, so repeat loads revalidate to an instant `304 Not Modified`. Cache entries unused for three days are removed automatically, and a plugin update switches to fresh entries by itself. \[d302c2186]
* **Indexing on large instances**: Bulk index requests no longer exceed the search cluster's `http.max_content_length`. The indexer counts every request-body byte and flushes a batch before the document that would push it over `fylr.elastic.maxMem`, which at startup is adjusted to stay 5% below the cluster limit; previously a batch could overshoot the limit and be rejected with *413 Request Entity Too Large*. This limit now always applies, including when `fylr.elastic.maxMem` is left unset — which previously left it unbounded, so a whole batch went out as a single request and could still be rejected. Such a rejection — or any other bulk error the cluster answers without a response body — was silently ignored, leaving objects, users, groups or pools missing from the index with no log line and no event; it now produces an *Index error* event per affected document and a single log line summarising the failed batch. Empty bulk requests, which the cluster answered with a logged *request body is required* error, are no longer sent. The `maxMem` setting is documented in [`fylr.example.yml`](https://docs.fylr.io/for-system-administrators/configuration/fylr.example.yml). \[e62eb9817] \[d82a0803d]
* **Logout on web-only instances**: On an instance running without a database (web-only mode), every logout caused a recovered panic in the server log and the token-revocation request was answered with an error. The `/api/oauth2/revoke` endpoint now answers *200 OK* on such an instance — it has issued no tokens, so any token is unknown, for which RFC 7009 prescribes a success response. Requests carrying an access token to a database-less instance no longer cause the same recovered panic either; they are answered as unauthenticated. \[015d5348d]
* **Login-flow page polish**: The server-rendered login-flow pages fix several small blemishes: the password show/hide toggle sits inside the input field — matching the in-app password fields — instead of beside it, the set-password page no longer shows a duplicate reveal-password button, input fields can no longer be resized vertically in Firefox, and over-long placeholder texts are truncated. The *go to research* link is only offered when guest access is enabled — matching the login page — and the error and not-found pages always offer a *go to login* link, so no page of the flow is left without an action. \[f242e9630] \[f09b8c4a0]
* **`/inspect` JSON tree view**: Empty arrays in the JSON tree views of the `/inspect` pages — for example `eas.rput.blockedHosts` on `/inspect/config/` — are now shown as `[]` instead of `{}`. See [the `/inspect` console](https://docs.fylr.io/for-system-administrators/inspect#html-dashboards-or-json). \[aa39bb454]
* **Sorting a list by a fulltext-only field**: A field whose mask enables only the fulltext search (the *fulltext* checkbox, not *expert*) can now be sorted on. The frontend already offered such fields in the sort manager, but the server indexed no sort value for them, so sorting a list by such a field had no effect on the order. These fields are now indexed like any other searchable field. Existing instances must be re-indexed for sorting by a fulltext-only field to take effect on records saved before the update. While that re-index is still running, sorting a list by such a field shows a hint that it takes effect once re-indexing completes. \[19afc7d0f] \[b4a0a9e132]
* **IIIF viewer in `/inspect` not shown in Firefox**: The IIIF viewer linked from a file's `/inspect` page (*Open in IIIF Viewer*) showed no image in Firefox — the zoomable map collapsed to zero height — while it worked in Chrome. The `/inspect` pages now declare the HTML5 doctype and the viewer uses a standard full-height layout, so the image fills the window in both browsers. See [Files](https://docs.fylr.io/for-system-administrators/inspect/files). \[28e2d4c32]
* **`/inspect` Technical Info hidden by collapsible sections**: On an `/inspect` page whose last collapsible section runs to the end of the page — a file's metadata groups, an object's file and CSV sections — the *Technical Info* footer was folded into that section and hidden along with it, even on page load. The footer is now kept out of the collapsible sections. See [the `/inspect` console](https://docs.fylr.io/for-system-administrators/inspect). \[1258d4842]
* **Linked-object suggestions that lead to no results**: The search input's suggestion list could offer linked objects that no record of the searched objecttype links to. Picking such a suggestion filters the list by that link and returns nothing, so the suggestion was a dead end. `/api/v1/suggest` now accepts `linked_objects_referenced_by_objecttypes`: when set, linked-object suggestions are restricted to objects at least one record of these objecttypes links to — through the direct, nested or reverse link the frontend filters on click — so every suggestion yields results; the list is filled by paging through the text matches in relevance order. Without the parameter every text match is returned as before. The web frontend passes the searched objecttypes, and clicking a suggestion that is a hierarchy ancestor of a linked object now filters the whole subtree, matching how such objects are suggested. See [`/api/v1/suggest`](https://docs.fylr.io/for-developers/api/endpoints/api-suggest). \[175128a09] \[a888157e8]
* **SAML/LDAP login for users archived by the inactivity janitor**: A user signing in through SAML or LDAP was locked out if the inactivity janitor (`system.janitor.users.archive_nonactive_after_days`) had archived the account for being idle. The federated authentication itself succeeded, but the archived account was then refused and the login looped back to the login page, while the login event was still recorded as a success — so the cause was invisible in the event log. A successful SAML/LDAP login now reactivates the account: it clears the archived flag and refreshes `last_seen_at` (which also keeps the janitor from immediately re-archiving it), and logs the reactivation. Disabled and not-yet-valid accounts are still refused. See [Services → Janitor](https://docs.fylr.io/for-administrators/readme/services#archive-inactive-users-after-n-days). \[a742f4353]
* **SAML/LDAP login collision hidden behind a raw database error**: When a federated login could not find its user by the configured lookup column and created a new one, but the account already existed under a different unique key — for example an SSO account whose stored reference no longer matched its email — the insert collided on the unique email (or login) and the login was refused with only a `duplicate key value violates unique constraint` line in the event log. The event now names the offending key and the mapped reference and email, so an administrator can find and reconcile the duplicate account. The login still fails and the user still sees the generic login message. \[b9e5c7d1a]
* **Wrong permissions after switching an objecttype from polyhierarchy to hierarchy**: Switching an objecttype from polyhierarchy to single hierarchy did not remove the extra parents objects had acquired while polyhierarchical — a reindex only queues search jobs, and an object's stored parent links are rewritten only when it is re-saved. Objects therefore kept all their old parents: they stayed listed under categories they no longer belonged to, showed phantom expand carets, and had their permissions computed from an arbitrary wrong parent's subtree, producing *missing permission* errors even for the root user. Only each object's first (main) parent is now honoured once the objecttype is no longer polyhierarchical, without touching the stored rows. The change is therefore reversible: switching the objecttype back to polyhierarchy re-exposes the additional parents. See [Hierarchies and polyhierarchies](https://docs.fylr.io/for-developers/concepts/hierarchies-and-polyhierarchies). \[593cae1f2]
* **`/inspect` object page showed no parents under a polyhierarchy datamodel**: The `/inspect` object page can render an object against any datamodel version through its datamodel selector. Its parent sections, however, keyed off the current objecttype — objecttypes are not versioned per datamodel — so viewing an object against a datamodel in which its objecttype is polyhierarchical (for example an object as it looked before a polyhierarchy-to-hierarchy switch) showed no parents at all. The page now reads the hierarchy mode from the datamodel it renders against, and the generic *Parents* list — which had always been empty for polyhierarchical objects, even in the current datamodel — now lists their parents. The datamodel, mask and linked-version selection also carries across the object and render views. See [Objects](https://docs.fylr.io/for-system-administrators/inspect/objects). \[cb4d51270]
* **Saving without `_pool` on a pool-managed objecttype no longer panics**: A `POST /api/v1/db/<objecttype>` that omitted `_pool` for an objecttype with pool management crashed the save in a recovered panic, which reached the client as an unspecific *ServerGeneric* error and left a stacktrace in the server log. The save is now rejected up front with the proper *ObjecttypeHasPoolManagement* validation error; a `dry_run` of such a save, which used to panic as well, returns the same error. See [Pools](https://docs.fylr.io/for-administrators/permissions/pools). \[10201f371]
* **Preset "Created" date fixed for older presets**: In the preset manager, the *Created* field of presets created before fylr began recording it showed a zero date ("AD 1-1-1 …"). The upgrade backfills the missing timestamp — from the preset's last-modified time where available, otherwise the upgrade time — so the field shows a real date. \[48bb0fd7b]
* **No more repeated "ldap: initialized config" log lines and LDAP re-dials**: On systems where something saved the base config periodically — a plugin writing state into its config block, for example — fylr logged `ldap: initialized config` at INFO every few seconds although the LDAP/SAML configuration never changed, and, with LDAP configured, re-dialed the LDAP server on every save and cache reload. The change detection now hashes the compiled configuration instead of its transport representation and keeps a cache entry per distinct configuration, including failed dial attempts (a broken LDAP server is reported from cache instead of being dialed again until the configuration changes). An unconfigured LDAP/SAML module now logs at DEBUG only, so systems without LDAP see no such lines at all. \[75e891ed9]
* **Uploads into upload collections work with a change-owner workflow**: When a workflow running on insert changes the owner of new records, uploading into an upload collection failed with a server error (`Unable to set _owner … when using "collection"`). The workflow-set owner is now accepted and takes precedence over the owner the upload collection would assign. \[def1ba39f]

## Plugins

### Deprecated CMS integration plugins

These hybrid plugins for easydb5 and fylr are deprecated:

* `easydb-wordpress-plugin`
* `easydb-typo3-plugin`
* `easydb-drupal-plugin`

Make sure to replace them with their corresponding fylr-only version:

* `fylr-plugin-wordpress`
* `fylr-plugin-typo3`
* `fylr-plugin-drupal`

### fylr-plugin-ai-metadata

Version `v0.10.9` makes the `url` setting introduced with `v0.10.2` work across the whole range of OpenAI-compatible providers. Besides the default OpenAI API and proxies such as [LiteLLM](https://www.litellm.ai/), the plugin now also connects to the [Azure OpenAI Service](https://azure.microsoft.com/en-us/products/ai-foundry/models/openai/), to Anthropic's Claude models (through their OpenAI-compatible endpoint), and to local models served by [Ollama](https://ollama.com/), so metadata can be generated fully on-premise. The plugin first requests a structured tool call and, on endpoints whose model cannot answer one — typical for local vision models — retries with the answer constrained to a JSON schema; a model that returns nothing usable is now reported with an actionable error message instead of failing cryptically. The list of selectable OpenAI models has been refreshed to the current generation (`gpt-5.5`, `gpt-5.4-mini`, `gpt-5.4-nano`).

## Frontend

### New

* **Custom rendition presets**: The presets configured in the base config appear as on-demand options in the download dialog and the export version select (image class), grouped under their own heading and showing the configured format. A dedicated editor for the *Custom Rendition Presets* block reuses the download dialog's custom-version option fields with the same conditional inputs, trims whitespace from the preset name as it is typed, and shows a settings summary per preset; Apply is disabled for invalid presets (no display name or no effective setting). See [Custom Version Presets](https://docs.fylr.io/for-administrators/readme/file-worker/custom-version-presets#configuration). (aad526dfc) (b66c3ddf2)
* **Download manager — custom renditions on the fly**: The download dialog lets the user decide exactly how each image comes out instead of only picking from the fixed versions. One or more custom renditions (format, size mode, colorspace, DPI, color profile, watermark) can be added on the fly and downloaded right away, side by side with the admin's custom rendition presets (those stay read-only but remain croppable). Every rendition can be framed in the new crop editor (see below), and across a multi-image selection each file keeps its own crop and rotation, or can be excluded from a given rendition — the export request is resolved per asset so every file is produced exactly as it was framed. Linked objects referenced inside a nested table are now gathered for download as well. (700ad3879) (1d2071cfb)
* **New crop editor**: A reusable crop editor, opened per rendition, that frames each image individually. Draw and resize the crop and pick or lock an aspect ratio — a preset ratio or an exact width × height. A new *Straighten* tool levels a tilted image: arm it and drag a line along an edge that should be horizontal or vertical, and the image rotates so that edge becomes level; alongside it a degree dial fine-tunes the angle by hand, so the rotation is no longer limited to the existing 90° steps. Large images load high-resolution tiles to stay sharp at any zoom, the editor warns when a rendition would upscale the source, and while a large preview loads it shows a blurhash placeholder and a short-delayed spinner. See [Custom renditions and crop tool](https://docs.fylr.io/for-users/additional-features/custom-renditions-and-crop-tool). (700ad3879) (b47ac7985)
* **Consolidate duplicate linked objects**: A new `consolidate_objects` background-task module and an editor shortcut for merging duplicates of linked objects such as keywords, actors or places. In the task manager the sources and target are picked with the editor's linked-object popover — sources multi-select, the target restricted to the sources' objecttype and disabled until sources are picked — and the picker offers every objecttype used as a linked object anywhere in the datamodel, remembers the picked records when a saved task is reopened (in their saved objecttype, showing the now-trashed sources of an executed run), and can be prefilled from a hitlist selection. The object editor gains a *Replace by another record…* item in its 3-dot menu: it counts the records referencing the edited object, confirms via the task module's own rights-aware preview, runs the consolidation immediately (source = the edited object, target = the picked one, delete the source) and reloads the editor in place on the surviving target. The item appears only for a saved record whose objecttype is a link target, and only for users who may create tasks and hold the delete right. (78a8b33c9) (581f4eebe) (ba9b28c54)
* **Two-factor authentication**: The base-config editor gains a *Two-factor authentication* section (enable + method selection), and the group editor gains a "2FA required" toggle. See [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). (e3d078528)
* **Two-factor authentication — authenticator app (TOTP) and passkey**: The user editor shows per-method enrollment status (authenticator app / passkey) with an admin reset link, and users can see and reset their own enrollments in their settings. The login-time method picker, enrollment and verification are server-rendered pages. See [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). (ce74ed4ce)
* **Passwordless sign-in with a passkey**: The login form offers "Sign in with passkey" — the passkey is suggested in the login-field autofill (conditional UI) or via the explicit link (which also covers signing in from a phone). No username or password needed. See [Enabling Two-Factor Authentication](https://docs.fylr.io/help/tutorials/for-administrators/enabling-two-factor-authentication). (34e459241)
* **External share URL per collection preset**: The collection preset editor gains an *External URL for sharing links* field, and the share-link buttons of share entries using such a preset copy/open the configured portal URL instead of the fylr link. See [Presets](https://docs.fylr.io/for-administrators/permissions/presets). (b68667c26)

### Improved

* **License manager**: The license info shows the grace-period end date next to the valid-until date, and lists the full set of license capabilities (including two-factor) instead of only the ones a license happens to carry. See [License management](https://docs.fylr.io/for-administrators/readme/license-management). (9b0c96093) (5bdc1d66f)
* **Password fields hidden for non-password user types**: Email, LDAP and SSO users have no fylr-managed password, so the user editor's password tab now hides the password input, the "set new password at next login" flag and the login-validity window for them (leaving only "login disabled") and strips those fields on save, and the session tray's "change password" item is hidden as well. The system root user keeps the fields. (a510ae73d) (5019a15da)
* **Sign-out on a broadcast logout**: The web app listens for `USER_LOGOUT` on the event stream: a "user"-scoped logout signs the current user out on every device, a "browser"-scoped one only in the browser whose token was actually revoked. Older servers that do not broadcast the event are unaffected. (cb43a2611) (436c8828b)
* **Faster, less blank startup**: A spinner and a subtle fylr logo are now shown inline in the served HTML before the app JS loads, so a slow boot no longer shows a blank screen, and the welcome splash appears as soon as the theme is ready; the connector loading modal waits for the theme so it is styled correctly. (05feacfd0) (fe9568d10)
* **Result grid rendering performance**: Rendering large result pages no longer freezes the main thread — already-loaded standard-view cards render in time-bounded batches that yield between them, the uniform tile size is cached instead of forcing a reflow per card, view-size changes are coalesced and drained in batches (skipping far-off-screen cards), the scroll-load debounce is lowered so fresh regions fill in quickly, and the loading placeholder skeleton is back. A set of lower-level optimizations cuts repeated work across mask and result rendering. (9c92c648e) (2988dfabc)
* **Lazy loading of heavy editor lookups**: The new-record dialog loads pool selectors for linked fields only when "Select pools for linked records" is enabled, and dedups the remaining `db_info` requests (one per linked table, reusing the main record's for self-links); the reverse-linked tool button no longer makes an expensive eager request just to decide whether to show itself. (814e0950c) (0113a08b3)
* **Background task manager**: The task log gets a "show more" button to page beyond the first 100 entries and live-loads while its popover is open (the polling that used to break the layout and orphan the popover is fixed), the task list gains an inspect button to open a task in `/inspect`, the module description is shown under the module select, and the email-recipient form now sends the right format so email users are persisted with the task. (404982748) (df37ad301) (cc7de04e7) (2a682f70c) (ace3078b1)
* **Plugin manager**: Saving is disabled until a zip upload finishes and the upload modal stays open on a save error, the build-info section is enhanced, and a commit URL is built automatically from the pattern declared in the plugin manifest. (3fb22e04e) (5da1f2f4b) (1c37d9726)
* **Nested table pagination**: The table-mode view of a nested column is now paginated. (42ec45eb2)
* **Fulltext file search behind its right**: The "search in file fulltext" checkbox is now gated by the `allow_fulltext_file_search` right, not merely the presence of asset fields, and the search filter itself is gated too so a stale saved preference cannot search asset fulltext without permission. (340cd0f70)
* **Background tasks skip connector data**: Connector instances are not supported in background tasks — the create-task tool is hidden when the selection contains connector objects, connector tags are dropped from the set/unset-tags selector, and the base-config and task search popovers are local-only. (8bdf82b61)
* **Custom XMP tags in export metadata mappings**: The export metadata-mapping editor now accepts a custom `XMP-<group>:<tag>` path typed into the tag selector — previously only import mappings accepted custom paths — restricted to XMP because only XMP is extensible on the server. A deselectable "Type" radio replaces the plain list checkbox so an export tag is a list, localized (loca) or a single value, never an impossible combination; invalid tag input is flagged and blocks saving, the tag's real capability drives which list/loca options are offered, custom tags are stored with a capitalized local name, and each tag's list / loca / printable markers render in the mapping list view. (814954362) (04667a1af) (72df3ed74) (742800b7a) (f73dd28d3) (af0789af1) (1fb9a05d7) (04f48a9cf) (665c87a97) (ea65a32f6)
* **DateTime — BC dates**: Year-month and date-time inputs accept BC dates (for example `-06.2026` or `11.02.-2026 10:18`), and BC-date conversion is corrected. (via CUI update)
* **Metadata mapping — Skip Empty Mapping**: The option is offered only for export (merge) mappings. (7cd9b02cd)

### Fixed

* **Metadata mapping: custom fields no longer share an `_id`**: Two custom fields could end up with the same `_id`, so they shared one drag-wrapper array and editing or removing one leaked into the other and got duplicated on save. New custom fields now get a unique `_id`, and a mapping loaded with a duplicate custom `_id` heals itself on the next save. (0568a9837)
* **Linked-object suggestions in the main search**: Clicking a suggestion now builds the filter from the actual (direct, nested or reverse) link fields instead of a flat objecttype filter, so objecttypes linked only indirectly match instead of returning nothing; the request restricts suggestions to objects some searched-objecttype record actually links to (no more dead-end suggestions), a suggestion that is a hierarchy ancestor filters the whole subtree, the over-eager "skip same objecttype" logic was removed, and the linked-object filters configured in the objecttype manager are applied to the suggestion dropdown. (4fdf79361) (b2189c966) (467cf0f92) (74e841e71) (7f6980415)
* **Required-field message for link, nested and asset fields**: Mandatory linked, nested and asset fields left empty now show the specific "… is required" message instead of the generic "A problem with field …" text. (89a316fec)
* **Connector search and facets**: A remote fylr date-range facet or search no longer doubles the `.range` suffix (which produced `.range.range` and empty results), and objecttypes are no longer missing from the main search-type selector when the connector finishes loading after the initial search. (03327ed84) (6e313a802)
* **Facet popover search with special characters**: The popover search escapes the Lucene-only operators (`& ~ < > @ # "`) that the JS escaping leaves bare, so filtering for terms containing them returns results. (d2ac01929)
* **Expert search with no objecttype selected**: Fixed the expert-search state when no objecttype is selected in the search type selector. (80ec07815)
* **Mask editor default display name**: A new non-default mask now gets the correct default display name. (9332cb90e) (ffd620014)
* **Multilang columns in the group editor**: The save button is no longer disabled when the append mode is selected. (13d17fafd)
* **Geo-JSON multipolygons**: Multipolygon geometries are supported again on `geo_json` fields. (d24710282)
* **Detail hierarchy list**: Closing and reopening a root node no longer expands all of its child nodes. (709d5a87b)
* **Base config `show_script`**: The option now also shows and hides the "tag filter" and "set/unset tags" fields, which previously stayed visible regardless. (f3b4bb049)
* **Firefox autocomplete on the collection filter**: The collection filter input is typed as a search field so Firefox no longer treats it as a username autocomplete. (dc06478f1)
* **Webhook workflow name field**: The empty "Name" value no longer shows "Missing: Undefined". (a3e0a04ad)
* **Text-field overflow**: Added an overflow check for regular text fields. (f0705fe74)
* **Asset browser auto-scroll**: Showing an asset auto-scrolls to the asset browser when the browser is not pinned. (e3d9a2f78)

### Styling

Small CSS refinements from the design team:

* List-view tree handles are offset with CSS variables so their indentation adapts to the parent container or component. (CUI 8e75ea8a)
* Fixed a CSS-variable typo that set the min-width of the main-right column when it holds the hierarchy browser. (795bd8e01)

### Docker images

```
docker.fylr.io/fylr/fylr:v6.34.0
docker.fylr.io/fylr/fylr-server:v6.34.0
```


# Release v6.33.2 (2026-06-25)

Published 2026-06-25 12:24:08Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.2/fylr_checksums.txt)
* [fylr\_v6.33.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.2/fylr_v6.33.2_darwin_amd64.tar.gz)
* [fylr\_v6.33.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.2/fylr_v6.33.2_darwin_arm64.tar.gz)
* [fylr\_v6.33.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.2/fylr_v6.33.2_linux_amd64.tar.gz)
* [fylr\_v6.33.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.2/fylr_v6.33.2_windows_amd64.zip)

## Server

### Fixed

* **Slow save when creating objects with bidirectional links**: Creating or copying an object that set bidirectional links in the same step could take minutes, or time out, when the linked objects belong to a large bidirectional cluster. The only fast workaround was to create the object without the links and add them in a separate, later edit. Such saves are now fast in a single step, so the workaround is no longer needed. \[bb529723ae]
* **Delete workflow ignored its tag filter**: A workflow (transition) restricted to records carrying a particular tag — for example one that blocks deletion of records tagged *published* — was applied on delete to every record regardless of its tags, so deleting an untagged record was wrongly rejected too. On delete the tag filter is now evaluated against the record's own tags, whether the condition was set on the workflow's before or after side. \[20875f128]
* **Constraint-violation tags lingered in search after being cleared**: When a constraint re-check removed the last violation tag from a record — such as a *Unique Key Violation* resolved by fixing the duplicate or by dropping the unique key from the data model — the tag was removed from the record but the search index kept the stale value, so filtering by that system tag still returned the record until a full re-index. The records are now re-indexed when the tag is cleared, so the filter result matches the data immediately. \[1b3491a50]
* **Asset-upload permission scope when sharing collections**: The check that a collection's owner may pass on the *upload file* permission for specific file fields did not always honour the field scope. It is now verified correctly when a collection is shared. \[7f6c53f32]


# Release v6.33.1 (2026-06-18)

Published 2026-06-18 15:01:09Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.1/fylr_checksums.txt)
* [fylr\_v6.33.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.1/fylr_v6.33.1_darwin_amd64.tar.gz)
* [fylr\_v6.33.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.1/fylr_v6.33.1_darwin_arm64.tar.gz)
* [fylr\_v6.33.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.1/fylr_v6.33.1_linux_amd64.tar.gz)
* [fylr\_v6.33.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.1/fylr_v6.33.1_windows_amd64.zip)

## Server

### Improved

* **Owners can download and link their own files**: The owner of a record may now show and download the files attached to it — including direct links and exports — without the pool, objecttype or object ACL granting an explicit `asset_show` / `asset_download` right, the same way ownership already implies read, write and delete. This unblocks the owner principle (a group may upload, each member only manages their own records) without having to open the download right for the whole group. Uploading or replacing files (`asset_upload`) still requires the right, and attaching a file to an owned record continues to require access to that file, so ownership cannot be used to reach files of other records. \[a370be893]

## Fixed

* **fylr backup**: Fixed a crash (nil-pointer panic in `parseCustomData`) when backing up from a source whose schema contains plugin **custom data types** (e.g. during an easydb 5 → fylr migration). The v6.33.0 refactor of the custom-type column mapping left the mapping unset in the backup / restore client, which runs without plugins; custom columns now always carry an empty mapping in that case, restoring the pre-6.33 behaviour. \[c46bbd723]
* **TIFFs with extra channels**: TIFF files carrying extra channels on top of RGB(A) — for example alpha or spot-color channels written by Photoshop — are now converted with ImageMagick instead of vips, which cannot handle them: JPEG previews and transformations failed, while PNG previews were silently rendered black. The number of channels is recorded in the technical metadata as `samples_per_pixel`. In addition, a failed vips conversion now falls back to ImageMagick instead of failing the production job, as long as vips has not yet streamed any output. \[dda0ddbc2]
* **Base configuration / export XSLTs**: XSLT files defined in the base configuration can now be read and downloaded by every authenticated user. Before, reading the `export` base-config section required the `system.config` right, so an export-only user could neither see admin-defined XSLTs nor download the XSLT system files without being granted access to the whole base configuration. Editing the base config still requires `system.config`. \[325d3a54a]
* **Event stream**: Fixed a server crash (`concurrent map iteration and map write`) that brought the whole fylr down when an event-stream client (`/api/v1/event/stream`) connected or disconnected while events were being broadcast. Instances with many active frontend sessions were especially exposed: after a crash all clients reconnect at once, which raises the chance of the next crash and can turn into a restart loop. Event batches are now also delivered to each listener in order. \[c35ad5179]
* **Re-index memory use**: A full re-index no longer exhausts memory and crash-loops on instances that have accumulated very large event payloads. Indexing an event used to load and decode its entire `info` value only to record its top-level field names; it now reads just those names. The most common source of oversized event `info` is also capped at the source: export-download events logged the export's complete file list on every download — and on every failed retry — so a large export could write multi-MB events. Download events now record at most 100 files plus a `files_count` total. \[92f993d387] \[31b655c90e]
* **File-deletion janitor**: The background job that removes the files of superseded object versions used a query that, on instances with hundreds of millions of field-value rows, built a large intermediate result on disk and could run for hours without finishing. It now uses an index-backed anti-join. \[ac512ad191]

## Frontend

### Fixed

* **Metadata Mapping – "Skip Empty Mapping" only for export** : The "Skip Empty Mapping" option is now limited to export (merge) mappings, where it has an effect, instead of also being offered on import mappings where it did nothing. (843c6239c)
* **Base Config – show\_script and tag filter fields** : `show_script` now also hides "tag filter" and "set/unset tags" fields. Previously these stayed visible regardless of the expression, while every other config field already responded to `show_script`. \[98727373c]
* **Task Manager – email recipient form** : Fixed the email recipient form, which sent the recipients in the wrong format so that email users were not persisted in the task. \[543b4a62c]
* **DateTime – concrete BC dates** : Concrete BC dates such as `13.07.-99`, `-13.07.99` and `01.01.-200` are accepted again. A moment.js update had switched on strict parsing, which rejected them. \[CUI, 8f299847]
* **Button – visuals in sync with handler state** : A Button now keeps its visuals in sync when a handler toggles its state from inside activate/deactivate, fixing for example the checkbox style flip when deselecting the last method in a min-checked list. \[CUI, b9748a02]
* **Input – no Firefox resize handle** : Removed the `resize` property from inputs so Firefox no longer renders a resize handle by default. \[CUI, 3e54e7a7]


# Release v6.33.0 (2026-06-04)

Published 2026-06-04 14:28:57Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.0/fylr_checksums.txt)
* [fylr\_v6.33.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.0/fylr_v6.33.0_darwin_amd64.tar.gz)
* [fylr\_v6.33.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.0/fylr_v6.33.0_darwin_arm64.tar.gz)
* [fylr\_v6.33.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.0/fylr_v6.33.0_linux_amd64.tar.gz)
* [fylr\_v6.33.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.33.0/fylr_v6.33.0_windows_amd64.zip)

## Important

* **Data Model**: Due to a wrong internal search.facet setting, masks will be cleaned up automatically when opening the data model. You will see a prompt where you need to click Ok. No other actions needed.
* This release **forces a blocking re-index**. Make sure to plan enough time for this update, as your users will not be able to access the database while the re-index is running. Only `/inspect/` is available while the re-index runs. The re-index clears stray `date_range` aggregation markers from existing objects (see **/api/search** under **Fixed**), and repairs base-type objects (messages, collections, pools, groups) whose long localized free text previously failed to index and dropped out of search (see **Indexer** under **Fixed**). \[609ada17e]
* **Custom produce config**: if your instance uses a custom produce config, re-check INDD handling after the update. INDD files are now produced in the `office` class instead of `image`; the migration moves `indd` accordingly, but INDD only produces versions where your `office` class has `pdf` versions to ride on. With no `office` class, or no `pdf` version, INDD files upload but produce nothing (no thumbnail, preview or pages). Independently of the produce config, INDD files that were already uploaded keep their old single image until you re-produce them — see **/eas, produce config** under **Improved** for how to do that from `/inspect/files`. \[56cfeb641]
* **OAuth login redirects**: a cross-origin destination reached after OAuth login must now be allow-listed via `fylr.services.webapp.loginAllowRedirects`, or the redirect is refused. Same-origin destinations (a local path, or one matching `fylr.externalURL`) keep working without configuration. The default config bakes in `https://*.web.fylr.dev`, `http://localhost:*` and `https://localhost:*`; if your frontend finishes login on another host, add it to the list. See **OAuth login** under **Fixed**. \[545536f31]

## Server

### New

* **/inspect**: New `SQL Query` utility under `/inspect/sqlquery/` that lets an inspect-authenticated user run read-only `SELECT` queries against the configured database, with paging, ordering and a per-browser query history. The endpoint also accepts `application/json`, so it can be driven from apitests. Because queries run with the privileges of the configured fylr database user, it is gated behind a new config flag `fylr.debug.inspectEnableSqlQuery` (off by default). Enable it only on developer / debug instances, and make sure the fylr DB user is not a Postgres superuser. \[96ceacb61]
* **/api/search**: `daterange` values and `date_range` aggregation bucket boundaries can now carry an explicit timezone offset on partial-date precisions (year, year-month, date) — e.g. `2025+01:00`, `2025-12+01:00`, `2025-12-31+01:00`. ISO 8601 itself does not allow timezone designators on partial dates; this is a fylr-specific extension. Untagged values continue to be interpreted as UTC, so existing data and the webfrontend are unaffected. Also removes the long-dead `format` parameter from `date_range` aggregation requests — it has been silently ignored since 2022, and unknown keys are ignored, so clients that still send it are unaffected. \[eb3c57460]
* **/inspect/objects**: The per-objecttype list at `/inspect/objects/<table>/` now answers `Accept: application/json` with pagination meta and the `system_object_ids` on the page, so monitoring can alert on objects stuck in "not found READ" without scraping the inspect HTML. The single-object view at `/inspect/objects/<id>/` gains `?datamodel=<id>` to render an object against any datamodel version (current, historic or uncommitted HEAD) and `?latest_linked=0|1` to choose whether linked objects load at their stored version or the current latest. \[3c5600aaa] \[003a585cb]
* **OAuth2 / `/api/oauth2/token`**: The client-credentials grant now logs in as an anonymous user. A request with `grant_type=client_credentials` resolves (or creates) the anonymous user bound to the browser client and returns an access token for it, so a public frontend can obtain an anonymous session without any user credentials. This requires guest access to be enabled in the base config (`login.guest`); with guest access off the request is rejected and a warning is written to the fylr log. Anonymous token logins are recorded as `USER_LOGIN` / `USER_LOGIN_FAILED` events. The **implicit grant flow is no longer supported**: `/api/oauth2/auth` now accepts only `response_type=code` (so `response_type=token` is rejected), and the token endpoint accepts only the `authorization_code`, `password`, `client_credentials` and `refresh_token` grant types. \[cb9831058]

### Improved

* **Saving objects in large instances**: A save no longer leaves a record "processing" for minutes before it becomes searchable. Previously every term the object references was re-counted on every save; on large databases (millions of object↔term links) recomputing those counts dominated indexing, especially for common terms. A save now re-indexes only the terms whose link to the object actually changed — terms whose link is unchanged keep their count and are skipped — and each term's object count is read from an index-only scan instead of fetching every matching row. Deletes and undeletes still re-index the affected object's terms in full, so trashed objects keep dropping out of `/api/suggest`. The upgrade rebuilds an index on the `object_term` table, which briefly locks it during the (already re-indexing) update. \[a49ab9728]
* **/api/tags**: `POST /tags` now follows a two-step protocol when tags omitted from the request payload would be deleted. If a deleted tag is still referenced in a place that can be cleaned up automatically (`collection.create_object`, `objecttype_tag`, `pool_tag`), the call returns `202` with a `tasks[]` envelope that describes what would be removed and carries a `delete_policy=remove_tags` confirmation button; resend the identical request with that query parameter to confirm. If a deleted tag is referenced in a place that cannot be cleaned up automatically — object tags, the ACL of a right preset / pool / tag / objecttype, an objecttype column- or mask-filter, a workflow transition tag filter, or a path in the baseconfig — the call returns `400` with `code: TagsInUse` and a `parameters.usages[]` array listing each `tag_id`, `context` and the affected `ids` (or `refs` for baseconfig paths) so the caller can resolve each reference and retry. \[49a8222e9]
* **/api/export (CSV / XLSX / XML)**: File-field columns now include the `iiif_url` and `deep_link_url` of each exported version alongside the existing `url`. CSV/XLSX produce `<field>[N].iiif_url` and `<field>[N].deep_link_url`; XML adds `<iiif_url>` and `<deep_link_url>` tags inside each `<version>`. `iiif_url` is populated for image versions whose recipe is IIIF-eligible (`png`/`jpg`/`jp2`/`jpeg`/`webp` up to 32000×32000 pixels), `deep_link_url` whenever the object UUID is known. Empty values are skipped, so columns appear only when there is a URL to emit. The same fields have always been available in JSON exports — this brings the sheet/XML formats in line. \[dff5e821d]
* **/api/export\[merge]**: Stop wiping unmapped tags during exiftool merge exports. Previously a mapping field with `xml_export` paths but no `easydb` source emitted an empty value to exiftool, which clears that tag in the file — so a merge mapping that only configured a subset of fields ended up removing every other tag (e.g. `CopyrightNotice` was lost). The new behavior is opt-in via an `exiftool_export_omit_empty` flag on the mapping (and on the profile), set to `true` in `export_merge.yml` and `empty_export_merge.yml`. Existing mappings keep their previous behavior unless their `profile` matches one of the merge profiles, in which case the migration enables the flag for them. Fields that have an explicit `easydb` source still emit empty values, so an intentional clear is still possible. \[97e110670]
* **/api/export & transport (ZIP)**: ZIP archives delivered by an export download or written by a transport (including the (s)FTP transport) are now Deflate-compressed instead of stored uncompressed, so the resulting `.zip` is smaller. The packaged files themselves are unchanged. \[7b57c3280]
* **/eas, produce config**: InDesign (INDD) files are now produced as multi-page documents instead of single raw images — reclassified from the `image` to the `office` class so `pdf2pages` renders one image per page from the embedded XMP previews. An upgrade migration moves `indd` accordingly in non-default produce configs (see **Important**). A recipe/extension mismatch no longer fails the whole produce config compile at startup; the offending extension is dropped with a warning. Existing INDD files keep the single image they were produced with before the update; to give them the page previews, re-produce them from `/inspect/files`: filter by the `indd` extension and run the **Produce versions** (`produce_versions`) action, which discards the old versions and re-runs each original through the new office-class pipeline. An INDD's pages are its embedded XMP previews, taken from whichever tag carries them — the multi-page `PageImage` set, or a single `ThumbnailImage` written by older InDesign versions. A file with any embedded preview produces the page/preview versions (the count is reported in `technical_metadata.pages`); only an INDD with no embedded preview at all produces no page/preview versions, instead of a single blank image. \[56cfeb641] \[2ee968d10] \[55f936b68]
* **/inspect/migration**: Backup and restore now reconcile deleted objects and the links pointing at them. By default the restore drops link wrappers whose target is soft-deleted, or was purged but still survives only in a historic version — in either case the link can never resolve, so a backup-then-restore no longer leaves the linking object with a "(Purged / Deferred object)" ghost in every version. Two opt-in flags preserve the round-trip: `fylr backup --include-deleted` includes soft-deleted objects in the payload (exposed as "Include soft-deleted objects" on the Backup form), and `fylr restore --include-deleted-linked` keeps the link wrappers instead of stripping them (exposed as "Include links to deleted or purged objects" on the Restore form, covering both soft-deleted and purged targets). Used together, the deleted target is restored as such and its incoming links resolve to it; used alone on the restore, the links surface as `_purged_or_deferred` on read. See [--include-deleted](https://docs.fylr.io/for-system-administrators/migration/backup#include-deleted) and [--include-deleted-linked](https://docs.fylr.io/for-system-administrators/migration/restore#include-deleted-linked). \[894e9564e] \[4266cfd8f]
* **/inspect/migration**: Pools and objecttypes now carry their tag bindings — both the global tag list and any private tags scoped to that pool / objecttype — through the backup payload, so a backup-restore round-trip preserves the per-pool / per-objecttype private tags it previously dropped. \[ae814db5f]
* **/inspect/migration**: Restore now accepts a `rename-versions` parameter that renames file versions (renditions) as objects are uploaded into the target instance — useful when the source uses different version names than the target (e.g. `video.1920p` → `1080p`). An empty target removes the version. The Restore form exposes a `File class` / `Source version` / `Target version` table that grows a row as the last one is filled, pre-populated from the previously stored restore parameters when a backup is selected. See [renaming renditions during migration](https://docs.fylr.io/for-system-administrators/migration/renaming-renditions-during-migration) for the value grammar. \[519b18a38]
* **Rights / saving ACLs**: A user who holds only `BAG_ACL` (not `BAG_WRITE`) on a collection or pool can now change its `_acl` / `_private_acl` without also holding `BAG_WRITE`. `BAG_WRITE` is still required when the request body changes the object itself (e.g. its displayname) or `_owner`, and an empty body still requires `BAG_WRITE`. \[7ca6bb518]
* **Rights / permission errors**: When a save or file exchange is refused because the user is missing a right's sub-permission rather than the right itself, the error now names that sub-permission in bracket notation instead of blaming the whole right. A user who may upload files but lacks the "update and remove allowed" option of "Upload File" is now told they are missing `asset_upload[allow_update_and_remove]` ("Upload File\[Update and remove allowed]") rather than `asset_upload` ("Upload File"). The bracket notation matches the form already used for system rights. \[b303d565c]
* **Base config**: Dependent fields in the base config editor are now hidden while the flag that enables them is off — `register.form`, the `deep_link_access` and `oai_pmh` fields below their `enabled` switch, `webdav.hotfolder_wait_sec`, the `janitor` fields below `active`, and `loca.google_csv`. This declutters the form via `show_script`. \[e4132041e]
* **Plugins**: Plugin callbacks now receive every system config parameter marked `unauthenticated_visible` (e.g. `appearance`, `name`), not just `languages` as before. A new parameter-level `unauthenticated_visible` flag lets you keep individual parameters out of the config handed to plugins. \[c5460e665]
* **Cookies**: The `Secure` flag on cookies set by fylr is now derived automatically from `fylr.externalURL` instead of being forced on for every cookie — an `https://` external URL gets `Secure` cookies, an `http://` one does not. This drops the 6.32 `fylr.debug.cookieAllowInsecure` escape hatch (now removed; configs that still set it are ignored) and lets `/inspect/` login work on HTTP-only installs without extra configuration, which 6.32 had broken. Behind a TLS-terminating reverse proxy the cookies stay `Secure` as long as `externalURL` is the `https://` URL the browser uses. \[5458bf5e5]
* **/inspect/migration**: Restore now accepts a `rename-versions` parameter that renames file versions (renditions) as objects are uploaded into the target instance — useful when the source uses different version names than the target (e.g. `video.1920p` → `1080p`). An empty target removes the version. The Restore form exposes a `File class` / `Source version` / `Target version` table that grows a row as the last one is filled, and is pre-populated from the previously stored restore parameters when a backup is selected. See [renaming renditions during migration](https://docs.fylr.io/for-system-administrators/migration/renaming-renditions-during-migration) for the value grammar. \[78620]
* **API documentation**: a comprehensive audit and correction of the OpenAPI documentation (`/inspect/apidocs/`) against the server code. Every endpoint now opens with a description and a brief per-method introduction, documents all URL parameters, the full request body and complete response coverage (the success case and every error code), and spells out each enum value. The OAuth2 / OpenID Connect endpoints (`/api/oauth2/*`) and the discovery document (`/.well-known/openid-configuration`) are now documented, and endpoints carry short "Differs from easydb 5" notes where fylr behaves differently. The same reference is now also published on GitBook at [docs.fylr.io](https://docs.fylr.io/for-developers/api), and `/inspect/apidocs/` offers a GitBook-flavoured OpenAPI 3.0 spec download (datamodel stripped) next to the full OpenAPI 3.1 JSON. \[66605]
* **LDAP / SAML user mapping**: The SSO login user-mapping can now target the user's address fields — `country`, `state`, `postal_code`, `town`, `street`, `house_number` and `address_supplement` — in addition to the existing `reference`, `login`, `displayname`, `email`, `company`, `department`, `first_name`, `last_name` and `phone`. Map an IdP attribute to one of these keys in the LDAP or SAML *User mapping* table and the value is written to the matching field on the user at login; previously these keys were silently dropped. \[8c1f31fa3]

### Fixed

* **/api/search**: a `type: "geo_shape"` query that omits its `geo_shape` object or `field` reported an error naming a non-existent `geo_polygon` key; the message now names the real `geo_shape` key. \[66605]
* **bgtask metadata mapping**: Two bugs that surfaced together via the ai-metadata plugin. (1) A new object version produced by an `overwrite_values` run was attributed to the previous version's author, so a task run by user B showed up in the change history as a change by user A — the version is now attributed to the user of the saving session. (2) When a mapping field targeted a custom-data-type sub-field (e.g. `weblink.text_plain`) and the recipe returned an empty string, overwrite mode replaced the whole CDT and silently cleared its other sub-fields (e.g. `weblink.url`); empty recipe results are now skipped. \[b4480b92d]
* **/api/search**: Stop `date_range` aggregations from reporting a phantom hit on the day after a `date` / `datetime` / `daterange` value. The indexer used to write an extra marker at the exclusive end of a value's range (the `23:59:59Z` second), which slipped into the next calendar day when an aggregation bucket carried a non-UTC offset — a `1977-05-29` value would then match a `1977-05-30` day bucket queried in `+01:00`. The forced re-index (see **Important**) clears the stray markers from existing objects. \[609ada17e]
* **/api/search**: Map clustering (`geohash_grid`) now reports a stable `geo_center`. It used to be the centre of the geohash cell, which changes at every zoom level, so a fixed cluster of objects appeared to jump or duplicate as the user zoomed in on the map. `geo_center` is now the actual centroid of the objects in the bucket and stays put across precision levels. \[2004bbc32]
* **OAuth login**: Reworked handling of the redirect destination carried in the OAuth `state` parameter at the webapp callback. Same-origin destinations — a local path, or one matching `fylr.externalURL` — are accepted by default; cross-origin destinations must now be allow-listed via the new `fylr.services.webapp.loginAllowRedirects` setting, which matches host names with RFC 6125 wildcard rules (a single `*` is allowed only as the entire leftmost host label) and accepts a port wildcard — `:*` in place of the port matches any port (including none) on the same host, so `http://localhost:*` allows a frontend dev server regardless of which port it picked. The default config bakes `https://*.web.fylr.dev`, `http://localhost:*` and `https://localhost:*` into the allow-list; customer configs replace the list unless they use `loginAllowRedirects+:` to extend it or `loginAllowRedirects-:` to drop a baked-in entry. See also **Important**. \[545536f31] \[c395ff438] \[7d8a69429]
* **/api/eas/rput**: Validate the URL passed to `rput` against a configurable host blocklist before opening the outbound connection. The new `fylr.eas.rput.blockedHosts` setting accepts IP/CIDR, exact-hostname and single-label-wildcard entries (each optionally pinned to a port). The compiled-in default blocks loopback, link-local and private (RFC1918 / ULA) ranges (`127.0.0.0/8`, `::1/128`, `169.254.0.0/16`, `fe80::/10`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `fc00::/7`). fylr's own internal services are added automatically on their exact host:port. Host names from the URL are resolved and the connection is pinned to the resolved address. The API listener stays reachable so the existing tile-restore workflow (`rput` on a `/api/v1/eas/zoom/...` URL) keeps working. \[e7fdafbab] \[69552956b]
* **/api/eas**: `iiif_url` and `zoom_url` (signed URLs, and those carrying an `obj_uuid`) were broken when a version name contained a `/`; the version name is now escaped properly. \[327e22cc2]
* **Datamodel / expert search**: The auto-generated all-fields ("expert search") mask no longer defaults `search.facet=true` on every column — only on the column types the webfrontend renders a facet toggle for (boolean, date, datetime, daterange, link). This stops the facet flag from riding along silently on text/file columns. Only newly created masks pick up the corrected default; existing masks keep their stored `facet` flags. \[a179d2337] \[ed735999d]
* **/api/v1/user and /api/v1/group**: Responses include the `_acl` field only for callers that hold `system.user`/`system.root` (for `/user`) or `system.group`/`system.root` (for `/group`). Applies to GET, list, POST and DELETE on both endpoints. `/api/search` results for `type=user` and `type=group` no longer include `_acl`; fetch the object via the endpoint above as an administrator to read its ACL. \[68a06c30b]
* **Plugin loader**: Plugin paths are now treated as literal directories; the long-broken glob support was dropped. A missing path is logged as an error and skipped, so misconfigurations stay visible. \[37cc4628b] \[fecad83b1]
* **Base config**: Fixed loading of the client block time from the base config. \[451fcc939]
* **/api/db**: Fixed an occasional deadlock between the indexer and a concurrent purge that could fail `DELETE /db/<table>?delete_policy=purge` with a serialization error under parallel load. \[86a536369]
* **Logout**: Fixed a nil-pointer crash during logout. \[a1781941b]
* **Pool / objecttype captions & watermarks**: Changing a pool's or objecttype's caption or watermark configuration and confirming the resync could leave some file renditions rendered with the previous configuration. The cache id that tells file-produce workers to reload base data was bumped just after the change had committed instead of together with it, so a worker could start the queued resync, read the new configuration, and still re-render against the stale cache. The bump now commits atomically with the change, so every reader observes the new configuration. This affects all cached base data — pools, objecttypes, masks, datamodel, collections, transitions, tags, ACL groups and plugins — not only captions. \[02c1239c8]
* **Indexer**: Rejected index jobs for base types (collections, pools, groups, users, messages, terms) are now re-queued and retried, the same as object jobs. Previously, when the search cluster rejected jobs under load (`rejected_execution_exception`), only objects were re-queued; a base type rejected this way stayed unindexed — e.g. a newly created group or pool remained `found:false`. The base-type index-error event also no longer records an empty type. \[f6386a9cd]
* **Indexer**: Long localized free text on a base type (a message body, a collection or pool description, a group display name) no longer breaks indexing. The value was indexed as a single keyword term, and once it passed Lucene's 32766-byte limit the search cluster rejected the whole document ("immense term") — the object dropped out of the index and vanished from the frontend, and a re-index could not recover it. The text is now chunked like object text fields already are; this release's re-index repairs existing affected objects. \[5216dcc85]
* **Docker image (TIFF clipping paths)**: The bundled ImageMagick is pinned to the last good upstream patchlevel, `7.1.2-21` (from a Debian snapshot). ImageMagick `7.1.2-23` broke rendering of embedded TIFF clipping paths — the clip step that cuts the background produced a blank, fully transparent preview, so every clipped rendition (small, preview, huge, zoom, full) came out empty. The pin is a temporary workaround and will be removed once a fixed ImageMagick reaches Debian. \[b74edd8ef]

## Frontend

### New

* **Metadata Mapping – omit empty fields on Exiftool export** : Added a new "Omit empty fields from Exiftool export" checkbox in the general tab of the mapping editor. It only appears for fylr mappings whose profile has Exiftool export enabled, and lets users opt in to skipping fields without an easydb source instead of clearing the tag in the file. (467a7ad1c)
* **Search by multiple object IDs** : Search now supports filtering by several system object IDs from a single URL parameter (`?sids=1,2,3`), generating one combined query element instead of one per ID. This makes shared search URLs shorter and easier to build when targeting many objects at once. (d718b8b24)
* **Nested Table Popover events** : Added two new events fired when a nested popover is opened and closed, giving plugins and other logic a hook to be notified of these events. (cb0891100)
* **Base Config – show\_script in table fields** : Added support for `show_script` in table field types. Fields in table rows can now be hidden based on the evaluation of a `show_script` expression. (a01dda7e3)

### Improved

* **Task Manager – improved task editor** : Improved the task editor and removed the beta limitations. (42d3f19ff)
* **Task Manager – layout tweaks** : Swapped the Module/Title order and reverted sections to headlines. (9db7730fe)
* **Editor – incompatible tags on pool change** : When changing the pool, incompatible tags are now removed and the user is warned before saving. (0272cddee)
* **Secure token handling on uploads** : The authentication token is no longer sent as a URL parameter in PUT/POST requests for EAS uploads; it is now passed in the request headers. (8d9aa47c6)
* **Browser context menu on text and inputs** : The context-menu override on right click is now disabled when the target is selected text or inside an input, so the native browser menu (copy/paste, etc.) works as expected when handling text. (787728a6b)
* **Search – "remove all" button in ez5** : Enabled the "remove all" button in the search for ez5. (96719c1c4)
* **CUI.xhr – custom request headers** : Added support in `CUI.xhr` for adding custom headers to a request. (CUI, 0d889151)
* **Tag Manager – grouped "tags in use" errors** : The `TagsInUse` error usages are now rendered grouped by tag with clickable links, making it easier to find where a tag is still in use. (3022aa517)
* **Customize templates – localizable preview column** : The preview column in customize templates is now localizable. (8e01b4e6f)
* **Customize templates – localizable tab titles** : The tab titles in customize templates are now localizable. (b4238189d)

### Fixed

* **Permissions – share dialog with only BAG\_ACL** : Users with only `BAG_ACL` (and no `BAG_WRITE`) can now open the share dialog of a collection or pool and save their permission changes; only the ACL fields are sent so the backend accepts the save instead of rejecting it. (6b8911497)
* **Logout in cross-server mode** : Fixed logout in cross-server mode so the request is sent to the destination backend instead of the frontend server, and the user is redirected back to the frontend once the backend completes the logout. (85f62dae4)
* **Export inspect icon** : Fixed a bug that hid the inspect icon for exports when not in the main search view. (a699881e1)
* **Connector availability check** : Fixed an error when checking connector availability for the new version of the connector plugin. (964edeb81)
* **Print Manager** : Fixed harmless warnings from print assertions, stopped the frontend from trying to render tooltips in print scenarios on some browsers like Firefox, and turned a `cUI.dom.empty` error into a log warning instead of throwing. (1463feb7a)
* **Cross-instance request headers** : Fixed an unsafe header in cross-instance requests (such as the connector) and cleared some harmless console warnings in connector scenarios. (3dbff6667)
* **User preferences for LDAP/SSO users** : Fixed the visibility of the user webfrontend preferences tab in the user manager so it is shown for LDAP and SSO users. (84c34883b)
* **Hierarchy "not found" label** : Fixed the "not found" label in search for hierarchy mode set to auto, which was wrongly using the top-level "not found" variant. (5cae2e42c)
* **CSV importer race condition** : Fixed a race condition when building the CSV importer configurator panel, which could render before the proper dbinfo data was available and throw an error. (47b32f9bd)
* **Filter pool label for remote pools** : Fixed the filter pool label for remote pools. (ff89256d9)
* **Console error when no user is selected** : Fixed a console error that occurred when no user was selected. (de6f0dc94)
* **Ctrl+S in editor** : Fixed the Ctrl+S shortcut in the editor. (5058948ce)
* **NoMasksForCreate API error** : Fixed the `NoMasksForCreate` API error that occurred on a rare edge case after login. (e5f9d669f)
* **CUI.DOM.empty – less destructive assertion** : Made the `CUI.DOM.empty` assertion less destructive: it now logs a warning instead of throwing an error that could break frontend logic. (CUI, ade1eedb)
* **Parent Column link in "Short" rendering** : Fixed the link to the parent object in the parent field when the object is rendered as "Short"; the generated search was incorrect. (ecb892abe)
* **Base Config – guard for fields without a name** : Added a guard so Base Config no longer dies when the server sends a field without a name in the base config file worker definition (which can happen, for example, when a buggy plugin tries to add configuration). (80314380a)
* **Datamodel – clean up stray facet flag** : The Datamodel manager now detects and cleans up an old internal `search.facet` setting that some masks were still carrying on fields where it shouldn't be. When opening the manager, the user is prompted to re-save the masks so the leftover flag is removed and hidden fields stop showing up in expert search. (344f68c2c)
* **Task Manager – output-only details form** : The form that contains the task details is now rendered as "output-only", applying a slightly lesser margin. (c9f329773)
* **Fields – navigation toolbar visibility** : Made sure the navigation toolbar is actually visible so its margin is applied. (c87f782a6)


# Release v6.32.1 (2026-05-20)

Published 2026-05-20 10:27:00Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.1/fylr_checksums.txt)
* [fylr\_v6.32.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.1/fylr_v6.32.1_darwin_amd64.tar.gz)
* [fylr\_v6.32.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.1/fylr_v6.32.1_darwin_arm64.tar.gz)
* [fylr\_v6.32.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.1/fylr_v6.32.1_linux_amd64.tar.gz)
* [fylr\_v6.32.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.1/fylr_v6.32.1_windows_amd64.zip)

## Server

### Fixed

* **S3 Storage**: Fixed a regression introduced by an updated AWS S3 SDK when uploading to S3-compatible servers (Ceph RGW, older MinIO, ...). The new SDK default attaches CRC32 trailers to multipart upload parts (`aws-chunked` / `STREAMING-UNSIGNED-PAYLOAD-TRAILER`), which several non-AWS backends reject with `XAmzContentSHA256Mismatch`. Checksum calculation is now pinned to `when_required` on both the upload manager (`s3blob.Options`) and the underlying `s3.Client`, so requests go out as `UNSIGNED-PAYLOAD` again. Uploads to AWS S3 itself are unaffected. \[7aca10628] \[b9fc26748]


# Release v6.32.0 (2026-05-05)

Published 2026-05-05 11:08:00Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.0/fylr_checksums.txt)
* [fylr\_v6.32.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.0/fylr_v6.32.0_darwin_amd64.tar.gz)
* [fylr\_v6.32.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.0/fylr_v6.32.0_darwin_arm64.tar.gz)
* [fylr\_v6.32.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.0/fylr_v6.32.0_linux_amd64.tar.gz)
* [fylr\_v6.32.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.32.0/fylr_v6.32.0_windows_amd64.zip)

## Server

### New

* **/api/config/list**: Added `show_script` as a property of config definitions. With this, frontends can use JavaScript to evaluate if the parameter of that definition should be shown or not. This also allows plugins to create form dependencies where inputs are shown depending on selected values elsewhere. **fylr** performs a JavaScript syntax check on the values of `show_script` with no further processing. \[0a42b014d]

### Improved

* **File Worker**: Set `technical_metadata.clipping_path` for `TIFF` images. With this, it is easier to debug **fylr** automatic clipping for `TIFF` to `PNG` conversions. \[b85a2c1fc]
* **Plugin updater**: Improved logging for update cases, also refined code to make updates more reliable. \[d4816471d] \[ed52ea0d0] \[e41031996]
* **/api/search**: Add `geo_point` for geo aggregations in the index. Instead of relying solely on the full geometry shape for aggregations, we now also index a representative centroid point for each geometry alongside the original shape. Spatial search and filtering continue to use the full geometry. Map clustering aggregations (geohash grid, geotile grid) now use the centroid points. A polygon's centroid falls in exactly one grid cell, so each document is counted exactly once per cluster bucket, producing correct and reliable counts. Requires a re-index of affected systems. \[19b9b82ae]
* **/api/mask**: Add `remove_only` as a frontend parameter much like `append_only`. The new parameter advises frontends to allow only removal of nested entries. \[fa0be463a]
* **Secure Cookies**: This patch adds more secure settings for cookies. Also added is a new config parameter `fylr.debug.cookieAllowInsecure` which allows setting cookies via HTTP too (as it was the default before this patch). \[33e67645d]
* **Plugin Updater**: Use current location settings. This patch reloads the locations before trying to update plugins. After a location change it could happen that the plugin updater can no longer access the obsolete locations to store updated plugins. \[0ccc5f4e9]
* **/api/user**: Ignore pin codes of unknown collections. This patch skips over unknown collection IDs instead of returning a `WrongCollection` error. This helps with problems which can occur if a frontend simply bounces back collection pin codes from a user without knowledge of collections which have been deleted since the last save of the pin codes. \[b00b625be]
* **fylr binary**: Reduce **fylr** binary size. By omitting symbol and DWARF debug info, the **fylr** binary is about 25% smaller. \[aa97c68c9]
* **License Management**: Accept old binary (>1 year) for **buy licenses** if license hasn't expired yet. Before this fix, the exception only applied to expired licenses. Also, don't consider unreleased versions when checking expired buy licenses. \[c8dda7f2d] \[c961979cb]

### Fixed

* **Hotfolder**: Fixed importing of files with identical names inside different directories. **fylr** would skip duplicate files and not import them before this patch. \[a580dd2d6]
* **/eas/rput**: Do not allow backend URLs to be used as remote URLs. \[6e389cfef]
* **/api/db**: Use finer grained locks to ensure object uniqueness. The new approach gets rid of the exclusive table lock `object_unique` which caused problems during parallel inserts if the Hotfolder was used. Also, sleep 500ms instead of 10ms for the deferred linked objects check. This relaxes the pressure during parallel inserts. \[5eab4d54f]
* **/api/export**: Improve search fields compilation. This fixes the search fields compilation for linked objects. The previous code would fail to keep the deep linked object path for search fields. Also added a check to the export that no `fields` or `eas_fields` can be saved with a too shallow merge depth. \[963b5b87f]
* **/api/db**: Improved sequence handling for deferred linked objects. The maximum `object.system_object_id` sequence is now adjusted when inserting a deferred linked system object. Previously the sequence was left unadjusted, which could cause `DeferredLinkedObjectMatchingSystemObjectId` errors after a migration. The error has been removed since it is now avoided by design. Existing sequences are also adjusted on upgrade to match the maximum known `system_object_id`. \[146830e81]
* **/api/config**: Fixed wrong 202 response about changed languages even if no language settings were changed. \[3db62418d]

## Plugins

### fylr-plugin-ai-metadata

Version `v0.10.2` introduces flexible backend configuration via a new `url` setting. In addition to the default OpenAI API, you can now point the plugin at any compatible endpoint — including [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-foundry/models/openai/) or OpenAI-compatible proxies such as [LiteLLM](https://www.litellm.ai/). This makes it straightforward to use your organization's existing AI infrastructure or to route requests through a cost-management or rate-limiting layer.

## Frontend

### New

* **Reindex Indicator**: A new indicator has been added in the tray app section to show whether the instance is running a re-index. Additionally, a clearer warning will be displayed if a user saves a record while a re-index is running.
* **Clipboard Support**: Support has been added to use the clipboard for uploading assets into fylr. This is supported in the collection hotfolder and in the object creation menu. You can now copy and paste files from your system or directly from the browser. This feature also includes support for directories, allowing you to copy and paste folders containing assets. Clipboard support also handles blob data, meaning you can copy image data that is not a file, such as a pixel selection from an image editing tool or a system screenshot.
* **Date Filters**: A new virtual filter has been added to allow filtering objects with unknown day or month values. For example, if a group of objects only has a year defined, they will appear under the new "unknown" category at the month and day level. This enables more granular filtering of objects with partial dates.
* **Expert Linked Fields**: Special fields for searching linked objects have been added to the expert search for individual object types. When using expert search across multiple object types, linked objects of the same type are grouped into search fields that allow users to search across all fields of that type at once. This is now also available when only a single object type is selected, making it easier to search linked objects of the same type within the same OT.
* **Base Config**: A new feature has been added to field definitions in the base config: `show_script`. This new property allows executing a boolean JavaScript expression to show or hide a field. For example: `show_script: (config.other_field=="foo")` will make the field visible only if the condition is met. This enables more dynamic and less cluttered base config forms.
* **Click handler in Linked Objects**: Linked objects in the detail view are now interactive, displaying a quick view of the linked object. Additionally, using modifierKey + click will open the linked object in a new tab.

### Improved

* **Save dialogs**: Several save dialogs across the app managers have been improved and simplified.
* **Hierarchy Search**: Improved the message shown when an object has no available children. This avoids ambiguous messages that previously suggested incorrect permission issues.
* **Export Manager**: Improved to include EAS field data from linked objects even when those fields are not configured as standard. Users must select the corresponding “Merge Linked Data” option and set a merge depth ≥ 1. Included EAS fields will appear in the files tab as usual. Additionally, file tags now display the full field path instead of just the field name.
* **Collections**: Collections now display their name in the panel header.
* **Collection info**: Added created and updated timestamps to the collection info panel.
* **QL Support in shared search**: Added support for using query language in shared URLs (Query Language in the frontend is experimental and currently undocumented).
* **Shared Editor Templates**: Users can now view a shared editor template even if they do not belong to the group it was shared with, provided they have at least read access to that group.
* **Collection Manager**: If a user does not have permission to create collections and does not have access to any editable collections, the “Add to collection” and “Remove from collection” options will no longer appear in search.

### Fixed

* **Collection Pin Code**: Fixed an error message shown when a user lacks permission to access a folder with a pin code. Previously, it incorrectly showed “Incorrect pin code” even when correct. It now properly indicates a permission issue.
* **Filter Manager**: Fixed an issue that prevented using saved searches in tasks when the saved search had a filter configured in the filter manager.
* **Headless CSV Importer**: Numerous fixes have been applied to the headless CSV importer module, used by the plugin **ylr-plugin-collection-csv-import**, which enables automated imports triggered by CSV uploads in a collection.
* **Collection Upload Plugin**: Fixed rendering issues with plugin parameters in collection uploads. Field sorting defined in the plugin manifest is now respected.
* **Collection Upload Report**: Improved the report shown when using the collection hotfolder, now providing clearer information.
* **Sort Manager**: Fixed behavior when using connectors with remote instances.
* **Right Presets**: Fixed two major bugs in the right preset manager. Record preset tag settings can now be properly cleared, and the preset list updates correctly after deletion.
* **Search Input**: Improved validation to prevent sending incompatible searches to fylr that only contain wildcards.
* **CSS**: Multiple style adjustments have been made across the app.
* **Group Manager**: Improved the information shown when copying user settings; unavailable OTs are no longer displayed.
* **Control Button on fields**: Fixed a bug where the control button of a field was displayed on a new line.
* **Collections context menu**: Fixed a bug that showed the share collection option to users without the required permissions.
* **Connector support**: Fixed a bug causing an infinite loop when a fylr instance configured in the connector needed to refresh its auth token.
* **Collection Settings**: Fixed change detection in collection settings. Previously, the save button remained active after a change even if it was reverted.


# Release v6.31.1 (2026-04-21)

Published 2026-04-21 13:11:59Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.1/fylr_checksums.txt)
* [fylr\_v6.31.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.1/fylr_v6.31.1_darwin_amd64.tar.gz)
* [fylr\_v6.31.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.1/fylr_v6.31.1_darwin_arm64.tar.gz)
* [fylr\_v6.31.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.1/fylr_v6.31.1_linux_amd64.tar.gz)
* [fylr\_v6.31.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.1/fylr_v6.31.1_windows_amd64.zip)

## Server

### New

* **/api/eas & Hotfolder**: Support **hierarchical linked object** linking. With this an uploaded folder structure (as uploaded into a collection) can be turned into links into a hierarchical object type. \[a379c9db2] \[4c89b2ab1] \[7ca1d8954] \[34978db2e] \[0ec0c92af]
* **/api/eas**: Added new query parameter `filenames`. This allows frontends to send a patch alongside with a filename to make use of the new feature to link to **hierarchical linked objects**. \[726f3408e]

### Improved

* **Zoomer**: Support `WEBP` extension. Now files ending `.webp` will publish a `iiif_url` and `zoom_url`. The zoomer will still produce `JPG` tiles, but it can do it from `WEBP` files now too. \[112cbb0c1]
* **System Rights**: Re-ordered frontend features rights. \[19a4b204b]
* **File Worker**: Add DPI parameter to recipe `browserthumbs`. Also, lowered log severity for actions from `INF` to `DBG` level. \[80b27dae5]
* **/api/collection**: Don't require a PIN from owner. Before this patch, **fylr** would require the **pin for a collection** also from the owner of the collection. This was wrong. It was already allowed for users carrying the `BAG_ACL` right, but the owner check was omitted. \[f53a3fd73]
* **fylr backup**: Backup & restore plugins before anything else. With this patch the plugins are output before any other objects. This fixes problem with mapping which couldn't be imported because they require a plugin to be enabled. \[f4d8e1cde]

### Fixed

* **/api/eas & Hotfolder**: Index collection after new file injects. This fixes a missing `OBJECT_INDEX` event which caused the frontend to not properly update collection counts and collection detail if objects were added via Hotfolder or `/api/eas`. Also, fixed a case where updates didn't work with a datamodel using reverse objects. \[18a02488e] \[9a4b37c26] \[6c9f74e4a]
* **/api/search\[aggregations]**: Aggregations of first level **polyhierarchical objects** are fixed. Thisd requires a manual re-index for affected instances. \[20ed1a992]
* **Watermarking & Caption**: Reverted *Imagemagick* induced change in watermark & caption rendering. The bug in *Imagemagick* which triggered this has been fixed in Debian `forky` (this is what we are using in the **fylr** Docker image). The patch in 6.31.0 caused problems on **Windows**. \[6b17105c4]
* **/api/config**: Fixed missing access to path containing special characters: `. | # @ \ * ! ? [ ] { } ( )`. Some of these characters were supported already before. \[eda44eb3e]
* **/api/group**: Index all users if `_auth_method_group_maps` is used. If a group uses this, we must re-index all users when that group is saved. Before, this was not done, so the indexed user were not correct in cases where e.g. a group assigned itself to all users. \[4e21bf430]
* **/api/db**: Fixed parallel access for `db_pre_save` plugins. If a `db_pre_save plugin` would access `api/db`, fylr would dead lock due to impossible lock acquire. Fixed by trying to get the lock, and sleeping 10ms before trying the next time. \[28d08e877]
* **/api/oai**: Avoid **xslt error** for empty sets. If an OAI set is empty (using ListRecords), the XSLT sheet conversion would eventually fail because it was fed no data. This fix doesn't call the XSLT sheet if there is no records found in the set. \[6d42e4288]

## Frontend

### New

* **Collection Upload** : Adds support in the collection upload configuration for the new **hierarchical linked object** property. This new functionality allows mapping a directory to a hierarchy of linked objects. See backend notes for more information.
* **Directory Drop**: We have added support for drag and drop of directories in fylr. This works both in collection upload and in the new editor modal. This functionality allows the user to drop a directory (which can include subdirectories) with assets, and all assets will be uploaded to the app.

### Fixed

* **Group Default Frontend Pref**: Fixed the functionality to configure default preferences for users in groups. This feature was not working correctly and users never received the default prefs.
* **Quick Access Objecttypes**: Fixed the construction of the hierarchy for polyhierarchical object types configured to appear in quick access. Before this patch, values could appear with completely incorrect hierarchies.
* **BG Task From Collection**: Fixed the creation of Background tasks from **search collections**.
* **Base config**: Fixed how default values are displayed in multiline fields in the base config. They now follow the same pattern as other textual fields, showing the default value as a placeholder.
* **CSS**: General CSS fixes have been applied.
* **Expert Search Filter**: Fixed a bug that hid the modifier buttons (has value / without value) for nested tables when using the expert search filter.
* **Unsaved change Dialog**: Fixed a bug that caused the unsaved changes dialog to require confirmation twice in some managers. Additionally, the message has been improved in certain managers for this dialog.
* **Menu list Tooltips**: Fixed a bug where tooltips in menus were not displayed correctly.


# Release v6.31.0 (2026-04-09)

Published 2026-04-09 09:56:58Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.0/fylr_checksums.txt)
* [fylr\_v6.31.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.0/fylr_v6.31.0_darwin_amd64.tar.gz)
* [fylr\_v6.31.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.0/fylr_v6.31.0_darwin_arm64.tar.gz)
* [fylr\_v6.31.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.0/fylr_v6.31.0_linux_amd64.tar.gz)
* [fylr\_v6.31.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.31.0/fylr_v6.31.0_windows_amd64.zip)

## Server

### New

* **Indexer**: Added [synonym support](https://docs.opensearch.org/latest/analyzers/token-filters/synonym-graph/) for mapping, ICU folding & improved CJK indexing. The base config can now configure per database language synonym lists. These list will be applied inside the indexed documents to e.g find "pc" when searched for "computer". Support generic [ICU folding](https://docs.opensearch.org/latest/analyzers/token-filters/icu-folding/) for base type text fields as well as object type strings & text fields. This also is a per language setting. With this, the German language "de-DE" can be set up in a way the `äöü` are normalized to `aou`. Improved CJK support: The previous solution would not remember the correct order of the CJK tokens, all would stay at pos 0 in the same word. With this, we add a " " between the CJK characters to make positional queries work (like `intervals_ordered`). Also, split strings into single CJK tokens before searching. \[1f9578d71]
* **Login**: **Lock accounts** after 3 failed attempts. For 1 hour accounts are locked if 3 login attempts failed with wrong password. This setting can be changed in the base config. \[d86b568ee] \[fd9ab5e87] \[9ca56aeee] \[25bd86a8f]
* **/api/\[search|db]**: Add `max_merge_depth` and `merge_linked_objects` as query parameter. The new feature allows to load deeper than the default first linked object as standard. We had this already for `api/export` and `api/oaipmh`, but not for `/api/db` and `/api/search`. With this the task module `metadata` now supports mapping deep asset links, where the asset is inside a linked object. \[dd799888c]

### Improved

* **/api/export**: Support **custom DPI** for custom versions. This sets the DPI resolution (width & height) for custom images if given in the custom export definition. \[eda584a4c]
* **/inspect**: Add request header to the output. Also output environment of the running **fylr** binary, if set up in `fylr.yml`. The new `fylr.debug.inspectShowEnvironment` can be used to output the environment **fylr** was started with in `/inspect/`. \[f9563ce68] \[a4be23f36]
* **fylr backup/restore**: Restore plugin system rights for users & groups. \[bedc9393b] \[7071f67d4]
* **Client IP detection**: Support `x-real-ip`. In addition to `x-forwarded-for` and request `remoteaddr` we now support `x-real-ip` (used by nginx) to determine the user's real IP address. The order is x-real-ip, x-forwarded-for (first item), remoteaddr. \[3224a4481]
* **/api/objects**: Support `disposition` in query string. \[d74920fdf]
* **/api/objects\[IIIF]**: Manifests for types *Image*, *Audio* and *Video*. This patch tries to versions for browser supported audio, video file extensions. \[0350b0f60] \[9f707d2c6]
* **Indexer**: Improved re-queueing of object index jobs. If a bulk request fails in bulk mode, the error is not specified per item but the whole request is answered with one error. In that case the code now stores one error per sent item, enabling the error handler to properly re-queue all not index items. Before this would only work for error messages which contained an individual response list. \[659d5517e]
* **Zoomer**: Limit to 32k, add `zoom` version. For really big images (>100k pixels), the zoomer would fail to produce the interim zoomable BMP. This patch adds a version `zoom` which will be produced for original with a dimension > 32k. Also, no IIIF/ZOOM url is available for images bigger than 32k. The `zoom` version is not automatically produced after an update, this can be initiated manually in `/inspect/files/`. \[40f96b344]
* **fylr metadata**: Limit `--clipping-path` to files < 200MB. Bigger TIFFs take forever and use a lot of memory with `magick identify -verbose`, so this is not feasible to run. Limit to 200MB. \[db07cfff2]
* **/api/db**: Support **deferred linked objects in parallel requests**. With two parallel requests inserting a relation A -> B where A is the father of B, we couldn't guarantee that the linking happened when deferred links where used. This patch uses a PG advisory lock to link the deferred objects outside the transactions. Errors (such as wrong object type) which occur after a parallel insert scenario can only be logged as the original inject has already passed. This patch also resurrects `fylr restore --max-parallel` and the accompanying settings on the `/inspect/migration/` page. Also speed up the select to find deferred objects. \[14ff5f19c] \[4ed3fbd40]
* **System rights**: New `frontend_features[allow_fulltext_file_search]` was added. \[63316994f]
* **/api/collection**: Update collection count using count. Always count all objects in collection instead of calculating from delta in a non-reproducible case, the object count of a collection was out of sync and no operation would ever get it back right because only the delta count was considered. \[f9e3ba743]
* **/inspect/objects**: Add `_best_mask` to API output. The best mask compilation was missing for the dump output. \[efbc21934]
* **/api/export**: If **original filename** is requested, use original extension too. This matches the original filename as closely as possible. Exception are special characters, too long filenames, and double spaces within the filename. Those will still be sanitised. \[d7b8f1950]

### Fixed

* **/inspect/tasks/TASK**: Fixed for `sqlite` backends. \[a186a5c8a]
* **/api/export**: Fixed exporting metadata in custom versions. The bug caused no metadata to be written in versions if defined using the "assets" property of an export. Also fixed this for custom versions. This removes `--strip` from the produce recipe. We manage this using metadata `remove`. \[528e61ba5]
* **fylr convert**: Fix caption and watermark overlay with latest Imagemagick. Imagemagick `7.1.2-16` and later has a bug that breaks the overlay caption in fylr (its not a clean overlay, but gets sprinkles). Bug description is here: <https://github.com/imagemagick/ImageMagick/issues/8620>. Only non Docker installations were affected by this, if a new enough version of Imagemagick was used. \[36694cf27] \[b87246d23]
* **Standard rendering**: Fix crawl recursion bug in complex models. \[4ee5b0e4c]
* **Hotfolder**: Fixed series recognition with linked objects. In case the linked object is in a nested and holding the assets, the upload of the 2nd matching asset would fail with a panic. Also a reverse case was fixed: In a scenario where `object` links to `medien.file` via `object__medien` were updated, the new entry in `object__medien` would not be created, failing with a database fk violation. \[2d70bb45e] \[a8e9d0389]
* **Indexer**: Fixed **indexer mapping** in cases were a frontend language was set without a corresponding database language. This fixes a severe problem in fylr: If users use frontend language EN and have only data base language DE, the API would return "The language settings have been changed, please wait for the re-index to complete.". The underlying problem was that we used the database languages to index the sort field for pool and not the frontend languages. This patch fixes this, **affected instances need a manual re-index**. \[072f8f156]
* **/api/search\[type=acl|group]**: Fixed group rights in `_generated_rights`. Before this patch, the `_generated_rights` for groups in search type acl or group were not compiled correctly, returning too few rights in some cases. \[6fc3e80e5]
* **/api/eas/rput**: Support Wikipedia remotes. This sets a custom user-agent for http request for remote files. Turns out that Wikipedia does not accept the stdlib Go header and answers with "Forbidden" when requesting files. \[1818e704c]
* **/api/db**: Fixed loading of `_current` for `db_pre_save` plugins. he object "\_current" for the plugin payload wasn't always fully loaded (only for group mode and non \_all\_fields masks it was). This patch fixes that and fully loads that data unless plugins are skipped. \[3e31debb9]
* **DELETE /api/db**: Fixed 202 response for preventing delete case. If objects were linked to each other using a not null constraint, the deletion is only possible if all of the linked objects are present in the list to be deleted. This was fixed before, but the 202 response was not suggesting the policy `delete` as viable option because it wrongly assumed that linked objects are preventing the request. \[221128ef1]
* **/api/db**: Fixed `db_pre_save` for collection update case. If a collection was used to update an existing object, owned by someone else, and plugins were active (such as [fylr-plugin-formula-columns](https://github.com/programmfabrik/fylr-plugin-formula-columns)), the save would fail, cause `_create_user` was set to the original owner. Now, the code resets `_create_user` so that it gets assigned to the actual user updating the object. So, in a collection owned by "editor" an updated object pulled it from "editor" will be still owned by "root" but created by user "editor". \[96a294c28]
* **/api/task\[metadata]**: Use all metadata to fix mapping. The metadata module was broken in a way that not all metadata of a processed file where loaded and usable to map data. This bug caused the module to map less data than the mapping during the file upload. Fixed by loading full file metadata before running the mapper. \[a8913b49e]
* **Metadata recipes**: Include parameters in callback. **fylr** now calls the metadata recipe including the custom parameters. Before this was missing, so that a recipe never actually received the parameters it was supposed to work with. This also stores recipe parameters properly alongside with the information that a metadata recipe has run. This omits a re-run of the recipe if the request is repeated. \[4b7d4f75c]

## Frontend

### New

* **Zoom Tool**: The zoom tool in the asset browser has been completely redesigned internally. It now uses canvas rendering, providing a much smoother experience and better performance by avoiding unnecessary tile reloads. Additionally, interactivity with the minimap has been improved, allowing dynamic image navigation directly from it.
* **Shared Export Templates**: It is now possible to share export templates between users within the same Group. This new option will appear when creating an Export Template in the export manager if the user has write permissions in any Group. All group users will see the template in the list. Additionally, a new tab has been added in the group manager to manage these Shared Export Templates (only visible if any shared export template exists).
* **Collection To TopLevel**: A new option has been added to the collections context menu to move the current collection to the top level of the hierarchy.
* **Panels in base config definitions**: Support has been added to create collapsible panels in the base config. If a form implements the property `plugin_type: panel` in its definition, it will be rendered as a panel.
* **Custom DPI**: Added the option to configure a custom DPI value in exports for custom asset renditions.
* **Expiration Days in Right Presets**: A new property has been added to collection right presets to configure a default expiration value. If a right template uses expiration days, this value will be shown as a placeholder in the "Valid To" field.
* **Exact Search For Expert Search**: Added the ability to search for exact tokens in expert search fields. This allows using backticks to match the exact value of a token for a specific field.
* **Token Search in Linked Objects**: The main search has been improved to include token searches within linked objects. This means that when searching for a term like `'foo'` using single quotes, results will also include objects whose linked objects match the token search.

### Improved

* **Collection Search**: The collection field in expert search has been improved. It now supports multi-selection in the collection picker, improved labels for "has value/without" query elements, and general CSS improvements.
* **File search by name**: Improved file name search in expert search by allowing multiple names separated by commas.
* **RPUT Form**: The form for adding assets from URLs in the object creation form has been improved with better validation and enhanced UX.
* **Variant Editor Shortcut**: Now, when using the variant editor shortcut on an EAS field in the editor (Alt + double click), the asset browser will not open if it was previously closed.
* **String range search**: Improved range search in expert search to support alphanumeric ranges with spaces, e.g. `A 1 - A 9`.
* **Show Changes in history view for tags**: Improved the history view to display changes in tag fields, showing which tags were added and which were removed.

### Fixed

* **Metadata Background Task**: Fixed a bug where the frontend sent incorrect information when configuring Metadata settings in cases where linked objects required defining a pool.
* **Fullscreen Asset Browser**: Fixed a bug where the standard was not displayed in the carousel of the fullscreen asset browser when a record had more than one asset.
* **Base Config**: Fixed a bug that made it impossible to access the base config if a custom plugin definition did not implement the `name` parameter.
* **ReadOnly Parent field in polyhierarchy**: Fixed a bug where the "read-only parent field" option in polyhierarchies was not respected, allowing edits and causing errors when saving the record.
* **Auto numbering for hierarchy objects**: Auto numbering can now only be selected when the object is configured as a hierarchy and has reverse edit enabled.
* **Drag and drop Asset in the page**: Improved drag-and-drop behavior when creating records to prevent execution when dropping assets into a detail view or editor, avoiding false positives (e.g. when missing a drop in an EAS field).
* **Table View**: Fixed a bug where, after editing objects, random objects were incorrectly selected and could not be deselected.


# Release v6.30.2 (2026-03-17)

Published 2026-03-17 11:17:01Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.2/fylr_checksums.txt)
* [fylr\_v6.30.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.2/fylr_v6.30.2_darwin_amd64.tar.gz)
* [fylr\_v6.30.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.2/fylr_v6.30.2_darwin_arm64.tar.gz)
* [fylr\_v6.30.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.2/fylr_v6.30.2_linux_amd64.tar.gz)
* [fylr\_v6.30.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.2/fylr_v6.30.2_windows_amd64.zip)

## Server

### Improved

* **/api/task**: Relax check for missing search parameters. When checking that a search is set for a task requiring it, relax the check to allow an empty search array alongside with a set objecttype array. Do not allow search and objecttype both to be empty. \[5d435cf74]
* **/api/oai**: Removed unused namespaces declared in XML response for verb *ListMetadataFormats*. \[d773e95e9]
* **/inspect/objects**: Links to test **IIIF-Viewers** and deep links now use the `uuid`-based `/api/object` URL, so that configurations where the base config doesn't allow `id`-based deep links still work.
* **Indexer**: This patch indexes the terms with a lower priority than objects. With this, objects are indexed as quickly as possible after saving. \[2c595e60d]
* **Go 1.26**: **fylr** is now built using the latest [Go](https://go.dev/blog/go1.26). \[914b8a757] \[7da9dbcba] \[d4f0398aa]

### Fixed

* **Startup**: In scenarios where dynamic recipes require a new plugin or version of the plugin to be installed, **fylr** would fail to access the backend while filling the cache (with a dead lock). The backend endpoints now mostly skip the cache as they don't need it. \[cef65ed19] \[c88890d0f] \[ba9441f90] \[a949fb4c0]
* **/api/search**: If wildcard only appear in the middle of searches we ignore this now. Since `6.30.0` a `WildcardOnlyNotAllowed` error was raised. \[1c5bb49c4]
* **/api/export**: Fixed downloads with metadata written. For bigger files it could happen that **fylr** delivered corrupted files. \[267070fa6]
* **/api/task\[delete\_objects]**: Fixed deleting mixed object types using `setnull`. In certain combinations **fylr** would try to set links to null for already deleted objects. \[5db9edfb0]

## Frontend

### Improved

* **Search Popover**: Several aspects of the Search Popover behavior in the **task modules** have been improved. The search popover now allows selecting Objecttypes even if they do not have records in the system (important for creating searches that target OTs which will contain content in the future).
* **Show Deleted Objects Checkbox**: The new checkbox included in the search popover for Delete Tasks now displays only deleted files. Previously, both deleted and non-deleted files were shown.

### Fixed

* **Search Param in Tasks**: Fixed an issue where the Objecttypes configured in a search within the task modules were not saved correctly. This caused all Objecttypes to be affected by the search and could also produce a server error when validating some tasks such as the Delete Task.
* **Delete Task**: Fixed the creation of this task from the search or from the collections context menu.
* **Search Type Selector**: Fixed a bug that prevented the Search Type Selector from updating correctly when switching to Trash mode in the search popover.
* **Tasks List**: Fixed the width of the Status column in the background tasks list.
* **Collection Field**: Fixed the CSS of the Collection field in the expert search.
* **Delete Objects**: A bug has been fixed when attempting to delete groups of objects that are related to each other through linked objects. It could lead to a situation where objects were being deleted that had already been removed because they were linked objects of another object.


# Release v6.30.1 (2026-03-12)

Published 2026-03-12 10:54:19Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.1/fylr_checksums.txt)
* [fylr\_v6.30.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.1/fylr_v6.30.1_darwin_amd64.tar.gz)
* [fylr\_v6.30.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.1/fylr_v6.30.1_darwin_arm64.tar.gz)
* [fylr\_v6.30.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.1/fylr_v6.30.1_linux_amd64.tar.gz)
* [fylr\_v6.30.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.1/fylr_v6.30.1_windows_amd64.zip)

## Server

### Improved

* **/api/task**: If a module includes a search, **fylr** now reports an error if the task is saved without a search declaration. This fixes potential using errors with task module `delete_objects`, which would operate on the whole database if the search definition would be provided. Also, fixed error reporting if deleting objects fails. \[839210b9e] \[6d2f31bb5]

### Fixed

* **Startup**: In scenarios where dynamic recipes would request updates from plugins which ZIP file was corrupted, **fylr** would fail to startup. Instead of erroring out, we now only output an error message to console and continue the starting up. \[7fb1b9616]

## Frontend

### Fixed

* **Search Popover**: The behavior of the new checkbox for displaying deleted objects has been fixed. It can now be used even when all objects in the system are deleted. Additionally, the persistence of this option has been corrected.
* **Delete Task Module**: The behavior of this task module has been modified so that it cannot be saved unless a search has been configured beforehand as a parameter.


# Release v6.30.0 (2026-03-11)

Published 2026-03-11 13:01:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.0/fylr_checksums.txt)
* [fylr\_v6.30.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.0/fylr_v6.30.0_darwin_amd64.tar.gz)
* [fylr\_v6.30.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.0/fylr_v6.30.0_darwin_arm64.tar.gz)
* [fylr\_v6.30.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.0/fylr_v6.30.0_linux_amd64.tar.gz)
* [fylr\_v6.30.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.30.0/fylr_v6.30.0_windows_amd64.zip)

## Server

### Important

* This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running. \[4535375cd]
* **Recipes for metadata mapping can now use parameters**. With this, administrators and users can fine-tune plugin behaviour for metadata mappings.
* The processing of **XSLT** over the OAI/PMH API was changed. This might be a breaking change for some XSLT sheets. **fylr** now required the Sheet to produce the XML elements on top level, or, an **XPATH-select** needs to be defined in the base config.

### Breaking changes

This release brings the following (minor) breaking changes:

* **/api/search\[type=event]**: Removed support for `event.info` filter (see below). \[02daaa9b6]
* **/api/user/session**: Recipe configurations now follow JSON notation rules and are lower case (instead of the Go style CamelCase which was previously used). \[9db2bd089]
* **fylr-plugin-ai-metadata**: Users of the plugin `fylr-plugin-ai-metadata` **must update** to the latest version.

### New

* **Custom Recipe configurations**: Configuration for recipes can now be stored alongside with mappings, object types, pools or collections. This patch brings recipe parameters for metadata mappings. With this, recipe parameters can be pre-defined on multiple levels as well es per-request (`api/eas`). With parameters, we can enhance the `fylr-plugin-ai-metadata` which will benefit from on-demand user input to ad just prompts. Also in this patch is support for mandatory (`mandatory`) and user editable (`usereditable`) parameters. `usereditable` is used by `/api/eas` and `/api/collection` to allow users to overwrite recipe parameters. Also, recipe parameters can now use limited object data replacements (top level only) in task module `metadata`. \[9db2bd089] \[f1f57c7fa] \[06f622946]
* **/api/export**: Added **custom Javascript** capability to the metadata mapping. With custom JS, all metadata mapping can now use Javascript to change the list of values compiled into the XML. This helps to support custom requirements to fill out data in e.g. OAI/PMH dc exports. \[dd3487b86] \[d7534d533]
* **SSL Certmagic**: Added support for `externalAccount`. The new `fylr.services.webapp.tls.letsEncrypt.externalAccount` config can be used to setup certificate providers other then [**Let's Encrypt**](https://letsencrypt.org/). With this [`zeroSSL`](https://zerossl.com/) is now supported.
* **/api/search**: Added `_field_name` to `_standard.geo` and sub field `.geo` for fields of type `files`. The new field `_standard.geo.1._field_name` allows to search for fields which contributed their geo values to the standard geo. Also, for type `files`, the subfield `.geo` is now supported. This allows to directly access the geo coordinates of the file in the search without mapping it to standard info. \[7b648e365] \[a26d86980] \[447096d4a] \[58518e481]
* **SAML**: Support logout. Adds a new endpoint `/api/saml/slo` for IDP induced logout. Support also SP induced logout (if the IDP support this). \[d6daaded6]
* **Base Config \[SAML]**: Make *Back to internal login* button (if SAML is activated) on login page customizable. \[2b7bc7e9e]

### Improved

* **POST /api/db\[groupmode]**: Merge existing l10 values with new. In group mode, this keeps unsent and already set language value in loca text fields. Before unsent languages would be deleted. Now, frontends can decide to either delete a language (send the language empty), or keep the existing one (do not send the language). \[1cccad57d] \[af86e88f3]
* **/api/oai**: Faster `XSLT` conversions. OAI/PMH with XSLT got a new configuration "xpath\_query". It is used to split the elements produced by the XSLT and merge them with the OAI/PMH headers. Existing XSLT are parsed at top level and should work as before. XLST is called with all objects requested by the OAI/PMH request, which makes it faster. Before the XSLT was called per object. \[19a73c4e9] \[8e66992f6] \[019d1b76d]
* **/api/search\[collection]**: Support `created_at` and `updated_at` for sorting. Also, set `updated_at` for version 1 (before this was left `null`). Requires a re-index. \[292f409aa] \[f3b4605bb]
* **/inspect/files**: Allow range & group search with `id:<...>`. \[c64469e86] \[a8ff4a39b]
* **/inspect/export**: Add pagination support and search filter for file lists. Also reverse log entry output for better readability. \[2eecb1e6c] \[6b0b26520]
* **/api/tags**: New api error `TagsInUse`. **fylr** now checks if any of the to-be-deleted tags are in use. The new API error contains a list of the first three tags which are in use together with a details explanation about where to find it. \[0d132f7fe]
* **/api/search\[event]**: Do not index `event.info`. Removed this from supported search parameters. \[02daaa9b6]
* **/api/search**: Index dependencies for `_standard` to the 3rd level only. Before we indexed to the 5th level which could cause the index to grow to immense size in some configurations. \[2a27ceb00]
* **/inspect**: Added disclaimer warning. \[4d49da452] \[7c4a50f2f] \[667c14d18]
* **Error handling**: Add a right displayname localization to `UnknownRightParam`, `UnknownRightValue`, `RightRequired` rights. \[eeb660da7] \[4cb26dbfe]
* **fylr backup/restore**: Derive `--client-token-url` from `--server`. The parameter can now be omitted for most cases. \[a2a0adb62]
* **Base Config \[SAML]**: Improved error output for Javascript entry code execution. If the SAML entry read back includes a JS code to change it, output the full script which was executed in the error message. This should make it easier to find bugs in such SAML entry scripts. Also, we now check SAML connection errors. This means that repeatedly saving an invalid or unreachable IDP url will no longer result in timeout wait times every time. Only if cached parameters are changed a new conenction attempt is performed. \[f856b101a] \[5eac060cd] \[0752a64e0] \[3e13e7bc3]
* **Metadata mapping errors**: Plugins can now return a **metadata mapping error** using the returned metadata. `mapping.import.json_error` defines a `GJSON`-path to check the metadata for errors. This allows passing errors from the metadata plugin all the way to the user. While at it, merge metadata on a deeper level, so now the 1st and 2nd level are kept and only deeper levels are overwritten during the metadata read back merge. With this a plugin can provide multiple recipes and register all their metadata under a common metadata group (usually the plugin name) in the top level. \[997b3e6e2]
* **Task module `delete_objects`**: Support delete policies `purge` and `undelete`. \[e71add958]
* **/api/system/backup**: New parameter `include_events`. This is an opt-in to include events in the backup. Before events where only exported in format `pg_dump`. Also available in `/inspect/system/backup/`. \[e569d0849]
* **POST /api/user**: Allow to disabled login of `system:root` user. We allow this, so that an instance can be set up to limit ip based access to root privileges. Now you can disable the sy stem root user's login and create a group (ip filtered) with root rights. \[aa2a9cc65]
* **fylr convert**: Improve support for **PCD**. The **PCD** support was improved after image **Imagemagick** fixed their code to no longer work with a imaginary layer "7" requested from the **PCD**. We are now testing each layer for extractability by **Imagemagick** and use the biggest we find. Also in this patch, start `--page` with 0 (for TIFF) and support `--page` for **PDF**. Also support `--page` for **PCD**. \[5004f81f4]
* **/api/event/stream**: Allow for cross server by setting `Allow-Origin`. With this, cross server frontends must no longer use the legacy poller `/api/event/poll`. Also, some changes to pollability for `INDEX_SWITCH`, `REINDEX_DONE`, `REINDEX_ERROR` and `REINDEX_INDEX_PURGED`. \[23922a245]
* **/api/collection/\[list/objects]**: Silently ignore offsets < 0, correct them to 0. \[a86492d3c]
* **SAML Login**: Improved debugging output. \[a9484b42e]

### Fixed

* **/api/eas\[mapping]**: Fixed overloading case with linked objects. If a metadata mapping defined multiple sources so that multiple linked objects were matched for a single target field, the lookup of objects other than the first would not be mapped correctly. This was discovered using a custom location tag without `strategy: first`. Now, lookups are run only after all metadata mapping objects were read, so that overwrites and duplicates are recognized. \[6eaa92af5]
* **Error localization**: Fixed localization for `UnknownColumnType`, `UnsupportedFieldType` and `RecipeParamUnknownType`. These errors would cause a `TmplToWriter` error in some frontend languages, disguising the actual error message. \[c10f755d5]
* **/inspect/plugins**: Page render error was fixed. Also added build info of plugins to the output (where available). \[39aba8eef]
* **/inspect**: Fixed Javascript for `H3` collapsibles. \[783273be7]
* **Indexer**: Fixed re-queuing error detection for [Opensearch](https://opensearch.org/). Before we only re-queued indexer jobs if the error message from the indexer contained *es\_rejected\_execution\_exception*. This didn't work on OpenSearch (they don't use the *es*\_ prefix in the exception string). \[1f6ef0609]
* **Indexer**: Limit sort terms to **\~30kb** to avoid indexing errors. With really deep hierarchies the facet term would be to big. This code cuts off such strings hard, to not run into limits of Lucene (32kb for a term). While at it, choose to pad strings for facets at 30 runes instead of 50. This should still be long enough for most use cases. It makes the sort string smaller and enhances the chances that the string is not cut off. \[55f1f4e6f]
* **Execserver callbacks**: Fixed long standing problem with context. The patch fixes reading back data from long running execserver calls. This was most visible in the **FTP plugin** where the answer from the plugin waits until all **FTP transport** it done . Also, fixed error handling in export transports. If an error was reported by the transport, we would fail to write a `EXPORT_TRANSPORT_FAILED` event. Also, tune down logging if a context gets cancelled. The old code would output the WARN twice, resulting it log bloat. \[7a26bcb72] \[572a207df] \[ae0e2c5b0]
* **Hotfolder & /api/eas?collection**: Fixed update case when uploading files. In case that an object has a nested with linked objects for the file, the update would not work properly. This patch fixes the update. Also, the lookup of the object is now skipping objects which the user is not allowed to READ. Before a missing READ right on a found object would result in an error. So now, the user A can have an object with "ref1" and the user B too. If user A doesn't see user's B objects, the update is still possible as the user A correctly only sees one object. Before fylr would complain that the user doesn't have the appropriate rights. \[18d2e7251]
* **fylr restore**: Removed option `--max-parallel`. `POST /api/db` currently struggles to import deferred hierarchies in parallel. Since our restore needs that, we for now remove the max parallel feature. This option was also removed from `/inspect/migration`. \[88584fc29]
* **/api/schema/commit**: Fixed constraints checks. If columns loose there constraint checks (remove not null or have wider ranges), we did not re-assure object constraints (this was only done for added not null and narrower ranges). This fixes inconsistent system tags which are not removed after data model changes allow the removal. \[1184c7864]
* **/api/search**: Allow empty token searches. If the `-` search yields no terms, we ignore it instead of returning zero search results. Also, response with `WildcardOnlyNotAllowed` for searches which contain terms like "-\*". \[c83b27393]

## Frontend

### New

* **Apply Placeholder** — A new option has been added to the New Object Editor that allows converting the placeholder coming from the Template or from metadata mappings into the actual value of the input field. This allows the user to edit the value directly in the editor without needing to create the object first. The Apply Placeholder button will appear in the top-right corner of the input when data from the template or metadata mappings is available.
* **Expert Search Filter Input** — A new input has been added to the Expert Search popover that allows filtering fields within the Expert Search, making it easier to quickly find fields in very large Object Types (OTs). The filter also works with nested fields and can either display the full nested structure or only the fields that match the filter.
* **Sort Manager Filter Input** — Similar to Expert Search, a filtering feature has been added to the Sort Manager, allowing users to quickly search for fields.
* **Group Editor Multi-Language Select** — New checkboxes have been added to multi-language fields for each language, allowing editing only the selected language without modifying values in other languages.
* **Collection Field in Expert Search** — A new **System Field** has been introduced in Expert Search to create search filters for Collections. Users can now search for objects within a specific collection or identify objects that are not assigned to any collection. This is particularly useful when configuring searches for **Background Tasks (BG Tasks)**.
* **Leave on Remote (RPUT Uploads)** — A new option called **"Leave on remote"** has been added when uploading assets using the **RPUT** tool. If this checkbox is enabled, the original file will remain in the source location and **Fylr** will not copy it into the system.
* **Linked Object Prevent Suggestion** — Added a new mask option for linked objects that prevents on-the-fly creation suggestions in editors.
* **UUID Search Support in Main Search** — Support has been added to search records by **UUID** in the Main Search. Similar to `global_object_id`, if a UUID is entered after the `#` character, the system will search using that UUID.
* **Metadata Recipes Parameters Editor** — Support has been added for the new **parameter editor** for recipes in metadata mappings. If a plugin supports this feature, a new configuration button will appear next to the mapping selector, allowing dynamic modification of recipe parameters. This configuration is available in Objecttype Manager, Pool Manager, Collection Upload Settings, Metadata Task Configuration, New Object Editor, and Mapping Editor.
* **JavaScript Modifier for Export Mappings** — Export Mappings now support **JavaScript modifiers**, allowing custom logic to modify how field values are exported. This can be configured per field in the **Export Mapping Editor**.
* **Search and Replace / Append for Multi-Language Fields** — The **Group Editor** now supports **Search and Replace** and **Append** operations for multi-language fields.

### Enhanced

* **Full Screen Record Navigation** — When viewing a record in **Full Screen Detail View**, using **"Show Record in Detail"** for a linked object will now display it both in the **detail sidebar** and in the **Full Screen viewer**.
* **Custom Deep Links Replacements** — A new replacement type has been added that allows inserting an object's **UUID** into the URL of a **Custom Deep Link**, enabling custom URLs that reference Fylr objects directly.
* **Custom Metadata Mapping Fields UX** — The form for adding XML fields in metadata mappings has been improved. The field list now includes **Add** and **Remove** buttons, and a new checkbox allows configuring the **import\_strategy** in Import Mappings.
* **Main Search Input** — A **Clear** button has been added directly to the search input to quickly reset the current search.
* **Mask Editor** — When creating a new **Object Type**, the default mask will now include a **localized display name**. Previously, the default mask only contained an internal name and had to be manually renamed.
* **Pool Selection for Linked Objects** — The form displaying pool selectors for linked objects in the **New Object Editor** has been improved. Selectors that should not be visible (e.g., due to permission restrictions) are now automatically hidden.
* **Delete Task for Background Tasks** — New delete policies have been added that allow **purging** deleted objects or **recovering** deleted objects. Additionally, a new option allows including deleted objects in the search configuration for this task.
* **Search Popover in Background Tasks** — Searches can now be configured to include **all Object Types**, not only those available in the Main Search. The **Search Type Selector** in the search popover now lists every Object Type in the system.
* **Backups** — A new option **"Include Events"** has been added when creating backups in the **Backup Manager**.

### Fixed

* **Token Search** — Fixed an issue where tokens containing uppercase letters would not return results.
* **Linked Objects Visibility** — Fixed an issue where linked objects were not displayed correctly in the Detail view under limited permissions.
* **Pool Selectors in New Editor Modal** — Fixed a bug where the pool selector for linked objects did not work correctly when creating objects from the **New Object Editor modal**.
* **Remove from Collection Tool** — The **Remove from Collection** tool in Main Search will no longer appear in situations where it does not make sense, such as when the user has no access to collections or when the object is not assigned to any collection.
* **Color Profile List** — Fixed the color profile list in the **Export Manager**, improving localization.
* **`:secret` Field in Transport Configuration** — Fixed an issue with fields marked as `:secret` in the **Transport configuration** within the Export Manager.
* **Linked Object Race Condition** — Fixed a race condition causing newly linked objects to temporarily appear as **"Not Found"**.
* **Nested Fields Dragging** — Fixed a visual bug when dragging rows in nested fields to reorder them.
* **Metadata-Mapped Linked Objects** — Fixed a bug preventing correctly displaying linked objects created by **metadata mappings** in the New Object Editor.
* **Collection Upload Settings** — Fixed a bug where the system did not correctly check if an **easydb field** or linked object was inside a nested structure when configuring **collection upload settings**.
* **Unknown Mask Splitter** — Fixed a bug that prevented rendering the **Detail View** when a mask contained an orphan **custom mask splitter**.

## Plugins

### Geo-JSON Plugin

The **Geo-JSON plugin** has been updated with new features and fixes. The most relevant improvements include:

* **Marker and Color per Field** — It is now possible to configure **icons and colors not only per Object Type but also per field**, making it easier to distinguish different fields on the main map.
* **Field Filter in Main Map** — A new tool has been added to the **Main Map** that allows hiding specific geo-fields, making it possible to display only features coming from selected fields.

> These changes require **Fylr version 6.30**.


# Release v6.29.1 (2026-02-11)

Published 2026-02-11 12:52:37Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.1/fylr_checksums.txt)
* [fylr\_v6.29.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.1/fylr_v6.29.1_darwin_amd64.tar.gz)
* [fylr\_v6.29.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.1/fylr_v6.29.1_darwin_arm64.tar.gz)
* [fylr\_v6.29.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.1/fylr_v6.29.1_linux_amd64.tar.gz)
* [fylr\_v6.29.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.1/fylr_v6.29.1_windows_amd64.zip)

## Server

### New

* **TLS support**: The new `fylr.services.webapp.tls.letsEncrypt.CA` allows to set an alternative [ACME issuer](https://pkg.go.dev/github.com/caddyserver/certmagic#ACMEIssuer) to *Let's Encrypt*. \[e0197de61]

### Improved

* **/api/xmlmapping**: The mapper was changed to keep information of nested tables together. Before we would render *mat1, mat2, remark1, remark2*, now we render *mat1, remark1; mat2, remark2*. The grouping is hard-coded to use `;` on the top level and `[ ... ]` for deeper levels. This also checks the field names. Before any string was accepted, now this is matched against supported mapping fields. Also, this fixes mapping field names for nested inside linked objects. Before this was wrongly rendered without the `_nested:` prefix for the nested table main. With theses patches the API requires fixed text fields `text_fixed` and `deep_link_url` to come before or after the data fields. Also, render `deep_link_url` with link to frontend as fallback. If the deep link url is not set, render a link to the frontend detail page for the rendered object. The deep link is set to the actual file if the mapping is used to fill a metadata filemapping. Also, add replacement for obj `%_uuid%` in `text_fixed`. \[709dec348] \[0a8b3deb9] \[bed769db4] \[560f396d7]
* **fylr backup/restore**: Migrate login & password base config from easydb 5. Also keep pool ids the same between source and target. Correctly migrate groups assigned by `sso` from easydb 5 to **fylr**. In \**fylr+* the type of this connection is called `saml`. \[72e2d5795] \[ec16c2986] \[c4bf31f22]
* **/inspect/files**: Improved filter for local / remote versions. \[bd42b1438]
* **Reverse Proxy**: The reverse proxy configurable in `fylr.yml` now supports host-less targets. \[33f2b7814]
* **/eas**: To avoid erroneous copies from the alleged `/eas` endpoint, **fylr** now responds with `400 Bad Request` to the easydb 5 file endpoint. \[e447b17a2]
* **/inspect/objects**: Add a specifc filter prefix `sid:` to filter by system object id only. This is used to show all versions of a n object. In `/inspect/objects/OT/ID` a link to show *All Versions* of the object was added. \[d822bf717]
* **/api/objects**: If an object has no best mask configured, return a permission error (`403 Forbidden`) instead of `400 Bad Request`. With the `403` the frontend will not show the error in the object share dialog, but assume that no access has been configured, which is arguably the case. \[741a1dabf]
* **Hotfolder**: Create directory without errors. The hotfolder creates directories and it could happen (via shared directories) that it tried to create a directory which was created by another process already. \[f3698fa72]
* **/api/export**: Merge existing `*:secret` in transport options. If an updated export contains transports with secrets (key ends in `:secret`) in its options, merge these secrets from existing transports if they are not send in the update. \[41b6a7284]
* **POST /api/db**: For plugins, skip linked objects `READ` permission check. When reading back data from plugins, the read back is using the `_all_fields` mask, regardless if the user running the request is allowed to do so or not. Before this patch, the permission for the linked objects inside the payload (`READ`) were checked which made the `_all_fields` feature unusable in some configurations. This patch relaxes the permission check when reading back from plugins. Plugins are now allowed to link to object without permiss ion checks. \[34f1c1f8f]
* **/api/export\[CSV/XLSX]**: Fixed export of pool columns. This patch uses the users frontend language to export the pool column and all configured frontend languages if `all_languages` are given in the export. Also `_pool_id` column is sorted properly as system column before all user columns. Also, filter language selection for textual information in daterange fields. \[413fe3e62] \[3ce25120e]
* **IIIF Presentation**: No longer use `sequences` to display pages of `PDF` and other office files. Also, skip empty required statements. \[5d4d08195]

### Fixed

* **DELETE /api/collection**: Fixed for collection users with pin code. If collection users are deleted alongside with a collection and they had used their pin before, deleting would fail with a db error. This patch removes the pin codes of users before they are archived or deleted. Un-archived users will be forced to re-enter their pin codes. \[afc81fcb1]
* **/inspect/files/FILE-ID**: Fixed a bug which prevented the page from rendering if the file was only linked in historic versions a nd not in the current version. \[d822bf717]
* **POST /api/db\[groupmode]**: Fix for plugin callbacks where the plugin returns unchanged data. f a plugin returns all data from group mode modified plugins without actual changing any data, fylr would discard that data but not set the `_all_fields` mask back to the received mask, causing the permission check to save objects to fail for non-root users. \[66ed1f51c]
* **/api/search**: Don't assume `READ` permissions for collection owners. The previous code would assume that all collection owners have `READ` permission to all objects in the collection. That is not the case. `READ` permissions can be shared via ACL by a collection but simply owning a collection does not generate `READ` permissions. This was correctly covered by other places in fylr where permissions are checked, but the search had it wrong. This brings a partial re-index of all collections. Collection owners which can no longer access objects which they previously could, can now no longer find (and access) these objects using the search. Higher permissions than READ were not affected by this bug. \[d318ef456]
* **Frontend Languages**: Fixed support for `tvl-TV` frontend language. \[4ae9866e0] \[fff08ce7c]
* **DELETE /api/pool**: Fixed deleting pools owned by non-root users. \[d59c545b1] \[0fe12fb72]
* **Indexer**: Fixed for new object saves during running re-index. The indexer would not index the correct objects if a re-index filled the queue with lots of jobs and while that queue was still being worked on, a object got re-saved. Now the indexer would index the newer version of the object followed by the older version (queued by the re-index). \[6cf8ede87]
* **/api/epxort**: Fixed single file exports for certain batch sizes. If the number of exported objects exceeded the batch size and "one file per object" was selected, duplicate filename would be generated. This would lead to a database FK violation and an erroneous export. \[df8524746]
* **/api/collection**: Ignore unsupported `collection.create_object.update_policy`. If for nested fields and unsupported `update_policy` is sent, accept it and rewrite it to the only supported on *create\_version*. This helps with migrations from ez5 where the policy *create\_version\_preferred* is found in some collections. \[054aee56a]

## Frontend

### Improved

* **Cross Server:** The label that displays the target server in cross server mode now allows copying the full cross server URL when clicking on it.
* **Languages:** Support for tvl-tv has been added to the frontend.
* **Admin Message:** The processing of admin messages has been improved to prevent code injection in messages.
* **Metadata Mapping Manager:** The logic for moving field tags within the form has been improved. It is now possible to move and remove them from the XML form simply by dragging them. Additionally, validation has been added for the new limitations introduced in the backend. The validation now indicates which field has the error and highlights it in red for easier identification.
* **Export Transports:** Support has been added for properties marked as `:secret`. This allows adding properties where the server will not send the information back, which is useful for passwords and API keys that should not be displayed again to the user.
* **Tooltips:** The way tooltips are displayed in some menus has been improved to prevent them from covering menu options.
* **Pane Header:** A small improvement has been added to allow collapsing the quick access menu by clicking on the panel title.

### Fixed

* **Search Lists:** Fixed a bug that caused all hierarchy levels to appear expanded when the user had a partial pool selection in the pool selector.
* **Linked Objects:** Fixed the logic that checks whether a reference to a linked object is no longer valid. This issue caused errors when opening the detail/editor in certain scenarios.
* **Save And New:** Fixed the editor reload after using the new "Save and New" button on a record that had previously been copied from another one.
* **CSV Importer:** Fixed the mapping of localized strings inside nested fields. The bug caused multiple localized string values to be merged into a single field at the first nested level.
* **MaskMemoryManager:** Fixed the initialization of the mask memory system. In certain situations, the manager was not initialized, causing errors when loading the detail view or the editor sidebar.

## Plugins

### custom-mask-splitter-detail-linked

This plugin was renamed internally due to technical reasons. If the plugin was installed in fylr under the name `custom-mask-splitter-detail-linked`, disable and delete this plugin in the plugin manager. Make sure to install and enable the new version with the name `easydb-custom-mask-splitter-detail-linked-plugin` using the same release url.

### Mapbox Token Configuration Changes

The following plugins:

* gn250
* geonames
* dante
* gnd
* georef

As of version **6.29.1**, the **Mapbox token is now configured per plugin in the base configuration**.

* For backward compatibility, specifying the Mapbox token in the data model / form is still supported for now.
* Going forward, the token **should (and eventually must)** be set in the base configuration.
* A future release will remove the fallback to the data model / form.
* An updated data model will then be deployed to the object store to ensure all maps are displayed correctly.


# Release v6.29.0 (2026-01-29)

Published 2026-01-29 12:18:32Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.0/fylr_checksums.txt)
* [fylr\_v6.29.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.0/fylr_v6.29.0_darwin_amd64.tar.gz)
* [fylr\_v6.29.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.0/fylr_v6.29.0_darwin_arm64.tar.gz)
* [fylr\_v6.29.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.0/fylr_v6.29.0_linux_amd64.tar.gz)
* [fylr\_v6.29.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.29.0/fylr_v6.29.0_windows_amd64.zip)

## Server

### Improvement

* **/api/db**: Use faster [method](https://pkg.go.dev/github.com/jackc/pgx/v5#Conn.CopyFrom) for bulk inserts. This should result in a moderate speed up for bigger new data injects. \[c23955823]
* **Format PPSX**: Support for `PPSX`. This is a `PPTX` file (Microsoft Powerpoint) which directly starts a presentation. The file extension `.ppsx` is now supported in class `office`. \[f11eb0fd5]
* **Error reporting**: Replaced AuthSessRequired with UserRequired. Changed status code for user required from 400 to 401. \[7d2f009d1]
* **Extension Plugins**: Send less information in `%info.json` to make it more compatible with Windows command lines. Also removed white space, to safe space. This patch removes the property `plugin` from `%info.json`\[0a3d283af]
* **/api/collection/...**: Support `skip_index` to not queue index jobs. \[2f3677048]
* **fylr restore**: New flag `--skip-reindex` allows to skip the re-index at the end of the restore. Also use the new `skip_index` feature when uploading collection objects to speed up restore. \[2f3677048]

### Fixed

* **fylr convert**: Fixed `--width` and `--height` parameter. This broke after the introduction of **VIPS** support in `6.22.0`. This feature is not directly used in a **fylr** with standard file worker configuration. \[129cdb4e6]
* **/api/export**: Fixed exporting `XLSX` with thumbnails from reverse linked objects. \[d9dc05f28]
* **/api/db**: Fixed parsing of numbers like `-6e+10` is now working for type `number` and `integer.2`. \[7e82736f7]

## Frontend

### New

* **Collection Picker**: New functionality has been added to allow objects to be added to collections from the main search and detail views. A new contextual option called **Add To Collection** is now available. This option includes two new features: a collection selector that allows searching any collection in the system that the user has access to, and a quick access section showing the 5 most recently used collections. This enables users who are browsing a set of objects to quickly add them to previously used collections. The **Recent Collections** section is persisted per browser / per user.
* **Panel Mask Splitter**: A new option has been added to panel-type mask splitters to remember the panel state (open/closed). This state is persisted per browser / per user.
* **Save and New**: A new **Save and New** button has been added to the editor sidebar in the lists panel. This new button saves the current object and reloads the editor to create a new object.

### Improvement

* **Refresh Session**: Improvements have been made to how the user session is identified and refreshed. This change resolves an issue where long editor sessions could result in a "Session Unauthorized" error.
* **Mask Editor**: The behavior of the mask editor has been improved when unknown mask splitters are present in a mask (e.g. mask splitters implemented in plugins that are not loaded). They can now be deleted correctly and no longer cause the mask to become corrupted.
* **Variant Editor**: A new checkbox has been added when creating a new variant from the variant editor to automatically set the new variant as the default variant.
* **Search Input**: Improvements have been made to how different types of searches are processed in the search input.
* **Export Manager**: New descriptive texts have been added to the export manager.
* **License**: A new property called **Email Contacts** has been added to the license.
* **README in Plugin Manager**: Rendering of READMEs in the plugin manager has been improved when the plugin supports this new feature.
* **Background Tasks**: It is now possible to select searches that currently return no results as parameters for background tasks.

### Fixed

* **Sidebar**: Fixed an issue where, in certain situations, the detail sidebar opened empty when reopening a previously loaded object.
* **Field Visibility**: Fixed a bug where field visibility settings were ignored in the detail view.
* **Linked Objects**: Fixed a bug where using linked objects in the expert search incorrectly displayed a missing permissions message.
* **CSV Importer**: Fixed an issue when importing empty values in Date Range columns. These imported values are now evaluated correctly and clear the current value when performing an object update.
* **Date Range Column**: Fixed the display of Date Range fields with text representation in the table view. Additionally, automatic recognition of ranges from text has been improved to allow months starting with lowercase letters.
* **Linked Object**: Fixed an error when trying to load linked object fields as selectors when they contained purged or deleted objects.
* **Variant Editor**: Fixed a bug that occurred when closing the variant name prompt modal.
* **Double Number Fields**: Fixed a bug where double-type fields were not rendered in the detail panel when the value was between 0 and 1.
* **Collections with Pincode**: Fixed the error handling logic when entering an incorrect pincode in a collection.
* **Trash**: Fixed the object counters in the trash list nodes, which were reacting incorrectly to system events.
* **Main Search**: Fixed an error that caused the main search to execute incorrectly when the Geo-JSON Map was installed but not active.

## Plugins

* **Geo-JSON Map**: **IMPORTANT**: The URL used to receive automatic updates for this plugin has been updated. Please, if you have this plugin installed, copy again the URL indicated in the README of the public repository: <https://github.com/programmfabrik/fylr-plugin-geo-json?tab=readme-ov-file#installation>. Do not use the releases section of the public repository if you want to receive the latest updates. General improvements have been made to the plugin’s behavior, and proper support has been added to display hierarchical objects.
* **Custom Mask Splitter – Show References**: A new option has been added to modify how references displayed in the mask splitter are sorted, allowing sorting to be selected based on specific fields.
* **Obscure Images Tool**: General fixes have been applied to the plugin. Variants will now be correctly named when no name is provided during creation. Additionally, the version used by the plugin is now correctly locked while the plugin is active, preventing visual bugs when resizing the window during use.


# 2025

* [Release v6.28.0 (2025-12-19)](/releases/2025/v6.28.0)
* [Release v6.27.1 (2025-12-11)](/releases/2025/v6.27.1)
* [Release v6.27.0 (2025-12-03)](/releases/2025/v6.27.0)
* [Release v6.26.0 (2025-10-30)](/releases/2025/v6.26.0)
* [Release v6.25.1 (2025-10-17)](/releases/2025/v6.25.1)
* [Release v6.25.0 (2025-09-30)](/releases/2025/v6.25.0)
* [Release 6.24.0 (2025-09-11)](/releases/2025/v6.24.0)
* [Release v6.23.2 (2025-08-15)](/releases/2025/v6.23.2)
* [Release v6.23.1 (2025-08-14)](/releases/2025/v6.23.1)
* [Release v6.23.0 (2025-07-31)](/releases/2025/v6.23.0)
* [Release v6.22.2 (2025-07-29)](/releases/2025/v6.22.2)
* [Release v6.22.1 (2025-07-24)](/releases/2025/v6.22.1)
* [Release v6.22.0 (2025-07-17)](/releases/2025/v6.22.0)
* [Release v6.21.3 (2025-07-02)](/releases/2025/v6.21.3)
* [Release v6.21.2 (2025-06-12)](/releases/2025/v6.21.2)
* [Release v6.21.1 (2025-06-12)](/releases/2025/v6.21.1)
* [Release v6.21.0 (2025-06-06)](/releases/2025/v6.21.0)
* [Release v6.20.2 (2025-05-07)](/releases/2025/v6.20.2)
* [Release v6.20.1 (2025-05-06)](/releases/2025/v6.20.1)
* [Release v6.20.0 (2025-04-30)](/releases/2025/v6.20.0)
* [Release v6.19.2 (2025-04-11)](/releases/2025/v6.19.2)
* [Release v6.19.1 (2025-03-31)](/releases/2025/v6.19.1)
* [Release v6.19.0 (2025-03-27)](/releases/2025/v6.19.0)
* [Release v6.18.2 (2025-03-11)](/releases/2025/v6.18.2)
* [Release v6.18.1 (2025-03-07)](/releases/2025/v6.18.1)
* [Release v6.18.0 (2025-02-26)](/releases/2025/v6.18.0)
* [Release v6.17.3 (2025-02-14)](/releases/2025/v6.17.3)
* [Release v6.17.2 (2025-02-07)](/releases/2025/v6.17.2)
* [Release v6.17.1 (2025-02-06)](/releases/2025/v6.17.1)
* [Release v6.17.0 (2025-01-30)](/releases/2025/v6.17.0)


# Release v6.28.0 (2025-12-19)

Published 2025-12-19 14:12:10Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.28.0/fylr_checksums.txt)
* [fylr\_v6.28.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.28.0/fylr_v6.28.0_darwin_amd64.tar.gz)
* [fylr\_v6.28.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.28.0/fylr_v6.28.0_darwin_arm64.tar.gz)
* [fylr\_v6.28.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.28.0/fylr_v6.28.0_linux_amd64.tar.gz)
* [fylr\_v6.28.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.28.0/fylr_v6.28.0_windows_amd64.zip)

## Server

### Important

* This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running. \[41899033e] \[3c7509de2]

### Improved

* **/api/export**: Support `STDIN` as optional input path for plugins. This extends the export / export\_transport path to allow sending `"export"` via STDIN instead of filling the `%info.json%` with it. For bigger exports this helps to work around limitations of cmd line calls where the size of argument characters is limited. See the [documentation](https://docs.fylr.io/for-developers/plugin) for more information. \[5ac80b88a]
* **/api/search**: Output `preferred` attribute for files if requested using `include_fields`. \[a08ed237f]
* **/api/db**: Remove **empty nested rows** on save. This change allows the frontend to delete nested rows while keeping the ability to send a nested row with only a \_uuid in limited masks where the server needs to add existing fields to the record. Only the server can determine if a row is empty and can be omitted during s ave. \[28035bfdd]
* **fylr.yml**: Automatically adjust **fylr.elastic.maxMem** to match (-10%) to match http.max\_content\_length of the indexer. If **fylr** sends more data than allowed, the bulk index request would get refused. \[41899033e]
* **/api/search**: Improved support for Chinese characters. The previous code would ignore 北京 (Beijing) when creating terms. Due to the segmenter we are using, this will now at least create two terms 北 and 京. It would be more work to understand this as one word rather than two. But the new code is better than the old, the latter did ignore Chinese characters all together. The generation of terms only applies to new object versions and there is built-in way to re-produce all terms for all objects. Also, fixed the search and do not interpret "*北京*" as "wildcard only" because of the word boundaries between the characters. Now, the WildcardOnlyNotAllowed error will only show if no word or character other than \* is used. \[bcea3f774]
* **Export CSV / XLSX**: Add column `original_filename` for file fields. \[643592f6e]
* **Dockerfile**: The included `config/fylr.yml` received a small change for `fylr+.init+.config+.system+.config+`. Previous versions would not use the `+` for the last part of the declaration, overwriting the `fylr.default.yml` default location configuration in `fylr.init.config.system.config.location_defaults`. \[e31d950ca]

### Fixed

* **Indexer**: Correctly index objects which contain files with **numbers bigger than float 64** in their metadata. \[3c7509de2]
* **Standard**: Fixed some standard info compilation with deep linked standard info. \[dbc9325b4]
* **Webhooks**: Fixed error handling for some connection problems. Before **fylr** would panic with a nil pointer exception. \[37e9ff265]
* **fylr backup**: Replace user group relations of easydb 5 which were marked as type `sso` to match **fylr** type `saml`. \[c58cd8da9]

## Frontend

### Improved

* **Plugin Manager**: The Plugin Manager has been enhanced to display **Build** information when the plugin provides a `build_info.json` file. We also added support for including a `README` in the plugin build and referencing it in the manifest. When a `README` is available, the Plugin Manager will show a new **README** tab. The `fylr-plugin-example` will be updated to include examples of these new features.
* **Custom Mask Splitter**: Improved handling of Custom Mask Splitters when the implementing plugin is not installed. It is now possible to remove an **unknown** Custom Mask Splitter by deleting its `"end"` element. This helps recover from cases where a mask became corrupted due to a bug when deleting an unknown Custom Mask Splitter prior to this update.
* **Asset Variant Editor**: Added a new checkbox to the **Produce Variant** tool to mark the newly created variant as **preferred**. This streamlines the workflow by removing the need to manually edit the variants array after creation.

### Fixed

* **Collection Sharing**: Fixed a bug that caused an error when saving a collection with the `"link"` right that included pools.
* **Collection Upload**: Fixed an issue that could occur when uploading a file to a collection.
* **Mask Editor**: Fixed the behaviour for unknown Custom Mask Splitters in the Mask Editor. Unknown splitters now correctly match their corresponding unknown `"end"` element, preventing orphaned elements that can corrupt the mask.
* **File Size Formatting**: Fixed file size formatting in Fylr.

## Plugins

#### [easydb-export-transport-ftp-plugin](https://github.com/programmfabrik/easydb-export-transport-ftp-plugin) `v1.1.1`

* This plugin gained support for the new `STDIN` feature of `/api/export`, with this, the previous limitation that only exports with less than 20 files could be transported is now fixed. The plugin can now handle all exports. The version `v1.1.1` is part of the Docker distribution of **fylr** as on-disk plugin.

#### fylr-ai-plugin-metadata `v0.7.1`

* Added support for `PSD` files. Supported formats are now `GIF`, `JPG`, `PNG`, `PSD`, `TIF`, `WEBP`.

#### fylr-plugin-obscure-image `v0.5.4`

* Added support for the new checkbox to automatically set the produced variant as **preferred**.
* If the user does not provide a custom name, the produced variant will use the asset’s original name.


# Release v6.27.1 (2025-12-11)

Published 2025-12-11 11:46:13Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.1/fylr_checksums.txt)
* [fylr\_v6.27.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.1/fylr_v6.27.1_darwin_amd64.tar.gz)
* [fylr\_v6.27.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.1/fylr_v6.27.1_darwin_arm64.tar.gz)
* [fylr\_v6.27.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.1/fylr_v6.27.1_linux_amd64.tar.gz)
* [fylr\_v6.27.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.1/fylr_v6.27.1_windows_amd64.zip)

## Server

### Improved

* **File worker**: The **custom configuration for colorprofiles** now includes a `-`, which allows renditions to be produced without embedded colorprofile. \[bd24e1453]
* **License Management**: The license has a new field `paid_to`. \[aa5855a62] \[f5c435ff5]
* **/api/plugin/manage**: Include a new `release` tag in the plugin's build info. It can be used by plugins to issue a unique release tag. \[650aa6b4557c]
* **/api/xmlmapping**: Add support for `_uuid`. This allows users to add the `_uuid` to file metadata. \[419da1a07]
* **Pages**: Improved focus setting. \[75099090e]
* **File delivery**: If writing of **metadata fails**, we now deliver the file with a changed filename, ending in `-metadata-updated-failed`, to show users that metadata writing went wrong. This improves the code shipped in `6.27.0` where the filename was unchanged. \[9417d8565]
* **Indexer**: De-duplicate term jobs during object save. This should speed up indexing objects with many terms. \[d677058ce] \[4efd06763]

### Fixed

* **IIIF Zoomer**: Fixed tile production for **TIFF with alpha channel**. This uses (again) **Imagemagick** instead of **Vips** to make the interim BMP 24-bit instead of 32-bit if the source has an Alpha channel. With no further tricks, IM is producing a 24-bit discarding the Alpha channel whereas Vips is keeping it. Our BMP fast tiler code (fylr iiif) expects BMP to be 24 bit and errors out if the BMP is not 24 bit. \[7ee2002b9]
* **Azure/S3 Support**: Support renditions which are bigger than the upload limit with a single upload URL are fixed now. Azure exposes a limit of 5GB for such connections. In order to circumvent limits of blob storage providers, **fylr** now uses the SDK provided upload method to copy files. Before we would use a direct PUT url provided by the storage provider. Some providers like Azure have a 5G limit on such URLs. This resulted in originals being uploaded correctly (using the SDK), but renditions not. In the rendition case we hand a put url to the exec server. That put url is now a link into the /fileblob endpoint of fylr which then proxies the data to the storage provider using the SDK. With this change uploads of renditions to S3 server should now be more reliable as the SDK knows tricks like retrying and chunking the upload. \[29e62b76b]
* **/inspect/exports/export**: Fixed page after changes in `6.27.0`. \[e3ab037de]
* **Indexer**: Wide **date ranges** (like million years BC), caused excessive memory use in **fylr** while compiling the document for the index. To prevent overflows and excessive memory use, the years, month and days written to the index for date ranges are limited by this patch. Instead of simply stepping the range per year, we now use bigger steps outside -1000 and 2500. The steps are the 10nth of the years, so for 1,000,000 years, the steps are 100,000. A re-index is recommended for instances where wide date ranges are in use. \[74b2c6295]
* **/api/export**: Fixed **loading exports** which use a **deleted metadata profile**. If a mapping is used in a export configuration and deleted, ignore that and reset the mapping to `standard`. This prevents an error which caused export lists to not load if an mapping was in use in any of the exports. Also, if a metadata mapping is deleted which is used in and export as XML export template, the export is no longer automatically deleted, but instead the XML export template is removed for affected exports. Also, set mappings to `null` for Pools. \[46cb9af78] \[cf99cf0c8] \[5fdf0b0a5]
* **fylr backup/restore**: Fixed logging specific errors. Some errors where unable to be logged, due to an uninitialized logger (introduced in `6.27.0`). \[128fc65ff]

## Frontend

### Improved

* **License Manager:** A new "paid until" property has been added to the license information.
* **Export Manager:** A new button has been added for the root user that allows opening an export directly in fylr’s inspect panel.

### Fixed

* **Geo JSON:** Fixed an issue where the map editor did not correctly read the Geo JSON field settings from the datamodel. This caused new fields to accept only one Geo JSON feature or prevented the “add feature” button from appearing.
* **BC Dates Filter:** The depth at which BC dates can be filtered in the filter panel has been limited. The server now uses lower granularity for very distant dates to avoid issues with Elasticsearch.
* **Change History:** Fixed the "Mark Changes" option, which in some cases caused an error that prevented the change history from displaying the correct data.
* **Metadata Mapping Editor:** Added support for using the uuid field in the metadata mapping editor for exports.


# Release v6.27.0 (2025-12-03)

Published 2025-12-03 12:26:12Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.0/fylr_checksums.txt)
* [fylr\_v6.27.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.0/fylr_v6.27.0_darwin_amd64.tar.gz)
* [fylr\_v6.27.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.0/fylr_v6.27.0_darwin_arm64.tar.gz)
* [fylr\_v6.27.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.0/fylr_v6.27.0_linux_amd64.tar.gz)
* [fylr\_v6.27.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.27.0/fylr_v6.27.0_windows_amd64.zip)

## Server

### Important

* This update **includes performance improvements** which require a few new data base indexes to be built and re-built. For bigger installations this update can take up to **one hour** to update the database.
* This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running. \[62ab4e497]
* **Overloading on-disk plugins** with an `URL` or `ZIP` installation of the plugin is now possible (see below).

### New

* **Standard rendering**: Improved **nested support**. The new `format_inner` for nested fields can be used to define a concatenation rule for multiple nesteds. Also, nested fields now support their `format` setting, just like other fields. With this, it is possible to render standard like this: `Title: keyword1, keyword2, keyword3 [copyright]`. **Current standard configurations may need adjustments as the rendering changed leading to different default standard renderings with this patch.** \[f25d163bc]
* **/api/system/location**: Added `pathstyle` for S3 locations. The default, if unset, is *true*. If set to *false* (recommended), the S3 is connected using **virtual host style**. In this mode, the bucket name is the first part of the domain used to connect. Path style is deprecated by Amazon S3. **fylr** previously always used path style. The connection library auto-detects if a server supports virtual host style and if path style is disabled the connection still uses it. Existing configurations will continue to use path style. If your server supports it, you can use the location manager to switch on virtual host style. \[eb09956a1] \[02af45e53]
* **/api/collection**: Add `_has_remote_objects`. This flag was missing from easydb 5 implementations and is used to filter remote objects in collections. If you are using a lot of remote objects stored in collections (via easydb connector), a re-index is recommended. \[9ba0d62f1]
* **/api/objects**: Support manually setting `Content-Type` headers for XSLT style sheets. Added new field to the baseconfig to allow overwriting the default Content-Type header (text/xml) to match the file produced by the xslt. Also in this patch, use <https://github.com/gabriel-vasile/mimetype>" to auto-detect content-type over http response writer (replaces the stdlib which does this too, but not as good). \[f730277ec]
* **Base Config**: Make logo splash screen configurable. \[4d3c4cd1a]
* **/api/export/stop**: Added support for this endpoint. Before, this was only a dummy, doing nothing. Also, set exports in status `processing` at startup to status `failed`. \[f5f6ab0d8] \[d5bd8ae5b] \[df93476a0]
* **/api/export**: Support to export non preferred files. The new flag `include_non_preferred` allows to include non preferred files in the export. The XML exports no longer contain the non preferred files, unless the new flag is set. The XML now contain original filenames of the files exported. \[285edee37]
* **/api/search**: Allow to search file field with **more than one file**. The index stores only the preferred file, but this change will add a counter to the file fields. With that, a search can be performed to find objects where multiple files exists in a given file field. Use `<file field>:count` as search field. Requires a re-index. \[62ab4e497]

### Improvement

* **/api/objects**: Support reference match in `/uuid/UUID/file/ID`. If the url contains a file/ID part, we now match the ID not only as file.id but also in file.reference if part of a migration reference from easydb 5. The easydb 5 eas ID is part of the reference (prefixed by "eas:"). **This makes easydb 5 deep links still work in migrated fylr instances.** \[64bccdf2b]
* **Go Garbage Collector**: Switch to `greentea` [garbage collector](https://go.dev/blog/greenteagc). We haven't notice a difference to the other implementation of the GC, but since this will become the default in Go 1.26 we already switch. \[150884d03]
* **/api/db**: New indexes speed up object saving for installations with many schema versions. \[66dd8f068]
* **Startup**: Output the **number of CPUs** which Go sees and uses. Notice that the number can change in containered environment, as Go is constantly checking the available CPUs. If the number is changed there is no further log entry. \[63c06a633]
* **/api/db**: New `skip_events` can be used to not write events. This is helpful for migrations where the restore produced lots of unnecessary events. This also renames `skipConstraints` and `skipBidirectionalUpdate` to `skip_constraints` and `skip_bidirectional_update`, resp. **fylr restore** still supports versions < 6.27.0. \[104de31b1] \[1fc5cc2ab]
* **License management**: Support additional email Cc for the expires soon warning email. \[27b6a8f93]
* **Base Config**: New frontend language Tuvaluan `tvl-TV`. This is currenlty a placeholder only. \[3bcf94de3]
* **Indexer refactor**: The **new indexer code** is a lot faster than the old one and uses less memory, especially on maschines with many CPUs. The number of workers now spawns only one Go routine to send data to the indexer instead of Number of CPUs x Go routines (each with a memory consumption of 5MB). Removes `fylr.yml` config: `fylr.debug.indexerSingleMode` and `fylr.elastic.maxHeapAlloc`. Standard loading chunk size for objects is now 100 (currently hard-coded). Removes the global exclusive lock on "object\_cache" which hindered `AUTO VACUUM` from running. Also, we fixed a number of issues revealed by the Go race detector. \[40cb9d8f3] \[9053cc068]
* **/inspect/exports**: Added search field, offset & limit. \[97c4aea28]
* **Reindex events**: Make some pollable. Frontends can use the events to show the current state of the index status. Reliable events are `REINDEX_START` and `REINDEX_INDEX_PURGED` (30 seconds after **re-index** is done, the old index is deleted). These two are pollable now (received through the `/api/event/stream` Websocket and `/api/event/poll`). Not 100% reliable are events `REINDEX_DONE` and `REINDEX_ERROR` as these are only written if the server was not stopped and restarted during a reindex. Reliable but not pollable is `REINDEX_QUEUED` which indicates the end of filling the index queue. \[1033f11b9]
* **POST /api/db**: **Faster injects**. This adds some improved loading decisions for new object injections. E.g. if all objects are sent using the `_all_fields` mask, we do not need to load the data of existing objects to merge with the delivered data as all data must exist in the payload when `_all_fields` is used. Another case for fylr restore was fixed where deeply nested standard rendering could slow down imports to a stall. This involved the rendering of a unique constraint error which tried to load standard for a better human readable error, but is unnecessary in the context of `skip_constraints` injections, where the constraints are checked in form of setting a system tag but with no error message. Also the loading of existing objects was improved in a way that reverse objects are not loaded if `skip_reverse` was used to inject the data. Also, speed up historic version loading with a new index. Fix `obj_dep` view to use latest datamodel to mark relation type. The `obj_dep` view was not using the latest data model to determine if a relation to a linked object is using re quiring standard rendering or not. \[f5e7e2b85] \[f5e7e2b85] \[24e2ed21f]
* **Postgres driver**: Use newer driver <https://github.com/jackc/pgx/v5>. The promise here is speed and the old driver github.co m/lib/pq is no longer actively developed (also sqlpro update for this). \[f5e7e2b85]
* **Sqlite driver**: Update sqlite driver from `v1.14.23` to `v1.14.32`. \[f5e7e2b85]
* **/inspect/migration**: Fixed & improved output of backup / restore status. he previous code was not taking into account that a command might have a re-used PID which then appeared more than once in "command\_track" which led to wrong status outputs. This also improves the overview table of the migrations. \[18023248f]
* **Hotfolder**, **/api/eas?collection=ID**: Collection upload (hotfolder or eas) will use tags set in the create collection setting and set hidden tags or , if no tags are defined in create collection, set all default tags. Also, linked objects which are created will always use all default tags regardless of the setting for the main object. \[f047a342c]
* **/api/db**: Set default tags. If no tags are sent in `_tags` (`_tags`: `null` or not sent), the default tags are set. If tags are sent, only default tags with displaytype "hidden" are set. \[f047a342c] \[0454a7213]
* **Page rendering**: This patch loads additional localization as configured in the base config from the Google sheets. Make sure to use this only during development as it is quite an expensive request. This is used for all pages generated by the server, like Login. \[5fe4454c2]
* **/api/export**: When exporting a ZIP, rather than writing a faulty ZIP, include an error file in the ZIP in case of an error during an export. \[45ffd6d6a9]
* **/api/db**: Faster loading of children by caching some regexp for filename replacements, also an index was added. \[40bf4b12a] \[eaaa0e7bf]
* **/api/plugin/manage**: Support to **delete auto-added on-disk** plugins. This was blocked before, making it impossible to update on-disk plugins using `URL` or `ZIP` installations. With this, an on-disk plugin can be manually deleted. Once it is deleted, it can be replaced by an url or zip version of the plugin. At startup, on-disk plugins are not installed if they exists with the same name as `URL` or `ZIP` type. \[a0bc5e690]
* **/inspect/files**: An extended filter allows to filter by status message. Also, output a link to remote URLs. \[67054ee1f] \[7d5a0e2d6]
* **DatabaseLockError**: This new api error (Postgres only) is thrown if the database wasn't able to acquire a lock. Also, we set the timeout for this to a global 1 minute per transaction. This affects `/api/db?collection=ID`, `/api/eas?collection=ID` and pretty much all `/api/collection/*` calls. Also, use a weaker lock to enable hotfolder plugins to create sub collections while run in a parent collection. \[3e597b225] \[116d34cc6]
* **File delivery**: If writing of **metadata fails**, we now deliver the file as is, with its **original metadata**. In some cases the underlying [Exiftool](https://exiftool.org/) fails to write metadata into a file (some MP4 get an error *Can't yet handle movie fragments when writing*). If that happens now, **fylr** writes a `FILE_DOWNLOAD_ERROR` event and send the file with its original metadata. \[995694000]
* **/inspect/objects**: On the detail page, add a **link to show the object** in the frontend. Frontend now opens always in the same browser window. \[9e4ead57b]

### Fixed

* **fylr convert**: When using `vips`, we now use a parameter `unlimited` to avoid an error *failed to allocate memory* which was seen on some instances. \[c97084109]
* **/api/search/parse**: Fixed alias for linked objects when value *null* is matched. \[9a721beaa]
* **Hotfolder & /api/eas**: Use **series base name** & **owner** fixes. The patch uses the series base name (if `recognize_series` is enabled) to match the update field content against. Before we only used the filename with and without extension to find existing objects. If a metadata mapping needs to **create linked objects**, this would fail if the mask wasn't allowed to edit owner. Now, the behaviour is the same as it is in regular editor sessions, `root` is becoming the owner if the mask has a hidden owner field (`off`). The same rules are now applied for creation of the top level object. Also, do not set fields if they are uneditable per mask used for the mapping. \[c8790ae4e]
* **/api/export**: Fixed mixed **CSV & XLSX** export of `_path` of hierarchic objects. \[4338fbf54]
* **/api/db**: Fixed **bidirectional linking** with multiple backlinks. Posting multiple objects with a link to a common object with bidirectional linking turned on would result in only the last object being linked to the other object instead of all posted objects. In some cases, sending such payloads could also result in a stack overflow and fylr crash. Fixed by improving the "equals" method for objects. This also includes a new linked object marshalling where we notice a recursion. Such linked objects will show up as `{"_recursion_to_object": "<object in string notation>"}`. \[49e14fcee]
* **/api/messages**: Fixed server generation of messages. This patch adds the previously missing checks for from and to validation for server messages. Before, **fylr** would output the messages regardless also outside the valid timeframe. \[b607f588c]
* **/api/export**: Fixed localized column names in `XSLX` exports. \[6f3870a6e]

## Frontend

### **New**

* **Duplicate Dialog References:** A new feature has been added to the Duplicate Dialog that shows exactly which objects contain the duplicated asset.
* **Years-Only Mode for Date Columns:** A new mode has been added for date columns so they only accept and display years. This option is enabled in the schema editor. *Important note:* This functionality is frontend only; there are no backend changes. Therefore, if full dates are imported from other systems, the data will be stored with the full date, although the frontend will display only the year.
* **Variants Download:** A new feature has been added to exports and the download manager that allows variants to be included in the download.
* **Delete On-Disk Plugins:** It is now possible to delete fylr “on disk” plugins — that is, plugins added by default to the system. This allows users to install new versions of these plugins via URL or ZIP.
* **Has Variants Search Modifier:** A new search filter has been introduced in expert search for EAS columns: *“Has Variants”*. This filter allows users to search for fields with more than one file — i.e., fields that contain variants. The new filter appears alongside the existing “Has Value” and “With Value” filters.
* **Query Language Support:** Experimental support for query language has been added. This feature allows users to use fylr’s query language to perform searches. To use it, the token `ql:` must be added to the search input; text after the token will be interpreted as query language. Users must currently use internal names of objecttypes and fields. Examples:
  * `my_objecttype.name == "foo"`
  * `my_objecttype.number_field > 100`
  * `my_objecttype.my_field != null` Query-language elements in the input search can be combined with expert-search query elements.
* **Nested Tables Standard:** New options have been added to customize the standard of nested tables. Users can now choose how standards inside a nested field are grouped. The new “standard” button in nested tables only activates when an internal field has a standard, making it easy to identify fields with active standards in the mask editor.

### **Improved**

* **Hide / Customize Splash Screen:** Users can now hide the splash screen or use the instance’s custom logo.
* **Quick View:** The quick-view popover now includes a button in the header to open the object in a new tab.
* **Editor:** When a new editor opens, focus is automatically placed on the first editable field.
* **Store Collection Search:** Saved searches now support collection query elements.
* **Filter Panel:** Improved logic to determine which fields should appear in the filter panel. Previously, fields with visibility configured using a Tag in the objecttype never appeared. They now display correctly.
* **Table with Pool Filter:** Improved table view construction when filtering with Pools. Previously, if no root element of the hierarchy belonged to the pool, nothing was displayed. Now, the table view shows the hierarchy and loads the necessary elements to build it. Elements outside the search are shown in grey.
* **Metadata Module in Background Tasks:** The metadata module now allows selecting any valid objecttype as a source, not only the search objecttypes.
* **Location Manager:** New options have been added for S3 Locations, along with a new table column showing which locations are configured as default.
* **Unknown Custom Mask Splitter:** Improved handling of unknown mask splitters (e.g., when the plugin implementing them is not installed). Instead of showing an error and failing to load the detail/editor, the splitter is replaced with an “unknown” type showing an error message. If it is a group splitter, internal fields are shown inside an “unknown” panel with an error message, but remain visible.
* **Export Sorting:** Exports created from the main search now retain the configured sorting. This means CSV or XML exports will follow the same order as the search results.
* **Caption Configuration:** An EAS field can now only be added once to the EAS-fields table in the caption configuration.

### **Fixed**

* **Geo-JSON Search:** Search filters for geo-json columns have been corrected; different area filters can now be combined.
* **Export Manager:** Fixed persistence of the “Customize Masks” setting, which was not saved correctly in some cases.
* **CSV Importer:** Fixed field-cleaning functionality when updating objects with CSV files containing empty cells. This now works properly for Date columns.
* **Shared Collection:** Fixed an issue when identifying collections as shared or private.
* **Default Tags:** Fixed the assignment of default tags in linked objects created via metadata mapping.
* **TagFormManager:** Fixed an issue that caused tags without labels to appear when a translation was missing.
* **Video Player:** Fixed a bug preventing the video player from working in the Variant Editor, which also caused the video to play outside the DOM and forced users to refresh the page.
* **Child Numbering:** The child-numbering selector is now disabled when the object does not have reverse-edit enabled.
* **Background Tasks:** Fixed the “Create background task” button when no object is selected in the search; previously, it created a task with 0 objects.
* **Mask Splitter:** Corrected the position of the “Customize” button for mask splitters in the mask editor panel.
* **Export Stop Button:** Restored and fixed the functionality to stop an export.
* **Captions:** Fixed support for nested EAS fields in the caption configuration.
* **Table View:** Fixed a rare error that could appear when multiple users were working on the same instance.
* **Shared Collection Pagination:** Fixed pagination issues in shared collections. Also fixed incomplete hierarchy rendering in instances with many shared collections.
* **Object Path:** Fixed path rendering when creating direct subordinate entries.
* **AssetDetail Plugins:** Fixed the check for the `startAutomatically` method in assetDetail plugins, which fylr was ignoring, causing plugins not to start automatically in the asset browser.
* **Collections:** Fixed a bug when moving objects between collections while using the filter input in the quick-access menu.


# Release v6.26.0 (2025-10-30)

Published 2025-10-30 15:14:32Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.26.0/fylr_checksums.txt)
* [fylr\_v6.26.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.26.0/fylr_v6.26.0_darwin_amd64.tar.gz)
* [fylr\_v6.26.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.26.0/fylr_v6.26.0_darwin_arm64.tar.gz)
* [fylr\_v6.26.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.26.0/fylr_v6.26.0_linux_amd64.tar.gz)
* [fylr\_v6.26.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.26.0/fylr_v6.26.0_windows_amd64.zip)

## Server

### Important

* A change in the **rights management** may lead to a necessary re-configuration of permissions. If you relied on `ASSET_DOWNLOAD` implying `ASSET_SHOW`, you must add a separate permission now as this is no longer the case. See below for more information.
* If you are using a **custom exec server configuration** in your **fylr.yml**, the new service `ocr` needs to be configured. See [`fylr.default.yml`](https://docs.fylr.io/for-system-administrators/configuration/fylr.default.yml) for an example. See below for more information. \[532498eb7]
* This **fylr** version officially supports the new [PostgreSQL 18](https://www.postgresql.org/about/news/postgresql-18-released-3142/). We recommend this version for new installations. \[36ae2790a]

### New

* **/api/system/share\_link**: New API to shorten links. This new api endpoint allows frontends to request a shortened url for a given long path. This is useful to shorten complex search queries. \[4a3b23377] \[e3a01568c]
* **/api/db**: Support **search** & **replace** & **append** for loca values in group mode. \[5b3675b3b]
* **/api/db**: New url parameter `skip_plugins`. Skips the execution of plugin callbacks (`system.root` users only).
* **/api/oaipmh**: Add tagfilter to mark records as deleted. Configuration in base config. \[3ecb7faab]
* **CSV Export**: Support top level fields for reverse nested. Before, these fields were not part of the CSV output. \[27724d990]
* **IIIF Presentation Manifest**: Support files with page previews (like `PDF`) in IIIF sequences. \[e4482a5a1]

### Improved

* **/inspect/files/*****file***: Output object ids from value table. The file.object\_ids column is not correctly set if files are imported without version produced (remote files don't set this data). This was confusing for some users. The patch adds an actual select to show relations stored in the `value` table. \[21927df00]
* **Rights management**: Separate `ASSET_SHOW` & `ASSET_DOWNLOAD` permissions. This patch **changes the rights management**. Before ASSET\_DOWNLOAD would imply ASSET\_SHOW which was confusing and prevented users from blocking non watermark renditions from view (but allow the download). Existing configurations which relied on that feature need to be adjusted by adding ASSET\_SHOW to the allowed permissions. \[35d0289d6]
* **fylr pdf2pages**: Use less memory by chunking mutool payloads. Limits processing to 10 pages per `mutool` call to use less memory when rendering pages for PDFs. \[f0b6aee4b]
* **fylr convert + pdf2pages**: Catch *CTRL-C* and kill external programs. This cancels the context external programs are executed with. When pressing *CTRL-C*, fylr will now send a kill signal to started processes. Also, the new code tries to be more gently in killing started programs. It uses `SIGTERM` and only after 2 seconds will send `SIGKILL`. Also, it tries to gently kill the whole group (the external programs and its descendants). On Windows **fylr** now uses `taskkill` to signal the process and all its children to terminate. \[77c105868] \[2ae393075] \[fa3101ddf]
* **Dockerfile**: Upgraded the distribution to the new Debian `testing` (*forky*). \[f939b3fc3]
* **/inspect/files**: Action `map_to_local_storage` now sets the `leave_on_remote` flag to false which helps understanding the current state of the files better. The action can still be repeated because `leave_on_remote` is not a required flag for the action file filter. Also, always show status message in file list. And last but not least, action `resync` tests reachability of remote url for file with `leave_on_remote` turned on. \[899e6940f] \[b35469f4a] \[77b036023]
* **/api/config**: Don't allow **oauth2 client** hashes with > 14 rounds. Turns out that such hashes need too much time to compute. \[c6dc257e5]
* **fylr.yml**: New config `fylr.debug.disableHttp2Client` allows to disable HTTP2. If you experiencing problems when loading files from a Microsoft IIS, this option might help to fix the downloads. This patch re-enables HTTP2 in the fylr container image after **6.25.0** turned HTTP2 off. \[aff8c5509] \[8f5a9f8af]
* **Janitor**: Improved speed for collecting objects to purge and file delete. Also, moved files to the bottom of the janitor page in /inspect/system/janitor. \[eca56878c] \[cb95c71d3] \[ff616a0ae] \[c8435cc84]
* **Filename replacements**: Add `_standard` and more column types. This adds the `_standard.N.text` + `_standard.N.text.LANG` replacements to the filename compilation. Adds `_pool.name.LANG` and column types *text\_loca*, *integer\_2*, *number*, *double*, *date*, *datetime*, *daterange*. In addition, **linked objects** are supported with replacements for `_standard.*`. Sort the filename replacements returned by `/api/objecttype` alphabetically. \[a91b3a422] \[5f8a6b41e] \[29c1abc7c]
* **fylr backup / restore**: Various improvements and fixes. \[a05c9e1bb] \[a05c9e1bb] \[01d7e2ce0] \[643167bb5] \[4ad86efcc]
* **/api/pool|objecttype**: Added a per file configuration for captions. Also, introduced a 202 process to resync files. If watermark or caption configuration changes, the API responds with a 202 when pools or objecttypes are saved. This includes more replacements too (see *Filename replacements*) \[97bdf0ebe] \[39b48c8c7] \[d7d7e9368] \[4b294150f] \[fcafbdbcc]
* **Cookbook `audioconverter`**: The recipe `audioconverter.snippet` gained support for fractional seconds. \[a450a2a5a]
* **Cookbook `imageconverter`**: Add `WEBP` as supported output format to recipe `imageconverter.browserthumbs`. \[520f7ca34]
* **Cookbook `_metadata`**: Introduce service `ocr`. This service is used by recipe `_metadata.ocr` and it allows a separate configuration to run the compute intense [**Tesseract**](https://tesseract-ocr.github.io/). If you are using the standard configuration, no changes should be necessary. See `fylr.default.yml` for an example on how to configure the new service. \[532498eb7]
* **/api/db**: Improved checks for deferred checks. The checks for errors `DeferredLinkedObjectMatchingSystemObjectId` and `DeferredLinkedObjectWrongObjecttype` are now only performed for newly inserted objects (version 1), which saves time. This patch also makes the checks safe for parallel injects (used by **fylr restore**). \[6cc75f587]
* **/api/db**: Hierarchy numbering: Don't support `<nil>` child idx. This patch makes sure that `_parent_child_idx` is always set. This ensures that we see a numbering for hierarchies where this is configured. Before, a `<nil>` state was supported which disabled the numbering for that object. \[4b899c980]
* **/api/config**: New 202 process to **ignore errors**. If the base config contains mapping errors like a faulty LDAP connection, the server now response with a 202 status. This allows the user to store such a config while ignoring the errors. BaseConfigMap can be skipped for saving if their attribute Savable is set. Currently only SAML & LDAP configuration check errors are savable. A new error `BaseConfigParse` was introduced for errors during unmarshal. \[a901b4600]
* **/api/message**: Output API error `StartTimeAfterEndTime` if `start_time` > `end_time`. \[e69237397]

### Fixed

* **Background Tasks**: If a task was executed on many objects, a panic that **fylr** is out of timers could occur. Fixed by re-using timer objects with equal names. \[0f6583915]
* **/api/search**: Fixed sorting for values with leading *0*. Affected instances require a re-index for the new ordering to work. \[1e86e9013]
* **/api/schema**: Remove deleted object types from transitions. Before, loading transitions with deleted object types would fail. \[558cd637c]
* **fylr backup**: Fixed panic when parsing B.C. dates. Parsing BC dates required localization to be loaded. During backup we don't have that, added a fallback. \[bb70270da]
* **/api/db**: Fixed saving `_child_numbering` with active plugins. The `_all_fields` mask (used for sending data to plugins), did not marshal \_child\_numbering, causing the value saved as empty. \[26f6732a0]
* **/api/db**: Fixed bidirectional duplicate case which led to fylr crash. If a duplicate bidirectional link was sent, the server could crash with a stack overflow. \[f35c656ec]

## Frontend

### New

* **Splash Screen**: A new loading screen has been added at the start of the application. The loading screen is displayed in parallel and does not block the app loading process.
* **Shortener URL**: A new option has been added to shorten URLs when sharing a search. Until now, when sharing a search via URL, all the different parameters were serialized in the URL, generating very long and complex links. Now fylr offers the option to use a short URL to share searches.
* **Watermark Config Per Objecttype**: We have added the ability to configure the watermark per object type. Previously, the watermark was configured at the pool level; now it can be configured per object type if it is not pool-managed and if it contains EAS columns.
* **Image Captions**: We have added the ability to add captions to images. These captions can use replacements and can also be configured per EAS column. You will find this new configuration in the same tab as the watermark settings in both Objecttype and Pool.
* **Asset Version Plugins**: We have added the ability to create new plugins for the Asset Versions section. This new plugin type allows extending editing functionalities such as rotation or cropping. The first plugin to use this new feature is the new `fylr-plugin-image-obscure`, which adds new editing options to obscure parts of images interactively in the frontend, such as pixelate, blur, or blackout. Currently, this new way to extend the version editor is not fully available for general development. Documentation and a practical example will be added to `fylr-plugin-example` once it is completely available.
* **View and Download Right Split**: A new check has been introduced in the frontend that allows users to configure download and read rights separately. Previously, the download right automatically implied read = true. Now they can be configured independently, allowing assets that can only be downloaded but not displayed in the asset browser.

### Improved

* **Pool Watermark**: The watermark configuration in pools has been improved with a new selector that indicates whether the configuration is active, inherited from the parent pool, or completely disabled. Previously, there was no way to disable the watermark configuration in a child pool.
* **Open of Records**: Improved behavior when double-clicking on records in the main search. Until now, when an object was selected, it could be opened with a single click, which caused confusion with the double-click action. To make the intention clearer, the behavior has been changed so that an object can now only be opened by double-clicking.

### Fixed

* **Caption Configuration**: Fixed a bug where the root pool triggered a resync popup when changing configurations other than the caption configuration.
* **Search Selector**: Fixed a z-index issue by reorganizing the markup so that z-index is no longer required.
* **Pool Manager DEV**: Added a dump data debug shortcut to the pool manager. Now, if `Alt + Click` is used on the save button, the pool data will be displayed in the console.
* **Export Manager**: Temporarily removed the "Stop" button for exports currently in progress.
* **Pin Asset Browser**: Fixed a bug where the pin asset browser button disappeared from the DOM when editing any field in the editor.
* **Export Transport Editor**: Fixed a bug where the export transport popup could not be opened if the configured transport data was invalid.
* **WebP Assets**: Fixed a bug where WebP versions with watermarks were never selected by the asset browser for display.
* **Exact Token Query**: Fixed a bug where Exact Token Query elements could not be edited by double-clicking them.
* **Cross Server Modebar**: Fixed an issue where the cross-server modebar was displayed in situations where it should not appear. Additionally, the modebar will now minimize when the header is minimized.
* **Presentations**: Fixed an error when loading collection presentations that could include unavailable elements.
* **Nested Table**: Fixed an error in nested tables that caused an extra row to be added if an asset was loaded into an EAS Column in the first row, resulting in two rows. Now the asset loads into the correct row without adding a new one at the top.


# Release v6.25.1 (2025-10-17)

Published 2025-10-17 10:18:08Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.1/fylr_checksums.txt)
* [fylr\_v6.25.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.1/fylr_v6.25.1_darwin_amd64.tar.gz)
* [fylr\_v6.25.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.1/fylr_v6.25.1_darwin_arm64.tar.gz)
* [fylr\_v6.25.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.1/fylr_v6.25.1_linux_amd64.tar.gz)
* [fylr\_v6.25.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.1/fylr_v6.25.1_windows_amd64.zip)

## Server

### Fixed

* **/api/system/location**: Fixed config check for type `azure`, preventing new storage locations from being created. \[c5f8a5748]
* **Rightsmanagement**: Add tagfilter check to permissions defined for tags. \[315b09fa6]
* **Groups Management**: Skip deleted groups in transitions at startup. Before **fylr** startup could fail if a deleted group was still mentioned in a transition. Now, the startup ignores the deleted group. The transition will still fail without manual clean-up. \[73dfa21a2]

### Improved

* **/inspect/files**: Action `produce versions` can now reproduce renditions for read-only storage locations. The read-only location is not changed, of course. \[5fec8c922]

## Frontend

### Fixed

* Trash Bin: Improved CSS; added a label to Trash search to indicate the selected object type.
* Shared Collections: Fixed pagination when a user has more than 100 shared collections.
* Workflows: Fixed a frontend error when opening the Tags & Workflows panel if a workflow had validation errors.
* Reverse Pool Selector: Fixed an issue where the pool auto-selected by the top-level object in reverse-linked fields was not sent to the server.
* Quick Access: Fixed style issues in the Quick Access menu.
* Asset Info: For root users, the quick link to the asset’s Inspect page now uses the correct URL.
* Template Manager: Fixed preview panels so the modal height remains constant while navigating template previews.
* Deep Links: Prevented availability checks from running when deep links are fully disabled in the base configuration.
* Admin Messages: Fixed an issue that prevented clearing the Start Time and End Time inputs.
* Export Manager: Fixed a bug where exporting a single object always enabled “Customize Masks” due to incorrect detection of whether the object was using `best_mask`.


# Release v6.25.0 (2025-09-30)

Published 2025-09-30 14:03:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.0/fylr_checksums.txt)
* [fylr\_v6.25.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.0/fylr_v6.25.0_darwin_amd64.tar.gz)
* [fylr\_v6.25.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.0/fylr_v6.25.0_darwin_arm64.tar.gz)
* [fylr\_v6.25.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.0/fylr_v6.25.0_linux_amd64.tar.gz)
* [fylr\_v6.25.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.25.0/fylr_v6.25.0_windows_amd64.zip)

## Server

## Important

* This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running. \[d1cbc966e]
* This release **enables the janitor** which purges deleted objects (if configured) and also unlinks files from deleted objects to save disk space (if configured). To turn this off or on, check your base config settings in services (purge objects & file link removal section). \[17c48431a]
* The **fylr container image** (e.g. for Docker) turns off `http2` for the Go client. This affects `/api/rput` and other places (like in the exec server) where fylr loads data from other servers. Details see below. If you run **fylr** outside of a container and want the same effect, set the environment variable: `GODEBUG="httpservecontentkeepheaders=1,http2client=0"` for the **fylr** binary. \[005edc1e2]

### New

* **/api/eas/download**, **/api/objects**: Added direct recipe support for file downloads. With this, you can directly target a recipe with parameters to create a new rendition of the file on-the-fly. One recipe we deliver for this is `audioconverter:snippet` which allows to cut audio files before download. \[3ba3eedd0]
* **Task Module&#x20;*****delete\_object***: The module allows to delete objects based on a search. \[adb6a8fa3]

### Improved

* **fylr backup / restore**: Various improvements. \[665d018c3]
* **fylr convert**: Improved support for some TIFF images. \[760421d9c]
* **Indexer Priority**: Index **base objects** with higher priority. If the index queue is full, messages, users and other base types were only reindexed after the regular object (if added later) leading to unexpected frontend errors. With this patch, such base objects are indexed with higher priority, avoiding such problems. \[18359637f] \[a71c8a43c]
* **/api/collection**: `_has_acl` for collections is now only true if there are active compiled acl (before non active ACL would not be skipped). Also, don't allow to set `is_system_collection` over the API. \[c0531f7cc] \[42dadbb00]
* **Documentation**: **/api/collection** and **/api/db\_info** has been added to **/inspect/documentation**. \[f723001c2] \[e0e4e833c]
* **/inspect**: Collapse `<h3>` tag elements for easier navigation. \[f723001c2] \[d1f5cee80]
* **Postgres DB**: Create new database with 64-bit integers. Before we used 32-bit integers which caused overflow problems in bigger systems with lots of objects. \[f24f13757]
* **PDF-Converter**: The preview size of the bigger page can now be configured using the recipe parameter `min_size`. The default is 1000. \[6ebb1d951]
* **OAI/PMH**: Support non spec compliant `offset` as URL parameter. \[fd62e3e57]
* **/inspect/files**: Refined action `map_to_local_storage`. Now, we set `leave_on_remote` to *false* and `produce_versions` to *true*. With this change a in place on disk migrated file from easydb 5 can now produce fylr renditions when re-synced. \[8a02d65db]
* **/api/task/modules**: Improved reading loca keys. Before **fylr** only read top level loca keys for the config parameters of a task module. \[dad52ddba]
* **/api/db**: Add `_purged_or_deferred` indicator to linked objects output. \[48fe7aa1e]

### Fixed

* **Indexer Dates**: Fix indexing dates with a timezone offset outside of -18:00 and 18:00. This data is not received well by the Java based Opensearch and lasticsearch. This caused objects to not being index if they contained a file with a created date with such a timezone. Requires a re-index. \[d53c50589] \[d1cbc966e]
* **/api/collection/splice**: Fixed a case where splice was not splicing the correct objects. This resulted in incorrect sort order after manual sorting. Also, require `count` to be set. Before omitting `count` defaulted to *-1*. \[49fc6be63] \[c0531f7cc]
* **/api/db|search**: When loading historic versions, make sure to load the historic version of a parent. Before, the current object of a parent was loaded. Also force to skip cache when historic versions are loaded. \[0a8999bd488] \[a825ea0e9]
* **/api/collection**: Disallow setting of `is_system_collection`. \[c271b2e5f]
* **/inspect/migration**: Fixed ZIP download. The zip downloaded couldn't be opened with all ZIP tools because of corruption at the end of the file. \[325fb9111]
* **Janitor**: Fixed **object purge** selection. This patch makes sure that the correct information is used to decide if an object (without pool) will be purged or not. \[4522543dd]
* **OAI/PMH**: Fixed verb `GetRecord` to return correct XML (this was using `ListRecords` as metadata element). Fixed rendering of reverse nested in `_path` if parent values is on. \[fd62e3e57]
* **DELETE /api/db**: Fixed case where reverse nested with `NOT NULL` setting for the link column were set not null when policy `setnull` was used. \[69b991bf5]
* **/inspect**: Fixed access during re-index. If the reverse proxy was configured using `bind`, opening \`/inspect´ during a blocking re-index would show the blocking page. \[bb5e95286]
* **Janitor**: Fixed pool select for **object file unlink** and **object purge**. The janitor failed to select the correct objects and files if the object has been moved to a different pool in its latest version. Now, the janitor policy of the pool of the latest version of the object is considered. \[425845862]
* **/api/eas/rput**: Worked around a problem with connecting to a remote IIS server with HTTP2 by forcing HTTP1.1. We couldn't figure out if the bug is in the Go client library or in the IIS server. \[005edc1e2]

## Frontend

### New

* **Relative Ranges**: Following the new form added to the Date Column in the previous release, we’ve introduced a new button in Date Range fields that allows creating relative ranges for both *from* and *to*. This new form makes it possible to perform relative searches from today, both into the future and the past. For example, you could build a search query that looks for objects whose date range field is between “3 years ago until 3 years in the future”.

### Improved

* **Collection Sorting**: Improved system responsiveness when sorting objects in collections.
* **Flex Handles**: Improved display of some flex handles in the system. For example, the quick access in the main search now shows a label when closed.
* **Recover Tool**: The recover tool, which allows using a version from the change history as a new version of an object, will now be accessible to users with *editor + change history* access, not just root users.
* **Janitor Overrides**: Improved the behavior of forms in Object Type Manager and Pool Manager when overriding janitor configuration. Enhancements include:
  * The inherited value is now displayed in pools.
  * Placeholders better reflect the current configuration state.

### Fixed

* **Keyboard Shortcuts**: Fixed the use of `ctrl+a` when search is open.
* **Change History**: Fixed the date formatting in change history.
* **Wildcard Fulltext Searches**: Fixed functionality of wildcard searches in fulltext query elements.
* **Nested Popups**: Fixed validation issues in nested popups with multiple levels of nested tables.
* **Save Shortcut**: Fixed the `ctrl+s` keyboard shortcut for saving in the editor sidebar.
* **Editor Popup**: Fixed an issue where event listeners did not work properly in full-screen editors, preventing field validations from functioning.
* **Filter Manager**: Fixed an issue where the "Show More" button in filter panels did not display the correct elements when filtering hierarchy objects in search.
* **Created Today**: Fixed the functionality of the "Created Today" query element and fixed saved searches.
* **Mark Changes in Change History**: Fixed issues with the functionality that highlights differences in the change history.
* **Sort By Date**: Fixed an issue that prevented sorting search results by date when no group sorting was selected.
* **Sort Manager Panels**: Fixed a bug that allowed selecting multiple sort criteria for the same index.
* **Has Value for Assets**: Fixed the label of the *has\_value* query element in EAS fields.
* **EAS Columns**: Fixed an issue where deleted assets displayed the context menu in the change history.
* **Quick View for Deleted Objects**: When a non-deleted object has a linked object pointing to a deleted one, users can now view the quick view of that object even if they don’t have access to the trash manager.
* **Sharing URL**: Fixed an issue preventing searches from being shared via URL when queries contained spaces.
* **Default Tags**: Fixed the automatic assignment of default tags that were also hidden.


# Release 6.24.0 (2025-09-11)

Published 2025-09-11 09:44:48Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.24.0/fylr_checksums.txt)
* [fylr\_v6.24.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.24.0/fylr_v6.24.0_darwin_amd64.tar.gz)
* [fylr\_v6.24.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.24.0/fylr_v6.24.0_darwin_arm64.tar.gz)
* [fylr\_v6.24.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.24.0/fylr_v6.24.0_linux_amd64.tar.gz)
* [fylr\_v6.24.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.24.0/fylr_v6.24.0_windows_amd64.zip)

## Server

### New

* **GET /api/db**: **Render historic versions**. If a specific version is requested, this patch delivers the actual version of the object at the specific time of when it was saved. With this, linked and reverse objects are rendered in the version which was current when the historic object was saved. To restore the old behavior `latest_linked=1` can be used as URL parameter. This patch also stores the microseconds of the create date of new objects. \[d23538b7b] \[a09727a93]
* **/inspect/files**: Add action to **map remote stored files** to locale storage. This also sets a `X-Fylr-Storage-Location` header to `/api/eas` output. This patch also removes the unused support for the remote delete url. It was meant to be used for eas in place migrations, but we now use a different concept for that (storage location which uses the EAS file layout). Also, when restoring easydb5 EAS urls using `fylr restore`, remove the mimetype from the URL and set it via `_technical_metadata`. This enabled the action *map\_to\_locale\_storage* work on such remote files. \[2d176e49f] \[6b56cda26] \[39da9a75b]
* **File renditions**: Support **Kodak Photo CD** `PCD` format. The default format for renditions is `JPEG` although `PCD` is lossless, but `PCD` is so good at compressing, a 5 MB `PCD` file would blow up to 20 MB `PNG` taking too much space. The same image is only 1.8 MB as `JPEG`. Already existing `PCD` files can be re-synced to produce renditions using `/inspect/files`. \[ae97a70b9]

### Improved

* **fylr backup/restore**: Improvements & Bugfixes. \[33fb6867a] \[1bfe749cf] \[72531a6c4] \[9dc4e3209] \[9eed16d92]
* **/api/db|search**: For deferred linked objects, output the `_system_object_id` along with the `_uuid`. Before we only had `_uuid` showing up for such *ghost objects*. Improved the output of such deferred objects in inspect/object render. Also, improved the database constraint check to make sure the linked system object id is 0 if the uuid is given. This was the intention of case *TYPE\_LINKED: linked\_object\_uuid WITHOUT FK* but failed to work because the way Postgres ignores such checks if partial matches are *NULL*. Since this wasn't a problem with current systems, we are not creating a migration step for this. \[2cc54c1c0]
* **Go 1.25**: Update build system to use Go 1.25. The new [JSON implementation](https://go.dev/blog/jsonv2-exp) is turned on, it promises faster decoding. \[dd384db50]
* **Task Module `metadata`**: Force metadata requests. This forces requesting metadata for images, even if the metadata h ad already been produced. With this patch, ChatGPT requests can be repeated. \[d5c3dc3fe]
* **/api/search\[type=message]**: Support search for `message._id`. \[c5c7a32d4]
* **/eas/rput\[/bulk]**: Support to set `technical_metadata.mime_type`. This patch allows to set the mimetype in `"file"` by setting `_technical_metadata.mime_type` in **rput\[/bulk]** request. \[6b56cda26]
* **POST /api/db**: Don't allow to link deleted objects. Also, improved checks for deferred linked objects. \[37b972f34] \[37b972f34]
* **/api/db**: Add `OBJECT_UNDELETE` and `OBJECT_PURGE` events. These events are clearer than `OBJECT_DELETE` with `info.policy` as it was before. Already written `OBJECT_DELETE` events are not changed. \[8ce2e5135]
* **/api/config**: Support default values for `bool`. This change switches boolean to a 3-state system internally. "unset", false and true. With this change, setting a default for a boolean in the config becomes possible. \[78a50ebfa]
* **Plugin Updater**: Use `Etag` in addition to `Last Modified` to check if an plugin installed by URL needs an update. \[2b0bece67]

### Fixed

* **Custom Datatype Updater**: Fix panic when used with `custom_types.TYPE.update.plugin_user.reference`. \[af9146073]
* **Dockerfile**: Use [init program S6](https://github.com/just-containers/s6-overlay) to start **fylr**. With this zombie processes are avoided. Such zombies would be created if a sub process started by fylr didn't clean up all further sub processes it had created (like "tesseract" when killed by fylr due to a timeout). \[1293d5f86] \[ac71dc16c]
* **Export XLSX/CSV**: Export thumbnails (XLSX) even if custom fields skip `_standard`. Also, skip `_standard_parent` in that case. \[7cbdfc6d5071]
* **ZIP file delivery**: Set correct `Content-Type` in HTTP response for file streamed out of ZIP files. Before, no `Content-Type` was set, which caused problems in Firefox when trying to load css from plugins. \[ae6dc5093] \[77382cd85]

### Plugins

* **Typo3 Plugin**: The [Typo3 Plugin](https://github.com/programmfabrik/typo3-easydb-plugin) version 3.1.2 was released and now supports version 13.

## Frontend

### New

* **Editor Persistence**: A new functionality has been added to the editor. Now, when saving, the exact scroll position within the editor will be remembered. Additionally, tab and panel type mask splitters will also retain their state. This ensures that the user remains in the same position within the editor after saving.
* **Mask Memory Manager**: Implemented a new manager in the editor that stores information about the last mask used between editor and detail mode. This allows the mask selection to be maintained when switching between modes and objects.
* **Keyboard Events**: Keyboard events have been added to improve the usability of the application. Now it is possible to use shortcuts such as CTRL+A to select all objects in the search, navigate using arrow keys, use CTRL+S in editors to save, CTRL+N to open a new editor, etc.
* **Ghost Linked Objects**: Support has been added to display linked objects that have been permanently deleted, for example in the change history. If a linked object no longer exists in the application, it will be displayed correctly with minimal information (object type and mask), indicating to the user that it is a deleted object.
* **Relative Date Ranges for Search**: A new feature has been added to Date Fields, allowing the definition of relative date ranges based on the current date when executing a search. This new mode enables configuration of direction, unit, and range value. For example: "From now to 30 days in the future" or "From 30 years ago to now." This allows for more dynamic searches, useful for background tasks.

### Improved

* **Validations in Nested Popovers**: Data validation within nested popovers has been improved, and validation error messages will now be displayed inside the popover.
* **Linked Objects in Filters**: Improvements have been made in how linked objects are displayed in filters. This is related to how we render the filter group header for linked objects.
* **Query Elements**: Support has been added for copying, cutting, and pasting query elements in the search input, making manipulation of query element groups much easier.
* **Linked Objects**: Added the ability to define custom placeholders for linked object fields in the Mask Editor.
* **Nested Table**: The delete row button behavior in nested tables has been improved. In cases where the nested table always contains a row, pressing the delete button will now clear the row content instead of being disabled.
* **Editor Reload Prompt**: The reload prompt behavior has been improved when an object has been updated externally or a reverse field has been modified. Now, multiple stacked prompts will no longer appear, and both object data and reverse objects will reload correctly.
* **Change History**: Versions in change history that contain reverse records will now display a snapshot of the reverse records at the time the version was created.
* **User Frontend Prefs**: Improved the design of the new user preferences panel for the frontend.

### Fixed

* **Trashbin**: Fixed the purge alert description.
* **Field REGEXP Validation**: Fixed the REGEXP validation label for fields in the editor.
* **Export Manager**: Fixed validation in the export manager when only the XLSX format was selected.
* **Editor**: Fixed the `getBestMask` method when called from a new object not retrieved from the server.
* **Search**: Icons for audio, video, and office assets are now displayed in Overlay View as well.
* **Hierarchy Manager**: Fixed the hierarchy indicator in the new standard and text result views in lists.
* **Detail Fullscreen**: Refactored dark theme styles for the hierarchy browser in fullscreen mode.
* **Hierarchy Manager**: Fixed the hierarchy path issue where it became unresponsive when changing the result view in search.
* **Collection Upload**: Fixed Collection Upload settings; the frontend was sending an incorrect `linked_pool_id` value in cases where this data was not needed.
* **Shared Collections**: Fixed the recursive count in shared collections, and also improved filtering to exclude non-allowed collections.
* **Location Manager**: Added a new field `remote_url_prefix` to the form of filesystem locations.
* **Popovers**: Fixed an issue where popovers did not resize correctly when opened for the first time.
* **Query Elements Selection**: Fixed an issue preventing the use of shift+A in the search input, which incorrectly triggered the select-all event.
* **Main Search**: Fixed an issue where main search results were not updated after adding new objects when the "hide newly created records" option was enabled.
* **Collections**: Fixed a bug that displayed the compatibility alert with EasyDB4 multiple times in instances migrated to Fylr.
* **Date Ranges**: Fixed a bug in expert search where date ranges did not correctly trigger the apply button update.
* **Print Manager**: Fixed a bug preventing images from loading correctly in very large PDFs due to the `lazy_loading` property. Additionally, Print Manager now ensures that all images are fully loaded before invoking the print library.
* **Nested and Reverse Nested Tables**: Fixed a bug that prevented nested and reverse nested table rows from being saved correctly when configured as readonly in the mask.
* **Tag Fields**: Fixed a bug where tag fields were not rendered correctly in the detail view.
* **GeoJSON Column**: Fixed methods that retrieve the custom OT map center or zoom when the GeoJSON column is inside a reverse linked object.
* **Editor Reload Prompt**: Fixed a bug that prevented saving when the reload prompt appeared after a reverse linked object was modified.
* **Polyhierarchy Parent Field**: Fixed the behavior of the polyhierarchy parent field in expert search and in the query element editor.
* **Has Value Filter**: Fixed the use of `has_value` with the AND operator.
* **Background Tasks**: Fixed the scheduler for background tasks to send the correct time format to the server.
* **Data Tree Construct**: Fixed an edge case where the tree build process could get stuck in an infinite loop due to recursive `copyObject` calls. The legacy function was replaced by the modern implementation that uses a safer approach.
* **Nested Popovers**: Fixed an issue preventing nested popovers from opening when a separator mask splitter was used in the nested configuration.
* **Table View**: Fixed an error causing some fields not to display in the table when those fields were not visible in certain object type masks.
* **Asset Browser**: Fixed the default height of the asset browser in the sidebar.
* **No Rights Popup**: Fixed a bug that displayed multiple "no rights" popups in the editor for limited rights linked objects.


# Release v6.23.2 (2025-08-15)

Published 2025-08-15 10:14:59Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.2/fylr_checksums.txt)
* [fylr\_v6.23.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.2/fylr_v6.23.2_darwin_amd64.tar.gz)
* [fylr\_v6.23.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.2/fylr_v6.23.2_darwin_arm64.tar.gz)
* [fylr\_v6.23.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.2/fylr_v6.23.2_linux_amd64.tar.gz)
* [fylr\_v6.23.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.2/fylr_v6.23.2_windows_amd64.zip)

## Server

### Fixed

* **Indexer**: Fixed indexing custom data types which include geojson custom fields inside nested. Requires a full reindex to update the mapping. \[6a3887f66]


# Release v6.23.1 (2025-08-14)

Published 2025-08-14 13:27:43Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.1/fylr_checksums.txt)
* [fylr\_v6.23.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.1/fylr_v6.23.1_darwin_amd64.tar.gz)
* [fylr\_v6.23.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.1/fylr_v6.23.1_darwin_arm64.tar.gz)
* [fylr\_v6.23.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.1/fylr_v6.23.1_linux_amd64.tar.gz)
* [fylr\_v6.23.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.1/fylr_v6.23.1_windows_amd64.zip)

## Server

### Improved

* **/api/oai**: **Identify server** with `deletedRecord=transient`. Setting deletedRecord to transient weakens the promise of previously announced "persistent". Now, the harvesters are no longer guaranteed that an object which once was in the feed will appear as deleted if it no longer is. This works around cases where objects are being unpublished by removing the rights from the `system:oai_pmh` user to see the object. It also covers more complex cases: E.g. in a set representing *pool a*, an object might go missing because it has been moved to *pool b* with the same published status. \[c850d2cf0]
* **/api/export**: **XLSX / CSV** formats have now an improved column sorting. With this patch, **fylr** sorts system columns, followed by user columns, followed by nested & reverse nested. \[5ea0d7e7b]
* **/api/pool|objecttype**: Check settings for `caption` parameter. This adds a check to the caption parameters for size + padding. Also, replace all `%<name>.<field>%` placeholders in the caption text regardless of the rendered object type. With that, multiple object types can be configured in one caption text. \[8f5afc17c]
* **Logging**: Improved output of time for re-indexing done messages. \[7f2affeeb]

### Fixed

* **Indexer**: Fixed indexing inconsistent linked objects. If a linked object in a column linking to OT A happens to be of OT B it could happen that the indexer panicked. The underlying problem is the inconsistency of the data (a not supposed to be there OT B where the link should point to an object OT A). \[5993be1b0]
* **/api/config**: Render user records for the new type `user`. Before, the response only showed the user ID. This changes the internal data base format to store the user. If users have been already configured in base config, the setting is lost and needs to be configured again. \[5121f4d6b]
* **/inspect**: Support user select in Safari. \[f343905df]

## Frontend

### Fixed

* **Hierarchy Manager**: Fixed the hierarchy manager when using the standard view and text view in Lists.
* **Date Filters**: Introduced a new argument for the translations of date filter groupings. This is useful for translation into languages such as FI-fi.
* **Trashbin**: Removed the "Create Background Task" option from the trashbin context menu.
* **Nested Popovers**: Fixed an issue when attempting to create the nested popover that prevented it from being saved.


# Release v6.23.0 (2025-07-31)

Published 2025-07-31 13:44:45Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.0/fylr_checksums.txt)
* [fylr\_v6.23.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.0/fylr_v6.23.0_darwin_amd64.tar.gz)
* [fylr\_v6.23.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.0/fylr_v6.23.0_darwin_arm64.tar.gz)
* [fylr\_v6.23.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.0/fylr_v6.23.0_linux_amd64.tar.gz)
* [fylr\_v6.23.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.23.0/fylr_v6.23.0_windows_amd64.zip)

## Important

* This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running.

## Server

### New

* **/api/search\[type=object]**: Support `width` for `sort` for `_changelog.date_created` and `_changelog.date_last_updated`. With this change a second sort criteria in addition to these dates works. The dates are groups by the width. So dates in the same `day`, `week`, `month` or `year` are considered the same. Requires a re-index. \[d9cd21e81]
* **/api/search\[type=collection]**: Support searching for `_invalid_acl`. With this change collections with the `_invalid_acl` flag can be searched. Also in this patch, improved 202 message with more details about problematic collections when saving objects. Requires a re-index. \[0a0d9e3b7] \[d9684e243]
* **Renditions**: Support for captions. Captions can be configured using data from the object images are linked with. Captions are rendered underneath the image. This requires configuration as well as a forced re-produce of the renditions. \[1242e2a07]
* **Plugin Support**: A new directive `plugin_user` can be used to export a user configuration into the plugin base config. With this user, plugins can use elevated rights to do API requests. The formula columns plugin is using this feature to allow formulas to run in `system.root` context. This adds generic support for `type:user` to base config. \[7cd431b77] \[c29e29f3f] \[be747d642]
* **Geo Support**: Have `standard.geo.1` include standard geo from linked objects. This patch includes the standard geo of linked objects into the standard geo of the top level object. \[f17af0a28]
* **/api/search/parse**: Support `geo_bounding_box` with coordinates (geohash and decimal). \[7567e7ba9]

### Improved

* **/api/db**: Support updates for `_child_idx`. The \_child\_idx in the index is used to sort manually sorted reverse objects. This is now updatable in the reverse linked object using `_child_idx`. Much like `_parent_child_idx` which is used for reverse hierarchies. To align the API, `_child_idx` was moved into the object level and is now updatable. \[65c4145d5] \[e221a5f0e]
* **/api/collection**: Render `_has_acl` from compiled rights. This shows the share icon for collection if only the parent has ACL but not the actual collection. \[b53260531]
* **Index**: Don't index terms of deleted objects. Deleted objects where part of the unique index as well as the term list. This patch makes sure to not include them in these indexes. Also support term deletions and updates properly. \[bfad92b6a] \[e2c4f4f03]
* **fylr backup & restore**: Various fixes and improvements. \[a30f90e8d] \[19c3ad879]
* **/api/db**: Show Object type in `ObjectInsufficientRights` error. \[c572ceeab]
* **/api/export**: Support `"include_changelog": {"with_user": true}` to export changelog information with or without user names. Also, add support for changelog to `XLSX`. \[2769bbed5] \[03b9d8fc2] \[641e5d818]
* **/api/(db|publish)**: Do not allow to delete publish objects. Also do not allow to delete objects which are used in published objects, if their version is pinned. If they are using in published objects without a pinned version, deletion is allowed and the link will be set null. If the link cannot be set null due to data model constraints, the deletion is not allowed anyways. Also improved checking of payload for api/publish: collector must be configured in base config. \[048fb3a56]
* **DELETE /api/db**: Support purging of linked objects still in use. If linked objects are still in use in historic version, they are now set back to a `uuid` only ghost version (like if you use `allow_defer` during inject). Also in this patch, the API output the `_uuid` for such a ghost object, this can be the expected `_uuid` (`"allow_defer": true`) or the `_uuid` of the purged linked object. Also, run unique key constraint checks after undelete. This marks violating objects using the system tag `UNIQUE_KEY_VIOLATION`. \[25be5c3b7] \[25be5c3b7] \[b9a5d3d18]

### Fixed

* **/api/export**: Fixed export when aggregations in the `search` property use `filter_parent`. \[e18395fd4] \[abcf2e6e3]
* **/api/search**: Fixed for linked object hierarchies with parent `off`. If the mask setting to edit parents is off, the search for `_path` would not work (cause no data would have been in the index). Requires a re-index. \[3872c9704]
* **fylr metadata read**: Fixed for `xml`. This fixes reading huge `.xml` files by telling Exiftool to not read the `XML` as metadata tags. Use the same technique (`-fast3`) for `.zip` files (before we omitted the group `ZIP` on output). Also in this patch, pass down "verbose" from fylr convert to the subcommands called for a better overview of the called processes. \[69b130a36]
* **/api/suggest**: Fixed `HTML` escaping, parallelize execution. This fixes html escaping in `"tokens"` and `"fields"` suggestions making it possible to properly suggest tokens like `<undefined>`. Also, don't return the `field` property if no `"fields"` where requested (but `"fields_suggest": true`). Before we added an empty `"fields":[]`, which suggested that no fields have been found, albeit really no fields were searched. Parallelize execution of the 3 elastic search queries. \[954a5a9db]

## Frontend

### New:

* **New Search Input Interactivity**: The user experience when using the search input has been significantly improved. Some of the changes include:
  * **Query Drag and Drop**: Query elements can now be dragged within the search input to reorder them.
  * **Keyboard Enhancements**: Navigation keys are now more useful and allow moving around the search input. Additionally, CTRL+A selects all query elements and allows for quick clearing of the search input.
  * **Query Element Editor**: To edit a query element, you now need to double-click on it, as a single click only focuses and selects it.
  * **Query Selection**: Using Shift + Click, you can select multiple query elements to delete them selectively.
  * **Future Enhancements**: We are working on further improving this interactivity to enhance the experience with expert search.

### Improved

* **Change Log Sorting**: Added the option to group objects in the main search by weeks when using the Change History field as the sorting criterion.
* **Show Collection (Including Subordinates)**: Improved search behavior for objects in a collection hierarchy, now correctly taking into account permissions and pin\_codes.
* **Full Screen Mode**: Improved the detail fullscreen mode. The hierarchy detail now uses the correct theme, and navigating or selecting hierarchical records displays the detail fullscreen view if available.
* **GeoJson**: Added support for linked objects with standard geo in map features.

### Fixed

* **Share Collection**: Fixed an issue that caused a horizontal scroll to appear in the share collection menu.
* **Download Manager**: Fixed an issue that displayed an error when trying to download a search while the filter manager was open.
* **Query Element Editor**: Fixed the layout of the query editor where some fields did not have the correct width.
* **Search Download**: Fixed an error when trying to display admin messages in a search download.
* **Image Loading**: Fixed a race-condition error when attempting to add an error asset placeholder to an element that was no longer available in the DOM.


# Release v6.22.2 (2025-07-29)

Published 2025-07-29 13:29:08Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.2/fylr_checksums.txt)
* [fylr\_v6.22.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.2/fylr_v6.22.2_darwin_amd64.tar.gz)
* [fylr\_v6.22.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.2/fylr_v6.22.2_darwin_arm64.tar.gz)
* [fylr\_v6.22.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.2/fylr_v6.22.2_linux_amd64.tar.gz)
* [fylr\_v6.22.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.2/fylr_v6.22.2_windows_amd64.zip)

## Important

**Under some circumstances, configuration can be lost, under the previous release, v6.22.1:**

* If it is configuration of a plugin,
* and if the configuration also was stored as type table.
* and if a Save button for configuration was also pressed in the frontend:
  * If the save was done only for a given plugin using the new config tab in plugin manager, then the loss is only for that plugin.
  * If the save was done using the general base config manager then all plugins with table-configuration lost the data of the tables.

So, if no save was done, no data was lost. If someone only looked at the plugin config without saving, no data should be lost.

**Under v6.22.1, the plugin configuration might look wrong or incomplete, although it is still complete in the database.**

We recommend to update to this release, v6.22.2, in any case.

In case you actually lost configuration:

After the update, the missing plugin configuration can be re-entered in the frontend.

Or you can restore a sql-backup from before the save action.

* Either you continue to work with this restored database,
* or, probably much better due to other data changes in your fylr, you just use it to download the whole baseconfig as json via the frontend and then continue to work with your most recent sql database. The downloaded json can be uploaded there. (The download and upload are done via the settings-icon as mentioned in <https://docs.fylr.io/for-administrators/readme#working-with-the-base-configuration>.)

## Server

### Fixed

* **/api/config/list**: Don't remove fields from `type: table` for plugins. This issue was introduced in `6.22.1` and led to empty rendered configuration settings for plugins. Introduced by commit \[749a2e3f8], fixed in commit \[2ab421d62]


# Release v6.22.1 (2025-07-24)

Published 2025-07-24 12:05:12Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.1/fylr_checksums.txt)
* [fylr\_v6.22.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.1/fylr_v6.22.1_darwin_amd64.tar.gz)
* [fylr\_v6.22.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.1/fylr_v6.22.1_darwin_arm64.tar.gz)
* [fylr\_v6.22.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.1/fylr_v6.22.1_linux_amd64.tar.gz)
* [fylr\_v6.22.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.1/fylr_v6.22.1_windows_amd64.zip)

## Server

### New

* **SAML config**: Add **Identity-Provider Entity ID** as a setting to pick the correct entity descriptions from IDP metadata which contains a collection of IDP data. \[229103cc8]

### Improved

* **/api/config**: Support future types in base config by ignoring unknown types. \[749a2e3f8]
* **File worker**: Improved `size_minimum` explanation in recipe `browserthumbs`. \[fa433f8fa]

### Fixed

* **/inspect/migration**: Fixed `Chunk size` setting for both, backup and restore. Previously the setting had no effect and always used *1000*.
* **GET /api/config**: Output more parameters to unprivileged users, which fixes **Deep links** in the frontend. \[e63f1975d]

## Frontend

### Improved

* **Base Config**: The base config now recognizes a new field type "user". This will render a user selector.
* **Geo Json Column**: Support for geo-json columns in the csv-importer has been improved. Different formats can now be used to represent geographic data, and these will be converted and imported as valid geo-json. The supported formats are the same ones used in the geo-json input field.
* **Change Log Grouping**: An option to group by date has been added to the change history field in the sort search menu.

### Fixed

* **Download Search**: Fixed an issue when using the "Download Search" option while the filter panel is open.
* **ACL Manager**: Fixed the CSS of the ACL Manager for collections that showed an unwanted horizontal scrollbar.
* **Change History Field**: Added an option to group by weeks in the extra sorting options of the Change History field, following the pattern of other date fields.
* **Plugin Manager**: Fixed the sorting of the plugin list when ordering by status. Plugins are now sorted alphabetically as a secondary sort criterion.
* **Tag Has Value**: Fixed the "Has Value" modifier for Tags in expert search.
* **Typo3 Metadata Mapping**: Fixed an issue that did not correctly process typo3 keyword metadata.
* **Tag Icons**: Fixed an issue where using certain special keywords as tag names would display an icon instead of the first letter of the name in the reduced version of the tag, even when no icon was configured.
* **Geo Json**: Fixed the query element when using expert search with geo-json fields.


# Release v6.22.0 (2025-07-17)

Published 2025-07-17 10:21:58Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.0/fylr_checksums.txt)
* [fylr\_v6.22.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.0/fylr_v6.22.0_darwin_amd64.tar.gz)
* [fylr\_v6.22.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.0/fylr_v6.22.0_darwin_arm64.tar.gz)
* [fylr\_v6.22.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.0/fylr_v6.22.0_linux_amd64.tar.gz)
* [fylr\_v6.22.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.22.0/fylr_v6.22.0_windows_amd64.zip)

## Important

* A re-index is recommended if you have problem indexing documents with **GeoJSON** data. This version introduces an Indexer mapping where invalid GeoJSON data is ignored rather than causing an error.
* This update invalidates all user entered **collection pin codes**. Due to a changed database storage format, we need to invalidate all pin codes entered by users.

## Server

### New

* **SAML**: A new options in the base config allows to redirect immediately to the **IDP**. The `https://fylr-domain/login` can be used to show the **fylr** login page. Also support **pick first** attribute: If an attribute is replaced like this `%(mail|email)s`, fylr now uses the first entry which is not empty as replacement. \[aa27add52] \[cd0fb71e9]
* **Renditions**: Support thumbnail extraction for `INDD` (Adobe Indesign) files. This supports the first page only at the moment. \[1ccec69b0]
* **/api/search**: Support \[`geo_shape`] filter for searches. Documented for [Elasticsearch](https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-geo-shape-query) and [Opensearch](https://docs.opensearch.org/docs/latest/query-dsl/geo-and-xy/geoshape/). \[991e88c76]
* **Export CSV**: Add support for changelog export `_changelog`. \[dbccd7bbd] \[faad9847f]
* **Export XLSX**: Support for Microsoft Excel native format has been added. This includes the possibility to add a thumbnail to the sheet. \[e85f263e8]
* **DELETE api/db**: Support `delete_policy=undelete` and `delete_policy=purge`. This extends the file api to show status `deleted` for deleted files. \[8547071fd]
* **Janitor**: Support file and object removal. This patch adds janitor support to purge deleted objects from the database. The janitor file and object removal is not active in this patch unless `fylr.debug.janitorEnableObjectAndFileRemoval` is set in `fylr.yml`. The next release will enable this by default. \[8547071fd] \[b2e577bb5] \[87e60d6d2] \[8f60c5690] \[5c57e8b5b]
* **Task Module "search"**: Searches for objects and send out (the standard) email. \[a1ea9584b]
* **/api/db**: Support lookup ids in group mode. \[f83481ae3]
* **SAML**: Add customizable Service Provider Entity ID. Also, Javascript can now be used to prepare and IDP delivered entry before the user mapping. \[fcc3473f3] \[729783855]

### Improved

* **/api/search**: A new `fylr.yml` config `fylr.debug.indexerNestedNotIncludeInRoot` can be used to switch nested index behavior to not include nested fields in the root document. \[42c31358c]
* **/api/task**: Include task log in email (omits level **debug**). \[8b6f0573a] \[a1ea9584b]
* **Export**: Include `_standard` of parent in CSV exports. \[3b9c56629]
* **Renditions**: Introduce the backend tool [**VIPS**](https://www.libvips.org/). **VIPS** uses less memory and is in many cases a lot faster than the previously deployed [**Imagemagick**](https://imagemagick.org/). The new tool will only be applied to newly uploaded files and if triggered manually via `/inspect`. \[f97c19b45] \[c12444fd8]
* **File metadata**: Don't compile Blurhash for **originals**. This change affects how originals are compiled. Now, we always skip the Blurhash. Frontends can use the Blurhash of the version it wishes to show. This saves time and memory during metadata extraction. Also, **fylr metadata read** `--blurhash` now defaults to 5M (was unlimited). Unlimited can be activated using `0`. This prevents in some environments a too high memory consumption during metadata extraction. \[9a12956b0] \[820a000a4]
* **Renditions**: Don't store Colorprofile in system temp folder, but in work folder. Force maximum size for `WEBP` and `JPEG` formats. \[1ccec69b0] \[80815ab4c]
* **Renditions**: Ignore `--size-minimum` if the original has no width and height. This will produce all renditions for vector formats. Before, only version `small` was produced (default produce config only). \[55f3fe757]
* **fylr convert**: Optimized generating `PDF` previews. For PDFs with big images in it, using a fixed target resolution of *150* would consume too much memory. Fix this by using the technique from **fylr pdf2pages** where the actual page sizes & resolutions are properly calculated. This sets a default size of *2000* when generating the preview (can be overwritten using `--size`). \[c9450e251]
* **fylr convert**: Support `--no-vips` and set maximum for `--size`. \[80815ab4c] \[f97c19b45]
* **fylr backup / restore**: Various bug fixes and improvements. \[291d60a31] \[becdd34ab]
* **/api/mask**: Add `search_user_hint_localized` to fields. \[fec603fdd]
* **/api/search**: Support `"type": "in"` with `null` for `geo_json` columns. \[6ac0aea9c]
* **/api/search**: Skip unloadable objects. If the index contains objects which cannot be loaded (because they were purged), this patch skips these objects and avoid a **ObjectNotFound** error. \[8547071fd]
* **/inspect**: Whitelist information which can be retrieved from `/inspect` using the `Accept: application/json` http header. \[9adf38504] \[2fdfa3a8d] \[5c0db6317] \[a0eea3534]
* **/inspect/system/janitor**: When running the janitor manually, execute only the shown items, not more. Before, the janitor would run until no further items needed processing. \[8547071fd]
* **Webapp**: Allow to redirect localhost and skip anonymous login. If you use `https://fylr-domain?login`, the app redirects to the login page and does not anonymously login. \[f0b40f7df]
* **Base Config**: Format language strings differently. Language translations are now in the form of **\<localized language> (\<bcp 47 key>)**. \[32d139f85]
* **Collection pin codes**: This change keeps pins separated by browser id. The browser id is stored in our cookie `fylr-browser-id` and unique in every browser. With this change, an anonymous share link with pin code will require each unique browser to re-enter the pin. With this, the link can be shared more easily between different users. Before, only one user needed to enter the pin to enable the link for all others. \[62a3e68f5]
* **Task module "metadata"**: New option `overwrite` lets the user overwrite existing metadata. If unset, a merge is applied and no existing data will be overwritten. Older versions of **fylr** would overwrite by default. \[a1ea9584b]
* **Plugin scheduler**: Removed plugin scheduler support from **fylr**. This feature was never promoted and is now superseded by background tasks. Currently background tasks cannot be extended by a plugin, but this will be possible in the future. \[5280af1d3] \[a53b6a183] \[ece9105e0]
* **Systemright removed**: `frontend_features[upload_without_produce_versions]` was removed. This feature needs more work and concept, so for now it has been removed from **fylr**. \[5abbbf62f]
* **/api/task/module**: Add `debug` property to mark a task module as *debug*. Frontends are to hide such modules by default. Also, add language `und` with the localization key as value for easier translations and always trim values. \[c3f3b790f] \[43090d5a0] \[f55ec5dd5]
* **License**: Add support for `capabilities.kubernetes`. \[b8ffe1f66]
* **CSV & XLSX**: Sort system columns first and user columns alphabetically. \[11214ef9a]
* **/inspect/objects**: Fixed and extended versions filter. \[c2b2a0e56]
* **GET /api/config**: Require at least `system.config`system right for most items. Only selected items will be shown to users without this system right. \[25fe4c52e]

### Fixed

* **Indexer**: Ignore malformed `GeoJSON` during indexing. Also, don't index `GeoJSON` inside nested. This is a restriction by the Indexer that we cannot index geo\_shapes inside any nested (well , we can only index one item, not many). There is other solutions to fix this, but this one is a simple approach by simply not indexing these fields. This avoids errors which lead to unindexed documents. \[42c31358c]
* **Renditions**: Fixed setting of background for renditions with clipping path. \[06fe80842]
* **/api/config**: Fixed setting defaults in forms & tables. The setting of defaults in forms and table types was not working. Also fixed a typo to output "default" in `/api/config/list`. \[4a33f6d82]
* **Standard**: Fixed standard rendering for some cases where a linked object was used inside a nested and then wrongly skipped in the top level. \[034926c12]
* **Standard**: Skip invalid **GeoJSON** when indexing `_standard`. If `_standard.1.geo` contains invalid geo json, this patch fixes the Elastic mapping to ignore this. Before we only ignored this for the actual geo field, but not in standard. This fixes indexing objects which contain invalid geo json data. Requires a re-index to take effect. \[7b9a05808]
* **/api/db**: Fixed bidirectional case with limited masks. If a bidirectional save uses a non standard mask, this patch makes sure the updated bidi object is using the all fields mask which skips the "mask" right check on the bidirectional object. This avoids error `ObjectInsufficientRights`.
* **User Management**: Lift requirement to have a `reference` for **SAML** and **LDAP**. This constraint was there since the beginning of ldap/saml implementation, we forgot to remove it after the introduction of update field `login` and `email`. \[9280bb6ca]
* **POST /api/db**: Ignore tags for object types with turned off tag management. This patch fixes the problem that tags for an object are loaded even if an object type has lost his tag management (new database version) and this was also used for rights management checks. Now, the rights management requirement to match tags is ignored. This fixes cases where objects could not be stored because of set tags on an object type with no tag management. \[437d32986]
* **/api/db**: Avoid panic during unique key error compilation. \[fec449ef7]
* **IIIF Manifest**: Fixed to comply to the spec, use unique annotation id. \[7119601d4]
* **/inspect/system/janitor**: Fixed display of to be deleted files. \[5c57e8b5b]
* **fylr backup**: Fixed backup for rights presets. \[0c99eca17]

## Frontend

### New

* **Trashbin Manager**: A new manager has been added to the application to handle deleted objects. If the user has the appropriate permissions, this manager will appear at the bottom of the side menu. It allows users to view, restore, or permanently delete trashed objects. Additional enhancements in the detail panel now indicate when an object is in the trash.
* **User Preferences**: A new section called **User Preferences** has been introduced in both the user manager and the user's top bar settings. This section centralizes general frontend settings that were previously hard to find or not exposed. Initially, it includes two settings, with more planned for the future.
* **Auto Full Screen Mode**: Fylr now includes an automatic full-screen mode that opens the detail/editor view in full screen when interacting with a search result. The detail sidebar is also shown by default in this mode. A new button has been added to the fullscreen editor to quickly switch between detail and editor views. This feature can be enabled via User Preferences.
* **Plugin Manager Configs**: The Plugin Manager now includes a new tab to configure the selected plugin directly—no need to open the base config manager. It also allows exporting/importing the specific plugin configuration as JSON.
* **Restore Change History Object Tool**: A new tool in the change history view allows users to restore a previous version of an object (excluding reverse fields). The restored version acts like a template and can be reviewed and edited before saving. Currently, this feature is only available to users with root access.
* **Geo-JSON Expert Search (requires Geo-JSON plugin)**: Adds support for the `geo_shape` filter type to the `geoJsonColumn` expert search field. Users can now search for documents within polygonal shapes.
* **Include Changelog in Exports**: Adds a new `include_changelog` option when exporting to CSV via the export manager.
* **Hierarchy Filters** The filter manager now displays filters for the entire hierarchy in search results when hierarchy mode is set to "automatic." This means subnodes are aggregated. In "top-level only" mode, only top-level filters are shown. Table view always uses automatic hierarchy.
* **Field Hint in Expert Search**: You can now configure hints for fields that appear in expert search, similar to the editor and detail panel.
* **Admin Messages by Client ID**: Admin messages can now be filtered by the current client ID.
* **XLSX Support in Export Manager**: Adds support for exporting to `.xlsx` format, with the same options as CSV plus an option to include a thumbnail in each row.
* **Sort Manager Enhancements**: The Sort Manager now displays all available object types in the search—not just shared fields. Sorting criteria can now be customized per object type, enabling finer-grained control when filtering.
* **Deleted Asset Placeholder**: The frontend now properly displays placeholders for assets deleted by the Janitor.
* **Collection View All Hierarchy**: A new context menu option allows users to view both a collection's content and its visible sub-collections in search.
* **Standard and Text Views in Lists**: Adds support for standard and text views in Lists and Trash Managers if the selected object types are configured as visible in the main SearchList.

### Improved

* **Janitor Configuration**: New configuration options for the Janitor have been added in both the ObjectType Manager and Pool Manager. These allow overriding Janitor settings per object type or pool.
* **Plugin Manager List Improvements**: Major improvements to the plugin list UI: added filters, sortable headers, and new sorting logic that places active plugins at the top for better usability.
* **Zoomer**: If no version exists that matches or exceeds the original's size, the original version will be used for zooming (if valid).
* **Table View**: Now supports displaying geo-json column fields.
* **Main Search Layout**: The main search layout has been improved. If available, the Map Search Manager now appears on the left side.
* **Fylr License Manager**: Adds support for showing plugins that require a license.
* **Geo Has Value**: Adds support for `unset`/`has value` expert search filters for geo-json columns.
* **Inserted Today Query**: The checkbox for showing objects created today has been moved to the new User Preferences.
* **Tag Management Tool in Search**: Improved error handling: workflow-related errors now display correctly.
* **Metadata Task Module**: Adds new options to the **Metadata** module in the background task manager.
* **Hide Nested Tables in Sort Manager**: New option to hide nested tables in the Sort Manager.
* **Sources Filter Support**: `sid` and `collection` query elements now respect the sources search filter.
* **Event Manager Enhancements**: General improvements to various event types in the Event Manager.
* **Expert Search UI**: Better rendering of nested tables in expert search.
* **Collection Context Menu**: Improved context menu logic to show the appropriate tools for collections.
* **Session Tray App**: Improved display of user settings in the top bar.
* **Instance Capabilities**: Instance capabilities are now loaded with the session, enabling conditional features (e.g., geo-json support).

### Fixed

* **Plugin Manager**: Various fixes for plugin management.
* **Base Config**: Fixes incorrect default value display for `form` type base config fields.
* **Reverse Nested Mask**: Fixes syncing issue for `nested index` mask property on reverse nested fields of the same object type.
* **Request Class**: Fixed an issue preventing external libraries from using the native JS `Request` class.
* **Sticky Headers**: Fixed an issue where sticky headers were not rendering properly in some cases.
* **Map Search Manager**: Fixes for errors occurring in main search when Geo-JSON plugin is not installed.
* **Expert Search Popover**: Fixes scrolling issues in the expert search popover.
* **Blurhash on Assets**: Now uses the blurhash from the rendered version instead of the original, which may not have a blurhash.
* **Filter Manager**: Fixes an error when filters are requested without aggregations.
* **Table View Search**: Fixes a bug that incorrectly opened nodes during table view searches.
* **Data Model Manager**: Corrects the delete confirmation message for object types in Fylr.
* **Editor Sidebar Listener**: Fixes a bug where editor event listeners remained active after closing the sidebar.
* **Group Editor Save Button**: Fixes the save button state when changing bulk options.
* **Change History View**: Various bug fixes and stability improvements.

## Plugins

* **Geo-JSON Plugin**: The first public release of the Geo-JSON plugin is now available. It enables interactive work with geo-json fields, geospatial searches, and more. Visit the [public repository](https://github.com/programmfabrik/fylr-plugin-geo-json-public) for installation and documentation. **Important:** Users of earlier versions should upgrade to the latest release to ensure compatibility with recent Fylr updates.


# Release v6.21.3 (2025-07-02)

Published 2025-07-02 14:48:10Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.3/fylr_checksums.txt)
* [fylr\_v6.21.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.3/fylr_v6.21.3_darwin_amd64.tar.gz)
* [fylr\_v6.21.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.3/fylr_v6.21.3_darwin_arm64.tar.gz)
* [fylr\_v6.21.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.3/fylr_v6.21.3_linux_amd64.tar.gz)
* [fylr\_v6.21.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.3/fylr_v6.21.3_windows_amd64.zip)

## Server

### Fixed

* **Export / Indexer**: Fixed filename sanitization. If a filename exceeded 100 characters including non-ASCII, fylr would panic while rendering the filename. The new limit is 240. \[0369c4c3] \[7359df27]

## Frontend

### Fixed

* **Custom Data types**: Fixed the `hasValue` support check for custom data types.
* **GeoJson**: Added support for `unset/hasValue` expert searches on GeoJSON columns.
* **Detail Hierarchy**: Fixed an error that occurred when displaying reverse hierarchy objects in the detail hierarchy panel.
* **Objectype Manager**: Resolved an issue in the Object Types Manager where outdated data for non-existing fields was still present. The manager now checks for and clears any obsolete data before saving object type changes.


# Release v6.21.2 (2025-06-12)

Published 2025-06-12 13:37:37Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.2/fylr_checksums.txt)
* [fylr\_v6.21.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.2/fylr_v6.21.2_darwin_amd64.tar.gz)
* [fylr\_v6.21.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.2/fylr_v6.21.2_darwin_arm64.tar.gz)
* [fylr\_v6.21.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.2/fylr_v6.21.2_linux_amd64.tar.gz)
* [fylr\_v6.21.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.2/fylr_v6.21.2_windows_amd64.zip)

## Server

### Fixed

* **Exec server**: Pass all **fylr** environment to launched programs. \[be38c657]


# Release v6.21.1 (2025-06-12)

Published 2025-06-12 10:59:53Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.1/fylr_checksums.txt)
* [fylr\_v6.21.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.1/fylr_v6.21.1_darwin_amd64.tar.gz)
* [fylr\_v6.21.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.1/fylr_v6.21.1_darwin_arm64.tar.gz)
* [fylr\_v6.21.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.1/fylr_v6.21.1_linux_amd64.tar.gz)
* [fylr\_v6.21.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.1/fylr_v6.21.1_windows_amd64.zip)

## Server

### Fixed

* **Reindex**: Fixed `/inspect/system` reindex and automatic reindex for instances with no active data model. Affected systems do not start with `6.21.0` as the forced reindex step fails. \[1e46d0c6]
* **IIIF Manifest**: Fixed two minor specification bugs in IIIF manifest. \[72e97f0e]
* **SAML Login**: Fixed mapping for empty entries. Now, if a mapping is e.g. `%(department)s` for user column `department` and the SAML / LDAP record does not have an entry for this, `department` will be mapped empty. Before **fylr** would output an error *cannot use multiple entries*. \[692833ca]
* **/inspect/objects**: Fixed switching to object type view with `index=all` selection. \[0dbc8224]
* **Exec server**: Limit environment passed to programs to definitions from `fylr.yml`. \[c24416c8]

## Frontend

### Fixed

* **Detail Sidebar**: Fixed a bug where the wrong mask was selected in the detail sidebar when the `best_mask` provided by the server could not be displayed in the detail. #74619
* **Geo-Json Column**: Fixed an issue where geo-json columns did not work correctly within nested Tables.
* **Table View**: Fixed the display of data in Table View when the data is nested within another nested table. #76341
* **Table View In Collections**: Fixed a critical issue that prevented a collection from opening if the Table View had been previously used as the view mode in collections.
* **Table View**: Fixed a bug that could cause Table View to erroneously exclude fields in the search request, resulting in empty rows.
* **Save Prefs**: Fixed an issue that could cause saving preferences to fail. #76361
* **Shared Searches**: Improved the shared searches functionality to automatically add the necessary permissions when creating the shared link. #70569


# Release v6.21.0 (2025-06-06)

Published 2025-06-06 11:48:19Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.0/fylr_checksums.txt)
* [fylr\_v6.21.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.0/fylr_v6.21.0_darwin_amd64.tar.gz)
* [fylr\_v6.21.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.0/fylr_v6.21.0_darwin_arm64.tar.gz)
* [fylr\_v6.21.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.0/fylr_v6.21.0_linux_amd64.tar.gz)
* [fylr\_v6.21.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.21.0/fylr_v6.21.0_windows_amd64.zip)

## Important

This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running.

### Plugins

Starting with this release, the following plugins will **require** [**`fylr-plugin-commons-library`**](https://github.com/programmfabrik/fylr-plugin-commons-library) **as a dependency plugin installed in the instance**.

This plugin acts as a shared library and will be a **mandatory dependency** for all the plugins listed below.

> ⚠️ **Note**: This change **only affects the following plugins**, not the plugins included in the base installation. Affected plugins have `fylr` in their name and similar named plugins in the base installation can be identified by the word `easydb` in the plugin details (visible in the Plugin Manager).

### Affected Plugins

* `fylr-plugin-custom-data-type-geonames`
* `fylr-plugin-custom-data-type-wikidata`
* `fylr-plugin-custom-data-type-getty`
* `fylr-plugin-custom-data-type-gfbio`
* `fylr-plugin-custom-data-type-iconclass`
* `fylr-plugin-custom-data-type-nfis-geometry`
* `fylr-plugin-custom-data-type-k10plus`
* `fylr-plugin-custom-data-type-goobi`
* `fylr-plugin-custom-data-type-tnadiscovery`
* `fylr-plugin-custom-data-type-gnd`
* `fylr-plugin-custom-data-type-gn250`
* `fylr-plugin-custom-data-type-dante`
* `fylr-plugin-custom-data-type-loc`
* `fylr-plugin-custom-data-type-georef`
* `fylr-plugin-custom-data-type-doris`
* `fylr-plugin-custom-vzg-validationhub`
* `fylr-plugin-default-values-from-pool`
* `fylr-plugin-editor-field-visibility`
* `fylr-plugin-find-dublicate-field-values`
* `fylr-plugin-monitoring-endpoint`
* `fylr-plugin-custom-l10n`
* `fylr-plugin-tray-link-manager`
* `fylr-plugin-numeric-id-auto-incrementer`
* `archaeodox-fylr-plugin`

## Server

### New

* **Metadata Mapping**: GPS coordinates can now be mapped into type `geo_json`. \[c86a59c3]
* **Export**: Added `EXPORT_DOWNLOAD` and `EXPORT_DOWNLOAD_ERROR`. The new events are written when an export is exported. Before we only had events for single files and objects which are exported by the export (`FILE_DOWNLOAD` + `OBJECT_DOWNLOAD`). This patch adds an events for each export request, this also includes zipped and tarred exports. \[f68e920c]
* **Background Tasks**: Support incremental runs, metadata: support set/unset tags. This patch brings the "incremental" feature to task modules. The runner passes the start timestamp of the last run to the module. The module can then make use of it. In case of the "metadata" module, the search the updates are based upon, filter objects which have been modified after the last run of the module. Add a feature to unset/set tags to the metadata module after successful updates of objects. \[ffb2d7e1]
* **Background Tasks**: New module `set_unset_tags` added. With this module, tags can be set or unset based on a search. \[ac441ada] \[99ae1e8f]
* **Export**: Added `high` as `quality` parameter. `high` sets the quality to `85`. it turns out "maximum" (100) makes files too big without making them better. \[5a27dbdd]
* **/api/system/location**: Support read only locations. This patch adds a read only flag to the storage locations. \[517820c3]

### Improved

* **/api/search**: Refactored analyzers for indexing. With this change, special characters like `äüøæå` are searched verbatim with no folding applied. Only the term auto-suggestion index still folds these characters. So `Bär` suggest the token `bar`, `Bär` and `Bar`, but searching for `Bär` in full text only. This requires a re-index. \[9230aa2c] \[5884b252] \[7d2dc43f] \[b178f356]
* **User pseudomization**: Added `additional_info`. This new setting in groups, allows to configure multiple columns at once for pseudomization. Before we had a single column approach, but that is not needed. This patch adds important missing columns using one additional setting. The setting for `department"` was removed and is now part of `additional_info`. \[57e6a721]
* **File Worker**: Use high priority workers to pick background jobs too. This patch allows high priority workers to pick background jobs too. Before this was only done by the normal workers. However, we store jobs with high background priority, so it is cleaner to also allow them to be picked up by the high priority workers. \[23d8c6e9]
* **File Worker**: Remove `OCR` from `pdf` in default produce config. It turns out that many customers have a lot of scanned `pdf`. With the default recipe we would scan each page for text which turned out to really slow down some customers systems. We decided to leave the OCR out of our standard configuration and leave it to the user to turn it on. \[e7a4b18a]
* **File Worker**: Changed priority for rendition production. In case that an inspect/files action scheduled a resync, this patch makes sure that the initial priority "background" is set to "normal" for the production of the renditions. With this we make sure that the order of the resync will 1. sync, 2. delete obsolete renditions and then 3. produce renditions before syncing again. With this patch, the experience is closer to a one-by-one replacement (not exactly 1:1 but limited by the number of parallel workers) of the renditions. \[b6aba6a7]
* **fylr backup / restore**: Various fixes and improvements. \[2fd4b657] \[3f4a5033] \[4e02e830] \[8a459130] \[7ed03334]
* **/inspect**: Output database size on the main page. \[74da37de]
* **Console Log**: Log regular requests (except `event/poll`) in level `DEBUG`, before this was level `TRACE`. This also adds `ReqBytes` to the output. \[6c2580b0]
* **User management**: Invalidate tokens as needed. After user's password change or login capability (disabled / expired), oauth2 tokens are invalided as needed. Currently open session of the users need to re-login. \[4a988dbe]
* **/api/search**: Make `_comment` a search field for `match` and `in`. Searching in the comment of the latest version wasn't possible \* \* **/api/user**: Allow `system.root` to set `_created_at` and `_last_seen_at` for version 1. This is used by `fylr restore`. before. The "\_changelog.comment" would search all comments in all versions. \[20cc0749]
* **Export**: Allow file export / download with status `sync`. During long running resync actions it can happen that file which need to be exported are not in status `done` but `sync`. This status is now considered to be safe for export (the internal StatusSyncInternal that is). Also safe for export is "StatusPendingChecksum". This avoids un-exportable files during long running resync actions. \[98de89d4]
* **Opensearch v3**: Latest version of Opensearch is supported. \[837affb1]
* **LDAP**: Replace not existing keys with empty strings. If a mapping of ldap value wants `%(kuku)s` replaced and the ldap entry has no such key, the value would be `%(kuku)s`. This patch removes empty replacements like this. Also add a concat option to regular expression replacements. If a regexp like `key||search||replace` is used to replace ldap /saml entry values, a 4th parameter can now be used to concat multiple values into one: `key||search||replace||concat`. \[511c0170]
* **Indexer Improvements**: A new setting for `fylr.yml` `fylr.elastic.metadataFulltextLimit` can be used to cut off fulltext read from text files. This improves the memory consumption for files with a lot of fulltext. Also `fylr.elastic.maxHeapAlloc`, `fylr.debug.indexerSingleMode`, `fylr.debug.indexerDebug` have been added (see `fylr.example.yml` for documentation). The new `fylr.elastic.maxHeapAlloc` variable defaults to `1G` and limits the memory consumption during indexing. The new code results in a faster and smoother (less memory) indexing experience. On capable systems it is advised to set `fylr.elastic.maxHeapAllow` to `4G` or even more. `Geo JSON` data is cleaned to reduce parsing errors during indexing. \[38abf930] \[daea46b9]
* **Indexer**: Add file metadata in reverse nested to index. \[325111ee]
* **Events**: Extended event infos with standard, display names, references, ... for INSERT, UPDATE, DELETE events of user records and basetype. \[0f6ef6f7] \[0236b27b] \[6f34ca66]
* **Register Page**: Don't require `address_supplement` and `state`. If an `address` is required for registration, don't require these 2 fields. \[312ef717]
* **Page Forgot Password**: Don't allow to restore a password if the user doesn't have the system right `change_password`. \[133f9fd6] \[2a27e20a]
* **/inspect/objects**: Persist settings when selecting an object type. \[8ff39d20]
* **Shutdown**: Sped up shutdown at CTRL-C or SIGTERM. \[57f0ef2dc78]
* **Collection PIN Code**: Use PIN code to limit access to objects in `/api/search` and `/api/db`. Before the PIN code system was server managed but without restricting pin less access to shared objects on these endpoints. \[eb020324]
* **fylr convert**: Improved managing the `--blurhash` constraint for big files. \[c2d62213]

### Fixed

* **/api/db**: Fix setting of tags in `choice` tag groups. If a tag group is of type `choice`, adding a tag needs to remove other tags from that group. This patch uses this in group mode as well as for the task module. \[b1e37264]
* **/api/export**: Fixed CSV export for huge exports. In rare cases a `bad connection` error would indicate a problem while preparing huge CSV exports. This was due to a parallel access of one database transaction which is now avoided. \[25000111]
* **Rights management**: Allow object creation inside a pool without the `LINK` right for that pool. Only `CREATE` is enough. This brings fylr in line with easydb 5. The `LINK` right is only needed if an object is moved into a pool, but not created inside it. Users are advised to check their settings and policies. The previous fylr was more restrict requiring `LINK` and `CREATE` to create a new object inside a pool. \[1a9afabd]

## Frontend

### New

* **Has Value Search**: A new button has been added in Expert Search to search whether a specific field is not empty. This new button appears next to the existing button used to search for empty fields. Custom data types need to implement a new method to work with this feature. #70914
* **Set/Unset Tag Task Module**: A new background task module has been added. This module allows configuring or removing tags from objects. #75603
* **Input Search Settings**: A new option has been added to the input search settings to prevent the automatic usage of the "Created Today" query after object creation. #75572
* **Change History Shortcut**: A quick access button to an object’s change history has been added. It is shown next to the "Version" field in the editor and detail footer. #75649
* **Create Background Tasks in Collections**: It is now possible to create background tasks that accept searches using a collection as the source. This appears as a new option in the contextual menu of collections. #75371

### Improved

* **Date Fields**: Date fields now display a placeholder using the format configured in the instance settings. #73960
* **Detail Sidebar**: Improved the organization of certain tool buttons in the detail sidebar. #72589
* **Event Manager**: Improved how object references are displayed in events. #73230
* **Text View Options**: Added display options for the text view in main search. #72728
* **Default Tags in New Popover Editor**: Improved how tags set in the template object behave in the new popover editor. #74265
* **Not Allowed Objects in Hierarchies**: Improved how hierarchy levels are shown when a user lacks the permission to view them. #75187
* **Admin Messages**: A confirmation tab was added for the "auto\_registration" message type. #72777
* **GeoJSON Column**: Added support for GeoJSON columns in metadata mapping. Now it is possible to map a GeoJSON value from an image to a GeoJSON field. #75857
* **Not Null Fields**: Improved the editor to mark fields as required.
* **About Fylr Menu**: A quick access link to plugin commits is now shown if the plugin has a repository configured. #75909
* **Task Manager Log**: The task log now parses messages for object references, displaying the object’s quick view when the reference is clicked. #75603
* **Tray Apps**: Added support for deep linking in tray apps. Apps can now implement the method `getPathName` to configure a path that activates them. Example: TaskManager tray app. #75603
* **Location Manager**: Added a new read-only checkbox for configuring storage locations. #76161
* **Search Field in Task Modules**: A confirmation dialog is now shown when the search parameter is empty in modules, which means "all objects". This warns the user accordingly. #68241
* **Object List in Editor**: A new button has been added to remove objects from the object list in the New Object Editor without needing to select them first. #73621
* **File Worker Validation**: Added validation to ensure incorrect data is not saved in the file worker when saving the base config. #74088
* **Input Search Settings**: The "include fulltext for files" option in input search will now be enabled or disabled depending on whether the search could contain EAS fields. #76052
* **Table View Optimization**: Table view search will now calculate excluded fields (those not visible), greatly improving performance for large result sets. #76180

### Fixed

* **ACL Manager**: Fixed a bug where a group could be shown as "undefined" in a user/group selector. Now, users without permission to view a group also cannot modify its permissions in the Pool Manager. #75807
* **Mask Editor**: Fixed an issue with displaying the "condensed\_output" option. #75862
* **Read-Only Mode**: Fixed an error when opening the editor in list view in instances configured as read-only. #67975
* **Linked Object Expert Search**: Fixed an error when rendering linked object selection in Expert Search. #75983
* **Textual Date Ranges**: Fixed issues in the behavior of textual date ranges in the editor. #75711
* **Filter Panel**: Fixed an issue preventing custom data types using `easydb-library` from working correctly with AND/OR modes in the filter panel. Updated all related plugins. #74805
* **Linked Object Filters**: Fixed a bug affecting linked object filters in the linked object search. #76135
* **Linked Object Creation in Metadata Mapping**: Improved the creation of linked objects via metadata mapping. #75740
* **PDF Viewer**: Fixed issues in the PDF viewer in the asset browser. #76191
* **Before Download Message**: Fixed a bug where downloads could be blocked even when no messages were shown. #76268
* **Full Screen Detail Zoomer**: Fixed an error preventing the zoomer from initializing with the mouse wheel in fullscreen mode if the fullscreen sidebar was opened. #76176
* **Fields**: Fixed an issue where the linked-object field in Expert Search wasn’t styled as a combo box. #75983
* **Linked Object**: Added correct warning style to the linked object warning label. #75983
* **Expert Search**: Added max-width to the Expert Search popover and query element popover to prevent excessive UI shifting. #75983
* **Object Type Manager**: Adjusted placement of select field checkboxes and empty labels in the "Field Visibility" table. #75421
* **Shared Templates**: Fixed issue where groups didn’t receive generated rights after an API change, causing the shared templates checkbox to be hidden. #70030
* **Date Ranges**: Fixed a bug in advanced searches using date ranges. #75932
* **Shared Links for Assets**: Fixed construction of shared asset links. The server now includes the signature in the download URL, which previously broke additional parameters. #76188
* **Metadata Task Module**: Added extra properties and filters to the search produced by the metadata task module to ensure correct server results. #68241
* **Auth Mapping Tab in Groups**: This tab is now always shown if a user can edit a group's options. Previously only root users could see it. #76194
* **Pool Manager**: Fixed drag-and-drop behavior in the list of available masks. #70781
* **Masks Editor**: Fixed a bug where the Nested Index settings weren’t correctly synchronized across an object's masks, causing save errors. #76211


# Release v6.20.2 (2025-05-07)

Published 2025-05-07 11:49:39Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.2/fylr_checksums.txt)
* [fylr\_v6.20.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.2/fylr_v6.20.2_darwin_amd64.tar.gz)
* [fylr\_v6.20.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.2/fylr_v6.20.2_darwin_arm64.tar.gz)
* [fylr\_v6.20.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.2/fylr_v6.20.2_linux_amd64.tar.gz)
* [fylr\_v6.20.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.2/fylr_v6.20.2_windows_amd64.zip)

## Server

### Fixed

* **/api/config**: Fixed access to paths containing `*`, `:` and `\`. These characters, when used in escaped form in a path segment, would cause a *BaseConfigPathNotFound* which was wrong. Now the path is correctly scanned and used. \[848d49e5] \[278d41db6]

## Frontend

### Fixed

* **Search Input**: A bug in the search input that caused the boolean operator NOT to not work correctly has been fixed.
* **CSV Importer**: Fixed an issue where Date Ranges could not be imported using the CSV importer if they were not inside a nested field.
* **Group Pseudomization**: The department column was removed and a new colum "Additional info" was added.


# Release v6.20.1 (2025-05-06)

Published 2025-05-06 11:40:55Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.1/fylr_checksums.txt)
* [fylr\_v6.20.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.1/fylr_v6.20.1_darwin_amd64.tar.gz)
* [fylr\_v6.20.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.1/fylr_v6.20.1_darwin_arm64.tar.gz)
* [fylr\_v6.20.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.1/fylr_v6.20.1_linux_amd64.tar.gz)
* [fylr\_v6.20.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.1/fylr_v6.20.1_windows_amd64.zip)

## Server

### Improved

* **File worker**: Move video thumbnailing to service "convert". The video thumbnailing was using ffmpeg service to produce the thumbnail. This was switched to service: convert to not be in waitgroup "slow" which per default has only 2 workers and those get easily clogged during video conversion. \[e63bc8e6]

### Fixed

* **/api/db**: Avoid deadlock: Before, accessing /api/db with highly parallel requests, could cause a deadlock while getting a lock on "object\_unique", this was fixed by reordering database requests. Additionally we are taking this lock now too when /api/db is called with `skip_constraints=1` to make that mode safer to use. \[ebfd8b6d]
* **/api/task**: Fixed security bug in a task module. \[5b78e5ca]
* **/api/suggest**: Fix suggesting more than one item in `fields` in mode `"fields_suggest": true`. Suggest was returning meaningless results with `{ suggest: "" }`, if multiple `fields` where used. Now these results are skipped in the response. \[077ec2dd]
* **/api/eas|export**: Fixed custom rendition with quality setting `maximum`. This is now using quality *100%*. Before this was set to *75%* same as for `medium`. \[4ff78307]

## Frontend

### Improved

* **Read Only mode**: The read-only mode has been improved and new messages have been added to inform the user that certain actions cannot be performed.

### Fixed

* **Linked Object Expert Search**: Fixed a bug that prevented the expert search linked objects from resizing correctly, as well as fields that inherit from it like the parent field.
* **Search Query Editor**: Fixed an issue where the search query editor was displayed with the incorrect size. Also removed support for some query elements that do not support the editor, such as suggestion query elements, to prevent frontend errors.
* **Linked Object Suggestions**: Fixed an issue when using suggestions in the main search for linked objects.
* **Query Validation**: Fixed an issue where query elements for linked objects were not being properly validated, making the search impossible.
* **Fulltext Metadata**: Now the fulltext query elements will include the `metadata_fulltext` field in the search property if any of the selected object types had any `EAScolumn`. If not, then this field must now be included.
* **Geo Json**: Fixes the check for showing the map search manager in the main layout. There was a case using cross-server that caused an invalid state in the frontend when using plugins from the local instance for testing.


# Release v6.20.0 (2025-04-30)

Published 2025-04-30 12:45:23Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.0/fylr_checksums.txt)
* [fylr\_v6.20.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.0/fylr_v6.20.0_darwin_amd64.tar.gz)
* [fylr\_v6.20.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.0/fylr_v6.20.0_darwin_arm64.tar.gz)
* [fylr\_v6.20.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.0/fylr_v6.20.0_linux_amd64.tar.gz)
* [fylr\_v6.20.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.20.0/fylr_v6.20.0_windows_amd64.zip)

## Server

### New

* **/api/task**: New endpoint to run tasks in the background. This first version includes a task module "metadata" which allows to apply mapped metadata to existing objects. The functionality of the new endpoint is described in out [API Documentation](https://docs.fylr.io/for-developers/api/endpoints/api-task). This also includes scheduler functionality to run tasks periodically in the background. \[c407e749] \[eb55bafe] \[7f525428] \[59ee9ce3] \[51a05d85]
* **/api/search**: Support new property `number_groups` in `sort`. This can be used to group sorting for file sizes by distinct groups. This allows to use a 2nd sort criteria within a group of file sizes like *0 - 100kb*. \[c936a6ff]
* **System Rights**: New `frontend_features[upload_without_produce_versions]`. The new right is used to show a checkbox to skip version production for files in the upload dialog. \[b3edf2c1]
* **LDAP/SAML**: Support regular expressions in attribute mapping. LDAP and SAML entries can now use regexp to map values to **fylr** properties. The syntax for this is `%(key||search||replace)s`. Where *search* is the regexp matching the value for *key* replacing this with *replace*. Following the Go regexp rules found [here](https://pkg.go.dev/regexp#Regexp.ReplaceAllString). \[e1232baa]
* **/api/preset**: Support `default_expiration_hours`. This new field will set a `when` for collections acls, if no `when` is defined. The `when.from` is set to the current time (*now*) and the `when.to` to *now*+`default_expiration_hours`. \[0afedd5]

### Improved

* **/api/search**: Support for `_owner.group.id`. This patch brings support to search for group owners. \[4d43b1bd]
* **/api/transitions**: Allow saving transitions with no operation, this can be used to disable a transition. \[c74574a9]
* **/api/user**: Include `_acl` and `_generated_rights` in /api/user (list mode). \[6407ac31]
* **/api/db**: For really big integers, improved range error to return `NumberOutOfRange` instead of `parse int error`. \[d5428d35]
* **File queuing**: New index to speed up job picking. Added a missing index to make the next file job picking using an index. Before with long queues the select to pick the next job could be slow (like 2s or so), harming file rendition production performance. \[4ea727d2]
* **/api/group**: Use loca key for system group name. If available in the localisation CSV, this patch uses the value for the group's display name instead of the database stored name. This updates group display names in older databases where other terms were used. \[f610f3e3] \[c10acffb] \[10edce60]
* **Base config**: Accept files with `XSL` extension as *XLST*-Style sheets. \[036a279f]
* **/api/search**: Added placeholder (e.g. *$now* or *$startOfDay*) and range support for `_last_modified`, `_created`, `_changelog.date_created` and `_changelog_date_last_update` (last 2 placeholder support only). \[095d83e0]
* **/api/event/stream**: Make sending of events more robust if many clients are connected: Drop events if the stream listener cannot process events quickly enough. Before we blocked a Go routine until the event seems a better choice to simply drop the events if the listener cannot read them quickly enough. The channel buffers 100 chunks of 25 events. \[3380153e]
* **Custom Data Type Updater**: Re-index less objects. If multiple objects use the same custom data, this patch reduces the amount of queued index jobs by not inserting duplicates into the the indexer queue. \[f3a7529e]
* **Base config**: Extends the checks on the file worker configuration to improve the extension checks if source versions are used. \[5209b305]
* **/api/group**: Added **displayname** for pseudonymization. Also api is improved to set default to `keep`. \[4c65999a] \[12bbb2a2]

### Fixed

* **/api/db**: Updated `_owner` fields: check the current object for rights, not the new one. Also, check that group owner is not a system group (which is not allowed). \[4d43b1bd]
* **/api/eas/download\[zipfile]**: Fixed directory `JSON` output. If a directory from inside a zipfile is accessed, return proper JSON. Before this was broken and returned an empty information Array. Also, removed HTML response for zipfile directories. HTML makes no sense here as the requests require the access token and would have to be included in the index.html which is undesirable. Now, the response is always in JSON format. \[8564430f]
* **/api/search\[type=user]**: Fixed `_generated_rights`. This fixes the `_generated_rights` for users by loading the groups for the compilation of the rights. \[601a9466]
* **/api/search\[type=object]**: In cases where users directly receive rights via ACL (not via group), the `_generated_rights` would be wrong. \[6407ac31]
* **Login Page**: Fixed rendering issue in Safari. \[a499c735]
* **/api/event/stream**: Avoid (harmless) panic & improved send. This patch also avoids a fylr panic ("send on closed channel") which occurred when fylr tried to broadcast to an already closed channel. \[3380153e]
* **Notifications**: Avoid (harmless) error "Not enough information to build select clause." \[a97f3158]
* **Messages**: If messages are configured to be **always shown** it was possible to create a never ending loop of messages. Now the user will see the always shown message again only after one minute has passed. \[2055c087] \[cb54c2c9]
* **fylr metadata read**: Run *exiftool* on closed file. On Windows we have problem with the new exiftool (>13.10) where it cannot open an already opened file properly. Our "fylr metadata read" tool would keep the file opened so that on Windows we got errors. The fix here is to close the file before running exiftool. \[dd04fa99]
* **Execserver**: Close file handle on `file_in` before executing commands. This fixes calling a newer exiftool on Windows which needs exclusive access to the file scanned. \[065385e6]
* **/api/db**: Fixed **unique key** checks on **parallel inserts**. Before this patch it could happen that parallel inserts inserted objects which violate fylr's unique key constraints. The reason we cannot use the database for that enforcement are schema upgrades where a unique key is added to data which would violate the constraint (for this case a system tag indicating the violation is set). \[6403e762]

## Frontend

### New

* **Background Task Manager (Beta)**: A new manager has been added alongside the Export Manager to handle background tasks. From this new manager, users can create, edit, or delete background tasks. Additionally, a new context tool has been added in Search to create background tasks directly from the search view.
* **Produce Version Checkbox**: A new checkbox has been added to the file upload process, allowing users to skip the creation of asset versions for uploaded files.
* **Pinned Facets**: Added display of the `objectType` next to the name in pinned facets for field facets. Introduced a customization option for pinned filters.
* **Group Categories Tooltips**: Introduced tooltips for groups with categories, showing all assigned categories on hover.
* **CSV Importer**: Added support for multi-nested values in "Date Range" fields. Users can now include multiple nested values in the same "From" cell.
* **Go to Top Button**: Added a new button in the detail and editor footer to quickly scroll to the top.

### Improved

* **Group Owner Search**: Enabled expert search support for searching Groups in "Owner" fields.
* **Search Input**: Improved query execution to prevent invalid searches. Query input is now validated before auto-execution.
* **Boolean Field**: Updated the boolean field view in the editor to always display “Yes”, improving clarity.
* **Change History (Detail View)**: Enhanced contrast for added, modified, or deleted colored fields for better visibility.
* **Standard Path**: Paths now wrap to a new line fluidly by default. In standard result view, paths are truncated to a single line.
* **Presentation**: Made top-left corner buttons easier to access by separating the hoverable area from the overview element.
* **Search Panes**: Optimized horizontal overflow handling for main search panes.
* **Search Input**: Improved parsing of query input to correctly apply `OR` and `AND` operators.
* **Coin Viewer**: Refined placeholder label handling for invalid Coin Viewer JSON files.

### Fixed

* **Geo-JSON**: Fixed an issue where the map in the main search initialized without a width.
* **Display Field Values**: Fixed an issue in the plugin that prevented loading owner fields when Groups were used instead of Users.
* **File Worker**: Fixed the list of extensions in renditions configured with a source version other than "Original".
* **Detail Fullscreen View**: Ensured fullscreen header buttons remain visible by adjusting the z-index.
* **Workflows Validation**: Fixed silent error in `getSaveData` method in `TagTransition`. Also resolved issue where multiple warning icons appeared in invalid workflows.
* **Read-Only Mode**: Disabled hotfolder drag-and-drop and prevented adding new objects to collections in read-only mode.
* **Main App**: Fixed error when dropping a file into the main app.
* **Query Element Field Editor**: Fixed rendering issues with fields requiring a search instance.
* **Path Tooltip**: Resolved error when creating empty tooltips for new hierarchical objects.
* **Presentation**:
  * Fixed zoom button positioning within presentation slides.
  * Fixed hidden zoom percentage label (e.g. “40%”).
* **Tag Form Filter**: Corrected grid layout for 5-column display in the "State after Saving" view in Tag Manager > Workflow.
* **Facet Manager**: Removed the border of the last facet branch before the next sticky-header "category".
* **Sidebar**: Fixed minimum size handling of the asset browser to prevent it from becoming too small.
* **Mask Preview**: Fixed STANDARD preview rendering in the Mask Editor when a real object is selected.
* **Search Input**: Corrected handling of boolean filter types for `OR` searches.
* **Change History Diff View**: Fixed error caused by accessing null properties during diff calculation.
* **CSV Importer**: Fixed unhandled error when importing linked objects via CSV.
* **Video Subtitles**: Improved form logic to gather video subtitle variants from linked object standards.


# Release v6.19.2 (2025-04-11)

Published 2025-04-11 12:44:33Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.2/fylr_checksums.txt)
* [fylr\_v6.19.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.2/fylr_v6.19.2_darwin_amd64.tar.gz)
* [fylr\_v6.19.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.2/fylr_v6.19.2_darwin_arm64.tar.gz)
* [fylr\_v6.19.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.2/fylr_v6.19.2_linux_amd64.tar.gz)
* [fylr\_v6.19.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.2/fylr_v6.19.2_windows_amd64.zip)

## Server

### Fixed

* **/api/export**: Fixed crash bug for CSV export with recursively linked bidirectional objects. \[f2caa06c]
* **Hotfolder**: Ignore files in top level Hotfolder directory (avoids panic). \[4874e4a2]
* **Metadata Mapping**: Fixed an SQL error when injecting metadata with unescaped special characters. Also, fixed reading of `width` and `height`. Existing import mappings need to be re-created for this change to take effect. Support type `DOUBLE`. \[6385f6f1] \[a37a001e] \[1a490466]

### Improved

* **/api/group**: Compile `LINK` and `UNLINK` into `_generated_rights`. These rights can be set in the ACL but were not compiled into the `_generated_rights` info. \[f986326b]


# Release v6.19.1 (2025-03-31)

Published 2025-03-31 15:20:59Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.1/fylr_checksums.txt)
* [fylr\_v6.19.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.1/fylr_v6.19.1_darwin_amd64.tar.gz)
* [fylr\_v6.19.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.1/fylr_v6.19.1_darwin_arm64.tar.gz)
* [fylr\_v6.19.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.1/fylr_v6.19.1_linux_amd64.tar.gz)
* [fylr\_v6.19.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.1/fylr_v6.19.1_windows_amd64.zip)

## Server

### Fixed

* **/api/eas/rput/bulk**: Fixed for uploads which include same reference. If an upload contains multiple new files with the same reference, the code would fail to load all files after insert. This resulted in the error *FileList.Load: Not all files found in DB*. \[42918f35] \[bfa98757]


# Release v6.19.0 (2025-03-27)

Published 2025-03-27 15:17:13Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.0/fylr_checksums.txt)
* [fylr\_v6.19.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.0/fylr_v6.19.0_darwin_amd64.tar.gz)
* [fylr\_v6.19.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.0/fylr_v6.19.0_darwin_arm64.tar.gz)
* [fylr\_v6.19.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.0/fylr_v6.19.0_linux_amd64.tar.gz)
* [fylr\_v6.19.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.19.0/fylr_v6.19.0_windows_amd64.zip)

## Important

This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running.

## Server

### New

* **Startup**: New fylr.yml config `fylr.elastic.startupConnectTimeSec`. This new config allows to configure the seconds fylr tries to reach the indexer at startup. Defaults to `50`.
* **Export / OAI/PMH**: Add option to embed linked objects which are in main search. We already had embed linked object if not in main search, this adds the variant to embed linked objects if they are in main search. \[493502db]
* **Custom Versions**: Support `WEBP` for custom downloads and exports. Also adds a new parameter `--webp-quality` to fylr convert. \[62bc077f]
* **/api/collection**: Added `_count_recursive` as a new property sibling to `_count`. The new property contains the number of objects links in the collection and all its descendants. \[fb0c3539]
* **XSLT 3.0 support**: Migrated the XSLT processor from [**xsltproc**](http://xmlsoft.org/xslt/xsltproc.html) to [**saxon**](https://www.saxonica.com/html/documentation10/using-xsl/xslt30.html). We use **Saxon-HE** in the **fylr** Docker image. Contact us if you need streaming support for **Saxon-EE**. \[d9787d68]

### Improved

* **/api/db**: Performance improvements for huge databases. \[31ad5110] \[72894b6e] \[d1f03b6c]
* **/api/db**: Speed up loading reverse objects, improved loading of objects in **GET /api/db**, **GET /api/db\[list]**, after **POST /api/db**. The improved loading contexts skip reverse and other flags if not needed by the format. Also, skip reverse loading with url parameter `skip_reverse_nested` (in `POST`, was already like that for `GET`). \[2737c17c]
* **/api/export|eas/download**: Support `quality` in custom versions. Support for parameter `quality` was missing from easydb 5. This patch adds this back. In easydb 5 it was named `jpeg_quality`. \[b1d831e2] \[214b6788] \[cd15f7d9]
* **/api/search**: Added `.range_year|month` subfields for `daterange`, `date` & `datetime`. Enable range support for `date` & `datetime`. We had this for `daterange` already. \[fe26104f]
* **/api/search**: Added support for system field in reverse nested. Requires a re-index. \[7d3de23d]
* **/api/search\[type=event]**: This is now only allowed with system right `system.api.event[get]`. \[9290459d]
* **/api/search**: The filename without extension was added to the full text index (required re-index). \[a9f655da]
* **Notifications**: The notification cleanup can cover more cases now. The case is that a transition action has been removed before a notification caused by it was sent out. \[46862bd8] \[77b7dca4]
* **Startup**: Output error message if plugin glob path could be found. Before this was silently ignored. \[79473b04]
* **Page: Service Unavailable**: Removed link to home. \[45450339]
* **File worker**: New recipe parameters for more compatible `MP4` renditions. This will be applied to new uploads or if file renditions are re-produced using `/inspect/files`. \[ae2d5f45]
* **File worker**: Recognize `webdvd.zip` extension (to enable client support). There is no `webdvd.zip` support in fylr, but with this patch, the extension is recognized (in class `office`), so that we can support the existing frontend **WebDVD player**. \[4cf13eb7]
* **Reverse Proxy**: The reverse proxy will now set `x-forwarded-*` headers as described [here](https://pkg.go.dev/net/http/httputil@go1.24.1#ProxyRequest.SetXForwarded). \[d655f3fa]
* **WebDAV Hotfolder & PUT /api/eas?collection**: Support nested `create_version` and improve update match. With `create_version` uploaded assets can be appended to an existing nested. Also, the matching for filenames is now word based for the value, so a filename like *bergsee.jpg* will match in *bergsee.jpg; another.jpg*. The separators are comma, semicolon and newline. Spaces are trimmed. \[46537e6a]
* **CSV Export**: Render hierarchy standard info into `_path`. Before this was only including ids. \[fa740966] \[ee50a52d]
* **Extension Plugins**: Relax error parsing for improved `statuscode` detection. If a plugin returned `{"code": "some.error", "err": "custom error", "statuscode": 400}`, the `statuscode` response would be `500`, because the error was parsed as api error in strict mode and api error has no `err` property but `error`. This patch relaxes the strict parsing, so whatever is found in the responded error json is parsed into api error and, if `statuscode` is set, returned to the caller. Also, the `X-Fylr-Error` and `X-Fylr-Error-Code` headers are set if an api error is found in the response json with properties `code` and `error`, resp. \[0c7823ce]
* **fylr convert**: Support capitalized extensions. \[a99a9d07]
* **fylr backup / restore**: Various improvements & fixed. \[f9b52617] \[34966ba3] \[c2a28539] \[05c1f085] \[4ec96cb1] \[ce882db8] \[944aa1cb] \[2b65a076] \[50f7de7e] \[aa0c31ef]

### Fixed

* **/api/db**: Fix crash bug in reverse self linking case. In a specific case where a reverse linked object would be used together with a bidi linked objects linking to itself, fylr would crash. Also improved detected of illegal paths in hierarchies. \[f67de25c] \[5ad30714]
* **/api/db**: Fixed a case where saving wasn't possible because of missing mask system rights. \[16a54b5f]
* **/api/db**: Fixed importing object types without mask. \[8ac1ab92]
* **/api/right**: Don't output rights from disabled plugins. \[ca1f62e3]
* **/api/export**: Write `FILE_DOWNLOAD` events if files are downloaded via `ZIP` or `TAR` files. \[e2e121aa]
* \*\*/api/export: Prevent recursion in XML export. Cases using bidirectional nested, could lead to **fylr** crashing (stack overflow). \[a2c29611]
* **Event listener**: This patch fixes a problem in event broadcasting which could lead to contention and made **fylr** unresponsive to **POST /api/db**. \[ed7874de]
* **Janitor**: Fix removing remote addresses from events. The base config `event_remote_addr_expire_days` was never properly read from the config system and thus no remote address ever got deleted by the janitor on any **fylr**. \[27e9d682]

## Frontend

### New

* **Core Event Manager**: Moved the **Admin Event Manager** code from the event-manager-plugin to the core app. The manager it is now available without requiring an additional plugin. See #75531
* **Recursive Count in Collections**: Collections now display the total number of items (including children) when collapsed and the exact count when expanded. See #75057
* **Expert Query Editor**: Added a new functionality in the query element fields (input search) that allows users to click and edit query content without deleting and recreating them. See #72671
* **Date Filter Enhancements**: Introduced new `.range_year` and `.range_month` subfields for date-based columns to improve date-range filters and expert searches. See #75418

### Improved

* **Admin Event Manager**: Added support for the right `system.api.event[get]` in the admin event manager. See #75531
* **Export Custom Version Quality**: Added a new “keep” option to the quality selector (JPEG/WebP) so the original quality remains unchanged. See #75439
* **QueryElementGeoBoundingBox**: Added support for storing bounding box search data so such searches can be saved and restored. See #33713
* **Pinned Facets**: Added a secondary label in pinned filters to display the object type, helping distinguish filters with the same name. See #70863
* **result-Card-Path**: Switched truncate style when there are four or more path elements and limited the “one-line” style to standard result cards (search) and used a multi-line style elsewhere. See #75625
* **Collection Upload Settings**: Strengthened validation of the `update_policy` field in the collection upload settings. See #74790
* **Plugin Manager (Install Form)**: The plugin install form was enhanced to avoid sending both `zip_file` and `url` simultaneously and to only show the relevant field (URL or ZIP) depending on the chosen mode. See #75617
* **Message Types**: Changed the order of message types for improved clarity in the messaging interface. See #72818
* **Plugins Manager**: Page now auto-reloads after a plugin is installed and enabled, streamlining the setup process. See #75305
* **Search Execution**: Allowed the search manager to run without triggering a “wait” block, preventing flicker (especially useful in map- based searches). See #33713
* **ResultDynamic Rendering**: Improved how dynamic objects render in `ResultDynamic`, so the DOM only updates when new data is ready, reducing flickering. See #33713
* **Editor-Templates-Customize**: Optimized data table views inside smaller pop-ups. See #75423
* **Tag Filters Popup**: Centered checkboxes, removed unnecessary scrollbars, and allowed the popup to grow if table labels get wider. See #75428
* **Asset Download Confirmation**: Admin Messages now include asset IDs and classes for all requested downloads in confirmation events. See #74668
* **Plugin Manager (Add Plugin Form)**: Added an “Enable” checkbox in the Add Plugin form so plugins can be enabled immediately upon upload. See #75305
* **GeoJSON Column**: Added a new combo box to the geoJSON field editor, allowing for faster feature creation (e.g., parsing points in multiple formats). See #33713
* **Metadata Browser**: Added support for a multiline label with “read more/less” in the metadata table for asset info. See #74937
* **Standard Path Tooltip**: Added a tooltip showing the full path in the standard path element. See #75625

### Fixed

* **Admin Event Manager**: Fixed the display logic for the remove event button by verifying the `system.api.event[delete]` right. See #75531
* **Fylr – Export Manager Color Profile**: Corrected behavior for unset color profile values, aligning it with server expectations (empty instead of null). See #75439
* **Nested Popup**: Fixed an issue where EAS fields were not correctly processed in nested table pop-ups. See #75600
* **Download Manager**: Fixed missing field info when creating download managers, corrected the title when downloading a single asset, and improved handling of filtered assets. See #75604
* **Change History**: Fixed loading of the latest object version in comparison mode to ensure consistent diff structures. See #75017
* **Expert Search**: Fixed errors when opening the expert search if certain parent fields were not initially visible. See #75489
* **Date Filters**: Removed a duplicate day aggregation that led to unexpected hierarchies. See #75418
* **Admin Messages**: Corrected the handling of min/max checked fields in confirmation messages. See #75490
* **Restoring Nested Fields**: Addressed a bug preventing nested field input queries from being restored in stored searches. See #75471
* **Detail Asset Browser**: Resolved an overflow issue in the “File Variants” (Versions) tab. See #75434
* **Search Result Card**: Fixed the text color inheritance in `result- card-path` so it correctly follows the parent’s foreground. See #75431
* **GeoJSON Field Restore**: Fixed an issue where geoJSON fields failed to restore from stored searches if the Turf library was not yet loaded. See #33713

## Plugins

* **Geo-JSON Plugin**: We've released the first beta version of the Geo-JSON plugin for fylr, enabling visualization, editing, and interaction with geographic data using "Geographic" type fields.


# Release v6.18.2 (2025-03-11)

Published 2025-03-11 12:58:24Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.2/fylr_checksums.txt)
* [fylr\_v6.18.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.2/fylr_v6.18.2_darwin_amd64.tar.gz)
* [fylr\_v6.18.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.2/fylr_v6.18.2_darwin_arm64.tar.gz)
* [fylr\_v6.18.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.2/fylr_v6.18.2_linux_amd64.tar.gz)
* [fylr\_v6.18.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.2/fylr_v6.18.2_windows_amd64.zip)

## Server

### Fixed

* **/api/search**: Fixed **timezone** problem with legacy timezones like `Asia/Calcutta`. \[0a4c22e0] \[0e7ea479]
* **/inspect/objects**: Fixed errors when using *file counts* filter. \[de07e25e]

### Improved

* **/api/eas**, **/api/webdav**: Run plugins for uploads via these endpoints. Before plugins were skipped which led to unexpected results. \[87d04e2a]

## Frontend

### Fixed

* **Filter Manager**: Fixed the toolbar in the popup. Now it wraps into a new line when needed.
* **Search Sources Selector**: Fixed css styling bugs in the search sources selector.


# Release v6.18.1 (2025-03-07)

Published 2025-03-07 13:49:18Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.1/fylr_checksums.txt)
* [fylr\_v6.18.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.1/fylr_v6.18.1_darwin_amd64.tar.gz)
* [fylr\_v6.18.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.1/fylr_v6.18.1_darwin_arm64.tar.gz)
* [fylr\_v6.18.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.1/fylr_v6.18.1_linux_amd64.tar.gz)
* [fylr\_v6.18.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.1/fylr_v6.18.1_windows_amd64.zip)

## Server

### Important

* **This release contains an important security bug fix. It is highly recommended to update to this version as soon as possible.**

### Fixed

* **/api/export**: Fixed recursion caused stack overflow (full **fylr** crash) if an export contained an object A with reverse nested B linking to another object C with reverse nested back to B. More general recursion protection has been added too, so that further cases are more likely to result in a panic rather than a stack overflow. \[ac53fdc8] \[40957697]
* **/api/schema**: Fixed error path on **Windows**. A database schema could not be properly reported due to a debug dump which caused an error on Windows. \[4acf9068]
* **POST /api/db**: Fixed a stack overflow (**fylr** crashes). If object parent relations contain a recursion inside a bulk upload (all objects version 1), \*\*fylr would not detected that recursion and insert the objects without error. After loading of these objects a stack overflow would occur. \[5685dc2c] \[40957697]
* **Plugin support**: Fixed exec server silent errors with wrong config. If the config contains an empty command like `fylr.services.execserver.commands.foo: null`, the exec server would not answer, the error message would only say "EOF". This was caused by a uncaught panic caused while reading the config. This fix catches panics during exec server job execution as well as improves the error messages with shorter message for better readability. \[d244d2d2]
* **DELETE /api/db**: Allow deleting of two objects linking to each other. If an `object 1` \[`object type A`] has a nested linking to `object 2` \[`object type A`] deleting of `object 1` and `object 2` was blocked by the **fylr** server. \[46baebdc]

### Improved

* **OAI/PMH**: Added attributes `completeListSize`, `cursor` & `expirationDate` to `resumptionToken`. \[0446525b]
* **File Metadata XML**: Removed debug output. \[801f4098]

## Frontend

### Fixed

* **Exact Match Search**: Fixed the exact match in autosuggestion for suggestions with more than one word
* **Editor Validation Errors**: Fixed validations errors when custom data types (like weblink) throw invalid save data exceptions
* **Autocomplete Token**: Fixed a bug where some autocomplete suggestion for custom data types were shown empty in the autocomplete popup.
* **Filter manager Popover**: Fixed an issue with toolbar buttons being cut off.
* **Default Tags**: Fixed an error when sending default tags to server for validation.


# Release v6.18.0 (2025-02-26)

Published 2025-02-26 12:56:10Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.0/fylr_checksums.txt)
* [fylr\_v6.18.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.0/fylr_v6.18.0_darwin_amd64.tar.gz)
* [fylr\_v6.18.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.0/fylr_v6.18.0_darwin_arm64.tar.gz)
* [fylr\_v6.18.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.0/fylr_v6.18.0_linux_amd64.tar.gz)
* [fylr\_v6.18.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.18.0/fylr_v6.18.0_windows_amd64.zip)

## Server

### Important

This release **forces a blocking re-index**. Make sure to plan enough time for this update as your users will not be able to access the database while the re-index is running. This is to support the new sorting by `_level` and `<object>._parent_child_idx` (see below).

A new index will be created on the `value` table. This can take a while, if you database is big (see below).

### New

* **/api/config**: New setting to hide fields in user manager. The new `register.form.use_in_user_manager` can be used to hide fields in the user manager. \[a220f3bf]
* **/api/rput/bulk**: New endpoint to support bulk remote file uploads. Also added `skip_duplicate_reference` as new parameter for `/api/rput` and `/api/rput/bulk` to ignore duplicate references and load the file if the reference already exists. \[c3ad997b] \[083d689c]
* **/api/system/mail**: New endpoint to send custom mails. \[51ca2960]
* **/api/search**: Support term sorting. `order` is now supported for sort types `term` and `count` in agg type `term`, `term_stats` and `linked_object`. \[1aa632d5]
* **Read-Only mode**: This patch brings the **Read-Only** mode to **fylr**. It can be set in the base config and avoids write operations to the **fylr** db. It should be used during migrations where the source data must remain in a consistent state. Not everything is read-only though, e.g. running exports is still possible as well as user record updates (from the user himself). Also, event and message POSTs are allowed. This adds a http header `X-Fylr-Read-Only-Mode: true` in case fylr is in read only mode. \[fde76db5] \[af77e54a]
* **/api/group**: New columns `category_a`, `category_b`, `category_c`. The new columns category\_a, category\_b, category\_c can be used to categorize group for easier filtering. \[df58e8b2] \[3303489c]

### Improved

* **fylr backup/restore**: Support `--max-parallel` to run backups and restore in parallel chunks to save time. Also robuster connection retry. Also includes better filename generation as needed. \[ba68ea9a] \[a83f7217] \[1332bb7e]
* **/inspect/migration**: Support new parallel settings, minor improvements of form loading. \[5215c0d3]
* **POST /api/db**: New dedicated `VersionMismatch` error. This helps the restore tool to detect already uploaded payloads. \[ea582508]
* **/api/rput**: Use only one database transaction instead of 3 to make the endpoint more robust. \[c3ad997b]
* **/api/settings**: Output number of CPU. \[083d689c]
* **Dockerfile**: Integrate `Chromium` instead of `chrome-headless-shell`. With this we are in-sync with regular Chrome releases. \[579b5f81]
* **/api/search|db**: Add `_best_mask` to response. This was supported in ez5 but missing in **fylr**. \[5883571d]
* **fylr backup**: Added `--max-parallel`, renamed cmd line params. Renamed `--chunk` to `--chunk-size` (also for restore). Renamed `--limit` to `--maximum-count`. Verify payloads only with `--verify` or if `--maximum-count` > 0. Use payload file names to determine if a payload can be skipped with `--continue`. \[8fab1106]
* **Register Page**: Support `info` with Markdown. \[0c6f853c]
* **/api/xmlmapping**: Added `limited_extensions`, improved import. The import into collections has been improved if metadata mapping requires a recipe which doesn't support the extension of the file uploaded. In this case, the file is still accepted into the collection, just without an applied metadata mapping. Also, add `limited_extension` to the mapping response of `api/xmlmapping`. This can be used by frontend to check beforehand if a file metadata check will be supported or not. Also, improve the error message in case a metadata mapping on an unsupported file extension is requested. \[d77c40f7]
* **Go 1.24**: **fylr** is now built using the latest [Go version 1.24](https://tip.golang.org/doc/go1.24). \[7521968a]
* **/inspect/customdata**: Added offset + limit for detail view. \[f30a8d06]
* **OAI/PMH**: Added missing schema and namespace declarations for `metadataFormat=oai_dc`. \[fcc84aed]
* **/api/search**: Support sorting and querying of `_level` and `<object>._parent_child_idx`. This requires a re-index. \[b9f7ef60]
* **/api/db**: Numbering is now limited to reverse hierarchies only. This limitation existed before but was not enforced by the **fylr** API. \[b9f7ef60]
* **POST /api/db**: Speed-up for huge databases during object injection. A new index on table `value` helps to faster find pending linked object relations which have been inserted with `_allow_defer: true`. \[e17a0a08] \[b6ce5174]
* **File worker**: Log requeueable errors in `Warn` level (before there was no logging). \[079c0d51]
* **Notifications**: Remove unreachable entries from job list. Detect some errors about not found objects for notifications. This patch removes the notifications. Before we had zombie left-overs in our database which were retried over and over with every **fylr** start. With the new code old zombies will be removed too. \[fdd29c69]
* **GET /api/saml/metadata**: Set `NameIDFormat` to `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`. \[c751722b]

### Fixed

* **/inspect/apidocs/**: Fixed on Windows. \[9c95a23d]
* **/inspect/system/commands/**: Fixed `stop` for restores. \[3ff3d3f5]
* **OAI/PMH**: Fixed resumption token to follow spec. The resumptionToken implementation was not implemented as defined by the spec. This patch fixes that. The token now includes all relevant info from the initial request. Also, we now use search point in time to snapshot the index for reliable paging using the resumptionToken. \[b5f33e5b]
* **/api/eas?mapping=ID**: Fixed reading text lists. If the xml search path yields complex XML nodes, the previous implementation would collect all text as one string from these nodes resulting in a list of keywords appearing as "keyakeybkeyc". This patch fixes this by explicitly collecting the text nodes underneath the xml search path from the mapping. This is the same as ez5 does it. fylr uses "//text()" for that (appended to the search) patch, so all text nodes are found recursively. \[cec3ffcd]
* **POST /api/db**: Fixed update of objects using `lookup:_id_parent`. This was ignored and this lookup was only working for inserts. \[b9f7ef60]
* **POST /api/pool**: Fixed system root pool update for non `system.root` users. \[87260d9c]

## Frontend

### New

* **Group Categories**: Added three new fields in the **group configuration**: **Category A|B|C**. These fields allow groups to be categorized and filtered using these categories. See #70031
* **Add Collection to Search Tool**: Introduced a new tool to append the **collection query search** to the end of the **search input**, instead of overriding the entire search input. This enables users to combine **collection queries** with other query elements. See #75012
* **Color and Icon Inputs**: Added two new field types in the **base config** and **configuration panels** that allow previewing **colors** and **icons**. See #74630
* **Hidden User Fields**: The **user manager** now hides fields configured to be hidden in the **base config**. See #74422
* **Shared Templates - Group Manager**: Added a new tab in the **group manager** when a group has **shared\_templates**. This new manager, similar to the **shared\_templates editor customize menu** but more comprehensive, displays extra info like the **username** who shared the template, the **mask**, and allows editors to view all templates for all **object types** in one place. See #70030
* **Collection Views**: Added the **result views** from the **main search** to the available **result views** for **collections**. This means **collections** can now be visualized using the **Text View** and **Table View**. See #74417
* **Pool Rights**: Added **valid\_from** and **valid\_to** options to the **ACL Manager** of the **pools**, allowing users to set rights in **pools** for a specific timeframe. See #75099
* **Sort of Pinned Filters**: **Pinned filters** can now be sorted by the user.
* **Pool: Tag records from other users**: A new feature has been added to pools allowing users to tag objects that do not belong to them. This new function defines a custom virtual tag that will be displayed if the object being viewed does not belong to the current user. #74447
* **Pool: Sharing Deep Links settings**: A new feature has been added to pools allowing users to configure whether defined users/groups can share an object they do not own. #74447

### Improved

* **Search Autocomplete Suggestions**: Enhanced the **autocomplete speed** in the **search input** to improve the user experience. See #71227
* **Main Search and Deep Links**: Improved the execution order when a **deep link** is present in the URL in the **main search**. Now, the **deep link search** runs within the **main search**, saving resources and enhancing the startup flow. See #74067
* **CSV Importer**: Added a **warning text** for numbers that will be converted from **decimal formats** to **integers** in the **CSV importer**. This warning is included in the corresponding `warning_text` column during import preparation. See #72903
* **Search Reset Tool**: The **reset button** now also resets the **Search Type Selector Manager**, enabling all options in the **Resources panel**. See #73009
* **Filter Panel**: Improved the **settings** of the **filter panel**, making it possible to change the order (**ascending** or **descending**) of the filters. See #75213
* **Detail Hierarchy List**: Enabled sorting by `parend_child_idx` in the **detail hierarchy view** for **reverse hierarchy objects**. This displays objects sorted by the manual sort configured in the **reverse field**. See #66187
* **Preset Manager**: The **active tab** in the **preset manager** is now persisted between saves. See #72901
* **Base Config**: The **base config** now remembers the last item selected in the **listview section** when saving, allowing the user to continue editing the same settings if no reload is selected. See #72901
* **Hierarchy Detail**: The **hierarchy detail** now uses the same sorting as the **search** that opens the **detail panel**, syncing the sort of objects shown in the **search** and the **detail hierarchy list**. See #75183
* **Metadata Mapping Process**: Improved the **modal** that indicates the **metadata mapping process** when importing new resources.
* **Search Input**: If the user inputs **"and"**, **"or"**, **"not"**, **"&&"**, **"||"**, or **"!"**, the **autocomplete popup** will now include **boolean operators** as suggestions.
* **Date Filters**: Added new **subfilters** in **date filters** for filtering by **month** and **dates**. See #73482
* **Exact Token**: Added support in the **search input** to search **exact tokens** by wrapping the search term between backticks (\`). Previously, using the **Exact Token suggestion** was the only way to add this type of search. See #74317

### Fixed

* **Nested Popups**: Fixed errors in **nested popups**. See #75280
* **Result Objects**: Fixed an issue where **pointer events** were not reaching other elements in selected **result objects**. See #75276
* **Collection Properties**: Resolved an issue that prevented the correct display of a **collection's properties** if the instance had an **object type** without **masks**. See #75275
* **Read-Only Mode**: Corrected the display of the **read-only message** in **read-only mode**. See #67975
* **CSV Importer**: Fixed support for **zero values** when importing numbers in the **CSV importer**. See #72902
* **Detail Sidebar**: Resolved a bug where the **detail sidebar** opened without a `global_object_id` after the server informed the frontend that the user lacks permission to create an object. See #75016
* **Search Tokens**: Fixed a bug where exact **token suggestions** were not clickable. See #75153
* **Metadata Mapping**: Corrected a bug that caused the **"Deep Link URL" tag** to be added in **easydb**, which is only supported in **fylr**. See #74149
* **Search Input**: Fixed a bug where the **search input** became unusable after an empty call. The **placeholder token** was not re-added after the empty call, preventing user input. See #75215
* **CSV Importer**: Resolved an issue that prevented finding all **parent objects** in an import with more than 100 objects. See #74944
* **Metadata Mapping**: Fixed a bug where the **copy button** for **metadata fields** was activated for all fields. This button should only be enabled for **custom metadata fields**. See #75154
* **EZ5 Paged Viewer**: Corrected an error in the **paged viewer**. See #75701
* **Autocomplete in Search Input**: Fixed the cleanup of items when the **autocomplete popup** is displayed. Previously, results from prior searches lingered for a few milliseconds, making the UI less fluid when loading new results. See #74868
* **Editor Templates**: Resolved a bug when merging **editor templates** in a record with **linked objects** created by **metadata mapping**. See #67699
* **Default Tags in New Editor**: **Default tags** are now properly set in `dbinfo` when creating a new object in the **editor**. See #75016
* **Mask Editor**: Fixed the offset of the **customize button** for **mask splitters** in the **mask editor**. See #75214
* **Filter Panel**: **Facet manager**: Prevented **facet count numbers** from breaking onto a new line.
* **Lists Deep Links**: Fixed the **deep linking** of lists containing **object types** available in **main search**. Before this patch, if the **object type** was available in the **main search**, the **main search** loaded instead of the **list search**, even when the list/location was explicitly used in the **deep link**.


# Release v6.17.3 (2025-02-14)

Published 2025-02-14 13:06:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.3/fylr_checksums.txt)
* [fylr\_v6.17.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.3/fylr_v6.17.3_darwin_amd64.tar.gz)
* [fylr\_v6.17.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.3/fylr_v6.17.3_darwin_arm64.tar.gz)
* [fylr\_v6.17.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.3/fylr_v6.17.3_linux_amd64.tar.gz)
* [fylr\_v6.17.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.3/fylr_v6.17.3_windows_amd64.zip)

## Server

### Fixed

* **/inspect/migration**: Fixed restore after command line parameter changes in `6.17.0`. \[0d7bfda4]
* **/api/eas/download**: Set filename to original. In case no filename is requested over the url, set download filename to original filename. Before no filename is set, so that browsers stored watermark downloads as *true.svg*.
* **/api/collection/list**: Fixed `limit` & permission check. \[fd21b426] \[738874bc]
* **Email**: In Gmail the subject was not displayed correctly for some emails. \[4674b175]
* **/inspect/customdata**: Run search without "...". \[f887ba4f]

### Improved

* **/api/collection/list\[/id\_parent]**: Support `id_parent` filter. \[d679d248]
* **/api/search**: Support `_path.collection._id|_id_parent` for type `collection`. \[d679d248]
* **/inpsect/objects**: Output mask API-ids where applicable. \[f3516846]

## Frontend

### New

* **Pool: Tag records from other users (Beta)**: A new feature has been added to pools allowing users to tag objects that do not belong to them. This new function defines a custom virtual tag that will be displayed if the object being viewed does not belong to the current user. (Important: This feature may undergo changes in future releases) #74447
* **Pool: Sharing Deep Links settings (Beta)**: A new feature has been added to pools allowing users to configure whether defined users/groups can share an object they do not own. (Important: This feature may undergo changes in future releases) #74447

### Improved

* **Date Filters**: Additional levels of depth have been added to date filters. Users can now filter by months and days. #73482

### Fixed

* **Date Filters**: Fixed a bug where records were not correctly filtered using date fields when filters were nested within other filter groups. #73482
* **Sorting By DateFields**: Fixed an issue where records were not sorted correctly when using date fields grouped by weeks and containing objects with BC dates. #73482
* **Preview Mask Editor**: Fixed an error occurring when selecting a sample object in the mask editor preview. #70435
* **ACL Manager**: CSS corrections have been made to the ACL Manager. #75099
* **Detail Best Mask**: Fixed a bug where the mask was not correctly selected when opening the detail panel. This caused a mismatch between the mask shown in the selector and the mask used for rendering the object. #74619


# Release v6.17.2 (2025-02-07)

Published 2025-02-07 13:32:09Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.2/fylr_checksums.txt)
* [fylr\_v6.17.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.2/fylr_v6.17.2_darwin_amd64.tar.gz)
* [fylr\_v6.17.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.2/fylr_v6.17.2_darwin_arm64.tar.gz)
* [fylr\_v6.17.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.2/fylr_v6.17.2_linux_amd64.tar.gz)
* [fylr\_v6.17.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.2/fylr_v6.17.2_windows_amd64.zip)

## Server

### Fixed

* **Docker fylr-server**: The docker image was missing TLS root certificates which broke SAML connections to Azure. Also, include `curl` and `jq` as sysadmin tools. \[50edea79]

## Frontend

### Improved

* **Search Input**: Added support for 'Exact Token' searches directly in the search input by enclosing the token in backticks (\`). Previously, this type of search was only possible using the autocomplete suggestion. #74317
* **Open In New Tab**: The new "Open in new tab" functionality introduced in version 6.17.1 is now available in the contextual menu of linked objects. This feature allows opening the linked object in a new browser window. #75028

### Fixed

* **Lists Deep Links**: Fixed the behavior of deep links in list mode. Previously, if an object was available in the main search, it would be displayed there even if the URL specified list mode. Now, the object will correctly appear in list mode when specified in the URL.


# Release v6.17.1 (2025-02-06)

Published 2025-02-06 14:54:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.1/fylr_checksums.txt)
* [fylr\_v6.17.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.1/fylr_v6.17.1_darwin_amd64.tar.gz)
* [fylr\_v6.17.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.1/fylr_v6.17.1_darwin_arm64.tar.gz)
* [fylr\_v6.17.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.1/fylr_v6.17.1_linux_amd64.tar.gz)
* [fylr\_v6.17.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.1/fylr_v6.17.1_windows_amd64.zip)

## Server

### Improved

* **Transition Change Owner**: The transition change owner can now change the owner regardless of the current permissions of the session user. \[1828f0e7]

### Fixed

* **/inspect/migration**: Fixed reverse proxy *unexpected EOF* error visible during log watches. \[8a6041bf]
* **/api/db**: Fixed length check to acknowledge UTF-8 characters. Length check is now counting runes, before we counted bytes which fails for characters like *ä* (2 bytes, 1 rune). \[e584a4e7]
* **File permission check**: In export and download, the `READ` right was not checked correctly in all cases, leading to too many files being shown to a user. \[65f29b19]
* **/api/db**: Fixed `skipIndex=1` when used together with `skipConstraints=1`: If constraint violations where noted during an import, the index for the object was still updated. \[aee5d48a]
* **Indexer Go routine leak**: This fixes a Go routine leak which appeared if a lot of index queuing was done. The code responsible to drain the wake-up queue for the indexer was not really draining the queue. \[8e707b6f]
* **File watermarking**: Fixed watermarking using SVG files. The program `rsvg-convert` was missing in the Docker container. \[4fb64774]

## Frontend

### New

* **Open in new tab**: Added a new tool in the context menu of the main search to open the selected record in a new browser tab. #75028

### Improved

* **Deep Link**: Improved the execution order when there is a deeplink in the URL in the main search. Now, the deeplink search is executed directly without running the main search, saving resources and enhancing the startup flow. #74067
* **Flex Handles**: Added a new option to flex handles to work with percentages instead of pixels. This improvement is available for developers using CUI to build the UI of plugins and use flex handles. #75008
* **Editor Templates**: Fixed the CSS of the new editor templates panel. #70030
* **Autocomplete In Search Input**: Improved the behavior of the autocomplete popup in the main search input. #74317
* **File Worker**: Enhanced the version editor in the base config. Now, the "right management" property correctly syncs across all versions with the same name. #73257
* **Lists**: Unified the default sorting option in lists. Now, all lists are sorted by default using the Standard sorting if the user has not selected another field for sorting. #72513
* **Mask Preview**: Added support for selecting example objects in the mask editor preview. Previously, selecting an example object only applied to the search preview and detail preview. #70435

### Fixed

* **Welcome Message**: Fixed an issue introduced in version 6.17 where welcome messages were not displayed correctly, causing the search to appear empty erroneously. #74983
* **Paged Viewer**: Fixed an issue in the document viewer of the asset browser that prevented pages from displaying correctly. #74958
* **Sort Manager**: Fixed the style of the new System Fields panel in the sort manager. Now, all sorting options are correctly aligned. #74626
* **Shared Collections**: Fixed a bug where non-shared collections were displayed to users with limited permissions. These collections were not accessible but were visible in the collection manager. Now, only shared collections will be shown in the Shared Collections panel. #74868
* **PDF Creator**: Fixed margin application in PDFs. Previously, margins were overridden by CSS. Now, user-configured margins are correctly applied in the final PDF. #73260
* **Original Download**: Fixed the download of original files when using the option in the EAS field. Now, the correct filename is used in the download. #74740


# Release v6.17.0 (2025-01-30)

Published 2025-01-30 15:00:54Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.0/fylr_checksums.txt)
* [fylr\_v6.17.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.0/fylr_v6.17.0_darwin_amd64.tar.gz)
* [fylr\_v6.17.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.0/fylr_v6.17.0_darwin_arm64.tar.gz)
* [fylr\_v6.17.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.0/fylr_v6.17.0_linux_amd64.tar.gz)
* [fylr\_v6.17.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.17.0/fylr_v6.17.0_windows_amd64.zip)

## Server

### New

* **Fulltext & OCR**: Improved full text support for office files. Full text is now extracted using [Apache Tika](https://tika.apache.org/). It supports all office formats as well as `PDF`. For OCR we are deploying [Tesseract](https://tesseract-ocr.github.io/). This works for most image formats and office formats (via `PDF`). Rendering of pages (via `PDF`) works now on all office formats too and is now 10 - 100 x faster than `v6.16`. We switched from [`ppmtopdf`](https://poppler.freedesktop.org/) to [`mutools`](https://mupdf.com/). OCR is on in the default produce config for `PDF` only. \[20be1c15] \[71b5e189]
* **File formats**: Support `EPUB` format. This is imported as office format and offers page previews. Rendering is done with [Calibre](https://calibre-ebook.com/). Also support raw format `CR3` from [Canon](https://www.canon.de/pro/infobank/image-file-types/). \[60069b19] \[844ffd5b]
* **Terms**: Add `#` to the recognized characters for terms (like `_`). For normal texts, the "#" is now part of the term. So `#hashtag` is kept as is. With that, such terms can be search via token mode. Existing objects need to be re-saved for this change to take effect. \[ce975f3a]
* **/api/db|search**: Add `generated_rights.owner`. `owner: true` indicates that a resource is owned by the current session user. \[1e7d4cdb]
* **System rights**: New system rights for `/api/system/location`, `/api/system/backup` and `/api/plugin/manage`. \[0106402c]

### Improved

* **/inspect/objects**: Default object filter to `latest`. Also support query language in object filter using prefix `ql:` \[e7b2a49f] \[9e61d2ea]
* **/inspect/files**: Add `class` to the search filter. \[d17c0df2] \[0f60b06e]
* **/inspect/files**: Improved re-sync on renditions. Before this patch, resyncing version would result in producing the version twice. By using the action sync instead of action produce this patch fixes this problem. While at it, improve handling of skipped children, now, if no children in state done or error can be found, the original state is set back to done instead of being kept in sync. Also, fixed produce versions action. The produce version action would fail to delete the versions if at least one versions used a different source version than the original. Also, support version production with empty extensions. If a version is configured to be produced for any extension it will be produced for all enabled upload extensions for the class. Fixed a bug which could cause a *no source hash found* error. \[20be1c15] \[734c410f]
* **/inspect/migration**: Add email sending to backup / restore. An email field can be filled to send an email after backup or restore commands have finished. Fixed function to pre select options of dropdown menus from previous backup/restore runs. \[1d38caa3] \[bd7b3462]
* **fylr backup / restore**: Improvements. \[a229166f]
* **/api/eas**: Removed `children` and `pages_allowed`. Users must now use the `info.json` from the `pages.zip` rendition to gather all necessary information. \[20be1c15]
* **fylr metadata read**: Omit `ZIP` info block from `exiftool`. The `ZIP` metadata block read from `exiftool` can get very big (if the ZIP has many files) and is not used by **fylr**. So, we skip this when reading metadata. This results in leaner metadata per pages.zip file. \[20be1c15]
* **fylr metadata read**: Add `technical_metadata.pages` to `DOCX`, `DOC` & `PPTX` (if set in metadata). For `PPTX` the number of slides is shown `pages`. \[20be1c15]
* **fylr pdf2pages**: Supports `csv`, `doc`, `docx`, `odp`, `ods`, `odt`, `ppt`, `pptx`, `rtf`, `txt`, `xls`, `xlsx` as source formats (needs `soffice`). Also support `-v` to output issued commands. Also page sizes are now for the shortest side. Default recipes: Produce pages for office documents too. \[20be1c15]
* **Indexer**: Use file `_fulltext` from children when indexing objects. If any of the rendition carries `_fulltext` information, objects which link to their original can now be found.
* **/inspect/datamodel**: Output used custom data types and the plugins they belong to. \[aa315f05]
* **Docker**: Switch from [Alpine Linux](https://alpinelinux.org/) to [Debian](https://www.debian.org/). Debian has more packages, better support and uses optimized compiler options which promises faster code execution at the cost of bigger binaries. The downside of this switch is bigger fylr images. Including all the new tools, we went up from 1.2G to 4.8G. \[8e2717ed]
* **Postgres 17**: With the switch to Debian we now also support (and recommend) [Postgres 17](https://www.postgresql.org/) now. \[8e2717ed]
* **fylr backup** New `--pretty` option allows to indent JSON in output files. \[e8228d02]
* **/api/search**: Response with error if `date_range` aggregation requests unknown fields like `limit` and `offset`. \[4beea2cd]
* **Login**: Hide the **reset password** link whenever **SAML** is active and the preferred action. \[860957cd]
* **POST /api/event**: Support setting of user. If used with skipConstraints=1 (root only), the API now accepts setting of a user. This is used by **fylr restore**. \[75388799]
* **fylr restore**: Removed `--limit` parameter. This was a confusing parameter making restores more complicated than they should be. Now, the backup chunk size is determining the chunk size of the uploads. \[4e8a2efe]
* **File worker**: Make `preview_watermark` standard like `preview`. \[ff82c35c]
* **Unique keys**: The new unique localization key is weaker than the old. We now use all languages to build the localization key for localized values, so now, `de-DE:"See",en-US:"lake"` is a different entry then `en-US:"lake"` (without `de-DE`). This allows to insert more values at the cost of a weaker duplicate check. We do this to better support metadata mappings which use unpredictable values (like AI generated keywords). The new index matches how the lookup of database values currently works (exact match). Also, new in this patch, string values are trimmed, so that *"word "* and *"word"* violate the unique key index. \[a5ca319b]
* **Base config**: Allow all `images` classes as logo upload. \[bb97e027]
* **fylr backup**: New flag `--verify`. This patch adds a new `--verify` flag to parse an existing backup and output some information. The new code also runs the verification in parallel (up to the number of CPU). \[945489da]
* **/api/search/parse**: Support `=@` with phrases. To use a phrase with `=@` the search term needs to be enclosed in extra `"..."`, so `=@ "\"my phrase\""` will start a phrase search (`intervals_ordered`). Also in this patch, a new error `WildcardExpandedToTooManyTerms` is thrown, if the indexer errors out with *expanded to too many terms*. \[6a59912c]
* **Indexer**: Remove asset full text from global full text index. The asset full text can be searched using `_linked._asset.metadata_fulltext`. \[29ab5eca]
* **Plugin Callbacks**: The `%info.json%` replacement contains not only the plugin config, but now as an improvement also the languages configuration from the base config. Plugins no longer need to obtain this information separately by an API call to `/api/v1/config`. \[5a12e266]
* **/api/objects**: When called with an invalid combination of object and file, an error is thrown. Before such a case would result in a (harmless) panic appearing in the logs. \[69c16c76]
* **Server client aborts**: If a client aborts the connection to fylr, the log message is no longer at `ERR` level, but `TRC`. If a request is cancelled from the client side while **fylr** is getting request context ready, instead of using `ERR` / `WRN` level for the error, use TRC. This removes misleading error messages containing *context canceled* from the **fylr** log file. \[74d2b684]
* **SAML / LDAP**: When mapping groups from login systems to **fylr** groups, a `regexp` can be used for matching. This patch swaps the underlying regexp library from [Go's standard](https://pkg.go.dev/regexp) to a [3rd party library](https://github.com/dlclark/regexp2) which supports lookarounds. We use the library in *RE2 compatibility mode*. \[f73dc298]
* **fylr backup**: This patch separates the collection from the collection objects in backups. By doing that, we are able to backup bigger collection where the previous version timed out too easily (due to huge JSON objects). \[d18046cc]
* **/api/eas/rput**: Improved filename auto-detection. If no filename is given and fylr tried to determine the filename from a `HEAD/GET` request to the url, the guessing of an extension from the `content-type` was not working properly if the filename provided (or the last part from the url) contained no `.`. This fixes pulling ez5 urls which end in `/jpeg`.

### Fixed

* **/api/export**: Fixed export with more than 100,000 objects. In some cases, internal logging structures prevented bigger exports from working. \[816d9a74]
* **POST /api/db**: Fixed virtual poly hierarchy entry saving. This bug showed only when used with plugins. fylr was unable to marshal the virtual poly hierarchy root entry (which had no object type set). Fixed in the loader. \[9f2a4b8a]
* **POST /api/db**: Fixed plugin callbacks for `<file>.lookup:_id`. If an object post contains file lookups, plugin callbacks would fail (due to not found file ids). \[af905b70]
* **/api/search**: Fixed collection of `changelog.date_created` in `_fields`. The `date_created` used for the `_fields` collector was not the date of the first but the current version. \[f9f9ec79]
* **/api/db|search**: Fixed status output of file state `failed`. This state was wrongly indexed as `error`. Fixes aggregations for expert file filter in our frontend. Also, fixed display of `sync` status over the API. \[a19de758] \[b12f2e30]
* **/api/config**: Base config now allows to store empty string lists with default. If a string-list like `user.user_in_event_group` has a default, fylr did not distinguish between unset (`null`) and an empty array (`[]`). This patch brings internal support for `null` for string-lists, if enabled in the `baseconfig.yml`. \[7f26e08b]
* **fylr restore**: Added `skip_reverse_nested=true` parameter for upload of objects. This avoids deleting reverse objects during restore (as we include them in the backup) if the reverse objects were not restored before the top level objects. \[484ba112]
* **/api/export**: Improve support for version names with spaces and other non letter characters. \[ed1b639d]
* **Rights management**: When checking versions for file json delivery (`/api/db`, `/api/search`), acknowledge that `ASSET_DOWNLOAD` implies `ASSET_SHOW`. Before `ASSET_DOWNLOAD` would not cause a version to show up in the object's version list causing downloadable version not to appear in the download manager of our FE. \[ed1b639d]
* **DELETE /api/db**: This patch fixes the unlinking of linked objects in nested as well as unlinking of linked objects if they are used multiple times inside the same object. \[1456cea5]
* **OAI/PMH**: Fix **include parents** setting. The `include_parents` setting only worked partially. This patch makes it work for verbs `GetRecord` and `ListRecords`. \[29df346a]
* **/api/suggest**: Trim `linked_objecttypes` search to avoid error. When suggesting `linked_objecttypes` with query strings like `3` and `tokens_mode: ngram` the error `EmptyWildcardNotAllowed` was thrown. \[30900a7c]
* **fylr backup**: Fix group reference auto generating. In case the backup used small chunks it could happen that the references set for groups were not unique. \[e9829e08]

## Frontend

### New

* **Metadata Mapping**: Adds support in the import metadata mappings to add **Custom Metadata Tags** that are not listed in the server metadata tags. **#72587**
* **Admin Messages**: Adds a new checkbox `show_always` for admin messages. **#73639**
* **Hide in Sort Manager**: It is now possible to filter fields from the sort manager per mask. A new mask field option **`hide in sort manager`** makes the field invisible in the sort manager. **#69995**
* **Group Editor**: A **Cancel** button has been added to the Group Editor. **#74106**
* **Geo Json**: In preparation for the upcoming beta release of the **Geo-Json Plugin**, which allows the use of maps and geographic searches in fylr, we have made additions and adjustments to the frontend to support these features. **#66970**
* **Fylr Cross Server**: Adds a new parameter when loading EAS assets to avoid CORS errors in cross-server scenarios. **#74220**
* **Filter Pinning**: A new feature that allows pinning filters at the top of the panel so they are always shown first. The pinned filters are persisted per user. **#66145**
* **Hash Support**: Adds support for searching terms starting with `#` in fylr. If the substring after `#` is a number, the search will look for a global object ID. Otherwise, the text will be used as a normal fulltext query. Autocomplete suggestions are also supported in this mode. **#74317**
* **Search Input Settings**: Adds a new button to open the **Search Input Settings** panel. The first option is **"Include fulltext from files"**, which allows searching the file metadata's fulltext. **#74839**
* **Group Editor (Single Element)**: Adds support for enabling the group editor for a single element. **#74914**
* **New System Rights**: Adds new system rights for **location**, **backup**, and **plugin manager**. **#74492**
* **PDF Creator**: A new option has been added to include images in the PDF header. Additionally, the Letter format has been added to the list of page sizes.

### Improved

* **Expert Search**: System Fields are now placed inside a collapsible panel, making the **Expert Search** interface cleaner. **#74013**
* **Collapse Header**: The collapsed header state is now persisted in the user preferences. **#72760**
* **PDF View**: If an asset has a valid PDF version and its original version is not a PDF, the PDF version will be used to display the **PDF Viewer** in the asset detail browser. **#74610**
* **Sort Manager**: System fields are now placed in a collapsible panel in the **Sort Manager**, making the interface more organized. **#74626**
* **Localization Fallback**: If an error occurs while loading the instance and translations are not yet loaded, preloaded translations will now be used to display error messages.
* **Pool Selector**: Improved the behavior of the **pool selector** field. **#71604**, **#70786**
* **EAS Status Selector in Expert Search**: Now includes statuses sent by the server that are not in the known list of statuses, allowing new statuses to appear as they become available in the EAS search API. **#74163**
* **ChangeLogColumn**: Now follows the same visibility rules in **Sort Manager** as in **Expert Search**. The ChangeLog column will not be visible if the user does not have access to it. **#74664**
* **Pages Viewer**: Various improvements have been made to the **Paged Viewer** in fylr.
* **App Header**: An error style has been added when the image resource for the app logo is not available. **#74728**
* **Workflow Manager**: Column width and resizeability have been adjusted in the **Workflow** list-view. **#68701**
* **Video Upload**: Video assets will now show the original file for playback when its status is `sync`, allowing the video player to appear faster during the upload process. **#71209**
* **Metadata Mapping Poller**: The metadata poller will now check for `status='sync'` or `'done'` instead of checking if the asset hash is ready, improving the metadata mapping process. ee **#71209**
* **New Filters Layout**: The layout of the **Filter Panel** has been changed to use collapsible panels. Each filter can be collapsed, making the layout clearer and more concise. The collapse state is persisted per device. **#66145**
* **Nested Popover Editor**: Improved the layout of nested fields in the popover. If the user has configured a specific width for the fields, it will now be applied to nested fields as well. **#74571**
* **Image Loading in Standard Result View**: Improved the image loading process in the main search when scrolling. **#74060**
* **Shared/User Editor Templates**: The template manager has been significantly improved:
  * A bug has been fixed where the **Customize** button did not appear if the user only had **Shared Templates**.
  * **Shared Templates** have been enhanced to support **system groups**.
  * **User templates** and **shared templates** now store their creation date. This date is displayed in the template's **tooltip** in the editor.
  * **Shared templates** now store the **user ID** of the user who creates the **shared template**.
  * **Root users** can now create/manage **templates** in all groups, not just the groups they belong to.
  * A new **"Comment"** field has been added to **templates**, allowing administrators to add useful notes for easier identification of **templates**. These comments will be shown in the **Template Manager** and as a **tooltip** in the buttons to apply **templates** in the editor.
  * The **Template Manager** has received the following improvements:
  * The list of **templates** now displays data in **read-only** mode, preventing accidental edits.
  * A new button has been added to safely edit a **template**'s information.
  * It is now possible to apply a **template** directly from the **Template Manager** via a new button.
  * Additional information has been included in the **templates** table to facilitate management.
  * A new button allows users to easily view the content of a **template** in a **popover**.
  * The new **"Comment"** field has been added to the **template creation popup**.
  * Now it is possible to use the name of an already created template for a new one. The frontend will ask the user if the template should be overwritten with the new data.

### Fixed

* **Sharing Records**: Fixed an error when checking user permissions to share a record. **#74341**
* **Date Ranges**: Fixed the date range validation checks. Each field (`from` and `to`) is now correctly validated, and error messages accurately indicate which field is invalid. See **#73960**
* **Main Search**: Fixed a bug where the "no results" label was shown incorrectly when changing the result view mode. **#74300**
* **Default Tags**: Fixed an issue that occurred when using **default tags** in the editor's template object if the user lacked permissions to use those tags.
* **Export Manager Templates**: Fixed a bug where new export templates were not saved correctly in the **Export Manager**. **#73346**
* **Nested Table Check Values**: Fixed a bug triggered by **dateTimes checkValue** inside a nested table. DateTimes with ranges could produce multiple errors for `from` and `to`; nested tables were not prepared for that. See **#73960**
* **Date Columns**: Added the correct timestamp format in the validation hint for date columns, fixing a previous inconsistency. **#73960**
* **Date Facets**: Fixed the order of the **Date Filters** when using the "Sort by count" and "Sort by term" modes.
* **Facet Request**: Removed unsupported `limit` and `sort` properties from facet aggregations based on bucket aggregations, preventing request errors with the fylr server. **#72687**
* **Linked Object Field**: Fixed an issue with the mask used in the linked object field within editor mode. Previously, the `best_mask` was used instead of the specifically configured `linkmask`. **#74718**
* **Mask Selection in Pools**: Fixed an error that prevented masks from being moved correctly in the **Pool** configuration. **#70781**
* **Search**: Fixed several errors when using wildcards in searches.
* **Logo**: Fixed an error when using **EPS** or **SVG** formats for the fylr logo.
* **Autocomplete Popup**: Fixed the focus behavior when pressing the up arrow key on the first element in the autocomplete list. The input field now regains focus correctly. **#74317**
* **Tag Rendering**: Fixed a critical error caused when a tag did not have a `displayType` property set. **#74897**
* **Reverse Linked Tables Listener**: Fixed an issue where the poll listener in reverse-linked fields was not cleaned up when the editor was reloaded, causing false positives for external changes. **#74907**
* **File Worker**: Fixed multiple errors in the **File Worker** panel within the base config. Also includes layout enhancements and improvements to the version editor. **#74609**

## Plugins

### fylr-plugin-fjc

The plugin [fjc](https://github.com/programmfabrik/fylr-plugin-fjc) has been renamed from `fylr-plugin-ejc`. This better reflects its purpose which is to support the [Fylr Java Classes](https://www.attention-solutions.dk/). A database migration step is included in the update to automatically rename all base config from `ejc` to `fjc`. All FJC-based applications must be upgraded to at least [25.1.5](https://attention.dk/docs/att/doku.php?id=releases). \[a6f86875]


# 2024

* [Release v6.16.0 (2024-12-12)](/releases/2024/v6.16.0)
* [Release v6.15.0 (2024-11-27)](/releases/2024/v6.15.0)
* [Release v6.14.2 (2024-11-05)](/releases/2024/v6.14.2)
* [Release v6.14.1 (2024-11-01)](/releases/2024/v6.14.1)
* [Release v6.14.0 (2024-10-31)](/releases/2024/v6.14.0)
* [Release v6.13.3 (2024-10-16)](/releases/2024/v6.13.3)
* [Release v6.13.2 (2024-10-10)](/releases/2024/v6.13.2)
* [Release v6.13.1 (2024-10-02)](/releases/2024/v6.13.1)
* [Release v6.13.0 (2024-09-25)](/releases/2024/v6.13.0)
* [Release v6.12.2 (2024-09-18)](/releases/2024/v6.12.2)
* [Release v6.12.1 (2024-08-01)](/releases/2024/v6.12.1)
* [Release v6.12.0 (2024-07-25)](/releases/2024/v6.12.0)
* [Release v6.11.5 (2024-07-09)](/releases/2024/v6.11.5)
* [Release v6.11.4 (2024-07-05)](/releases/2024/v6.11.4)
* [Release v6.11.3 (2024-07-03)](/releases/2024/v6.11.3)
* [Release v6.11.2 (2024-06-21)](/releases/2024/v6.11.2)
* [Release v6.11.1 (2024-06-14)](/releases/2024/v6.11.1)
* [Release v6.11.0 (2024-06-05)](/releases/2024/v6.11.0)
* [Release v6.10.2 (2024-05-15)](/releases/2024/v6.10.2)
* [Release v6.10.1 (2024-05-08)](/releases/2024/v6.10.1)
* [Release v6.10.0 (2024-04-30)](/releases/2024/v6.10.0)
* [Release v6.9.3 (2024-03-19)](/releases/2024/v6.9.3)
* [Release v6.9.2 (2024-03-15)](/releases/2024/v6.9.2)
* [Release v6.9.1 (2024-03-06)](/releases/2024/v6.9.1)
* [Release v6.9.0 (2024-02-28)](/releases/2024/v6.9.0)
* [Release v6.8.5 (2024-02-02)](/releases/2024/v6.8.5)
* [Release v6.8.4 (2024-02-01)](/releases/2024/v6.8.4)
* [Release v6.8.3 (2024-01-12)](/releases/2024/v6.8.3)
* [Release v6.8.2 (2024-01-05)](/releases/2024/v6.8.2)


# Release v6.16.0 (2024-12-12)

Published 2024-12-12 15:09:06Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.16.0/fylr_checksums.txt)
* [fylr\_v6.16.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.16.0/fylr_v6.16.0_darwin_amd64.tar.gz)
* [fylr\_v6.16.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.16.0/fylr_v6.16.0_darwin_arm64.tar.gz)
* [fylr\_v6.16.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.16.0/fylr_v6.16.0_linux_amd64.tar.gz)
* [fylr\_v6.16.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.16.0/fylr_v6.16.0_windows_amd64.zip)

## Server

### New

* **File previews**: Support `avif` image format. \[663b8a1be]

### Improved

* **fylr backup**: Refactored `--continue`. Get rid of the progress.json, include full state in `manifest.json`. Removed `--size` parameter to simplify export. Payloads are added to the manifest only if they have been fully written to disk. `--continue` is checking the existing payload and gets the state from the m. Also add total runtime information to manifest containing accumulated timings for each backup run (if `--continue` is used). \[cfd8fc83]
* **/inspect/files**: Lift `leave_on_remote` requirement. The `copy_mode_produce` action would only remote children which have `leave_on_remote` set to `true`, but on the other hand run on originals without that flag set. This led to unpredictable behavior while using that action. \[ba3505c6]
* **/inspect/files**: Improved actions & filters. The new action `produce_versions` replaces `produce_local` and allows to re-produce all version for an original. \[ffa7dc17]
* **/inspect/objects**: Added sort by count. \[c3b9ed42]
* **Index**: Speeder indexing with some added caching. \[c3209fcd]
* **System rights**: New `link_sharing` right replaces `deep_link_sharing`. Existing rights are migrated to "link\_sharing=asset\_deep\_links". The new `link_sharing=share_menu` can be used to show the share menu but without deep links. Also in this patch, simplify saved data for system rights. Store only the set rights. \[3144646a]
* **Startup**: Improved **backend registration**. If fylr restarts really quickly without proper shutdown, the backend registration would notice 2 running backends which in that case would be wrong. Fix this by recognizing this case and waiting 20 seconds before deleting stale backend (in which case we delete the killed fylr backend).
* **Open API Documentation**: Improved documentation system, endpoint `/eas` is documented. \[46ffabe8]
* **Janitor**: If files get deleted, add filename to the event info. \[46ffabe8]
* **/api/eas**: Improved compilation of `original_filename` by detecting Windows style filenames. \[46ffabe8]
* **POST /api/put|rput**: Allow manual versions only for originals where `produce_versions` is `false`. This API change seems sensible. Before we would allow manual versions for originals which have `produce_versions` set to `true`. \[46ffabe8]
* **/inspect/migration**: Various improvements to the output of the migrations. \[3fcee3ca]
* **POST /api/user**: When un-archiving a user, set `last_seen_at` to the current time. This prevents the janitor from archiving a user right after the un-archive, only because that user had not logged in since. \[ff761a5d]
* **File produce**: Support full exec server replacements for plugins. If a file production is done by a plugin, replace `%info.json%` and other standard replacement fields. \[d8dfdea4]

### Fixed

* **fylr restore**: Do not upload versions if `--upload-versions` is not set. The fixed bug caused the restore process to upload version even if the cmd flag was unset. \[d88fa1b1]
* **POST /api/db**: Fixed updates for `geo_json` columns. \[394a1ed2]
* **/inspect/files**: Fixed column `Remote Url` output. This was always shown as set. \[46ffabe8]
* **POST /api/schema**: Allows POST `api/schema` for system right `system.datamodel` level commit (was only allowed for development before). \[c8601de]
* **Locking**: Fixed a bug which resulted in a lot of useless locking and rows in the `lock` table. This only happened on older installations. \[6aa5342d]
* **/api/export**: Write metadata only to supported files. This fixes downloading of `PPTX` files with a metadata profile (which is unsupported). \[e749762b]

## Frontend

### New

* **Workflows Manager**: Added support for "Unknown Actions." If a workflow action isn't supported by the frontend, it's now shown as "Unknown action" while preserving its underlying data. Previously, unsupported actions would result in data loss.
* **Change Owner Action**: Added support for the "Change Owner" action in workflow actions.
* **Rights**: Introduced support for two new configurable permissions: `link_sharing=share_menu` and `linksharing=asset_deep_links`.
* **Nested Subsearches**: Added frontend support for nested subsearches within the expert search, allowing multiple subsearches in a nested field.

### Improved

* **ListViewEditTree**: Enhanced ListView functionality by allowing the header to be locked (preventing resizing) directly from the code.
* **Detail-Sidebar / History Browser**: Adjusted overflow and minimum widths for draggable containers to prevent detail panels from scrolling out of view and becoming inaccessible.
* **Collection Manager**: Improved how results are displayed when filtering collections in the quick access panels. The hierarchy is now displayed up to the searched objects, and when a filtered node is closed and reopened, the full list of children is loaded instead of only the filtered results.
* **DateTime**: Improved rendering of AD dates and removed leading zeros from negative years if `avoid_bc_convertion` is configured.

### Fixed

* **Virtual Top Level**: Fixed an issue preventing the last record from appearing in the search list when the virtual top level was visible in the Search popover.
* **Tag Manager**: Corrected CSS issues in the Tag Manager.
* **Scheduler Editor**: Addressed a bug causing fields not to display correctly if the saved data resulted from an ez5 migration.
* **Workflows Manager**: Fixed column layout issues in the workflow manager.
* **Subsearches**: Fixed a bug where removing one subsearch from multiple nested subsearches in the expert search would remove them all.
* **Event Manager**: Fixed an issue with the button that displays an asset in events referencing assets.


# Release v6.15.0 (2024-11-27)

Published 2024-11-27 14:32:56Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.15.0/fylr_checksums.txt)
* [fylr\_v6.15.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.15.0/fylr_v6.15.0_darwin_amd64.tar.gz)
* [fylr\_v6.15.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.15.0/fylr_v6.15.0_darwin_arm64.tar.gz)
* [fylr\_v6.15.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.15.0/fylr_v6.15.0_linux_amd64.tar.gz)
* [fylr\_v6.15.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.15.0/fylr_v6.15.0_windows_amd64.zip)

## Server

### New

* **/api/message**: Added new `show_always`. With this setting, the message is shown every time the user logs in. \[4aa7860f]
* **/api/transition**: New action `change_owner`. This patch adds a new action "change\_owner" to our transitions. With the new action, the owner of an object can be set during a workflow. \[e1c5a3ef]

### Improved

* **License management**: Allow `buy` versions to use allowed binaries indefinitely (before this was limited to one year). \[17b2a684]
* **fylr backup / restore**: Code improvements and minor fixes. \[51944243]
* **Date types**: Enforce range limit for dates (from `-292,277,022,399` to `292,277,022,399`). Fixed `from_to` calculation for date ranges for big years. If the integer representation is close to the `int64` limit, the calculation would output the wrong value because the value was cast into float64 before the division. \[a370c593] \[95055876]
* **Number types**: Enforce range limit for `integer.2` and `number` (from `-9,007,199,254,740,99` to `9,007,199,254,740,99`). \[96117de0]
* **/inspect/objects**: Added file counts and sums. Support application/json request. More sorting options. \[ba265852] \[8c46a4bc] \[e8d0b994]
* **/api/search\[/parse]**: Support unlimited sub searches. Before this was limited to 100 (for **/api/search/parse**) and settable to a maximum of 1000 for the regular search. Now, a `limit: -1` can disable the limit for sub searches (default for **/api/search/parse**). Also, allow `objecttypes`, `offset`, `limit`, `format` set in **/api/search/parse**. \[d48bb974]
* **/api/db**: Improved the behavior of group mode `match_merge`. When matching & merging sub nested records, keep old records in sub nested, overwrite only the delivered ones. This patch also improves the check if a nested match & merge actually changed data or not. \[d4151f33]
* **fylr restore**: Improved filename cleaning before file upload. \[44c4a399]

### Fixed

* **Standard info**: Rendering of standard file was fixed for the case that not setting was set, except the standard info include. This resulted in files previews not showing up in the search result thumbnails and detail view. \[744c2ae8]
* **Janitor**: Event cleaning janitor would throws an SQL error if no plugins where installed in **fylr**. \[694cf761]
* **Custom Data Type Updater**: Fixed re-index after data update. The patch makes sure that updater changed custom data re-indexed all objects where that data is used. The batch size is now used as outer loop, not the inner loop. So now, the updater is called with actions `start_update`, `update`, `end_update` for every batch. Also, select stale updates. If an update was requested more than a day ago, the updater ignores this and tries again. \[fee5a1ba] \[a696b27b] \[f160f571]
* **/api/message**: Fixed an error which showed when `webfrontend_props` were not or send with `null`. Also, fixed timezone parsing in `start_time` and `end_time`. Also, unsent values are preserved. \[f3d01d9f] \[7bc7d72]
* **Overlay FS**: Fixed reading modification times if the file comes from disk and not from the **fylr** binary. \[65ea86f0]
* **/api/search**: Fixed wildcard searches of type `text` for base types. \[29820903]
* **Export**: Fixed file export for the case when `fylr.debug.logTimings: true` was set. Also export boolean `false` values in `XML` and `CSV`. Add `name` to files in XML export. \[96117de0] \[95055876]
* **/api/events**: Fixed export to `CSV` with more than 100k rows. Also fix searching for big numbers. \[d6911675] \[19ed6031]
* **fylr backup**: Fixed storing state of `--continue`. Before `--continue` would start over from the first stored object type and not from the last object type stored. Also, fixed storing of collection objects. \[b9ca90c4] \[ace66549]
* **/api/search/parse**: Set object types for sub searches (`==?`). When executing a sub search this patch limits the object types to the ones which are needed to match the field values of the sub search. This prevents the search from false results, returned by too many search object types inside the sub search. \[937d2b49]
* **/api/mask**: Fixed saving for newly created link masks. If a new mask is created and another field is using that as a link mask, the previous code would fail saving it due to database FK violations. This patch reorders the inserts and updates of the data in the way that masks are created and updated before the fields are created and update. \[ba30b91d]
* **/api/schema**: Fixed new nested fields order. When creating new columns in a nested new fields are created in the sub mask. This patch fixes the position of these fields by setting the db column `position` correctly ensuring persistence of the order of the nested fields. \[18a10e8c]

## Frontend

### New

* **Reverse Linked Table**: Added a listener for changes to reverse nested objects within the editor. Now, if a reverse nested object is modified outside the editor, the user is alerted, and only the specific field is reloaded, preserving the unsaved data of other fields in the editor.
* **Subsearch Support for Linked Objects**: Added support for complex searches using the new "subsearch" functionality in Fylr. This allows expert searches on linked object fields to include complex queries rather than specific elements. Example: "Find all records whose linked field A has objects starting with 'b'." The search popover now includes a "Select All" option to use the current search as a subsearch.
* **Workflows Manager**: Added frontend support for the new action, "Change Owner."
* **Date Fields**: Added a new option in date field masks called "Avoid BC Conversion." When enabled, negative dates will not convert to BC format. For instance, entering `-1000` will display as `-1000` instead of converting.

### Improved

* **About Fylr Root App**: Enhanced the "About Fylr" popup with links to repositories in the Full Version information section.
* **User Group Selector**: Increased the number of objects requested for displaying groups and users in the UserGroupSelector. Previously set to 100, this limit was too low for large instances.
* **Detail and Editor Asset Browser**: The asset browser now includes assets from hidden fields if they are returned in the server's standard info. Previously, only visible field assets were shown.
* **Collection Manager**: Reactivated event listeners for visible collections in the Collection Manager. Now, if a collection is edited in another session, the frontend automatically updates the displayed collection information.
* **Standard View**: Added the HTML title attribute to `standard_1` and `standard_2`, enabling tooltips with the full value of these fields.
* **Linked Objects**: Enhanced linked object fields in the editor to refresh automatically when another field referencing the same object updates. This ensures consistent data display across fields referencing the same object.
* **Workflows Manager**: Added a fallback for unimplemented actions in the frontend. These actions now persist correctly.
* **Sorting in Search**: Improved the usability of the sorting popover. The header is now fixed while scrolling through a long sorting list.

### Fixed

* **CSV Importer**:
  * Added support for matching target field names for fields inside linked objects using `#` or `.` to indicate the destination field.
  * Fixed functionality for search and match with localized fields. Previously, the importer failed when using localized fields as search criteria.
* **Mask Manager**: Resolved errors when adding a panel mask splitter inside a block mask splitter.
* **Nested Table Popup**: Fixed a bug with uploading assets to the EAS column inside a nested popup in a newly added row.
* **User Manager**:
  * Fixed errors in user searches when using wildcards. Added support for filtering users by email.
  * Resolved an issue where deactivating all visible columns caused the user list to fail to render and broke user search functionality.
* **MaskSplitters**: Corrected rendering issues with mask splitters.
* **Date Range Field**: Fixed a rendering error in the expert search for date range fields.
* **Mask Editor**: Ensured visibility of default custom settings for custom data types without `manifest.yml` configurations.
* **User Templates**: Fixed an issue where changes in editor user templates were not saved correctly.
* **Collection Uploads**: Fixed a bug where the collection counter was not updated when images were uploaded.
* **EAS Importer**: Fixed and improved the import of linked objects created through metadata imports. This affects both CSV and JSON importers.
* **Decimal Fields**: Corrected range validation hints in decimal fields.
* **Nested Popover**: Fixed issues with fields that had validations when rendered in the new nested popup mode.
* **Admin Messages**: Fixed the calendar in date-time fields to use the frontend language.
* **Events Manager**: Corrected an issue where CSV files downloaded from the Events Manager were not renamed correctly.
* **Match and Merge**: Temporarily removed the new Match and Merge option for nested fields in the group editor. This functionality has been hidden in debug mode until further adjustments are made.
* **Frontend Developer Menu**: Fixed the developer menu to prevent unnecessary frontend reloads when settings remain unchanged.
* **Collection Compare View**: Corrected the color scheme when selecting a record in the compare view.
* **Nested Fields**: Fixed several layout issues, including alignment of links or buttons in nested field groups and spacing between nested fields.
* **Asset Placeholder**: Fixed an issue where file extensions were cut off in the asset placeholder.


# Release v6.14.2 (2024-11-05)

Published 2024-11-05 14:59:23Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.2/fylr_checksums.txt)
* [fylr\_v6.14.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.2/fylr_v6.14.2_darwin_amd64.tar.gz)
* [fylr\_v6.14.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.2/fylr_v6.14.2_darwin_arm64.tar.gz)
* [fylr\_v6.14.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.2/fylr_v6.14.2_linux_amd64.tar.gz)
* [fylr\_v6.14.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.2/fylr_v6.14.2_windows_amd64.zip)

## Server

### Fixed

* **Static files**: Fixed static file delivery on Windows. \[9b63ab11] \[c572e003]
* **Overlay FS**: When using overlay FS correct modification time to use the disk based file. \[f4bf732b]
* **POST /api/message**: Allow to not send or send `null` for `webfrontend_props`. \[b940245e]
* **Custom Data Type Updater**: Make sure to re-index objects after data of custom data has changed. \[5fc7e802]
* **Janitor**: Avoid SQL error when running the event cleaning janitor with no plugins installed. \[53e24f28]

## Frontend

### Fixed

* Editor User Templates: Fixed a bug where user templates in editor were not stored correctly.


# Release v6.14.1 (2024-11-01)

Published 2024-11-01 13:38:09Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.1/fylr_checksums.txt)
* [fylr\_v6.14.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.1/fylr_v6.14.1_darwin_amd64.tar.gz)
* [fylr\_v6.14.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.1/fylr_v6.14.1_darwin_arm64.tar.gz)
* [fylr\_v6.14.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.1/fylr_v6.14.1_linux_amd64.tar.gz)
* [fylr\_v6.14.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.1/fylr_v6.14.1_windows_amd64.zip)

## Server

### Improved

* **Static files caching**: Delivering files from the embedded fylr resources didn't allow the browser to cache the file locally. With this fix, the files will be cached until the next server restart. This improves loading times of the frontend after the first time. \[aebbf298]

## Frontend

### Fixed

* **Blurry images**: On some browsers like Safari and Firefox the search result was not immediately loading preview images, showing only a blurry picture. This also affected the fylr logo.


# Release v6.14.0 (2024-10-31)

Published 2024-10-31 16:07:18Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.0/fylr_checksums.txt)
* [fylr\_v6.14.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.0/fylr_v6.14.0_darwin_amd64.tar.gz)
* [fylr\_v6.14.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.0/fylr_v6.14.0_darwin_arm64.tar.gz)
* [fylr\_v6.14.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.0/fylr_v6.14.0_linux_amd64.tar.gz)
* [fylr\_v6.14.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.14.0/fylr_v6.14.0_windows_amd64.zip)

## Server

### New

* **Plugin Custom Mapping**: Plugins can publish custom mapping to be used in fylr's metadata mapping (`/api/eas`, `/api/xmlmapping`, `/api/collection`). Plugins can dynamically add source fields to import profiles retrieved by `/api/xmlmapping`. Recipes got a `displayname` field. Make sure to only execute each metadata recipe once. \[bf2e8d6d] \[f71f0ade] \[9af237b26]
* **Metadata Request Only**: Metadata mapping can be performed on request only. Before all metadata mapping was performed upon file upload and couldn't be postponed to later processing. This approach proved unsuitable for AI produced metadata which usually takes a few seconds to process. With this new flag `metadata_request_only`, produce configs can be set to produce particular metadata only on request.
* **JSON in import mappings**: Metadata mapping can use [JSON based](https://github.com/tidwall/gjson) selectors to map metadata to objects. Before we only supported Xpath for that.
* **ChatGPT Plugin**: A new **ChatGPT plugin** is available as Beta for interested parties. Please contact <support@programmfabrik.de> for more information. The plugin allows to create custom ChatGPT questions and map that dynamically to your metadata.
* **/inspect/files**: A new action `check filesum` allows to check the checksum of migrated files. We use the file reference to perform this check. easydb5 and fylr sources are supported of **fylr restore** was used. The action calculates the checksum of the local stored copy of the file with the checksum of the file in the source system. \[621f7d8b]
* **Base config**: New setting to show "forgot password" on the login page. Existing instances are migrated to set this to on (like it was before). \[99eceedc]
* **/api/export**: New parameter `include_parents`: With this full parents are rendered into `JSON` and `XML` outputs. \[f1c4b308]
* **/api/export|db**: Render `_level` in objects if path api has no read but the object type is a hierarchy. \[f1c4b308]

### Improved

* **fylr backup / restore**: Support for collection pin code and other minor improvements. \[86a742e9] \[4a7cd6c5]
* **/inspect/files**: Show metadata JSON on the file detail page. Also, allow searching for a specific file id by prefixing the search with `id:` \[f71f0ade] \[5ae60b2c]
* **/inspect/migration**: Add support for `--insecure` parameter. \[b9372715]
* **Web server**: The **fylr** web server can be configured to also serve request to the `/api` endpoints. Before this was routed through a reverse proxy configuration from the web server to the internal api server. The config directive `fylr.services.webapp.reverseProxy.api` sets the address of the internal api server. It can now be set to `bind` letting the web server serve `/api` directly. This is in addition to the internal api server which is still needed to answer requests from the exec server. This change result in a 7-10% performance in some tests we did. It also fixes issues we saw with the reverse proxy on Windows not answering all requests when accessed with many parallel requests. In such cases, the web server would answer with http status `502 Bad Gateway`. The setting `bind` is the new default in `fylr.default.yml`. \[bee8a477] \[7421e4d6]
* **Database**: Support for [**Postgres 17**](https://www.postgresql.org/docs/current/release-17.html). \[09387925]
* **File renditions**: Set default JPEG quality to 80 (was 92). The lower quality results in much smaller files and is now the same as it was in easydb 5 \[9de7ee78]
* **Startup**: Improved logging at startup, wait for servers to actually bind to the TCP port. Output welcome message even if the log level is above `info`. \[58ff922c] \[f6b07794]
* **/api/config**: Improved unique check for xslt prefixes. Skips `""`. \[3cd3132c] \[f2923a97]
* **OAUTH password flow**: Support for `ldap` user logins. \[d9d17d6a]
* **Lookup**: Lookups now support multiple language selection. So now, you can select data with multiple languages set. This can be used to exactly find a linked object during metadata mapping. The LoadContext got a new field `SkipFoundTooMany`. This tells the lookup code to pick the first match if there is more than one. This is the new behavior during metadata mapping. So, if a value is matched multiple times, the first one (sorted by `_system_object_id` ascending) is used without an error message. \[71f0adeb]
* **/api/xmlmapping**: New attribute for fields: `name`. The `name` is used to update definitions from more curren t versions of a profile. \[f71f0ade]
* **/inspect/customdata**: When manually running the Custom Data Type Updater, only run records from the current page, acknowledging limit and offset. This helps when debugging long running updates. \[a13cc517]
* **/api/suggest**: Use `tokens_mode` when searching linked objects with `linked_objecttypes`. Before this, the suggest search was not adding any wildcards to the underlying linked object search making it not very useful. \[84e8c2f94]
* **S3 storage**: Added a maximum number of retries of 10 using the new [AWS-SDK (v2)](https://github.com/aws/aws-sdk-go-v2) which provides an improved retry strategy. \[8d25a764]
* **Base config**: Allow `jpeg` (and not just `jpg`) for logo and background uploads. \[2ccb7763]
* **Custom Data Type Updater**: Support batch sizes greater than 100 (**new limit is 1000**). Also, generation of custom data identifiers is now more predictable as new entries are sorted by UUID. \[741374fb]

### Fixed

* **/api/collection**: Do not store `_count` when received via POST. The API would store the `_count` information as received from the client possibly not reflecting the actual object count of the collection. This led to wrong count values after **fylr restore** where the `_count` was double after import. \[e1316d16]
* **Locking**: Fixed subtle bugs in our locking code which could lead to out-of-sync indexed documents. \[7421e4d6]
* **Hotfolder**: When importing via hotfolder we now import `JPG` files *after* a file with the same name and different extension was imported. By doing that we have a improved way of handling `RAW` files which are imported alongside with a `JPG` file better. Also in this patch, when merging nested entries which do not contain a file id, we now append the nested entry found to the existing nested. With this, mapping the filetypes or other info from a `RAW` + `JPG` import into one nested is supported. \[34063ae1]
* **Startup**: Plugin dependency fix at loading time has been fixed. This patch skips disabled plugins when checking their dependencies avoiding a wrong warning. \[9c1b5e73]
* **/api/db**: Fixed updating **custom data type columns** in group mode (if nothing else was changed). This broke in `6.13.0` when we introduced skipping of unchanged objects in group mode. \[fed3c9a9]
* **/api/export**: When exporting an CSV where no requested field provided data for a CSV column, the export would fail. Now fylr produces an empty CSV with a column instead. \[5d58577a]

## Frontend

### New

* **Nested Tables Popup Editor**: Added a new popup editor for nested tables, allowing configuration to display a set of summary fields and an edit button. Pressing the edit button opens a popover with all editable fields for the nested row. The configuration of this new mode and the summary fields is managed via custom mask settings. This new way of visualizing nested tables allows for a much more compact organization in objects with very complex nested tables.
* **Polyhierarchies**: Implemented multi-parent field support for group editor operations, starting with the "replace all" feature, with more options ready for future updates.
* **Metadata Mapping**: Added compatibility for field names as unique identifiers without `_id` while preserving backward compatibility.
* **Export Manager**: Enabled parent information inclusion in XML exports, providing extended options for data structure visibility.
* **Search Replace**: Introduced a new DOM layout for group editor "search and replace" mode in nested fields, including UI adjustments to distinguish replace icons from editing options.

### Improved

* **Produce Config**: Introduced display name support for metadata recipes. Now, recipes display even without extensions, hide parameters if none exist, and include a checkbox for `metadata_request_only`.
* **Asset Browser**: Enhanced image handling with validation checks for image formats to prevent unsupported formats like EPS from being shown as broken images in the asset browser.
* **User Search**: Optimized search to support wildcard-only queries, resolving a previous error that prevented this functionality.
* **Root Menu**: Ensured consistent rendering on the left edge of the app window, improving accessibility, especially in low-network conditions.
* **Nested Popup Fields**: Implemented an internal property to manage and display summary fields only when necessary, preventing empty fields from being shown helping custom mask splitters implementation.
* **Fylr EAS Info**: Updated to show EAS ID as a link, allowing root users quick access to the inspect files endpoint.

### Fixed

* **Custom mask splitter detail linked**: The rendering of object references has been improved and fixed. An issue has been resolved where not all linked elements were being rendered.
* **Produce Config**: Resolved issue with metadata recipes displaying under incorrect classes, such as `pdf2text` on audio files. Extensions for metadata recipes are now verified and applied correctly.
* **Nested Table Validation**: Addressed issues with server validation errors in nested tables, including row-specific validations in nested popups to prevent excessive validation.
* **Asset Browser Info**: Corrected undefined text issues in the info panel when encountering failed asset versions, ensuring accurate display of version lists.
* **Editor Modal New**: Fixed mask verification in the user's preferences, ensuring correct selection of the saved mask and default fallback options.
* **Pool Manager**: Resolved memory leak issues within the Pool Manager by cleaning up EventPoller references, preventing unexpected behaviors during pool changes.
* **Nested Popup Editor**: Fixed restore behavior for cancelled nested popups to prevent residual data from impacting subsequent popup usage.
* **Pdf Creator**: A bug has been fixed where attempting to render a PDF with many images would result in only the first images being rendered.


# Release v6.13.3 (2024-10-16)

Published 2024-10-16 13:16:29Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.3/fylr_checksums.txt)
* [fylr\_v6.13.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.3/fylr_v6.13.3_darwin_amd64.tar.gz)
* [fylr\_v6.13.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.3/fylr_v6.13.3_darwin_arm64.tar.gz)
* [fylr\_v6.13.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.3/fylr_v6.13.3_linux_amd64.tar.gz)
* [fylr\_v6.13.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.3/fylr_v6.13.3_windows_amd64.zip)

## Server

### New

* **/inspect/files**: Added filter by `size`. \[1f70d8410]

### Improved

* **Hotfolder**: Prefer `JPEG` over other formats for the same filename. This allows to use recognize version for RAW files and make sure that the JPEG which is uploaded alongside with it gets imported as second. Also, improved merging of nested information in case another version is added. \[31397397c]

### Fixed

* **/api/eas/iiif**: Fixed routes leading to `info.json`. \[33bd52403] \[e706e0c7f]

## Frontend

### Fixed

* **Date Picker** : An error in the date picker that displayed the month selector in the wrong language has been fixed.


# Release v6.13.2 (2024-10-10)

Published 2024-10-10 14:38:10Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.2/fylr_checksums.txt)
* [fylr\_v6.13.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.2/fylr_v6.13.2_darwin_amd64.tar.gz)
* [fylr\_v6.13.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.2/fylr_v6.13.2_darwin_arm64.tar.gz)
* [fylr\_v6.13.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.2/fylr_v6.13.2_linux_amd64.tar.gz)
* [fylr\_v6.13.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.2/fylr_v6.13.2_windows_amd64.zip)

## Server

### New

* **fylr backup & restore**: New `--insecure` parameter skips TLS checks for https connections. \[2ebd092d]

### Improved

* **/api/suggest**: Add `system_object_id` collection to response for `fields_suggest`. \[36b8213a]

### Fixed

* **/api/suggest**: Fixed nested case for `fields_suggest`. Improved error handling for unsupported fields. Also, fixed cases where language support yielded incorrect results. \[36b8213a] \[5d9c4b5d] \[6e4a4014]
* **/api/export|eas|objects**: Fixed exports of files with special characters in file names, like `,`. \[d0be4e19] \[1f05233c]
* **/api/db**: Fixed and improved error handling for unsupported `_tags` and `_acl` properties. \[81cbeea8]

## Frontend

### Improved

* **Editor Popover**: Now, when an editor popover is opened, we focus on the first field but do not scroll the popover to it.
* **Tags**: Adjusted tag text color when the custom tag background color is too light.
* **About Root App**: Improved the 'About Fylr' panel to include a direct link to GitHub commits for the current version.
* **Session Prefs**: Now, user preferences will only be saved if there are any changes. If not, the request to the user endpoint will not be performed.

### Fixed

* **Mask Editor**: Fixed the position of the column hint in the mask editor for output columns.
* **Group Editor**: Fixed the nesting of single fields in bulk match and merge mode.
* **CSV Importer**: Fixed a bug that caused an infinite loop when updating objects, where no changes were made by the server because the data was identical.
* **EAS Rendering**: Fixed an issue where the application attempted to render an image that was either incompatible with the browser or corrupted, without displaying the specific placeholder for such cases.


# Release v6.13.1 (2024-10-02)

Published 2024-10-02 11:22:34Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.1/fylr_checksums.txt)
* [fylr\_v6.13.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.1/fylr_v6.13.1_darwin_amd64.tar.gz)
* [fylr\_v6.13.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.1/fylr_v6.13.1_darwin_arm64.tar.gz)
* [fylr\_v6.13.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.1/fylr_v6.13.1_linux_amd64.tar.gz)
* [fylr\_v6.13.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.1/fylr_v6.13.1_windows_amd64.zip)

## Server

### Improved

* **/api/suggest**: Add `count` to `suggestion.fields` response to reflect the number of matched objects. \[3b78156bd]

### Fixed

* **/api/eas**: This release brings improved **IIIF** and **Zoom** URLs which include the object's UUID to support rights management in situations where the file is inside a reverse nested. Affected instances need a re-index. This change adds new endpoints to `/api/eas/zoom` and `/api/eas/iiif` which can now include a path segment `obj_uuid` followed by the UUID of the object holding the file. This fixed deep link URLs for **IIIF**. \[8fdee074a]
* **/api/search**: Omit virtual root entry in aggregations of type `linked_object`. With this change poly-hierarchical objects inside the virtual root will not generate a facet for the virtual root any more. \[c6e6c6d69]
* **/api/suggest**: Fix filtering out tokens which do not match the current field list, if no `pool_ids` are given. \[3b78156bd]
* **/api/db**: Fixed `match_merge` in the matching part for localized columns and sub nested columns. Now we only match the left side of the match, so localized fields only need to match one term in one language. For sub nested, only the delivered columns need to match and not all. \[2696f6d4d]

## Frontend

### New

* **Nested Match and Replace**: We have introduced a new mode for editing nested fields in the group editor. This new mode is called “Match and replace” and allows substitutions in specific nested elements. This mode adds two columns: one to search for the nested element to be modified and another to enter the data to be replaced in the nested element.

### Improved

* **AND/OR Switch**: The AND/OR switch will no longer be displayed unless these modes are actually usable. This prevents the switch from appearing in filters where it did not make sense to have it.
* **CSS**: General CSS corrections have been made throughout the application.

### Fixed

* **Root Element for Poly Hierarchies**: Fixed display issues of the virtual root element in poly hierarchies.
* **Filter Panel**: Fixed a bug where the “Show more” button was not displayed correctly in hierarchical filters.
* **Nested Table**: Fixed a bug where complex nested table structures were rendered without field names.


# Release v6.13.0 (2024-09-25)

Published 2024-09-25 14:10:48Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.0/fylr_checksums.txt)
* [fylr\_v6.13.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.0/fylr_v6.13.0_darwin_amd64.tar.gz)
* [fylr\_v6.13.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.0/fylr_v6.13.0_darwin_arm64.tar.gz)
* [fylr\_v6.13.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.0/fylr_v6.13.0_linux_amd64.tar.gz)
* [fylr\_v6.13.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.13.0/fylr_v6.13.0_windows_amd64.zip)

## Server

### Important

* **Re-Index**: This release brings a forced re-index. Plan enough time for this update, as the re-index is blocking. Only `/inspect/` is available while the re-index is running.
* **UNIQUE index for user `login` and `email`**. In the unlikely case that you have duplicate entries, fylr will de-duplicate such existing email or login entries in table `user`, to make sure that fylr does start after the update. A de-duplicated value will have the duplicate row number added. E.g. if your database contains two users, one with login *mr.tom* and the other with *Mr.tom*, the latter will be renamed to *Mr.tom-dup-2*. In case of a duplicate email like *<mr.tom@gmail.com>* and *<Mr.tom@gmail.com>*, the email will be renamed to *Mr.tom\@gmail.com-dup-2*.

### New

* **/api/search**: Support numbers in **Fulltext** and **Terms**. Numbers can now be included in the **Fulltext** index and are also listed in our **Terms**. This requires a re-index. \[8638f597]
* **/api/db**: Add `group_mode` *match\_merge*. *match\_merge* requires a `:match` and `:merge` record to be sent. The matching record will be searched for in existing nested and the merge record's data will overwrite the data in the existing record. \[d282f839]

### Improved

* **Indexer**: Improved error handling if index errors occur. This allows us to catch more errors from the indexer, especially if memory problems occur. Before we would not log these errors anywhere. \[ea3c7ca5]
* **System right**: Add `frontend_features.upload_url`. This is used by our frontend to allow uploads by URL. Instances relying on this feature, need to enable the right for their users. \[5c087d4d]
* **/inspect/migration**: More options available for backup & restore. \[e8f2f9be] \[87431fe4]
* **Login page**: Add customizable placeholder for input field. \[c51621ef]
* **fylr convert**: Don't use Go TIFF conversion if IM has exhausted resources. In case the "magick convert" fails with "cache resources exhausted", we now do not try to use Go as a fallback when converting TIFF images. This avoids undesired memory consumption in cases where Magick limits are configured. \[708a7b36]
* **Console log**: With defaults settings, output server time zone. \[8699bacf]
* **SAML**: Support request signing: `sha1`, `sha256`, `sha512`. \[bdd96477]
* **Language support**: Use long year names for `Finnish`. \[9f882048]
* **Standard Rendering**: Use localization key to render B.C. and A.D. dates. Also, add `bc` to the locale object published via `/api/user/session`. \[5420011a] \[f87e50ec]
* **Webhook**: This adds events `WEBHOOK` and `WEBHOOK_ERROR` for transition webhooks calls. \[34a31954]
* **Export**: Make `_exported_at` a fully supported export field. With this change, `_exported_at` is available in `JSON`, `XML` and `CSV` exports. It can also be ex- and included like the other fields. \[9e19b0df]
* **Login**: Make logins case-insensitive for `email` and `login`. \[d123d327] \[57ca2a6ab]
* **Error message**: More localization for error messages with right names. \[a9a7d153]
* **Group mode**: Skip void updates. If an update does not change the existing object, do not save a new version of the object. \[f44b08b4]
* **fylr backup & restore**: Restore LDAP configuration without server connect, parse previous command line parameters for backup and restore to allow use of --continue with pre-filled inputs in `/inspect/migration`. Also, include file hashes in reference. \[39cf486b] \[3d0719f0] \[9dd288d1]

### Fixed

* **/api/db**: Fix reading back `_parents` from parents. This fixes reading back "`_parents` from plugins. Before the code would look for `_callback_context` in the parent objects which made no sense. Now the `_parents` are read back omitting the check. \[d6b37983]
* **/inspect/objecttype**: Support `application/json` for stats. \[dabfb717]
* **/api/db**, **/api/search**: Sort `_tags` by position. This feature was missing. \[ef2acf81]
* **/api/oai**, **/api/objects**: Namespace & xslt handling fixes. Clean metadata format names so that it matches the specification (only uri unreserved characters); avoid duplicate metadata format names. Add namespace and schema from xslt settings to schemaLocation attribute; smaller fixes for Identify (and other verbs) to satisfy an online oai-pmh validator. Also, support multiple records with XSLT for OAI/PMH. \[4004ca119] \[29107ef0]
* **/api/search**: Do not use `timezone` in search to change searched ranges. When searching *2024* we did offset that into the given timezone of the search, essentially searching *2023-31-12 23:00 - 2024-31-12 23:00* which led to unexpected results, given the fact that dates like "2024" are stored as UTC ranges in the fylr database and index. \[059f162b]
* **/inspect/plugins**: Fixed displaying event details. \[a4ad3c6d]
* **/api/search\[type=user]**: Fixed sort by `user._generated_displayname`. Requires re-index. \[67e9caf75]
* **User rights management**: This fixes some bugs in user rights management. Before this patch fylr did not acknowledge the owner rights for users. Also, the user `READ`, `DELETE` and group `DELETE` where not computed correctly. Requires re-index. \[0f3726a7]
* **/api/search/parse**: Support searching for custom data type provided fields which contain capital letters. \[f45f6b10]
* **Parallel requests on Windows**: Much improved parallel request behavior on **Windows**. This speeds up parallel searches by factor 10 in our tests. \[88633e1d] \[[f71afd89 (errorgen)](https://github.com/programmfabrik/errorgen/commit/f71afd89b82522a48ef8e89090bc0b290818a6a8)]
* **/api/search**: Fix poly hierarchy aggregations with virtual root. \[eefbdaf8]
* **/inspect/objects**: Fix showing api format index for non root users. \[65ca469c]
* **/api/export**: Fixes for localized CSV export. If no translation exists for localised csv export fields, use the unlocalise column name instead, not the localization value default placeholder value. Also, support "-" as value (which will also use the api column name). \[51b29a18]
* **/api/search**: Fixed poly hierarchy aggregations which contain a virtual root entry. \[eefbdaf8]

## Frontend

### New

* **RPUT Rights**: Now the new right `frontend_features[upload_url]` is checked in order to allow the user to use the URL upload button in the new modal editor.
* **Read-Only Object Store**: A new functionality has been added to the object store allowing the definition of read-only object stores.
* **Custom Field Placeholders**: Adds support for custom user placeholders on fields. This new placeholder override can be configured per mask on the hint menu. This is only available for inputs that support placeholders.
* **Hide First Empty Nested**: A new option has been added when configuring nested tables that allows not including a first empty object. Previously, creating a nested table would display an empty object ready for editing. With this option activated, the nested table will not show any default element and will only display the "+" button to add a new element. This allows for more compact data models when having nested tables with many fields.
* **Skip New Modal Upload**: Adds a new option on the new object modal to skip the configuration window the next time it opens.
* **Result Card Pin Button**: Implements a new button for the result card in editors and details to pin or unpin the result card of the object (including asset browser). This allows the user to scroll the full detail view on smaller screens. Previously, on smaller screens, the asset browser took up a lot of space and made it impossible to navigate detail and editor views.
* **Shared Templates**: Implements a new way to create editor templates. The shared templates use the group's frontend properties to save the templates, which means that any user with read permissions to the group can use these templates. This allows users to create shared editor templates with multiple users.
* **Collapsible App Header**: The application header can now be collapsed, hiding it and leaving more space for the application itself. This is useful when using the app on small screens.

### Improved

* **Collection Manager**: Adjustments and improvements have been made to the structure of the collection manager.
* **Text View**: Adjustments have been made to avoid unnecessary requests when rendering records in text mode that include reverse linked objects not visible via mask options.
* **Nested Fields**: Improvements have been made in the design of nested fields.
* **Tags**: Improvements have been made in the design of tags.
* **Custom Server Validation Errors**: Improved support for custom validation errors to display errors even if the fields are not visible. Additionally, support has been added in the Group Editor to display server custom validation errors.
* **Calendar**: Now date times use the frontend language for the calendar panel.
* **Leaflet Bundle**: The Leaflet library has been included directly in the frontend bundle. This avoids the frontend having to make a request to obtain the library.
* **Deep Link**: Now when a deep link that links to a record is opened, it will always be displayed in the main search.
* **Number Fields**: Now numbers in data fields will use the first database language instead of the frontend language.
* **Date Times**: Now the BC appendix for date outputs is retrieved from session data coming from Fylr.
* **Tag Tooltips**: Improved the tooltips of tags throughout the application, making this functionality more consistent across the entire app.
* **Group Editor**: Improved the group editor so that it does not execute modifications on objects where there will be no changes, meaning their version number will not be incremented. Additionally, upon completion, the group editor now shows the number of objects that have been modified or not.
* **Date Fields**: Adds support for AD dates in various date formats, following the latest changes in the standard view from Fylr.
* **Migrations**: Prevents frontend fatal errors if the server doesn't add the `frontend_locale` and `database_locale` in the session data. This can happen when opening EZ5 migrated instances. Also, fixes a problem with custom metadata fields in the mappings migrated from other instances.
* **Directory Upload**: Excludes `.DS_Store` files when uploading directories in the new object modal.
* **Hierarchy Results**: Improved the hierarchy view in the result views. Now, if an object is added by the frontend but is not included in the search results, these objects will be colored differently (light gray), making it easier to identify the search results. These objects are added to correctly display the hierarchy of a result.
* **CSS Adjustments**: General adjustments and improvements have been made to the application's CSS.
* **Connection Lost Alert**: Improved the handling of lost connections with the server. The changes introduced should make this message appear less frequently than in previous versions.

### Fixed

* **Hierarchy Detail View**: Fixed an issue where the hierarchy was not displayed correctly in the hierarchy detail view.
* **Tag Filters**: Fixed a bug that occurred when using tags without text in the filter panel.
* **Location Selector**: Enhanced the location manager selector on base config to prevent the frontend from crashing if we try to upload an old backup base config file.
* **Text View Result**: Fixed an issue where configuring the text view to not show the standard of the records also hid those of linked objects, erroneously creating a list of empty objects.
* **User Manager**: Fixed an error caused by the email scheduler in the user manager.
* **Print Manager**: Avoid requesting assets from the server when rendering EAS fields for print. Before this patch, the browser detected the new image element created for the print body and requested the image in advance. This request is not necessary.
* **EAS Variants**: Fixed a critical issue that prevented uploading assets using the EAS fields as an upload form, making it impossible to upload new variants to a GAS field.
* **Saved Searches**: Fixed an error when trying to reuse tag facets from saved searches.
* **Date Filters**: Removed AND support on date fields that are not inside a nested table.
* **Date Expert Search Fields**: Added placeholders for date fields in the changelog expert search options. Before this patch, the placeholders were not localized.
* **Search Suggestions**: Fixed the label of the exact token in the search suggestions.
* **Collections Update**: Fixed an issue where open collections were not updated correctly when an object was added or removed.
* **Event Poller on Developer Panel**: Fixed the selector to choose the type of poller desired in the application within the developer menu.
* **User Manager**: Fixed the behavior when lacking permission to read an object after saving it. Now the manager will update the list of users and clear the detail view.
* **Hidden Tags**: Fixed the behavior of tags configured as hidden and default at the same time. Now these tags will be added automatically even if they are hidden. Before this patch, these tags were ignored.
* **Filter Panel**: Fixed multiple errors in the filter panel related to the use of the new AND/OR system.
* **Linked Object**: Fixed an issue that prevented saving a record when an invisible linked object was marked as required.
* **User Manager Save Button**: The save button will not be enabled if both login and email fields are empty.


# Release v6.12.2 (2024-09-18)

Published 2024-09-18 10:27:11Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.2/fylr_checksums.txt)
* [fylr\_v6.12.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.2/fylr_v6.12.2_darwin_amd64.tar.gz)
* [fylr\_v6.12.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.2/fylr_v6.12.2_darwin_arm64.tar.gz)
* [fylr\_v6.12.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.2/fylr_v6.12.2_linux_amd64.tar.gz)
* [fylr\_v6.12.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.2/fylr_v6.12.2_windows_amd64.zip)

## Server

### Improved

* **/api/search**: Implement `include` for term aggregations. This feature was missing in **fylr**. \[0aabc41a]
* **Go 1.23**: Update **fylr** build to use Go 1.23. \[dc10264f2] \[be6e80481] \[1bba8d535]
* **fylr.yml**: Support `fylr.db.init.configFile` together with `fylr.db.init.config`. Before these were mutually exclusive. \[a3d6a124]

### Fixed

* **/api/search**: Do not use `timezone` to modify searched dates. When searching "2024" we did offset that into the given timezone of the search, essentially searching "2023-31-12 23:00" - "2024-31-12 23: 00" which led to unexpected results, given the fact that dates like "2024" are stored as UTC ranges in the **fylr** database and index. \[059f162b]
* **/api/eas?collection**: Fixed parallel uploads. When uploading in parallel into one collection relying on *detect series*, **fylr** would create multiple objects instead of only one (with nested) if files would arrive in parallel. This patch locks the collection before adding files and with that, we make sure that the series detection works within one object even if the files arrive in parallel. \[eb96f78e]

## Webfrontend

### Fixed

* **Filter Panel**: Numerous fixes have been made related to the filter panel. Major bugs related to the OR operator and the use of hierarchical filters have been resolved. It is now possible to correctly filter by child filters using the OR operator.
* **Filter Count**: Bugs have been fixed in filter counting when the OR operator is used.
* **Collections**: A bug has been fixed where the collection count was not updating correctly.
* **Image Variants**: A bug has been fixed where an error occurred on the frontend when trying to upload variants in an EAS field.


# Release v6.12.1 (2024-08-01)

Published 2024-08-01 13:13:16Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.1/fylr_checksums.txt)
* [fylr\_v6.12.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.1/fylr_v6.12.1_darwin_amd64.tar.gz)
* [fylr\_v6.12.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.1/fylr_v6.12.1_darwin_arm64.tar.gz)
* [fylr\_v6.12.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.1/fylr_v6.12.1_linux_amd64.tar.gz)
* [fylr\_v6.12.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.1/fylr_v6.12.1_windows_amd64.zip)

## Server

### Important

* Sorting by original filename broke in `6.12.0` and was fixed in this release. **A re-index is required for the sorting to work**.

### Improved

* Make **data model loading** more robust in case of inconsistencies. Some inconsistencies would cause **fylr** not to start. \[cab7f755]
* **OAI/PMH**: Use the same XSLT input when rendering objects as for the `/api/objects` endpoint. Before the actual OAI record was sent. \[587629ec]
* **/inspect/objects**: Add an selection to order objects by **System Object ID** (also the default now). \[b3c6c3e0]
* **/inspect/files/dumpfile**: Limit loading data to 1MB. This fixes huge memory consumptions when previewing a **TIFF**. Also fixes metadata output for images.

### Fixed

* **/api/eas/produce**: Fixed rotating images to the left (degrees < 0). \[a0f259c1]
* **Login Page**: Fixed customization of login label. \[34252070]
* **Metadata Mapping**: Use asset's height as part of the actual height mapper. \[54224e16]
* **Base Config**: Acknowledge settings `For OAI/PMH` and `/api/objects` for XSLT sheets. Check your base config if sheets are not available after this update. \[d85cd971]
* **/api/search**: Sort by `original_filename` (and other filename derivatives) was fixed. **This requires a re-index**. \[1f757c22]
* **/inspect/objecttypes**: Show statistics about files. \[185c13ac]
* **/api/db|search**: Output `_level` in hierarchy object types starting at `1` and not at `0`. This is the same in easydb 5 as well as in all base types. \[573bc812]
* **/inspect/datamodel**: Fixes showing object types with assets columns. \[6cee64cd]
* **Workflow mails**: Fixed sending emails to group recipients. \[5795a801]

## Frontend

### Improved

* **Metadata Mapping**: Changes have been made to the metadata mapping manager to display all object types, in line with the server-side changes.
* **Filter Manager**: The structure of the "More..." popover in the search filters has been improved.
* **Default Values Plugin**: The `editor-tagfilter-defaults-plugin` has been updated to allow setting default values for boolean fields.
* **Data Model Manager**: The error message when attempting to delete an object type that is being used as a linked object in another object type has been improved. The message will now include the full path of each field where this object type is used, greatly facilitating the identification of fields that need to be modified before proceeding with the deletion.

### Fixed

* **Editor Templates**: Now, the name of a new editor template is checked before saving. If an existing template has the same name, the user will be prompted to enter a different name.
* **Full-text Suggestions in Expert Search**: Full-text suggestions in the string inputs of the expert search have been corrected. The wildcard will now be correctly added.
* **Date Sorting**: The new configuration for sorting objects by date has been enhanced. Now, if a grouping like "By Year," "By Week," etc., is used and no additional sorting criteria are provided, a secondary criterion will be applied to sort objects by time within the groups. This resolves the issue where objects within temporal groupings were not sorted correctly.


# Release v6.12.0 (2024-07-25)

Published 2024-07-25 13:04:32Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.0/fylr_checksums.txt)
* [fylr\_v6.12.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.0/fylr_v6.12.0_darwin_amd64.tar.gz)
* [fylr\_v6.12.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.0/fylr_v6.12.0_darwin_arm64.tar.gz)
* [fylr\_v6.12.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.0/fylr_v6.12.0_linux_amd64.tar.gz)
* [fylr\_v6.12.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.12.0/fylr_v6.12.0_windows_amd64.zip)

## Important

* **Forced Re-Index**: This release brings a forced re-index to fix sort problems which may occur on instances using `string` column types and also to make use of the new numeric sort feature. Plan enough time for this update, as the re-index is blocking. Only `/inspect/` is available during while the re-index is running.
* **fylr** does no longer enlarge images if they are smaller than their target size. Affected versions need to be reproduced using `/inspect/files/`. Make sure to **re-sync** the actual version, not the original.
* Text fields are sorted in numeric mode now. Only `string` column type is an exception where the default sorting is alpha numeric as it was before. A re-index is required to make use of this feature.
* This release supports **previews for font files** (`TTF`, `OTF`) and brings improvements for preview generation for vector based file formats. For office files we support a version `PDF` by default.
* **Webhooks** have been changed & improved, if you are using Webhooks, check for details below.
* **Zoomer**: The behavior of the zoomer in the asset browser has been modified. Previously, using the mouse wheel directly on the asset browser would automatically activate the zoomer. Now, this will only occur in fullscreen mode. In the detail/editor sidebar, users will need to click the corresponding button to activate the zoomer.

## Server

### New

* `fylr convert`: New `--enlarge` flag. This forces images to be enlarged even if the source is too small. This changes the default behavior to not enlarge files. A new `enlarge` flag is available in the recipe `browserthumbs` to restore the old behavior for specific versions. \[f5588c93]
* **Login page**: Allow to overwrite the login label on the login page in the base config. \[00041f52]
* **Login page**: Added a `SAML` preferred switch in base config. With this switch on the layout on the login page is more prominently showing the SAML option. \[56caee76, f92b3607]
* **Docs**: Added openapi spec support to /inspect. This is framework only, not much documentation there yet. This will improve over the next releases. \[3b58f901]
* **fylr restore**: New parameter `--datamodel`. Used to overwrite the data model file from the manifest; inspect migration: restore option no\_purge: use --datamodel=- to skip the upload of the data model. \[48fde902a]
* **fylr.yml**: Allow to set environment for fylr using the `fylr.yml`. This is useful on Windows where a system wide environment configuration is not desired by a fylr installation. \[59e976e1]
* **/api/search**: Support `$now` and other placeholders for date searches. In date searches we support `$now`, `$startOfMinute`, `$startOfHour`, `$startOfDay`, `$startOfWeek`, `$startOfMonth`, `$startOfYear`, `$today`, `$month`, `$year` with an optional offsets `+-smhdMwy`. **search/parse** api will replace the placeholders in the search json response immediately. \[bbfd9541]
* **/api/search**: Support `timezone` for date searches. A new parameter `timezone` supports timezone for date searches. With this, the `$now` & other placeholders will be interpreted according to the given timezone. Also, regular dates without timezone will be read for the desired timezone. \[b0aeff6e]
* **fylr convert**: Support preview `TTF` and `OTF` fonts.
* **Poly hierarchy**: Support adding a `Root node` if at least one parent is selected. Before we could not attach a node to the root of the tree as well as to other parents. \[c1846e38]
* **/api/search**: Add `width` to sort option for date sorts. Allowed width is `year`, `month`, `week`, `day`. This this it is possible to sort by dates only checking the year and as a second sort by something else. \[117f6993]
* **/api/search**: Support new subfield for type **file**: `best_date`. Best date is calculated as UTC datetime from `technical_metadata.date_time_original`, `technical_metadata.date_created`, `upload_date`. Whatever comes first. This is also supported in `_fields`. \[d81e9df5]

### Improved

* **Base config**: Allow overwriting of login label on the login page.
* **Exec server**: Improved handling of unconfigured services, do not re-schedule jobs in that case. \[aaa5dfee]
* **fylr.yml**: Configured plugins are no longer enabled by default. The new `fylr.plugin.default_enabled` setting restores the old behavior if set to true. \[4654077]
* **fylr restore**: Updated handling of `--base-config` parameter: independent from `--purge`, not allowed with `--continue`. \[48fde902aa]
* **fylr convert**: Support `-r` to overwrite existing output files. \[3a1ae4a2b]
* **/inspect/files**: New action **resync with metadata**. This new action does what **resync** did before, it re-generates metadata for files, and for that the file needs to be copied from storage to the exec server. The new action **resync** skips that step, so that it is much faster to re-sync files after changes in the file worker configuration in the base config. \[720c7cab]
* **POST /api/db**: New API error `RecordUnmarshalJson` returns structured information about unmarshal errors. \[81d63322]
* **Backup / restore**: Use environment variables `FYLR_CMD_*` to find `pg_dump` & `psql`, tools we require for backup & restore. \[205d72dc, b18e978f]
* **api/v1/db?skipConstraints=1**: Allow multiple tags from `taggroup` with type choice. Fixed multiple tag choices check for version 1. This introduces a new system tag `TAGS_CHOICE_VIOLATION`. \[c14f83d6, eac3f682]
* **/api/db**: Improved `UniqueKeyViolation` error. Add `valuelinkedsystemobjectid` and `valuelinkedstandard` is set in unique key violation errors, if available. \[42ca15ba]
* **Indexer**: Text fields are sorted in numeric mode now. Only `string` column type is an exception where the default sorting is alpha numeric as it was before. A re-index is required to make use of this feature. \[aa07b0aa]
* **fylr convert**: Improved vector files support. This gets rid of our custom `SVG` magic to convince **Imagemagick** to accept sizes bigger than the `SVG` canvas. Now, we use **Inkscape** for that job (creating an interim `PNG`). Changed default produce config to treat `AI`, `EPS`, `WMF` all alike. For them we produce a separate `SVG` version. All vector formats now ignore "enlarge" setting. Also, added `-v` to most recipes for easier debugging. \[457cbdd2]
* **/api/db?skipBidirectionalUpdate=1**: Skips updates of bidirectional objects during inject (used by `fylr restore`). \[3471c981]
* **Email**: Add `X-Fylr-System-Object-Id` to the email headers. This header contains all system object ids which are linked to the email (pulled from the event). \[fb4a2485]
* **Base config**: Use internal cache to avoid re-dial for ldap connections. Do not redial to LDAP servers on each cache expire (like data model updates), but instead use a cache to remember the status of the ldap config. This avoid the re-dial and should make systems with LDAP configured faster when updating base information which requires the cache to expire. \[d3aad68b]
* **/api/search**: Supporting searching for changelog `DELETE` entries. \[cb57d46b]
* **/api/export**: Use metadata timestamp when exporting files, fixed timestamps in `ZIP` and `TAR` archive downloads. This patch uses metadata time stamps **date time original** or **create date** to set the time of an export file. If that is not available, the upload time is used (as before). \[ab748e2a]
* **/inspect**: Output more info about the database connection in inspect: **max connections**, **database version**, **database roles**. \[f61f95b6]
* **SAML**: Support request signing (enable in base config). \[7ba882c2]
* **File worker**: Produce a `PDF` version for office files. \[cb2862cb]
* **/api/db**, **/api/eas**: Introduce a `compiled_props` structured info block which breaks down information compiled in `compiled`. \[cb2862cb]
* **/api/search**: Support **date** and **datetime** for `fields`. This adds missing "fields" support for date fields. The support is returning the actual stored fields, with no further arithmetics applied. \[q74772b34]
* **fylr restore**: Automatically skip already existing objects in the target fylr. \[86850793]
* **Webhooks**: The config `access_token` was renamed to `send_authorization_header`. Existing configurations must be updated. Also a new `include_access_token` was added. This needs to be set if the user access token shall be added to the JSON information send to the Webhook. Before the token was always sent. So, if your Webhook relies on this, make sure to enable `include_access_token`. Also, `HMAC Secret` & `Timeout` have been implemented. With this it is possible to sign a Webhook request for enhanced security. \[ddfcf3b98, 6739a0c17]

### Fixed

* **DELETE /api/config**: Fixed panic if path suffix is empty. \[8fc163d9].
* **Indexer**: Fixed indexing of custom data type text values `null`. Indexing of such values (actual null in a text value of a custom data type) broke the indexer because we tried to index a "" which is not an object. However, the new index mapping requires an object for text, so indexing of "" failed. \[25984442]
* **fylr backup / restore**: Various fixed and improvements for corner case. \[010ce88a]
* **WebDAV**: Fixed WebDAV support with https and basic auth enabled for Mac and Windows clients. \[1a62519f]
* **fylr convert**: Fix converting non UTF-8 `AI` files. If an .ai file is not UTF-8, Inkscape converts this to an invalid `SVG` (header says it's UTF-8 but encoding might not be). Fixed this by ensuring that the output file is UTF-8 encoded (using charset detection). \[9b5b0450]
* **/api/search**: Fixed `include` for aggregations. `include` stopped working after we introduced a new index format for our facet terms (using our own collator). Fixed this by putting back the actual string as part of the facet term so that the facet filter works again using `include`. \[bb9f8718]
* **/api/search\[type=user]**: Added missing `offset` handling. \[8fe8af36]
* **/api/search**: Fixed boundary searches without to/from equals (unbound open range searches). \[bbfd9541]
* **/api/right/preset**: Support `created_at`, `updated_at` fields, fix tag updates and cache invalidation. This fixes saving the tag lists on updated presets. Before we would delete the tag list on update. This bug caused the cache id to not increment on updates which caused frontend to fail. Also, the "position" was saved but not loaded, so this is another bug fixed in this patch. \[3396c8b1]
* **Object type**: Ignore tags & transitions, if not available. This patch skips loading of tags & transitions for object types where the support is no longer or not enabled. Also, tags & transitions do not appear over the api anymore if the support is no longer available. \[32ced8c4]

## Frontend

### New

* **Group Editor**: A new option "Append with leading space" has been added, allowing users to add a space at the beginning of the value being appended.
* **Asset Browser Info**: Support has been implemented for displaying additional asset information. Documents now show the number of pages, and vector files correctly display dimensions.
* **Version Produce Table**: The version creation and management tool in the base configuration has been redesigned to be more intuitive and user-friendly. Versions are now displayed in a more accessible table format.
* **Polyhierarchical Root**: Frontend support has been added for configuring polyhierarchical objects to appear at the top level as well as in other hierarchy levels. Previously, it was not possible to add an object to the top level if it was within a hierarchy. Users can now select the "Virtual Top Level" pseudo-object when choosing the parents of an object.
* **Date Fields Sort**: Support has been added for grouping results sorted by date in the main search. Users can now group results by year, month, week, or day, taking into account the user's timezone.
* **Asset Sort**: A new option has been included to sort results using an EAS field with the "Best date" option. Additionally, results can be grouped using the new date grouping feature.
* **Font Assets**: Frontend support has been added to display and configure "Font" type assets.

### Improved

* **Filter Panel**: The sorting panel interface has been enhanced.
* **Filter Panel**: The layout of the "More..." panel in search filters has been improved.
* **Hierarchy Results**: The functionality of hierarchical list results in the main search and list search has been significantly improved. Now, the hierarchy will expand correctly to show only the elements included in the search results.
* **Base Types Managers**: Improvements have been made to persist the active tab when saving an item, ensuring the active tab remains visible after saving.
* **Zoomer**: The zoomer has been significantly optimized to make server requests more efficiently, enhancing performance in the asset browser and reducing server load.
* **Error Messages**: Error messages related to "UniqueKeyViolation" have been improved, allowing the frontend to display the standard of the object if the error is related to a linked object, making it easier to identify the element causing the error.
* **Asset Browser**: The display of asset information in the asset browser has been improved.

### Fixed

* **Date Fields**: Fixed an issue with handling very large BC dates in date range fields.
* **Date Fields**: Corrected validation errors in date range fields.
* **Right Presets**: Fixed the functionality for sorting right presets and resolved related bugs, adding support for displaying the creation and edit dates of presets.
* **Data Model Manager**: Fixed an issue when attempting to copy object types that included fields configured as bidirectional.
* **CSV-Importer**: Corrected an issue when trying to use number fields as identifiers to create linked objects.
* **Collection Manager**: Fixed a bug causing the collection manager to respond slowly after adding a new collection.
* **Group Editor**: Corrected an issue when trying to save objects with fields marked as "required" in the group editor.
* **Linked Objects**: Fixed an issue where the Standard 2 field was not displaying correctly if it was too long.
* **CSV Importer**: Fixed an issue when trying to import hierarchical objects with parents already existing in the system. The CSV importer could not find the parent object if the field ID was not used.
* **PDF Creator**: Fixed an issue that blocked the application when trying to print using the PDF creator without having the necessary plugin.
* **Connector Plugin**: Fixed an error when running the connector plugin on instances with saved searches.


# Release v6.11.5 (2024-07-09)

Published 2024-07-09 11:15:51Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.5/fylr_checksums.txt)
* [fylr\_v6.11.5\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.5/fylr_v6.11.5_darwin_amd64.tar.gz)
* [fylr\_v6.11.5\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.5/fylr_v6.11.5_darwin_arm64.tar.gz)
* [fylr\_v6.11.5\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.5/fylr_v6.11.5_linux_amd64.tar.gz)
* [fylr\_v6.11.5\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.5/fylr_v6.11.5_windows_amd64.zip)

## Server

### Fixed

* **Slowdown with SAML**: With some SAML backends, **fylr** was experiencing an unexpected delay after expiring the internal cache, e.g. after a schema update. Fixed by caching SAML connections until settings are changed.


# Release v6.11.4 (2024-07-05)

Published 2024-07-05 09:03:36Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.4/fylr_checksums.txt)
* [fylr\_v6.11.4\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.4/fylr_v6.11.4_darwin_amd64.tar.gz)
* [fylr\_v6.11.4\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.4/fylr_v6.11.4_darwin_arm64.tar.gz)
* [fylr\_v6.11.4\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.4/fylr_v6.11.4_linux_amd64.tar.gz)
* [fylr\_v6.11.4\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.4/fylr_v6.11.4_windows_amd64.zip)

## Server

### New

* Support `fylr.env` in `fylr.yml` to locally set environment variables for **fylr**. With that, it is possible to set program names for the used helper programs (`FYLR_CMD_*`) right inside the `fylr.yml`.

### Improved

* Updated all included on-disk plugins. The delivered set of plugins was due to a bug in our internal CI over 2 months old.


# Release v6.11.3 (2024-07-03)

Published 2024-07-03 14:26:45Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.3/fylr_checksums.txt)
* [fylr\_v6.11.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.3/fylr_v6.11.3_darwin_amd64.tar.gz)
* [fylr\_v6.11.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.3/fylr_v6.11.3_darwin_arm64.tar.gz)
* [fylr\_v6.11.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.3/fylr_v6.11.3_linux_amd64.tar.gz)
* [fylr\_v6.11.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.3/fylr_v6.11.3_windows_amd64.zip)

## Server

### Important

* This release fixes a regression bug introduced `6.10.0`. The bug broke the search filter in the "Has More..." filter popover dialog. A **re-index** is recommended.

### Improved

* Support `FYLR_CMD_PG_DUMP` and `FYLR_CMD_PSQL` to find helper programs for backup (`pg_dump`) and restore (`psql`). Before these programs where only looked for in `PATH`.

### Fixed

* `fylr convert`: Fixed regression bug for non UTF-8 `.ai` file previews.
* Fixed localisation of server side error messages.
* **/api/search**: Fixed `include` in `linked_object` aggregations. The bug was introduced with the refactor or search and sort field indexing in **6.10.0**. A re-index is recommended.

## Web frontend

### Fixed

* Polyhierarchy: A bug has been fixed where the expert search did not work correctly for polyhierarchical objects.
* Collection Plugin: Corrections have been made to the collection plugin.
* Plugins CrossServer: The loading of plugins in fylr has been fixed when using the cross-server feature with an ez5 instance.


# Release v6.11.2 (2024-06-21)

Published 2024-06-21 13:41:53Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.2/fylr_checksums.txt)
* [fylr\_v6.11.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.2/fylr_v6.11.2_darwin_amd64.tar.gz)
* [fylr\_v6.11.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.2/fylr_v6.11.2_darwin_arm64.tar.gz)
* [fylr\_v6.11.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.2/fylr_v6.11.2_linux_amd64.tar.gz)
* [fylr\_v6.11.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.2/fylr_v6.11.2_windows_amd64.zip)

## Server

### Important

* See the `Fixed` section, some instances may require a re-index.

### New

* **CRW format**: Support Canon Raw CRW format.
* **/inspect/files**: Add action `Resync with metadata`. This does what the `Resync` action before did, re-calculation of metadata. Now, the `Resync` action skips that step (unless no metadata is there) to save time during the re-sync.

### Improvement

* **/inspect/pools**: Output created and updated timestamps.
* **fylr convert**: New `-r` parameter to overwrite existing file.
* **fylr convert**: Support resizing of small `AI` and `SVG` files. Affected files need a re-sync via `/inspect/files`.
* **fylr metadata**: Improve reading of `width` and `height` for `AI` and `SVG` images. Affected files need a re-sync via `/inspect/files`.

### Fixed

* **Indexing of pools**: Fixed for pools which have an updated timestamp set to '0000-01-01 00:00:00'. This was a regression from `6.11.0` where such a zero time was rendered as `""` which caused indexer parsing problems. A re-index of affected instances is required.
* **Indexing of custom data types**: Fixed a case where a `text` with value `null` caused objects to not being indexed. A re-index of affected instances is required.
* **WebDAV**: Support Mac Finder & Windows Explorer for instances with `https` and **HTTP Basic Authentication** enabled.

## Frontend

### New

* **AND / OR Filters**: The ability to choose AND or OR modifiers in the filter panel has been added, allowing searches to be filtered using OR statements.

### Improvement

* **Reconnecting Alert**: The reconnection alert has been improved for when the frontend loses connection with the backend and the event poller is configured to use stream connections
* **Table View**: Corrections have been made to how the Result Table View updates elements when an update event is received from the server, improving usability issues when using the Result Table View.

### Fixed

* **Asset Browser Zoomer**: Fixed an issue that prevented the zoom option from being used on vector2d type assets.
* **Collection Plugins**: Numerous corrections have been made in the handling of collection plugins when using a collection as a hotfolder.
* **Base Config**: Corrected how default values are displayed for multi-input fields in the base config.
* **Sort by Changelog**: Fixed a bug that caused an error when sorting a search with multiple object types using the changelog as the sort filter.


# Release v6.11.1 (2024-06-14)

Published 2024-06-14 11:39:41Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.1/fylr_checksums.txt)
* [fylr\_v6.11.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.1/fylr_v6.11.1_darwin_amd64.tar.gz)
* [fylr\_v6.11.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.1/fylr_v6.11.1_darwin_arm64.tar.gz)
* [fylr\_v6.11.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.1/fylr_v6.11.1_linux_amd64.tar.gz)
* [fylr\_v6.11.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.1/fylr_v6.11.1_windows_amd64.zip)

## Server

### Important

* If you are using **poly hierarchies** a re-index is recommended to fix possible wrong `_has_children` information.

### New

* **/api/objecttype?format=short**: New URL parameter to limit api response and skip `_tags`, `_maskfilters`, `_transitions`.

### Improved

* **Messages:** Allow login pages to be confirmed using a checkbox.
* **/api/search**: Support `_fields` for reverse nested. Also fix support for `_changelog.date_last_updated` for objects where `_created_at` is not the same as `_last_modified`.
* **License expiration reminder emails**: Omit sending these emails and avoid event error messages if no email server is configured. Also, do not try to check expiration if no license is present.

### Fixed

* **Fixed indexing poly hierarchy parents** after insert and parent changes. This fixes wrong `_has_children` information returned by the API, even on endpoint **/api/db** where the information is retrieved from a cache table.
* **/api/db\_info/update**: This fixes the mask selection for tag change requests. The problem was that we didn't use the requested tag updates for per pool checks.
* **/api/search**: For type `pool`, output `_compiled_tags`. This was removed in 6.11.0 and led to frontend problems when creating new objects where default tags are relevant for permissions. Also, in **/api/pool** and **/api/objecttype** always output `_compiled_tags`.
* where default tags are relevant for permissions. Also, in **/api/pool** and **/api/objecttype** always output `_compiled_tags`.
* **fylr backup**: Write full `pool` and `objecttype` records into the backup files. This broken in 6.11.0 when the shorten output for `/api/pool` and `/api/objecttype` was introduced.

## Web frontend

### New

* **Clear Selection on Main Search:** Introduced a new tool to clear the current selection from the context menu in the search.
* **List Search Popover:** Added the hierarchy mode selector to list search popovers. Previously, this was only available for popovers using the standard or text view.

### Improved

* **Deep Links:** Added functionality to update the browser address bar deep link of an object in the editor sidebar. Previously, if an object was opened in edit mode and modified, the deep link in the browser’s address bar did not update to reflect the new object.
* **CSV Importer Configuration:** Improved the configuration process for the Headless CSV importer (Only available for collection plugins)
* **CSV Importer:** Added support for mapping multiple columns to the same linked object destination field within a nested field. This allows users to use multiple columns to insert linked objects into a single nested field.
* **CSS:** Made adjustments to the frontend CSS.
* **Metadata Mapping:** Improved the error alert during the metadata mapping process while uploading files. The alert now displays server-received errors in a readable format.

### Fixed

* **Filter Panel:** Fixed an issue where, when the “OR” selector was active, the filter of a parent facet was added to the search, causing the child filter to have no effect.
* **Add Tags Tool:** Fixed an issue where available tags were not displayed correctly. The tool now better utilizes the information received from the server.
* **Filepicker Plugins:** Fixed an issue where an empty error was shown when the CMS did not send any data back after a successful file upload request.
* **Date Range Columns:** Fixed the template placeholder values for date ranges. Previously, the date ranges did not display the template values correctly in the editor when available.
* **Custom Color on Themes:** Fixed the loading of custom color schemes on slower instances.
* **Nested UUID:** Fixed an issue when attempting to copy records with nested fields.
* **Sort by Changelog:** Fixed an issue where sorting by changelog incorrectly used the system global object ID.
* **List Search Popovers:** Fixed a bug where certain list trees would initialize with all child nodes opened, causing long loading times for large trees.
* **Hierarchy Parent Field:** Fixed an issue where the paths of parent objects were not displayed correctly when modifying the parent list in a polyhierarchy object.
* **Search Popover:** Fixed a bug where the hierarchy selector was not displayed if the search object was polyhierarchical.


# Release v6.11.0 (2024-06-05)

Published 2024-06-05 12:09:26Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.0/fylr_checksums.txt)
* [fylr\_v6.11.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.0/fylr_v6.11.0_darwin_amd64.tar.gz)
* [fylr\_v6.11.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.0/fylr_v6.11.0_darwin_arm64.tar.gz)
* [fylr\_v6.11.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.0/fylr_v6.11.0_linux_amd64.tar.gz)
* [fylr\_v6.11.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.11.0/fylr_v6.11.0_windows_amd64.zip)

## Server

### Important

* When using **limited masks**, nested values are protected from data loss. If a limited mask for record of an object type with nested fields A and B would only allow write access to field A, data in field B would be lost upon save. The merging of data in other fields than allowed by a mask happened on **top level only** (that behavior is consistent with how it was in easydb 5). See below for more details on this API change.
* **Group members are not automatically seeing others members of the same group**. If your setup relied on that default, you need to grant that right manually by adding the appropriate `READ` permission to the ACL of the group (see below).
* This update brings a database update which updates all nested records in the table `value` in the database. This can, depending on the size and performance of your installation, take a few minutes.
* **`POST /api/event/list?skipConstraints=0|1`**: New API to bulk import events. With `skipConstraints=1` (`system.root` only) all event types can be imported. Used for `fylr restore`.

### New

* **/api/config**: Added `iiif_links` and `iiif_default_links` as option for the frontend to use HTML templates for the share dialog.
* **`POST /api/user?skipConstraints=0|1`**: New URL-Parameter (`system.root` only) to allow saving of invalid email addresses. Used for `fylr restore`.

### Improved

* Build with PGO enabled. According to the Go blog this should give us 2-10% better performance at certain tasks. We profiled injecting new objects via *POST /api/db* as well as indexing which puts pressure on db loading and rendering of objects. However, measuring performance of **fylr** on production system is difficult as it's not only fylr doing a lot of tasks, but it usually involved i/o to data base and the indexer. Please let us know if you notice a difference on your production systems.
* Set `fylr.db.maxOpenConn` to 100 in `fylr.default.yml`. Before we had this set to 0 which could cause a lot of connections to be opened on busy systems. In some cases fylr ran out of file handler for new TCP connections.
* **Metadata mapping**: Allow metadata mapping for `Track<n>:SourceImageWidth`. Before this wasn't possible to map due to a discrepancy in `exiftool` between tag listing and actual tag out.
* **Rights management for groups has changed**: Groups do not assign `READ` rights to all members of the same group any more. This is a breaking change if your setup relies on group members seeing other fellow group members without further configuration. This now requires to manually add the desired permissions to the ACL of the group.
* **POST /api/db** does not accept **empty fields** any more if the mask hasn't enabled it. Before it was possible to send uneditable fields of a mask if they were zero. This was harmless but felt inconsistent, so we changed it.
* **POST /api/search: Support localized columns in `_fields` collector**: It uses the same language which is used for sorting (order of users data languages preceded by the optional `language` setting of the search request) as for the collected value. To collect a specific language with no further computation a new `language` parameter can be used.
* **/api/config**: Support `logo_external_url` to store a localized link which is followed if the user clicks on the custom logo in the fylr frontend.
* **2-state boolean**: **fylr** supports saving booleans in 3 states (*null*, *false* and *true*). This update turns booleans into 2-states in searches and for all object renderings. That means, that booleans are now always part of the object's JSON representation even if they are unset in the database. With this change search aggregations will aggregate **false** for booleans which are unset, resulting in a perfect sum where **true** and **false** buckets match the could of the search result.
* **/api/config**: Output of the `produce_config` has better zero values. Arrays and string values no longer have a `null` value but are output as `[]` and `""` resp.
* **Docker images**: The **fylr** docker images are both (`fylr` && `fylr-server`) based on Alpine 3.20 now. Before `fylr` was based on Alpine 3.18 and `fylr-server` on Alpine 3.20. Update `imagemagick` to `7.1.1-33`.
* **/api/pool**, **/api/objecttype**: Omit output of `_acl`, `_tags`, `_maskfilters`, `_transitions` to users with `system.root` or `system.poolmanager` and `system.objecttypemanager` (resp.). Also this limitation is present in **/api/search** responses for all users.
* **fylr backup** & **fylr restore**: Support Events. Events are included in the backup now and also in the restore. For that a new API `POST /api/event/list?skipConstraints=0|1` has been added.
* **`/api/db`**: `_last_modified` and `_created` can now both be set using the API. Before only `_last_modified` was writable and stored in `object.updated_at` from where it was never read. This change streamlines the usage of `object.created_at` and `object.updated_at` in a way that **fylr** will now never update or set `object.updated_at` unless it is set via the API (it is ignored if it is the same as `object.created_at`). `_last_modified` is now for any version either `object.updated_at`, or if unset the `object.created_at`. `_created` is the `object.created_at` of the object with version 1.

### Fixed

* **GET /api/objects**: Fixed rendering `integer.2` columns in *IIIF* manifests and *HTML* output.
* **Rights management for files in reverse nested**: When exporting files from a reverse nested, **fylr** failed to check the permissions properly. The permissions can be given by the top level object if a file is part of a reverse nested object even if the reverse nested object as standalone would not allow access to that file.
* **Rights management for system groups**: If system groups would grant to users, this would not be reflected in **/api/search**. Users not gain the `READ` rights when granted by a system group.
* **POST /api/search**: Collecting of empty fields is now supported. If a field is empty we would skip the value before which could result in unpredictable items counts in the collected field array.
* **Backups of Postgres 16**: When using format `pg_dump` **fylr** was unable to backup databases where the Postgres server was at version 16.
* **`GET /api/db`**: The `_created` date was wrong if the not latest version 1 of an object was requested. In that case, the `_created` equaled the `_last_modified` date of the latest version.

### `_uuid` for nested records

This **API change introduces** a new `_uuid` field for nested records. This `_uuid` is automatically created upon save, so this change is backwards compatible with existing installations.

Before, nested records would never be merged with existing data, so saving a limited mask could lead to unexpected data loss.

Existing nested data is merged, if limited masks provide a `_uuid` for the sent nested records. Each record is filled with values from the currently stored record which cannot be provided by the limited mask.

Users of the API are required to send the `_uuid` alongside with the nested record in order for the server to recognize existing nested. Existing implementations of the API will continue working, as the API behaves like before if the `_uuid` is not sent. In that case the mode for this is *replace*.

To support backup & restore, `_uuid` can be provided for newly inserted nested records in the payload of **POST /api/db** if the url parameter `skipConstraints=1` is set. The `_uuid` is still checked to match **fylr** syntax for the `_uuid`. Strictly speaking this feature is not really required to make restore work, but in case we have any use for a stable `_uuid` in the future it is a nice to have addition.

## Webfrontend

### New

* **IIIF Links**: Added support in the frontend to display custom IIIF Links configured in the base config. If custom links are configured, they will be shown in the object's share panel. These custom links can display the embed code that can be copied to an external page.
* **Nested Tables UUID**: Added support in the frontend for the new fylr feature, UUID in nested elements.
* **Logo External URL**: Now an external link can be configured in the custom logo in the base config.

### Improved

* **Nested Table and Limited Mask**: Improved frontend functionality with nested tables when the mask is configured so that not all fields of the nested table are visible or editable.
* **Main Menu**: Made visual corrections in the main menu.
* **Admin Messages**: Now if a permanent message (tray app message or main menu message) contains only a link in the message, this link will be opened without showing the popup message.
* **Search Queries**: Made visual corrections to the special operators (AND, OR, etc.) to make them easily identifiable.
* **PDF Creator**: Now PDF printing is compatible with the table view for nested fields.

### Fixed

* **MetadataMapping**: Fixed bugs in the metadatamapping when the elements being mapped are within a nested table.
* **System Tags**: Fixed an issue where the frontend attempted to obtain a custom color for system tags when they were displayed in the filter panel.
* **Tag Icons**: Fixed the display of tags that only show an icon in the search results.
* **Nested Tables**: Fixed a bug where if a field within the nested table was read-only, it could cause all fields to be non-editable when adding new elements to the nested table.
* **Asset Broker**: Made visual corrections for assets marked as hires.
* **Export Groups**: Added support in the export manager for asset groups.
* **"About This" Panel on Main Menu**: Updated the "About This" panel in the main menu to require root permissions for display.
* **Filepicker**: Fixed various issues in the filepicker class to make it compatible with fylr. This class is used in plugins like Drupal, Typo3, etc.
* **ACL Manager**: Fixed scaling issues of the ACL popover.
* **CSV Importer**: Fixed a bug where numeric data was not correctly matched when importing multiple rows of a nested table.
* **Event Poller**: Improved the behavior of the WebSocket event poller. Now, if the frontend loses connection with the server, a non-intrusive message will notify the user that it is attempting to reconnect. If the connection is restored, the user can continue using the application normally without needing to reload the web page.
* **CSV Importer**: Fixed a bug where, if indices of a nested element were specified and it didn't have all cells with values, empty values were sent at the end of the array.
* **CSV Importer**: Fixed the search of linked objects when more than one identifier field is given.
* **Custom Validation Errors**: Fixed a bug in custom validation errors check on the frontend.
* **Script Executer**: Fixed the metadata downloader plugin for Script executer. The plugin outputted wrongly formatted strings, producing corrupted CSVs. Also, the filter value feature was not checking metadata values properly.
* **CSS**: Made numerous style corrections in the application.
* **Default Tags**: Fixed the addition of default tags when opening a new object editor and when updating the editor.


# Release v6.10.2 (2024-05-15)

Published 2024-05-15 13:00:22Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.2/fylr_checksums.txt)
* [fylr\_v6.10.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.2/fylr_v6.10.2_darwin_amd64.tar.gz)
* [fylr\_v6.10.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.2/fylr_v6.10.2_darwin_arm64.tar.gz)
* [fylr\_v6.10.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.2/fylr_v6.10.2_linux_amd64.tar.gz)
* [fylr\_v6.10.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.2/fylr_v6.10.2_windows_amd64.zip)

## Server

### Important

* **Sorting improvements**: If you are using fields of type `string` a **re-index is recommended** (see below).

### New

* **/api/eas/rput?skip\_head\_request=1|0**: This new parameter for the `eas/rput` allows to skip the `HEAD` request which fylr performs to check the **Remote URL**. When using `skip_head_request` the `filename` parameter is mandatory. This is useful for migrations from source systems which cannot handle the load fylr produces when requesting `HEAD` on many URLs. Skipping the `HEAD` is now hard wired default for `fylr restore` and available as a checkbox in our front end JSON Importer.
* **/api/search**: Support for `sort.numeric`. With this option, columns of type `string` can be sorted naturally (*1, 2, 10* instead of *1, 10, 2*). This option was present in **easydb 5** but missed implementation in **fylr**. For databases which use columns of type `string` a re-index is required in order to make use of this feature, without re-index the sorting by string columns with `numeric: true` will be ignored.

### Improved

* **Standard rendering**: Some cases of standard rendering were broken due to an over complicated algorithm on how to interpret format configurations for standard rendering. Now, we use a very straightforward interpretation with no exceptions. The format defined by the value will be used for output, no matter which format the following value used. **In rare cases (e.g. nested standard with parentheses or brackets and comma) this might affect how the standard info is rendered**. Most of these cases can be fixed by changing the `comma` format to `space` to restore the previous behaviour.
* **fylr restore**: Improved handling of checks for `--include-password`. Also, allow to restore without purge (only data model and base config are uploaded). Fixed removing the `.lck` file if an error occurs.
* **/inspect/migration**: Add a new option **No Purge**. Also, make **All Versions** the default.
* **/xmlmapping/tags**: Improved mappable tags like `Track1:ImageWidth`, `Track2:ImageWidth`, `Track3:ImageWidth`. This improves mapping capabilities for videos.

### Fixed

* **fylr convert**: Convert images with broken color profiles. If such an error is encountered we ignore the color profile and try again. This fixes issues with some JPEGs where preview production failed. Affected images need to be re-synced using `/inspect/files`.
* **fylr convert**: Support black and white TIFF. For these TIFF a special case has been added where we don't use `magick convert` to read the TIFF but the [Go TIFF library](https://pkg.go.dev/golang.org/x/image/tiff). Affected images need to be re-synced using `/inspect/files`.
* **Re-Index objects on file errors**: If an error occurs on an original file, we now re-index the object. This fixes an everlasting `pending` state in the standard cache which lead to an hourglass icon showing in the standard search result for erroneous files.
* **Event Stream Listener**: Catch panics on startup. In rare cases, fylr would panic at startup due to already closed listeners. This can happen if a 3rd party application tries to quickly re-connect websockets upon a starting fylr with low timeouts.
* **DELETE /api/user|group**: When deleting users or groups, the deletion no longer fails if the record is references as **who** in a **transition**. Now, the relations to the transition are removed upon deleting the user or group. This may lead to empty transitions which do not execute on any user or group interactions. Manual deletion or amendment is needed for such transitions after deletion.

## Frontend

### New

* **JSON Importer**: A new option `"skip_head_request"` has been added when using the "Remote URL" upload type. This prevents the fylr server from making a head request when downloading the file. If this option is enabled, the user must specify the file name in the JSON payload.

### Fixed

* **PDF Creator**: A design issue with nested fields has been fixed.
* **PDF Print**: A bug has been fixed where fields to be printed were not correctly hidden when using the "Select fields" option in the print manager.

### Improved

* **Standard View**: The configuration of the standard view mode in the main search has been refactored. The new configuration panel allows users to show or hide specific elements in the main search display. This gives users much more control over the design of records displayed in the main search.
* **CSV Importer Linked Mappings**: The CSV importer has been improved and now allows the use of the same linked object field for multiple mappings if it is going to be mapped to specific elements within a nested structure. This makes the CSV importer more compatible with CSVs exported from fylr.
* **Specific Nested Indexes on CSV Importer**: Detection of user-specified indices in nested table name columns has been improved. This enhances the compatibility of CSVs exported from fylr with the CSV importer.
* **Tag Editor**: The design of the tag editor has been improved.


# Release v6.10.1 (2024-05-08)

Published 2024-05-08 09:43:27Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.1/fylr_checksums.txt)
* [fylr\_v6.10.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.1/fylr_v6.10.1_darwin_amd64.tar.gz)
* [fylr\_v6.10.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.1/fylr_v6.10.1_darwin_arm64.tar.gz)
* [fylr\_v6.10.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.1/fylr_v6.10.1_linux_amd64.tar.gz)
* [fylr\_v6.10.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.1/fylr_v6.10.1_windows_amd64.zip)

## Important

* **An re-index is required for all affected systems which use inheritance** (see below).

## Server

### New

* **File worker**: Video encoding and thumbnail extraction recipes now have a **manually configurable timeout**. The encoding has a default timeout of `1h` and the thumbnail extraction of `10m`. Timeouts can be configured using a duration string with suffixes `s`, `m` and `h`.
* **/api/objects/.../file/...**: Deliver with **filename** (set in the HTTP headers). The same filename as for exports is used. Downloading files from that URL now suggest the correct filename.

### Improved

* **Backup**: The new `pg_dump` format no longer backups Postgres extensions, so that is is possible to restore such backups without super user permissions.
* **Resurrect stale indexing jobs** after instance restart. If fresh fylr servers are started and some indexing jobs are still in state `processing`, they are now re-queued at startup with state `new`.
* **/inspect/objects**: Show **API-Section** at the top for easier reachability.
* **Email addresses**: In `6.10.0` we included a better email verification, unfortunately that check was quite thorough, so that an actual DNS MX check was performed. This seems desirable for user self registration but not necessarily for the base config and user manager. So, the MX check is now only performed in the user self registration but nowhere else. However, the included syntax checker is still better than what we had previous to `6.10.0`.

### Fixed

* **/api/search**: Sorting by `original_filename` was fixed. This broke after our refactor of the ICU collation strings for `6.10.0`.
* **Indexer**: Fixed an indexing problem for hierarchies with lots of children and inherited linked objects. In affected systems, this bug showed with user visible api errors when using the filter tree. A re-index is required for affected systems.
* **fylr backup**: Fixed backup of users. Before not all user records were included in the backup.
* **/api/eas/zoom**, **/api/eas/iiif**: Acknowledge colorspace & color profile when producing tiles. This was optimized out before, but it broke zoom tiles for **CMYK-JPEGs** on the `original` version which was undesirable.
* **fylr convert**: Fixed supporting `-colorprofile` for `BMP` output.

## Frontend

### Fixed

* **Collection Manager**: Fixed an issue where, under certain circumstances, the collection manager would automatically update, disrupting the user's workflow.
* **Full Screen Detail**: Several fixes have been made to the full screen detail, especially when working with objects that do not contain assets.
* **CSV Importer**: Fixed a bug when importing texts with line breaks, which were erroneously detected as multiple values in a nested field.
* **Editor**: Fixed a bug where not all available masks were obtained in the new editor modal when these masks depended on a certain Tag and this Tag was set as default.


# Release v6.10.0 (2024-04-30)

Published 2024-04-30 14:57:12Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.0/fylr_checksums.txt)
* [fylr\_v6.10.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.0/fylr_v6.10.0_darwin_amd64.tar.gz)
* [fylr\_v6.10.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.0/fylr_v6.10.0_darwin_arm64.tar.gz)
* [fylr\_v6.10.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.0/fylr_v6.10.0_linux_amd64.tar.gz)
* [fylr\_v6.10.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.10.0/fylr_v6.10.0_windows_amd64.zip)

## Important

* This release brings a **forced Re-index** in blocking mode for the first time. **The instance will go into a re-indexing state and thus not be accessible for users until the re-index is done.** This can take anything between a few minutes and multiple hours (depending on the size and performance of your installation).
* **Sorting and searching** of languages with special characters has been greatly improved.
* **/api/schema**: Make loading more robust, skip inconsistencies in fields. If a field has no matching column in the table, loading would fail and crash fylr at startup. This code skips the faulty field (without fixing the root problem).
* **Rights management**: Changed the `ASSET_SHOW` and `ASSET_DOWNLOAD` rights when no versions are set. Before this was allowing all versions, now it is allowing none.

## Server

### New

* Support for [Microsoft Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) in storage manager. This works like our S3 support, just for Microsoft Blob Storage. This works for new storage items only, a migration from storage A to B is not yet included in **fylr**.
* **/api/pool/\<id>/stat?include\_subpools=1|0**: New endpoint to collection file stats (like size in storage) for pools.
* **/api/objecttype/\<id>/stat?include\_subpools=1|0**: New endpoint to collection file stats for pools.
* **fylr.yml**: This new setting can be used to add a RemoteAddr info to all request logs: `fylr.logger.addRemoteAddr`
* **/api/schema?format=svg|png**: Download the data model in SVG or PNG format. This feature was still missing from easydb 5 and is now supported in fylr, too.
* **Custom Data Type**: Added support for `geo_json`. The new column type geo\_json wasn't supported for custom data types. This patch adds the support for `_standard.geo`, and `geo_json` mapping (supports search and export).
* **Datatype `geo_json`**: Support all geojson types, not just `FeatureCollection`. The `geo_json` data type now accepts all types on top level as supported by [Geo JSON](https://datatracker.ietf.org/doc/html/rfc7946).
* **Transitions**: Supports `_owner` (of affected objects) as email recipient.
* **PUT /api/eas?collection=\<id>**: Supports file upload directly into a collection. This uses the same code paths as WebDAV and Hotfolder.
* **POST /api/collection**: Extended by `collection.create_object.plugin` and `collection.create_object.plugin_config`.
* **Plugins for Collection**: For the collection plugin, config is managed by the fylr server. Plugins can employ a new `collection_upload` section in their `manifest.yml` to hook into this feature. This also changes the behaviour in `db_pre_save` callback a little: Now, when using the Hotfolder upload, such automatically generated objects (like a linked image object), plugins are called. Supports `api_user_access_token` in WebDAV and Hotfolder access paths. This adds a new event type `COLLECTION_UPLOAD` to the **WebDAV**, **Hotfolder** and **/api/eas?collection=\<id>** endpoints. These events include information about the file uploaded and the object(s) created. It is also written for each collection `upload_log` entry received from the collection upload plugin.
* **Custom Data Type Updater**: Add `plugin_user[_access_token]`. This patch adds a plugin\_user & plugin\_user\_access\_token to the callback towards the custom data type update. This can be configured in the manifest.yml of the plugin. See fylr-plugin-example for an example.
* **/inspect/system/command**: This new page shows currently running commands for backup & restore started by fylr. It's the place where such running processes can be stopped manually. This also works in multi binary setups.
* **Backup manager**: A new format `pg_dump` has been added. This uses the `pg_dump` utility for backups. This backup can be used for a full restore of **fylr**. Tables not included are `file_queue`, `index_queue`, `fylr_backend`, `oauth2_token`, `object_cache`, `webdav_lock`, `command_track`. However, the backup manager's main purpose is still for support & development at the moment.
* **Produce config**: Expose `--background` in recipe `browserthumbs`.

### Improvements

* **Rights management**: Changed the `ASSET_SHOW` and `ASSET_DOWNLOAD` rights when no versions are set. Before this was allowing all versions, now it is allowing none. If your instance is affected by this, you need to manually enable all versions for the respective rights.
* All pages & emails have been refined and visually improved. Now, emails use a dark theme on readers in dark mode.
* New object loader code to optimise and streamline object loading. A new `fylr.debug.logTimings` has been introduced alongside with this to output a concise overview of timing information of API requests to the console. This knob is also available as a base config, accessible in the frontend.
* **/inspect/files** has a nicer header and improved action features to sync & load files.
* Many improvements in **fylr backup** and **fylr restore**. This makes the migration from easydb 5 easier and more reliable. Deleted objects which are still in the database are now ignored by the backup. Checkout `fylr backup -h` and `fylr restore -h` for an overview of the current set of features. We removed `--user`, `--base` and `--file-api-append-to-url-query` in restore and added `--file-api-access-token`.
* Improved file extension detection for unusual/special content types like `x-ms-bmp`.
* **/api/user/session**: Add `database_locales`. This enabled the frontend to display dates in database language formatting.
* **/api/export**: Remove unset values in filename templates. If a filename template defines a replacer like `%object.title%` which is unset in the actual data, we now replace this with an empty string instead of outputting the literal replacer. We decided its better to use the original filename than something like SID-EAS\_ID as fallback for filename template which return "". This can happen if a template says `%object.title%` and the object has no title set.
* **Custom Tag Colors**: Base config now supports custom tag colors for frontends to use.
* **Plugin Callbacks**: Add `api_user` to callback `info`. With this, a plugin can more easily access which user is running the callback.
* **File worker**: Produce `PNG` files for `.ai` and `.svg` with no `full` version.
* **IIIF tiles**: Transparent sources are now rendering to a white instead of a black background for zoomer tiles. This fixes color flipping from white to black when zooming in.
* **/api/export**: Clean-up custom version calculation, add `contain` as `custom_size`. Fixes the `custom_size` `height` which was not calculated properly.
* **/api/search**: Improved sorting and searching for languages with special characters like Danish and Arabic. **For simple text fields we now use the first database language (base config) to sort on.** Before this was unspecified using a general `icu_collation_keyword`. The `icu_collation_keyword` is not configurable enough for us (no char\_filter), so that we cannot properly sort Arabic. This patch refactors the index to not use a "fields" mapping of Elastic but rather send distinct "properties" where we can prepare the `collation_keywords` already in fylr.
* **/api/search**: Properly sort facets by language terms. This was a long standing problem in our facet implementation which now has been fixed. Special characters should now sort correctly in the filter tree depending on the language they are stored in.
* **Base Config Languages**: Removed custom indexer configuration. This simplifies base configuration of languages. It takes away the possibility to use built-in or custom analyzers from Elastic. It also removes the "variant" support for the icu collation keyword analyzer. So, e.g. it is no more possible to configure "phonebook" sorting for `de-DE`.
* **SAML**: Log into our logger, fixes console output. With the logger re-direction to our console, the SAML error message should now also appear in `/inspect/system/console`.
* **Cache expiration**: This has been improved and is less racy now. Also supports multi binary deployments better.
* `fylr convert`: Rename `--quality` to `--jpegquality`. This was never really supported for anything else but JPEG, so rename the parameter and added some additional checks. Also, expose `--jpegquality` in recipe `browserthumbs`.
* **Better email checks Self-Registration & User Management**: The mail address checks in these places have been improved.
* **Export Custom Versions**: Use *white* background for lost transparent backgrounds in `JPEG` targets and filled space when `--rotate` is used.
* **DELETE /api/xmlmapping/mapping/\<id>**: Introduce a **202** process to warn about collections which still use that mapping.

### Fixed

* Make sure **fylr** does not endlessly create new file entries for plugin ZIP files if a storage location isn't available.
* **Compression has been turned off** for backend file delivery (storage type **file**). This speeds up file production (like zoomer tiles). A new `X-Fylr-Compression` response header is set to show if a response was compressed or not.
* **GPS coordinates** with a negative longitude or latitude have not been correctly recognised by fylr. You need to re-sync affected files to fix the detection.
* **/api/db**: Fixed tag removal in group mode. If multiple tags of the same group where to be removed in group mode the api would complain with error **MultipleChoicesInTaggroup** which is technically correct but did not take into account that the user wants to remove the tags. So, in that case we can accept multiple tags of the same group.
* New event added to support frontend: `ASSET_DOWNLOAD_CONFIRMATION_MESSAGE`. This fixes download with confirmation form where this ASSET\_DOWNLOAD\_CONFIRMATION\_MESSAGE event type is used. This event type was missing in fylr.
* **api/db**: Run local transitions in pools and objecttypes. Due to not fully loaded objects, the transitions configured for pools did not run.
* **File worker:** Fix rendering tiled watermark. The implementation for "tile" watermark settings (in pools) was missing.
* **File delivery:** when writing metadata, set a `24h` timeout. Before this was `3m` which wasn't enough for bigger files over slower connections.
* **Indexer:** Fixed missing re-index cases in hierarchies when parents changed.
* **Import**: Fixed mapping into `double` columns.
* **Group emails in transitions fixed**: Collection emails which are meant for a whole group would fail due to a malformed SQL query. This resulted in emails which cannot be sent.
* **Plugin**: Don't use custom mappings of disabled plugins. The server did not acknowledge the fact that a plugin is disabled and still read its `custom_types` configuration.
* **Rights management**: Check permission for historic objects by checking the latest object's permissions. This was an oversight in fylr's implementation of the rights management in which we wrongly checked the permissions of the old version instead of always applying the permissions of the latest version even to older versions.
* **/api/search**: The index of `pool._level` was 1 too high, so this might have affected API users when searching for `pool._level`.
* **Multi binary deployment**: WebSocket, Cache and other things where not working reliably in multi binary setups (like 2 pods running the same fylr instance in a Kubernetes setup). For that we changed the WebSocket broadcast implementation.
* **/api/transition**: Fixed sending back property `sticky`. `sticky` was stored and loaded and used, but not sent back over the API.
* **Metadata mapping**: Removed `File:BitDepth` from profile as it makes no sense, it's neither "Bit Rate" nor "Frame Rate".
* **Workflows**: Improved grouping of emails for recipient `_pool_contact`. Before all objects in a batch were sent to all pool contacts found in that batch. Now the object lists are split according to the pool contact.

## Frontend

### New

* **Hotfolder Plugins**: Added support in the frontend to display options for the new hotfolder collection plugins. This configuration will be displayed in the settings of the collections that have the hotfolder functionality activated.
* **Hotfolder Collections**: Now hotfolder collections use the new API included in this release to load assets. The server now manages the loading and creation of records.
* **Custom Tag Color**: Added support for custom tag colors, which can be added in the base config and selected in the tag settings.
* **Pool Statistics**: Added a new tab in the pool management panel to display asset statistics by pools. These statistics can show the content of the selected pool or include child pools.
* **Objecttype Statistics**: Added a new tab in the objecttype manager to display statistics of assets that exist in the selected objecttype.
* **Filter Manager on Main Lists**: The filter manager has been added to the main lists; previously, it was only available in Main Search, so it could not be used for secondary object types.
* **Geo Standard**: Added support for Geo Standard in custom data types.
* **Backup Formats**: Added a new "pg\_dump" option in the backup manager.

### Improvements

* **CSV Importer RPUT**: Improved the behavior of image loading via RPUT using the CSV importer.
* **Copy Record Tool**: Improved the functionality of copying a record in the main search. The copied object is now displayed correctly in the search.
* **CSV Importer**: Added the function to search for parent linked objects using fields other than the ID.
* **Admin Messages**: General improvements have been made to the Admin messages panel.
* **User Settings**: Adjustments have been made to the user settings panel. Some fields are no longer mandatory to save the settings.
* **Pool Selector**: If a pool is not available for selection but needs to be displayed to not break the hierarchy, this pool will not be selectable but will allow viewing child pools that are.
* **Filter Manager**: Improved the filter manager to show a notice when no filters are available. Previously, only an empty panel was displayed.
* **Asset Browser**: Improved the info panel in the asset browser to display which version is being shown in the version panel.
* **FullScreen**: Improved version management in the asset browser when viewed in full screen. Bugs have been corrected where the version displayed was not the most suitable for the viewport size.
* **Transitions**: Now the owner can be selected as the recipient of an email transitions.
* **Arabic and Danish Sorting**: Improved the frontend handling of these languages when used to sort elements.
* **Zoomer**: Improvements have been made to the zoomer tool to zoom in the asset browser. These improvements include better visualization of images with transparency and optimizations when using very large images as a source.
* **Password Field**: Improvements have been made to the password fields regarding the show and hide password button.
* **Request Data**: Optimized JSON delivery in requests made by the frontend, reducing the size of requests in certain scenarios such as in large data models.
* **DEV Panel**: Improvements have been made to the DEV panel on the frontend, including the addition of a selector to choose the type of event poller.
* **Shared Collection**: Added new icons to show which collections are shared.
* **JSON Importer Error Handler**: Improved the error messages generated by the JSON importer.
* **Full Screen Detail**: Corrections have been made to the full screen detail panel.
* **Show History on Editor**: Added the possibility to view the history change of an object while in the sidebar editor. Previously, this was only possible if we were in the detail of the object.

### Fixed

* **Base Config**: Fixed how JSON fields are rendered for plugin\_type class types.
* **Datamodel SVG Export**: The generated SVG now opens in a new window.
* **Search Input**: Corrected the double-click on query elements; they can now be modified correctly by double-clicking without mistakenly triggering a search.
* **Hierarchies on CSV Importer**: Corrected the search for parent linked objects by system\_global\_object\_id.
* **Date Inputs**: Date inputs now correctly use the format specified in the settings.
* **Field Facets Sort**: Made corrections in filter sorting. Filters created by custom data types are now sorted correctly.
* **Hide Label On Masks**: Corrected a bug where the "Hide field label" option was not displayed correctly in nested fields.
* **CSS**: Numerous corrections have been made to the app's CSS.
* **EAS Images**: Now the blob data from images is released from memory once the image is rendered on the frontend. This solves memory leak problems caused by the way images are managed on the frontend.
* **Table View**: Corrected an error where rows that should not open in Table View after conducting a search were opening.
* **Base Type Sorting**: Corrected the language selected for sorting base types; now the language configured for the frontend will be chosen.
* **Data Sorting**: Corrected the language used to sort data in the application.
* **Logo Customization**: Corrected a bug where the field to configure the logo in the base config was not displayed correctly.
* **Detail Sidebar**: Fixes the detail sidebar trying to load not ready objects when we just created one but was not yet indexed. Now the detail can wait for indexing.
* **Pool Selector Wildcard**: Corrected the use of \* to search for pools in the pool selector.
* **OAuth Refresh Token**: Corrected the refresh token behavior on the frontend.
* **Polyhierarchy Filters**: Corrected the use of filters for polyhierarchy linked objects. Previously, children filters were not displayed correctly.
* **Date Columns**: Now the date columns in records will correctly use the language configured as the database language, previously the frontend language was used to format dates in these fields.
* **Base Config Upload**: Errors in loading base configs from older versions have been corrected.
* **Color Profiles on Exports**: Corrected a failure when trying to export an asset without specifying a color profile.


# Release v6.9.3 (2024-03-19)

Published 2024-03-19 14:39:14Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.3/fylr_checksums.txt)
* [fylr\_v6.9.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.3/fylr_v6.9.3_darwin_amd64.tar.gz)
* [fylr\_v6.9.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.3/fylr_v6.9.3_darwin_arm64.tar.gz)
* [fylr\_v6.9.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.3/fylr_v6.9.3_linux_amd64.tar.gz)
* [fylr\_v6.9.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.3/fylr_v6.9.3_windows_amd64.zip)

## Server

### Fixed

* **/inspect/migration**: Use `--max-parallel-upload-files 1` to upload only 1 file at a time to avoid race problems.
* **fylr restore**: Fixed version upload error reporting. This problem could happen when using `--max-parallel-upload-files` > 1.
* **Export / Download**: Support files > 4GB.
* **fylr metadata write**: Use `exiftool -api LargeFileSupport=1` to support files > 4GB for downloads.

## Frontend

### Enhanced

* **Add to collection**: The options to add an object to a collection have been added in new locations, such as in the tools of the detail panel and in the fullscreen detail.

### Plugins

* **Connector Plugin**: Some issues in the connector plugin have been fixed when trying to download files from external instances.


# Release v6.9.2 (2024-03-15)

Published 2024-03-15 12:13:36Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.2/fylr_checksums.txt)
* [fylr\_v6.9.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.2/fylr_v6.9.2_darwin_amd64.tar.gz)
* [fylr\_v6.9.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.2/fylr_v6.9.2_darwin_arm64.tar.gz)
* [fylr\_v6.9.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.2/fylr_v6.9.2_linux_amd64.tar.gz)
* [fylr\_v6.9.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.2/fylr_v6.9.2_windows_amd64.zip)

## Server

### New

* **/api/pool/\<ID>/stats?include\_subpools=0|1**: Calculates statistics of file usage in pools and subpools.
* **fylr.yml**: New config option `fylr.logger.addRemoteAddr`. Enable to log the remote address of each request.
* Add **Connector Plugin** to the disk loaded plugins in our Dockerfile.

### Improvement

* **File upload**: If storage is not available, do not create a database "file" entry. This was particularly imminent when using ZIP uploaded plugins in a restored instance without the correct `fylr.encryptionKey` set.
* **Service webapp reverse proxy**: For all data proxied through the main web server (so all api traffic) we turn off compression as it the data is already compressed by the api endpoint. This speeds up responses for file binary data.

## Frontend

### Fixes

* **Presentations**: Fixed a bug in all the tools for moving slides in the presentation manager. This error occurred when trying to move slides in presentations with more than 10 slides.
* **Editor Popover**: A bug has been fixed that caused an error when trying to open an editor popover from a linked object.
* **Multi Inputs**: The behavior of the multi inputs in the application forms has been corrected. Now, when language settings in the application are changed, the multi inputs update correctly.
* **CSS**: Multiple CSS corrections have been made in the application and in the pdf printing.
* **Result Views**: A JS bug that occurred if Search Views were changed too quickly in the Main Search while the search was running has been fixed.
* **Table View**: The message for empty search in Table View Search has been corrected.
* **Search Filters**: A bug has been fixed when trying to sort search filters by name.
* **Date Filters**: The date filters have been limited to only show 10 elements, just like in the other filters elements on filter manager.
* **Multiple Variant Indicator**: Now, if the user does not have the frontend\_features\[asset\_variants] permission, the multiple variants indicator will not be shown in the EAS fields.
* **Hierarchical List**: Resolves an issue that occurs when attempting to access the hierarchy manager during searches that do not have one

## Plugins

### Connector Plugin

* Support has been added in fylr for the **connector plugin**. Additionally, the connector plugin has been updated to support connections between ez5 and fylr instances.


# Release v6.9.1 (2024-03-06)

Published 2024-03-06 14:08:39Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.1/fylr_checksums.txt)
* [fylr\_v6.9.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.1/fylr_v6.9.1_darwin_amd64.tar.gz)
* [fylr\_v6.9.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.1/fylr_v6.9.1_darwin_arm64.tar.gz)
* [fylr\_v6.9.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.1/fylr_v6.9.1_linux_amd64.tar.gz)
* [fylr\_v6.9.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.1/fylr_v6.9.1_windows_amd64.zip)

## Server

### Improved

* **/api/search**: Better algorithm to reduce the best mask filter complexity, requiring less boolean clauses when querying Elasticsearch or Opensearch. In some instances with elaborated rights management settings it was necessary to set `indices.query.bool.max_clause_count` as high eas **4096** to work around an error message. This setting should no longer be needed and the default of **1024** is enough.
* **Go 1.22 / Alpine 3.19**: **fylr** is now built with Go 1.22 and uses [Alpine 3.19](https://www.alpinelinux.org/) in the Docker image.

### Fixed

* **CSV export of tags**: This patch fixes output for `_tags`. If `tag.reference` is set, it is used for the output, if not the `tag._id` is used.
* **/inspect/objects**: Fixed when displaying objects with no masks in the data model.
* **/inspect/system/location**: Fixed disk usage output under Windows when **fylr** is started as a service.
* **DELETE /api/user**: Allow deleting of archived users if the base config is set to *archive* users as default. Now, in this case the server will ask if the user should be deleted or resurrected.
* **/api/export/*****ID*****/start**: Fix a panic which could occur if a plugin was used and certain right management configurations were set.
* **/api/db?collection=ID**: Fix a panic if a user with certain rights management settings would try to create a new object inside his own collection. This happened easily when using drag & drop into the collection in our frontend.

## Frontend

### Improved

* **Top Level Only Button**: The button added in version 6.9 to display only top-level records has been replaced by a selector.
* **Hierarchy Mode View Selector**: A selector has been added in the main search and the list search to choose how to display hierarchical objects. This new selector replaces the “Top Level Only” button included in the previous release and also replaces the old “flat hierarchy” options.
* **CSS**: Numerous improvements have been made to the application's CSS.

### Fixed

* **SVG Download**: Fixed the button to download SVG of a schema; in some occasions, the schema used was not the correct one.
* **Table View**: Corrections have been made when conducting searches using the table view.
* **Audio Player**: A bug has been fixed where the audio player was not displaying correctly in the asset browser when the asset came from a linked object.
* **Group Editor**: Fixed a JavaScript error when trying to load the group editor with a user who did not have certain permissions.
* **Collection Upload**: The error message has been corrected when trying to upload files to collections using drag and drop, and the user did not have permission to do so.
* **Editor Popover**: Fixed a bug where the editor popover threw a JavaScript error on loading, making it impossible to use.
* **Event Manager**: Corrections have been made in the design of the Event Manager, and a button has been added to view the referenced asset in those events that are related to assets.


# Release v6.9.0 (2024-02-28)

Published 2024-02-28 14:15:46Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.0/fylr_checksums.txt)
* [fylr\_v6.9.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.0/fylr_v6.9.0_darwin_amd64.tar.gz)
* [fylr\_v6.9.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.0/fylr_v6.9.0_darwin_arm64.tar.gz)
* [fylr\_v6.9.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.0/fylr_v6.9.0_linux_amd64.tar.gz)
* [fylr\_v6.9.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.9.0/fylr_v6.9.0_windows_amd64.zip)

## Server

### Important

* **Config change** in `fylr.yml`: The config `fylr.services.webapp.tls.letsEncrypt.forwardHttpAddr` has been changed to `fylr.services.webapp.tls.forwardHttpAddr`. You must correct this in your `fylr.yml`. We recommend to add the new option before the update.
* A **re-index is recommended** after the update. We changed the standard text analyzer for fields (see below). Also, if you work with remotely stored files and experience black previews in collections, a re-index will fix this problem. And searching for an object owner was broken and needs a re-index to be fixed.
* If you are using the standard **exec server wait group** configuration provided by us in the `fylr.default.yml`, check out the changes below. The wait groups have been renamed and as such, if you use the wait groups names in your own `fylr.yml`, you **must** check your configuration and adopt this to the new `fylr.default.yml`. If your configuration does not have all the wait groups defined, which are referenced by `execserver: services:`, fylr will not start. The default wait groups are now `slow` `medium` `fast`. Also the new `fylr.default.yml` might put more pressure on your system, as we now allow more queue runners to be active.

### New

* The OAUTH2 Password Flow now also supports `collection`, `email` and `ldap` login methods. Before only `easydb` was supported.
* New system right `frontend_features[asset_variants]`, used by our frontend to allow accessing asset variants.
* New system right `frontend_features[collection.share_anonymous]`, used by our frontend to show anonymous share option.
* New system right `frontend_features[changelog_with_user]`, used by our frontend to show changelog information including the user's name.
* **LDAP/SAML**: Added a base config option to set the **update column for user**. When a user is mapped from ldap or saml we used to use the reference column to find the user in the database to check if he is new or not. Now, the new configuration allows to find the user by email or login in addition to reference.
* **/api/collection**: Add timestamps `_created_at` and `_updated_at` to the API.
* **/api/message**: Add client ids filter. With the new property `client_ids` messages of type "server" can be filtered by the oauth2 client id, the user used to login.
* Server: Add `http` to `https` redirect support for manual configured SSL certificates. This patch brings a forwarding web server listening on http redirecting to https for manually configured certificates (if you are not using Let's Encrypt). The config `fylr.services.webapp.tls.letsEncrypt.forwardHttpAddr` has been changed to `fylr.services.webapp.tls.forwardHttpAddr`.
* **/inspect/system/location**: Show disk usage statistics.
* Support `rw2` RAW **file formats**.

### Improved

* **The hotfolder ignores files with 0 bytes**. This makes the hotfolder more reliable when used with Mac OS.
* Also, add a **base configuration option** to set the wait time in seconds before a file is considered for import by **the hotfolder** it its file size has not changed since the last check.
* **/api/db\_info**: When replying the allowed masks, we returned all masks which are available to the user in all pools. This patch changes this behaviour and checks the masks only for the pool the object tested is in, or the pool if explicitly requested in an url parameter. This fixes surprising "no rights" messages while using the group editor.
* **Improved built-in backup**: Skip backup of events, chunk insert commands at 10MB. This should make our backup (use for debug purposes only) more reliable.
* **Faster re-index**: During re-index we no longer store `OBJECT_INDEX` events. Such events are stored only if indexing happens regularly, outside an re-index.
* **Indexer**: Prevent looping event indexing when disk is full. Since fylr indexes events and events are written when an index error happens, it is possible that we create a loop starting with an indexing error written to db and the following indexing event. If that again results in an indexing error, the writing never stops. Break the loop by looking at the error message ("disk usage exceeded") and in case of indexing type "event", stop the error messaging.
* **/api/search/parse**: Do not execute subsearches with `search: false`. Before,we would execute sub searches although we only wanted to check for errors.
* **/api/user**: Allow API maintenance of **ldap & sso groups** ("automatic"). This patch changes the way we deal with "\_automatic\_auth" in /api/user. Previously these groups were automatically maintained by the fylr server as ldap users login. Since we need to also set them in a restore, we need to change the api to allow setting these automatic groups. Now, \_auth\_automatic info can be written as usual. It is now also required to re-sent the \_auth\_automatic info in order to keep the user group relation active.
* **/api/user**: Output `_groups` for users, this was previously omitted but available in easydb 5. Needed for proper backups of the users in a fylr database.
* **fylr restore**: Rename `--link-versions` to `--upload-versions`, improved help text for this option.
* **fylr restore**: Add `--rename-versions`. With --rename-versions version names can be changed during uploads. The right names as well as uploaded version names are changed. This is useful to migrate **easydb 5** to fylr which use a `video.1920p` whereas fylr uses a `video.1080p` version.
* Do compress `.csv` and `.svg` file deliveries.
* **/api/eas?mapping**: Compile XML from in database JSON for faster mapping.
* **/eas/api?format=long**: Sort all tags by alphabet, so that we have a stable order in the JSON as well as in the XML. `format=long` uses the original duplicate tag name now (not the indexed name used for de-duplication as stored in the metadata map in the database).
* **/inspect/files/file**: Display the interim XML used for metadata mapping.
* **fylr metadata read**: When reading the metadata from **exiftool** this patch uses the xml format instead of exiftool's json format. With that, we are able to map keys which are repeated in the XML to JSON (by adding "-").
* **fylr metadata read**: Removed `-f xml`. Using the XML format from metadata is no longer needed for fylr.
* **/api/db**: **Disallow multiple tag choices**, support group mode. This patch supports group mode for adding tags which are in a tag group of type *choice*. In this case, existing tags of the same group are automatically removed in the group mode. Also, a new error `MultipleChoicesInTaggroup` is included which disallows to send multiple tags of the same *choice* tag group.
* **Login page**: Add link to the register page.
* **/inspect/files**: Refactored action menu. Also add total count to the search result. Added a **Location menu** to filter files by location they are stored in. Faster queuing of copy / move jobs. Allow to only copy / move files without locally producing versions.
* **fylr restore**: Use priority *background* for file uploads. By using a lower prio for file production for fylr restore uploaded files, fylr stays interactive during the processing of these files. E.g. it is possible to upload & configure new plugins during a migration.
* **fylr backup / restore**: Improved `--include-password`. Now, it is stored in the backup if users contain password hashes to be used during restore. If not a restore with `--include-password` fails.
* **/inspect/migration**: Include password is added as restore option.
* **JSON, XML export of poly hierarchies**: Include `_parents` in export. Before the parent information was not output at all since we do not include `_path` in exports. With this patch, the data rendered into `_parents` is less than before as it is not climbing into all parents, but only the immediate once. In that matter it now behaves like when writing the data where also only the immediate parents can be set.
* **Set Password Page**: Improvements for easier usage.
* **fylr restore**: Added `--log-network` (`-n`) to log network. Before `-v` would also turn on network logging which could be quite a lot hiding relevant information.
* **/api/search**: **New tokenizer** to split column type *text* at `_` and `.`. The standard `icu_tokenizer` does not split at `_` and `.` which is not ideal for strings like filenames. This patch changes the provided icu tokenizer to a custom one, using a regular expression based used in easydb 5.
* **/api/search**: Support `include_fields` `_path`, and `exclude_fields` `<file>.technical_metadata` and `<file>.versions`.
* **fylr.default.yml**: Change wait group settings for smoother processing. Rethought wait groups for exec server tasks. Introduce *slow*, *medium* and *fast*. In the wait group *slow*, we encode videos and office docs, generally stuff which takes a lot of CPU. The *medium* group is for image conversion only and the *fast* group is used for plugins and such. **Renaming the wait groups might be incompatible with existing `fylr.yml` overlays!**. Also the queue runners have been increased, we now have 10 parallel high and 18 parallel runners.
* **/api/db**, **/api/search**: **Improved object loading with reverse**. If the loaded mask do not require reverse objects to be loaded, skip loading them. Before this patch, we unconditionally loaded all reverse objects (even dove deep) which could take a long time for bigger hierarchies. This speeds up cases of text view loading 120x (12s -> 100ms) on our test systems.
* **File worker**: If jobs need re-queueing due to a slow exec server, do not set the corresponding file into state `error`. This was a confusing design choice, as that error was only temporary and easily recovered from.
* **/inspect/objects**: When checking the indexed objects, this page renders now a lot faster by omitting the not indexed history objects.
* **File previews**: Use **highest resolution** thumbnail from `RAW` formats. Before we only used a medium size.
* **/inspect**: User select shows more information and groups users.
* Logins with `<system.root>/password` as password work now for all user types including `ldap` and `sso`.

### Fixed

* **/api/session**: Properly add the method & time & oauth client id to the session.authenticated object. Before this was only returning *unknown* as we did not save the info in *oauth2\_token*, but we do know.
* **/api/search**: Make `_owner.user._id` searchable. This requires a re-index.
* **/api/search/parse**: Fixed fylr panic for non root users when the query includes a sub search.
* **/api/eas**: The file api output used *value* and *print* (as exiftool does), but never merged the exiftool output (delivered as keys ending in `Num` for *value*) into one item. Instead the output kept the `Num` which was meant to be an internally used storage format only. This patch fixes the long standing problem and now merged the `Num` values properly into the actual values delivering different output for *value* and *print* where applicable.
* **/api/eas/rput?leave**: Properly store technical metadata. If metadata is sent to eas/rput using the request body, we store the metadata which is provided but did not parse the short form "\_technical\_metadata" out of this. This resulted in a non working zoomer if assets where migrated using `eas/rput?leave` with `generate_metadata` unset or set to false.
* **/api/search**: This patch is an improvement for simple case like "lea?let". The previous code was splitting this into 2 tokens "lea" und "let" which is wrong as the term stored is "leaflet".
* **/api/search**: Fixed standard index settings to work with more than 1 million records.
* **Black previews** of remote files in a collection: The cached version of files would include an empty hash for remotely stored versions. That would lead to an invalid HMAC signature and to black preview pics in collections. This requires a full re-index of affected instances.
* **/api/collection/(splice|remove)**: Fixed not requiring `UNLINK` right for `system.root` users when collection objects where to be removed. Also fixed "splice" with empty object list (for all users).
* **/api/event**: Fixed `format=csv` with `csv_explode` and *null* values in `event.info`. If csv explode (of "info") contained null values, the csv output would panic. Also, no longer JSON encode strings in output.
* Support event indexing for Opensearch `2.12.0`.
* Support metadata of files with huge JSON numbers which overflow Go's float64.

## Frontend

### Improved

* **Search**: button "Top Level Only" replaces the "Flat Hierarchy" option
* **CSV importer**: status panel moved to its own tab
* **Detail**: linked objects in dropdown are dynamically loaded when missing, starting with max. 100 items

### Fixed

* **Search**: fixed bug triggering search on when typing after a query tag was deleted
* **Common**: multi-input fields (e.g. in datamodel editor) had an issue when application language was changed
* **Group edit**: bug fixed when object was already open in editor sidebar
* **Text view**: fix improper rendering
* **Collections**: fix "compare view"
* **Detail**: fix reset of hierarchy lists on selection
* **History**: fix display of boolean values, were always shown as deleted
* **Rights**: asset version names in rights like in other places


# Release v6.8.5 (2024-02-02)

Published 2024-02-02 10:21:43Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.5/fylr_checksums.txt)
* [fylr\_v6.8.5\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.5/fylr_v6.8.5_darwin_amd64.tar.gz)
* [fylr\_v6.8.5\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.5/fylr_v6.8.5_darwin_arm64.tar.gz)
* [fylr\_v6.8.5\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.5/fylr_v6.8.5_linux_amd64.tar.gz)
* [fylr\_v6.8.5\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.5/fylr_v6.8.5_windows_amd64.zip)

## Frontend

## Fixes

* Fixed a bug which prevented the new editor from opening when started from a pop up search.
* Fixed a CSS loading error which might occasionally occur at startup.

## Improved

* Display new video thumbnails quicker after setting a new position.


# Release v6.8.4 (2024-02-01)

Published 2024-02-01 14:48:31Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.4/fylr_checksums.txt)
* [fylr\_v6.8.4\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.4/fylr_v6.8.4_darwin_amd64.tar.gz)
* [fylr\_v6.8.4\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.4/fylr_v6.8.4_darwin_arm64.tar.gz)
* [fylr\_v6.8.4\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.4/fylr_v6.8.4_linux_amd64.tar.gz)
* [fylr\_v6.8.4\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.4/fylr_v6.8.4_windows_amd64.zip)

## Server

## Important

* This release fixes a long standing permissions management bug (see below). Because of that bug, it is **recommended that you do a re-index** after applying the update to ensure permission integrity of the search index.
* Other changes improve the handling of workflows were multiple bugs could be fixed.

## Improved

* **fylr convert**: Faster thumbnail extraction from videos. This is achieved by re-ordering the parameters for `ffmpeg`, so that it knows where to seek to before opening the file.
* **POST /api/user**: Added some clean-ups for email confirmation states if email of a user changes or is removed.
* **Performance improvements** for exec server and file access in general. All requested files where delivered in a compressed format (if requested). For internal copying from into the exec server for file production this could mean a serious performance penalty for larger files, like videos. Fixed by sending most file types uncompressed.

## Fixed

* **Permission management** for objects found in the search was fixed: If an object was saved, using a permission issued by a pool, the object would be indexed using that permission. That permission would persists even after the permission was retracted from the pool acl. This bug affected the searches only, not the object access through **/api/db**. However, by learning about this bug we recommend a full re-index to fix existing wrongly index objects.
* **/api/db**: When executing transitions, make sure to only show each distinct confirmation only once. Before we would show a confirmation for each object of the uploaded batch.
* **DELETE /api/db**: Fix delete loops as result of cascading 202 responses from the server. If a 202 response for the delete policy was followed by a 202 response for transition confirmation, the delete policy was lost for the last confirmation, resulting in an endless loop of 202 responses. This didn't show in our apitests, but in the fylr frontend. Solved by using a *hidden* button in the tasks responded in the 202.
* **POST /api/schema**: Catch looping reverse column definitions. If an object type `object` would link to `asset` (reverse edit enabled), and back to `object` (also with reverse), posting the schema would result in a stack overflow in the server, **crashing the fylr server**. Now, such a constellation is caught by the API and an error is returned.#
* **POST /api/db**: Support storing of `_child_numbering` in group editor. Before, setting the property `_child_numbering` in the group mode of the endpoint was ignored.
* **POST /api/collection**: Fixed acl check when sharing rights. With obsolete versions stored in rights preset, an collection save with a sharing acl could fail, if an **obsolete version** was thought to be required by the granted rights. Fixed by cleaning up the rights (and presets) when loading the collections for the share check. Now, with all ACL checks, the presets are silently fixed.
* **Localization fixes and improvements** for some HTML pages like *change password*.
* **Show login page** for urls which request the anonymous guest login (like a collection) share for system which have the guest access login disabled.
* **GET /api/pool\[/list]**: Check authentication. Before without an authenticated user, these endpoints would panic.
* **fylr restore**: Fixed uploaded pool ids when used in ACLs.
* **POST /api/group**: Don't allow to create **new system groups**, also forbid group type changes.

## Frontend

## Improved

* The behavior of the **asset browser** when loading new assets into the application has been significantly improved. The asset browser will now progressively display **processed versions**. For example, if a video is uploaded, the asset browser will first show the preview as soon as it is available and then display the processed video versions (360p, 720p, etc.).
* The **display of plugins** in the base config list has been changed. Now their internal name is shown for easier identification. The display name is now shown in the detail panel when selecting a plugin.
* The quick access view now shows the asset browser by default.
* Improvements have been made to the application's overall CSS.
* The fullscreen detail view has been enhanced for better performance with large searches. Thumbnail loading has been optimized for efficiency, and the dynamic loading system for objects has been fixed to avoid loading all objects at once.
* The “Show Hierarchy” option has been removed from the table view display options to address performance issues in instances with thousands of nested nodes.
* When performing metadata mapping while uploading new assets, users will now be correctly alerted if any file could not be read properly.
* The “Show history” button in the print manager has been improved.
* The number of objects in the hierarchy view's load more function has been significantly increased.
* The functionality of the main search has been improved, ensuring that changing elements in the detail view using the navigation buttons at the bottom correctly updates the selection in the main search to display the new selected element.
* The functionality of the root menu has been improved, and the application now remembers its configuration (whether the user has it open or closed).
* The use of the EAS Poller in the application has been improved to prevent it from running when not necessary.
* The full screen editor now correctly displays the asset browser when opened.

## Fixed

* A bug in the **input search** that duplicated double quotes in search terms has been fixed.
* The use of the "system\_object\_id" field in the sorting menu has been fixed. Also this field use was fixed on the expert search menu.
* A bug in the **datamodel manager's multiinput**, which caused not all fields to display correctly, has been fixed.
* A bug where the **newly loaded object** was not displayed in the main search has been fixed.
* A bug where an alert to reload the application was displayed during an **object store synchronization**, making it impossible to complete the synchronization, has been fixed.
* The hierarchy view in the detail panel has been fixed. The button to load more items in the list now works correctly.
* The order of options in the **video player's** quality selector has been corrected.


# Release v6.8.3 (2024-01-12)

Published 2024-01-12 13:51:08Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.3/fylr_checksums.txt)
* [fylr\_v6.8.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.3/fylr_v6.8.3_darwin_amd64.tar.gz)
* [fylr\_v6.8.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.3/fylr_v6.8.3_darwin_arm64.tar.gz)
* [fylr\_v6.8.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.3/fylr_v6.8.3_linux_amd64.tar.gz)
* [fylr\_v6.8.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.3/fylr_v6.8.3_windows_amd64.zip)

## Server

## Fixed

* Some **workflows** accidentally ran on DELETE even if not configured to do so.

## Frontend

## New

* A new option has been added in the **mask settings** for **reverse nested tables** to hide the **tools buttons**. This allows hiding the tools button in situations where relational tables are used. Furthermore, if the user does not have the permissions or cannot see any tool, the button will not be displayed.

## Improved

* The **CSS** of the application in general has been improved, including the **PDF Creator** and **PDF printing**.

## Fixed

* An issue has been fixed where **nested elements** with **condensed format** were not displayed correctly.
* The import of **collections** in the **JSON importer** has been corrected for collections that exceed 1000 records.
* A bug in the new functionality for **modifying the thumbnail of a video** has been fixed, when the field to which the video belongs is not visible.


# Release v6.8.2 (2024-01-05)

Published 2024-01-05 09:27:10Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.2/fylr_checksums.txt)
* [fylr\_v6.8.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.2/fylr_v6.8.2_darwin_amd64.tar.gz)
* [fylr\_v6.8.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.2/fylr_v6.8.2_darwin_arm64.tar.gz)
* [fylr\_v6.8.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.2/fylr_v6.8.2_linux_amd64.tar.gz)
* [fylr\_v6.8.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.2/fylr_v6.8.2_windows_amd64.zip)

## Frontend

## Fixed

* Fixed **saving of a base config** with custom produce config settings. This bug has been introduced in `6.8.1` when the right management for class **unknown** was fixed.


# 2023

* [Release v6.8.1 (2023-12-22)](/releases/2023/v6.8.1)
* [Release v6.8.0 (2023-12-14)](/releases/2023/v6.8.0)
* [Release v6.7.4 (2023-11-15)](/releases/2023/v6.7.4)
* [Release v6.7.3 (2023-11-14)](/releases/2023/v6.7.3)
* [Release v6.7.2 (2023-11-03)](/releases/2023/v6.7.2)
* [Release v6.7.1 (2023-10-17)](/releases/2023/v6.7.1)
* [Release v6.7.0 (2023-10-13)](/releases/2023/v6.7.0)
* [Release v6.6.4 (2023-09-29)](/releases/2023/v6.6.4)
* [Release v6.6.3 (2023-09-28)](/releases/2023/v6.6.3)
* [Release 6.6.2 (2023-09-14)](/releases/2023/v6.6.2)
* [Release v6.6.1 (2023-08-10)](/releases/2023/v6.6.1)
* [Release v6.6.0 (2023-08-03)](/releases/2023/v6.6.0)
* [Release v6.5.1 (2023-06-23)](/releases/2023/v6.5.1)
* [Release v6.5.0 (2023-06-22)](/releases/2023/v6.5.0)
* [Release v6.4.0 (2023-05-31)](/releases/2023/v6.4.0)
* [Release v6.3.1 (2023-04-28)](/releases/2023/v6.3.1)
* [Release v6.3.0 (2023-04-05)](/releases/2023/v6.3.0)
* [Release v6.2.5 (2023-03-16)](/releases/2023/v6.2.5)
* [Release v6.2.4 (2023-02-01)](/releases/2023/v6.2.4)
* [Release v6.2.3 (2023-01-12)](/releases/2023/v6.2.3)


# Release v6.8.1 (2023-12-22)

Published 2023-12-22 12:37:21Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.1/fylr_checksums.txt)
* [fylr\_v6.8.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.1/fylr_v6.8.1_darwin_amd64.tar.gz)
* [fylr\_v6.8.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.1/fylr_v6.8.1_darwin_arm64.tar.gz)
* [fylr\_v6.8.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.1/fylr_v6.8.1_linux_amd64.tar.gz)
* [fylr\_v6.8.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.1/fylr_v6.8.1_windows_amd64.zip)

## Important

Due to a problem with our plugin system on Windows, we needed to trim down the amount of data which is replaced into `%info.json%` and included in the payload via stdin. Affected systems were unable to use the plugin system.

For plugins which use base config information from the mentioned sources, it is immanent that they are checked before updating to **6.8.1**. This has been done for all packaged plugins by Programmfabrik. Before, the `%info.json%` (used in `manifest.yml` of the plugin) and the stdin payload, set a `config` property to the full base config json.

Now, only the config of the plugin is included. If your plugin needs more base config information, such as `config.system`, you need to do a callback into the api on **/api/v1/config**. That endpoint also allows to reduce the data returned by using a path into the data, such as **/api/v1/config/system/config/languages** to only output the config of the languages.

Affecting only the callbacks into webhooks, the payload there **does not include any base config** any more as it is unknown to the webhook.

## New

* **/api/schema/commit**: A new event `DATAMODEL_COMMIT` is created when a new data model is committed.

## Improved

* Set **allowed date range for technical metadata** between year 1000 and 9999. This range is supported by OpenSearch. Removing dates outside this range fixes indexing issues with objects.
* **Support file permissions & downloads** for unknown file classes for non-root users. The configuration of permissions for non-root users for unknown file types was not supported before this patch.
* **Plugin support**: The replacements for `%info.json%` has been changed to only include the plugin related config information. This reduces the amount of data passed to the plugin call. Under Windows and inconvenient circumstances, this JSON blob was bigger than the allowed 32k.

## Fixed

* **/api/config**: When used in patch mode it could happen that concurrent access would cause a Postgres dead lock. Fixed by using the same global write lock as we use for the full config post.
* **Indexing error with images** where the create date was not read correctly by exiftool. This patch ignores dates outside the indexable range of 1000-9999. A new attribute IFD0:ModifyDate was added to the list of fields checked for `date_created` in technical metadata.
* Audio recipe: Skip producing versions for audio files with no embedded thumbnail. Before we would produce versions with errors leading to a red triangle in the frontend.
* Email sending for license expiration warnings was fixed. If a license is about to expire, fylr sends out a warning email.
* Email informing about a ready-to-download export does show the correct date now.

## Frontend

* The **full-screen editor** has been improved by adding object **copy tools**.
* A bug has been fixed where the **filter manager** would execute the search a second time after initializing the app. This caused the **main search to run twice** and duplicated the requests for object previews.
* A bug in the **JSON importer** related to loading files with spaces in the name and in `Direct` mode has been fixed.
* The behavior of the **pool manager** has been improved. Now, when the parent of a pool is changed and the list of pools is reloaded, the current pool will be reselected in its new location in the hierarchical list.
* The functioning of **date ranges with textual representation** has been corrected. Now, if the text is changed and is valid, the date will be updated.
* A hint message has been added in the **backup manager** with important information about this manager.
* Support has been added in the frontend for the new `DATAMODEL_COMMIT` event. Now, if a user commits a new data model, other users using the application will be notified.
* An error in the **export manager** has been corrected where the list of **Transports** in an export was not displayed correctly.
* An error in the **export manager** has been fixed where if an export used a plugin that does not have an implementation in the frontend, the button would show an error. Now the user is properly informed that this export cannot be edited.
* The behavior of inputs for **filtering lists** in the application has been improved. Previously, this was blocked when the filtering request was running and did not allow the user to enter more characters. Now the input is not blocked, improving usability and user experience.
* The creation of **shared URLs for collections** in Fylr has been improved. Previously, the `server` parameter was added when it was not necessary, making the URL longer and more complex.
* Fixed thumbnail preview for office & pdf inside the upload area of the "new" dialog.


# Release v6.8.0 (2023-12-14)

Published 2023-12-14 14:44:53Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.0/fylr_checksums.txt)
* [fylr\_v6.8.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.0/fylr_v6.8.0_darwin_amd64.tar.gz)
* [fylr\_v6.8.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.0/fylr_v6.8.0_darwin_arm64.tar.gz)
* [fylr\_v6.8.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.0/fylr_v6.8.0_linux_amd64.tar.gz)
* [fylr\_v6.8.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.8.0/fylr_v6.8.0_windows_amd64.zip)

## Release 6.8.0

## Important

* If you are using a custom file worker configuration with the recipe `imageconverter:reformat`, you need to switch that to `imageconverter:browserthumbs` (see below).
* We stopped shipping a copy of the **embedded resource files** in our download packages. Use the new `fylr resources --copy` command to access resources embedded in the fylr binary instead. For more info see `fylr resources --help`.
* This release deletes all **OAUTH2 tokens**. So a re-login will be required for all users after update.
* **Re-index is advised.** We changed some base mappings, so it is advised to run re-index. Use **/inspect/system** for that.

## New

* **/api/search**: Support `user._last_seen_at` in index.
* **/api/db**: Support column types `number` and `integer.2` in `lookup:_id`.
* **All file urls are now signed** with an *HMAC* signature. Using that, we can save time during the file request by skipping the rights management. Url signature have an expiration which can be adjusted in the base config. **/api/search** and **/api/db** support a new query parameter `file_url_expire=DAYS`. Setting this to `0` causes the Urls to not be signed (that is the old behaviour). For extensible Urls like `iiif_url` and `zoom_url` the signature is part of the path. In addition to passing the signature in the url parameter, clients can choose to pass the signature (`x-fylr-signature` removed from the query parameter to make use of a browser local cache) in the http header `x-fylr-signature` of the request.
* **/api/db**: Support modifier `:append` to add additional text to text fields. Values are concatenated to existing values, if the records don't contain a value yet, it is created.
* **PUT /api/collection/list**: New endpoint to support fast collection injection. Before, this was a single item API and only for `GET` we supported multiple collections. This is used in `fylr restore` to speed up restores of collections.
* **POST /eas/put**, **POST /eas/rput** and **POST /eas/ID** support a new parameter `custom_version_config`. With this parameter `JSON` can be sent to overlay configuration used for the **file production recipes**. Standard produce configuration is set in the base config (or per default settings). Now, this parameters allows a per-file overwrite and extension of the produce parameters. Using this for videos, the recipe parameter `video-thumb-select` can be set to select a certain timestamp to produce the video preview thumbnail.
* **POST /api/eas**: New url parameter `permission_check_only` allows to check if the current user is allowed to use that endpoint. Is essentially running the same permission check as it does if a payload body is received.
* **DELETE search/point\_in\_time**: New endpoint to remove point in time snapshots of the search. This endpoint uses the same payload as for [**OpenSearch**](https://opensearch.org/docs/latest/search-plugins/searching-data/point-in-time-api/#delete-pits).
* **Resource overloading**: A new overlay feature allows to merge mount external resources for `fylr.resources` and `fylr.services.webapp.path`. Files present in the external resources take precedence over fylr embedded files. With this it is possible to inject and overwrite selected files only without needing to copy and maintain a full resource folder outside fylr. The command `fylr resources` was added to manage embedded files and the overlayfs. You can use it to dump embedded files from fylr to disk as a starting point to work with local resources or webfrontend. For more info see `fylr resources --help`. With docker, this might look like: `docker exec fylr /fylr/bin/fylr resources --help`
* **Load all cookbooks from recipe folder**: With this it is possible to inject external recipes using an overlayed resource.
* New config `fylr.logger.wrongPasswordLevel`: This sets the log level for the wrong password message. It also includes the remote address of the requester.
* **ICC color profiles**: Support color profile in image thumbnail recipe "browerthumbs". With this it is possible to configure color profiles in the the file worker configuration. Also, added a place to upload own color profiles in base config. `colorprofile` is also supported for custom rendering using `GET /api/eas/download`.
* **/api/export**: New `file_metadata` parameter to include all metadata of file data in XML and JSON exports.
* New option for metadata profiles: `deep_link_url` allows to embed a deep link url to the exporter file version where the metadata is written to.
* **POST /api/db?dry\_run=1**: New query parameter added. This new parameter allows to execute the json unmarshal & plugin steps without actually saving the object. No data is written.
* Allow `--clip` to be switch on/off in the `image:browserthumbs` recipe. **The `reformat` recipe was removed**. If you are using a custom file worker configuration which uses that recipe, you need to switch to `browserthumbs` after update and set `size` to *0*.
* **/api/settings**: Endpoint was extended to show all capabilities available with the current license.

## Improved

* For files, always output `"eas": { "1": [] }`. Before in some cases we would output `"eas": { "1": null }`.
* **/api/pool**: Support setting a new `_id_parent`. This has been supported before, but only half-baked. Now it is fully supported, with re-indexing of all affected objects.
* **eas/download**: Add trace log with storage url requested for io.Copy. During a bug hunt for an interrupted file delivery we noticed that there is not output of the actual url requested from the storage backend. Added this in trace level, so in situations like this, debugging is easier. The bug mentioned turned out to be a network problem outside fylr's scope.
* `_path[]._standard.1.eas`: In such renderings, only render first file. This helps reducing the size of the `JSON` for heavy `_standard.eas` objects. Multiple eas objects in `_path` should not really be needed for frontends, so we do not need to output them.
* **Collection Sharing**: The sharing email now mentions the sharing user name.
* A new environment variable `FYLR_CONVERT_VIDEO_MP4_THREADS` can be used to limit the number of cores which `ffmpeg` uses during encoding.
* `fylr convert` got a new `--video-ffmpeg-params` which can be used to fine tune the video encoding by ffmpeg. This is available in the recipe `video:resize`.
* `fylr.services.webapp.reverseProxy.custom`: Also match the scheme for the custom reverse proxy config. Before the source scheme was ignored.
* Improvements to `fylr backup` and `fylr restore`.
* Fixes & improvements for emails, login and register pages.
* **/inspect/files** got a new form field for filename extension. This page also got a lot faster by an improved loading technique.
* **/api/export/list**: Optimise file loading so that bigger export lists load a lot quicker.
* **File loading got faster**: Using a cache column `technical_metadata`, file loading is much faster in places. Especially if data bases contain files with lots of metadata, this new cache column improves loading speeds for objects containing such files. This new cache column also lowers the memory pressure caused by fylr significantly. In our tests, the data read from the database was reduced to a tenth of the original size (8 MB -> 800 KB). The initial update for that column can take a while during fylr startup.
* Plugins can now use full file data during `db_pre_save` callbacks. With this it is possible that code in a formula plugin accesses available file information.
* Janitor for session tokens: A new janitor for session tokens cleans up the `oauth2_tokens` table. This table can grow huge over time and fylr had not cleaned that up in prior versions. The migration step for this release deletes all **OAUTH2 tokens**. So a re-login will be required for all users after update.
* **/api/user**: Support for more columns to search for and sort on: `state`, `_last_seen_at`. **Requires a re-index**.
* Changes the **recipe replacements** `%_source.metadata._technical_metadata.KEY%` to `%_source.technical_metadata.KEY%`. Before we supported replacements of all metadata, but that was unused by our recipes.

## Fixed

* **Rightsmanagement**: Checking the `standard` mask for pool rights was not implemented correctly. fylr would use the **`standard` mask for the pool** in which the right was defined, and not the pool in which the right was used.
* **/api/search**: Fixed wildcard search on analysed fields. If a string "*02-abc-def*" was used on an analysed field, the splitting, normalising and putting the search together would fail and end up with an empty search, matching all objects. This case was implemented only for strings which yield only one token and otherwise the wrong empty search token was produced.
* Fixed a **cache race problem** which prevented **Sqlite** backends from purging properly.
* Improved callback impact from plugins to the API when using **Sqlite**. **Sqlite** only supports one writer, so any write transactions during a plugin call are impossible. This patch does not write the users browser language if unnecessary.
* **/api/objects**: Fix `IIIF` & `HTML` formats for models with reverse. When reverse was included in objects for `IIIF` or `HTML` rendering, fylr would panic with "langs not set".
* **/api/db**: Fixed `lookup:_id` for changed column types. In certain situations with column types changed (e.g. from loca text to normal text), a consecutive lookup could cause a panic and fail.
* **Video files**: If `ffmpegthumbnailer` isn't available (like on Windows), videos which are not seek-able failed to produce a thumbnail. Fixed this by using `ffmpeg` with a fallback to a fixed early frame selection if an error occurs during the "significant change in scene" selection.
* Formatting of MM/YYYY dates in some locales has been fixed.
* **Use the fylr system console** for Indexer logging. If `fylr.elastic.logger` was set, the log was directly written to Stderr instead of using our wrapper to pass it to the **/inspect/system/console**.
* Export: Fixed transports which contain deleted user's emails.
* **Startup**: If a language `und` is set without explicitly setting region, date and time format, we would error at startup during base mapping index creation. This is now fixed by setting default languages in such a case. The error is still there and can be found in the logs.
* **Remote Addr**: Use `x-forwarded-for` http header to find the address the request is originating from. In most setups, this fixes the IP based group filter. This should fix cases where the group IP filter doesn't work because of a reverse proxy sitting in front of the fylr api service. Even fylr's own reverse proxy didn't get this right and changed the IP address for the group filter to the local callback address.
* **/api/search**: Fixed sorting of standard info. This was broken in some cases and errored out with a "painless script error" in OpenSearch backends.
* **Callback `db_pre_save`**: Improved read back data from plugins. This new code fixes a case where we did not catch an aborted connection from the execserver, cause the returned JSON looked perfectly fine. For some reason the error which is send after the JSON as plain text never makes it to the client. Using an io.ReadAll AFTER the json encoding fixes the problem as we receive an err from that function: "unexpected EOF".
* Improved & fixed cases in Import-XML-Mapping.
* **Windows**: Fixed a bug when logging in via ldap with "log steps" enabled in the base config. If the **ldap entry contained a NUL** character, fylr would panic and login would be denied.
* **/api/pool**: Do not update `is_system_pool`. The previous versions would set `is_system_pool` to false even if a system pool was stored. This will be fixed by a migration step. System pool **system:root**, **system:standard**, **system:none** will be set back to `is_system_pool: true` in case they had been changed.

## Frontend

* A new feature has been added to change the **thumbnail of videos**. This new feature can be found in the video player when viewed from an editor. It allows users to **change, view, or reset** the thumbnail of the current video.
* Two new buttons have been added for videos in editors, allowing users to navigate the video **frame by frame**.
* Support has been added in the **pool manager** to change the **parent pool**.
* A new option has been added in the **group editor** for editing nested elements. This new functionality allows finding nested elements that **exactly match** all the specified values (including empty ones) or only those that match the indicated values.
* Support for the **new color profile functionality** in the **export manager** has been added. This new option allows exporting assets by choosing the color profile.
* A new option in the **group editor** for text fields, `append`, has been added. This new functionality allows adding text following the text already contained in the fields affected by the edition.
* A new **GIF player** has been added to the asset browser; now, if the asset being viewed is a GIF or webp, this player can be activated to view the animation in the case of animated files.
* **Image loading** in "Standard View" mode has been enhanced; the server will now be requested to provide the version that best fits the size of the objects in the search.
* Image loading has been improved using the new function of **signatures** on them, allowing the frontend to improve the performance of image loading.
* A new option has been added in the export manager to allow exporting **all metadata in JSON and XML exports**.
* A new fixed field has been added in the **metadata export profiles**. `Deep link URL` – if this field is used, the deep link of the object will be exported.
* Improved behavior of **nested fields** configured as `Append only`. Now, rows that already existed in the table will be shown as readonly fields, and only adding new fields will be allowed.
* Numerous corrections and adjustments have been made in the **CSS**.
* A bug in the permission settings for **shared collections** has been corrected.
* A problem has been corrected where some tags were not displayed correctly in the **metadata mapping editor**.
* Fixed an issue where the server parameter was sometimes erroneously included in URLs for **sharing objects**.
* The user type selector in the user manager has been corrected, now correctly displaying `SSO` and `LDAP` options.
* Users will no longer be asked to reload the application if a `BASE_CONFIG_UPDATE` event from a **plugin** is detected.
* Improvements have been made in the CSS of the **pdf-creator** to reduce design mismatches between the editor and the final PDF.

## Plugins

## fylr-plugin-formula-column

* Fixed writing events if the code contained an UTF-8 character like "€".


# Release v6.7.4 (2023-11-15)

Published 2023-11-15 14:55:02Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.4/fylr_checksums.txt)
* [fylr\_v6.7.4\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.4/fylr_v6.7.4_darwin_amd64.tar.gz)
* [fylr\_v6.7.4\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.4/fylr_v6.7.4_darwin_arm64.tar.gz)
* [fylr\_v6.7.4\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.4/fylr_v6.7.4_linux_amd64.tar.gz)
* [fylr\_v6.7.4\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.4/fylr_v6.7.4_windows_amd64.zip)

## Release 6.7.4

This release is tiny, it fixes a bug and adds a button.

## New

* Add a button in **/inspect/queues** to empty all new jobs from the file worker queue.

## Fixed

* **/inspect/files**: Fixed selection by **status**.
* **/eas/zoom**: Support **sizeNNN** parameter in url path. We missed to support that one. It causes fails to produce the zoomer tiles for levels > 100%.

## Frontend

* **New**: The **asset browser** has been added to the **quick view** panel. It is now possible to view the asset browser with the assets of an object when using the **quick view** on a **linked object**.


# Release v6.7.3 (2023-11-14)

Published 2023-11-14 15:08:08Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.3/fylr_checksums.txt)
* [fylr\_v6.7.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.3/fylr_v6.7.3_darwin_amd64.tar.gz)
* [fylr\_v6.7.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.3/fylr_v6.7.3_darwin_arm64.tar.gz)
* [fylr\_v6.7.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.3/fylr_v6.7.3_linux_amd64.tar.gz)
* [fylr\_v6.7.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.3/fylr_v6.7.3_windows_amd64.zip)

## Release v6.7.3

This release is a maintenance release which improves the reliability of *fylr* and fixes some important bugs. It also adds more features to **/inspect/files**. Also in this release is the support of the file extension **JFIF**.

## New

* Support **JFIF** file format. This format is essentially a JPEG with more fixed configuration. This change adds recognition for **.jfif** extensions.
* Base config: The **login info text** now allows **Markdown** format. With this, the information for the user on the login page can be formatted with basic attributes like **bold** and *italics*.
* **/inspect/migration**: Add a new feature to the restore to **link versions** from the source and do not produce them in the restored instance. Also, add `--upload-ignore-files-with-errors` to make the restore more robust.

## Improved

* **/inspect/files** got some new buttons and a clean-up. Also, duplicate entries when searching for *parents* and *children* are now removed. A new feature allows to resync all files found in a search. Because of that the pre-defined searches for "Original in status done" and "Files in error state" have been removed. For **status** and **version** pulldowns we added the current database counts. The **version** pulldown allows to filter for **original** now.
* **Faster file workers**: reduce clipping path metadata check. fylr metadata is not compiling **has\_clipping\_path** any more by default. The new parameter `--clipping-path` will tell it to run `magick identify` in order to determine whether a **TIFF** has a clipping path or not. The recipes for image conversion have been adapted to only ask "fylr convert" to `--clip` if the conversion is **TIFF** -> **PNG**. Before this was also done for other **TIFF** -> \* conversions, but since we are cropping background it really only makes sense for **PNG** target.
* Show a better error message if **fylr** doesn't start due to a misconfigured license file.
* **/inspect/migration**: Add a checkbox to use `--link-versions` for fylr restore. With this, versions can be **linked from the source** and do not need to be produced by the restored instance, this is a helpful feature for test migrations.

## Fixed

* **Login of guests** has been fixed.
* **Distorted colors** of downloaded files in *RGB* format with applied color profile have been fixed.
* **PDF** file worker now uses the configured temporary working directory in the exec server and no longer the OS temp dir.
* **fylr restore --continue** now remembers ids of restored metadata mappings. This avoids an error which occurred while restoring collections with mappings (with the use of --continue).

## Web Frontend

* A **new search field** has been added in the expert search to search for text in the field **metadata\_fulltext** of assets, allowing searches within the text of documents if it has been indexed.
* **Number inputs** with default values in the **base config** are now displayed correctly, using placeholders.
* A new option has been added when **printing PDFs** to include the **change history** of objects at the end of the PDF.
* Corrections have been made to the **filter panel** in the main search.
* Corrections have been made to the "individual pools" option in the collections configuration.
* The representation of **wildcard searches** in the query badges of the main search has been fixed.
* **Sharing searches** via URL has been corrected, now all search parameters are transferred correctly.
* Error handling has been improved in the datamodel section when using **objectstore**.
* A check has been added when using the **CSV importer** to import **hierarchical objects**; if a parent is specified and does not exist, the user will be notified.
* An error has been fixed when using lookup:id in the **JSON importer** in objects that contain assets configured by URLs.
* A bug where multimedia playback was not stopped correctly in **fullscreen mode** when changing objects has been fixed.
* Now, when changing objects in **fullscreen mode**, the selection in the main search will change according to the object being viewed and the search view will be scrolled to the selected object.
* Fixed a bug where files with filetypes not recognized by fylr could not be downloaded. Now, these files can be downloaded and exported in their original version.


# Release v6.7.2 (2023-11-03)

Published 2023-11-03 10:47:00Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.2/fylr_checksums.txt)
* [fylr\_v6.7.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.2/fylr_v6.7.2_darwin_amd64.tar.gz)
* [fylr\_v6.7.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.2/fylr_v6.7.2_darwin_arm64.tar.gz)
* [fylr\_v6.7.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.2/fylr_v6.7.2_linux_amd64.tar.gz)
* [fylr\_v6.7.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.2/fylr_v6.7.2_windows_amd64.zip)

This is release is a bugfix release and it is recommended for all users. The update does not require a re-index.

## Fixed

* **/api/schema, /api/mask**: Retrieving an old version of a data model (not CURRENT or HEAD) would use the *internal id* instead of the actual *version* of the model to retrieve data. In some databases the model ids have gaps, so that this bug shows during a full initiale synchronisation of an object store. This fix also adds more checks and indexes to newly created databases for consistent model storage.
* **Base config load & save of locations**: This bug showed on all instances after the update to 6.7.0 and resulted in lost default storage configurations. After setting and saving the storage locations again in the base config, the fixed bug showed only after locations where renamed using the location manager. The bug fix makes sure that renamed locations are handled properly and not losing their settings in default location settings again.
* **Windows: Fixed sending of emails**. The compilation of emails was broken since we introduced the embedded resources in 6.7.0. Fylr which still used the disk based resources where not affected by this bug.
* **Concurrent access** to **/api/config** with the file worker queue not fully done, could result in a full panic and crash of fylr. The panic says *concurrent map writes*. This was fixed by protecting the access to GET **/api/config** using a mutex.
* **Custom Logo in Emails** was fixed. This patch brings the proper template to show the custom instance logo in emails.
* **Login**: During login, explain a non privileged user that he cannot login **due to licensing issues**. Before this problem was hidden behind a generic login error.
* Export in **CSV format**: Fixed exporting of `_system_object_id_parent` and `_tags`.
* **/api/suggest**: Don't include delete objects (for fields and linked objects suggestions) in the results.
* **/api/preset**: Fixed permission check for users with the `system.rightpresetmanager` right to be able to save presets.
* **Collection sharing**: Some share links required a double login in order to access the collection. This was fixed, only one login is required now.
* **Loading and indexing of collections** could be broken if a previously configured *create object* setting which uses default tags was deleted. After that, the loader would panic and not be able index or load affected collections any more.
* **Colorprofiles are now properly stored** in the image metadata if `--strip` is used. That is the default in our standard recipes. So now, the default profile **sRGB IEC61966-2.1** is mentioned in the metadata.
* **Fixed formula columns plugin** (and other) when used in object types with the new data type `geo_json`.
* **fylr restore**: Support custom payloads where no `technical_metadata` is set in the JSON payload. Before, restore would panic.
* also see Frontend, below

## Improved

* If during **startup**, configurations are misconfigured in `fylr.yml`, a proper error instead of a panic is shown.
* **Synchronisation of files** during the file worker job `sync` was sped up by adding an index to the database. This problem most prominently showed in instances with more than 100.000 files.
* **fylr restore**: Improved generation of file names for uploads. If the JSON payload defines an `extension` and the filename has a none or another, the JSON defined `extension` is added to the filename.

## Frontend

* The user CSV importer has been updated and now allows importing passwords from a CSV.
* The search bar now displays more clearly when a wildcard is being used in the autocomplete popup.
* Metadata mapping for image series within nested fields has been improved.
* \#69864: Linked object filters have been fixed to work correctly with hierarchy object filters.
* The shared collections panel has been improved, and pagination has been added. If there are more than 100 collections in this panel, they will now be paginated. This solves a performance issue on instances with thousands of collections.
* Number fields in the CSV importer have been corrected. They were not imported correctly when multiple numbers were included in the same cell.
* Improved the behavior of date range fields using text representation in the CSV importer.
* Fixed an error when loading the transitions panel.
* The linked objects panel in quick access has been improved to support linked fields configured in the data model as expert search or filter. Previously, only those with expert search enabled were displayed.
* Added support in the CSV importer for finding tags by shortname and reference.
* The detail sidebar has been improved. Now, the mask used for each object type is remembered. Previously, if you changed the object type, the saved mask was lost, and the default mask was used.
* The filters section in the CSV importer has been improved, allowing more options for filtering rows.
* Fixed an error in the badge for linked objects in the search input.
* A new option has been added to the system fields configuration table in the mask editor to hide all system fields that are not represented in other rows of the table. This allows creating masks that completely hide the footer, for example.
* The "Select language for each field in editor" option in the language panel now also affects system multilanguage fields.
* Fixed searches in quick access (like Created today) now use the "Resources" filter like any other search.
* Fixed GeoJsonColumn editor input when there is no GeoJson Plugin installed on the instance. Now it will show a JSON editor.


# Release v6.7.1 (2023-10-17)

Published 2023-10-17 07:42:45Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.1/fylr_checksums.txt)
* [fylr\_v6.7.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.1/fylr_v6.7.1_darwin_amd64.tar.gz)
* [fylr\_v6.7.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.1/fylr_v6.7.1_darwin_arm64.tar.gz)
* [fylr\_v6.7.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.1/fylr_v6.7.1_linux_amd64.tar.gz)
* [fylr\_v6.7.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.1/fylr_v6.7.1_windows_amd64.zip)

## In case of problems after fylr update to v6.7

### fylr might forget its location defaults

Symptoms for that are: Uploads do no longer work. And the location defaults just all display `- not configured -` (In the Base Configuration - File worker). ([Screenshot](https://github.com/programmfabrik/fylr-gitbook/blob/main/_assets/images/forgotton_location_defaults.png))

Fix: configure the location defaults again. In almost all cases this should be trivial. If you have multiple locations that are ambiguous, check their contents to see what they were used for.

### Webfrontend path not found

fylr does not start with: `Error setting default for config: Webfrontend path not found: open /fylr/files/webfrontend/index.html: no such file or directory`

Fix: remove the line `path: "/fylr/files/webfrontend"` from fylr.yml. It is below `webapp`.

### Unable to open resource file

fylr does not start with: `ERR Unable to load [...] error="Unable to open resource file [...]"`

Fix: remove the `resources:` line from fylr.yml. Resources are not included in the container any more but are included in the fylr binary file. There, they are found automatically... if you do not specify a path in fylr.yml.

Any questions / bugs: <support@programmfabrik.de>

## Fixes

* startup: prevents panic if no build info can be found in web build or go build


# Release v6.7.0 (2023-10-13)

Published 2023-10-13 10:47:13Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.0/fylr_checksums.txt)
* [fylr\_v6.7.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.0/fylr_v6.7.0_darwin_amd64.tar.gz)
* [fylr\_v6.7.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.0/fylr_v6.7.0_darwin_arm64.tar.gz)
* [fylr\_v6.7.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.0/fylr_v6.7.0_linux_amd64.tar.gz)
* [fylr\_v6.7.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.7.0/fylr_v6.7.0_windows_amd64.zip)

## Important

* **License management** is now finally activated and there is no opt-out anymore. Please contact our support if you have not yet obtained a license.
* This release brings the new data type `geo_json`. Elasticsearch supports the new features only with a paid license. As an alternative fylr now supports [Opensearch](https://opensearch.org/), too.
* A **re-index** is recommend due to many changes to the index. Go to `/inspect/system` to trigger that.
* The **fylr** binary now embeds the webfrontend code and the contents of the resources folder. It is no longer necessary nor advised to reference `webapp: path:` or `resources:` in your `fylr.yml`. These configuration lines should be removed, unless you are a developer and working with fast changing code for the webfrontend.
* **fylr** does not implicitly default to `-c fylr.yml` any more. If you relied on this you need to start with `fylr server -c fylr.yml`.
* The **fylr docker image** contains an explicit list of easydb plugins now, which are included in our distribution. Before, we used a wildcard to include all easydb plugin. This change assures that only plugins are included which are known to work with fylr. Nevertheless some of the plugins might be subject to additional licensing.
* A **Favicon** can be uploaded in the base config now.

## New

* **New data type** `geo_json`. This new data type is compliant with the [Geo JSON Standard](https://geojson.org/). This data type is supported in a new `_standard.geo.1` collector which can be enabled in the mask management. The **/api/search** supports new aggregation types `geo_bounds`, `geotile_grid` and search filter `geo_bounding_box`.
* **Standard info** has a new option `stop_if_set` which allows the **standard rendering to stop** at the first set value of a list of fields.
* Mask management has a new option to **sort nested by filename** of the first asset in the nested.
* **Standard info** can now also render the file name of the type `file` in the standard info text.
* **/api/event** + **/api/search**: Support search by `objecttype` and `system_object_id`.
* Group management allows to **auto-assign users** based on system groups. Together with the **IP filter** of that group, groups for intranet and internet users can be created.
* For groups, the **IP filter** gained an **exclude** option which reverses the logic of matching.
* **Support** [**Opensearch**](https://opensearch.org/) **as indexer**. Opensearch is a fork of Elasticsearch 7.17.0 after they changed their license away from true Open Source. fylr automatically recognizes Opensearch backends and changes mapping and other queries automatically. In our tests Opensearch performs like Elasticsearch with no noticable differences. We will continue to support Elasticsearch. Opensearch is our new standard backend for our automated test suite, as it has Geo support built-in.
* **/api/transition**: Added setting `who_not` to **revert the match** for users and groups. This allows to define a workflow which is executed if the given **users & groups don't match** the currently logged in user.
* File worker: We now support importing `TIFF` with clipping path. If such a clipping path exists, the image is cut out and the background is left transparent. For existing `TIFF` this requires a re-produce triggered via `/inspect/files`.
* **/api/db** can now **match nested records partially** (if keys are unsent in the payload) in group mode. With this, a nested can be modified while ignoring during columns for the equality check.
* Support **sorting by original filename** in nested records.
* Support **color profiles for thumbnail** generation. You need to re-sync your thumbnails for this. The current support automatically uses `sRGB_IEC61966-2-1_black_scaled` with no user visible option to change this. If you need this in the base config let our support know. This improved colors of thumbnails if the original uses color profiles which are different from sRGB. The underlying `fylr convert` command gained a `--colorprofile` option with a bunch of built-in profiles to use.
* **/api/config**: Support for browser `favicon`.
* **/api/search**: Support new subfield `.metadata_fulltext` for type `file`. This can be used from inside the query language too.
* Lots of bug fixing for `fylr backup` and `fylr restore` will allow more instances to be automatically and easily migrated from easydb 5.

### Webfrontend

* Added a checkbox to reverse affected users or groups in workflows.
* Custom icons can now be configured for objects that have no assets; this icon will be shown in the standard view of the object in the search.

## Improved

* **WMF** and other vector formats now support transparency. Affected files need to be re-produced.
* **/inspect/users** show the mail schedule of a user.
* **fylr backup** + **fylr restore**: Fixed and improved many cases where the previous version would not perform well (backup & restore of e.g. publish, xmlmapping, plugins, intra- & internet groups). Also, token renewal is now automatically supported via the Go stdlib. Also, the base config restore will not overwrite default locations, logging & purge settings. Also, reference duplicates for base types are avoided. Restored eas files will contain a reference URI pointing back to the source of the file (url + eas-id + version).
* Prefer **attached preview images** over embedded base64 encoding. This fixes issues with Outlook and other mail clients which were unable to display embedded images in **mail notifications**.
* **Better language & locale support**. New settings in the base config allow for a finer configuration of locale settings. We now separate date, time and number formatting. New options include a number format `1'234'567.89`.
* **/api/db**: Support **partial matches in nested** records. By not sending a nested column it will be omitted. Before we required all values to match against the current record. Now it is possible to remove e.g. a keywords by ignoring the accompanying description.
* New `fylr.debug.inspectEnableElasticIndices` enables a page in **/inspect/elastic** where Elastic indexes can be listed and deleted.
* Setup default logger in `fylr.default.yml`. Before, the **zerolog**-Default was used which only outputs the time of an event with no date.
* **Export**: Relax data export if files are in `error` state. With this patch, files in `error` state are no longer skipped, if only their data is exported. Before the export would fail in such cases, leading to unexportable data.
* File production: Do **not produce videos bigger** than the original size. This was only supported for images before.
* **/api/search**: **Filtering by the metadata of a file** (like the PDF text) is now possible using the new subfield `.metadata_fulltext`. Works in query language too.
* **/api/mask**: Add `custom_settings`. This can be used by front ends to store custom information, we have the same for columns and other data.
* The **fylr binary** now includes the web frontend of fylr. It is no longer necessary to reference this in your `fylr.yml`.
* **fylr** does not automatically load a `fylr.yml` from the same directory the binary is in. It only uses the built-in `fylr.default.yml` at startup, unless a `fylr.yml` is explicitly mentioned on the command line (using the `-c` or `--config`) option.
* **Fixed creating PDF** with Microsoft fonts like `Arial`. They are now included in the fylr docker image.
* Improved error reporting if an **S3 volume** cannot be connected.
* **Windows**: Calling **soffice** for previews of **Office documents is now more reliable**. We use `--safe-mode` to not get any hidden UI which could block the file preview production without notice.
* Use `pdftoppm` from the [Poppler utils](https://poppler.freedesktop.org/) to render page previews of `PDF`. This is much faster than the previously used `magick convert` (which delegated this to `ghostscript`) and has better quality. Existing `PDF` need a re-produce if you want to update them.
* The `/inspect` utility to **backup and restore** fylr and easydb 5 instances is now called **Migration**. The URL for that tool was changed to `/inspect/migration`. This was done for a clearer separation from `/inspect/system/backup` which is the *database dump to storage* solution to create backups of the entire database (currently mostly used for support).
* Enhanced documentation in `fylr.example.yml`.
* **/api/db**: Fixed removing nested entries with zero values in group mode.
* Login: **Don't allow users with unconfirmed emails** to login. However, these users can still start the forgot password process. Also, system users are unaffected by this check.
* `fylr restore` no accepts `--base-config -` to skip restoring the base config. Furthermore, settings like `default_locations`, `license` and others are not restored.
* Improved **design & layout of the mails** fylr sends out.
* Changed default **video sizes** to: 360p, 720p, 1080p.
* **Allow size configuration up to 10000px** for images and videos (before the limit was 2000px).
* **/api/plugin/manage**: Add date fields `created_at`, `updated_at` and `last_checked_at`.
* **Improved error message** if storage cannot be connected.
* Introduced new **LookupNotFound** api error for `object`, `file`, `tag`, `collection`, `group`, `user` lookups. Before this was handled by the generic error handler.
* Support for **ARW** files (Sony RAW format).
* **Metadata mapping supports** the date format "2017:05:22 16:07:28Z" which can fix some imports.
* **/inspect/files**: Re-sync file queuing got a lot faster by using in database only queuing.
* **Windows: Make office conversion more reliable**. LibreOffice under Windows would sometimes start a UI (despite --headless) and also return immediately to the cmd line without producing the interim PDF which is needed when converting PDF to images. With `--norestore`and `--safe-mode` command line options, we try to work around these problems.
* Auto-detect `TIFF` clipping path & use when converting to `PNG`. This cuts out a transparent background for such images.
* **/api/config**: The default location names now only use `name` of the location (and no longer the `id`) for better compatibility in backup & restores as the IDs are unpredictable.
* **/api/eas/rput**: **improved automatic filename detection** from the remote HTTP headers. This includes an ISO Latin compatible reading as well as an improved Docker image which now includes mimetypes for improved recognition.
* **/api/plugin/manage**: Ensure top level dir in an uploaded **plugin ZIP is named like plugin**. This prerequisite was not checked in previous versions of fylr. The top level directory of a plugin must match it's name. If not, the file delivery fails.
* **/api/config**: Extend `license:info` to **include a validation block**. The new `license:info.validation` shows information about the compiled license validation. This patch also refuses uploading a license with an unverified signature. Also, uploading the JSON as string is no longer possible.
* **/api/schema**: Allow to **delete object types** even if they are used in transitions. This unlinks the object type from the affected transition.
* **Index**: include `facet` only fields in index data. Before the index was only getting the field if `expert` or `fulltext` was set.
* **/api/config**: Added `company`, `department`, `last_name`, `first_name` and `phone` to the mappable **LDAP & SAML** fields for user creation and updates.
* **/api/search**: After **adding database language** in the baseconfig, a re-index is needed. If none has completed yet, the Elastic throws a typical error about sort problems which confuse users. This patch catches that specific error and returns a specialised error with the name `IndexErrorWaitForReindex` which can now be localised to inform the user about the problem (re-index not completed).

### Webfrontend

* Improved buttons for moving fields in the mask editor; now, if a modifier key (Alt or Cmd) is used + click on "Move to bottom" or "Move to the top," it will not automatically scroll, thus maintaining the mask editor's view.
* Improved shortcuts to object types in the main menu; now, all users who can access at least one object will see the shortcut in the main menu if it is configured.
* Enhanced the pool selector field to display the complete path of the selected pool.
* Improved the JSON importer to create linked objects when the metadata mapping is configured to add metadata to linked objects.
* Improved image loading from URLs that do not contain the file name.
* Improved the Number Input to allow more configurations for separation and decimal characters, enhancing compatibility with some languages.
* Improved how Fylr manages date and number formats; it is now possible to override this configuration from the base config in the language menu.
* Added standard text configuration for EAS fields in the mask editor.
* Made improvements to the license manager.
* Improved the plugin panel to display useful information about plugins.

## Fixed

* **Video production was fixed** to actually down size preview video renderings to the desired height. In 6.6.x the height parameter was not passed through to the converter which resulted in full size videos produced for all sizes. To re-produce videos with the correct size, re-sync via /inspect/files is needed.
* **/api/transition**: Fixed problems which occurred if workflows contained deleted users in email notifications. These notifications are now ignored.
* **/api/transition**: Fixed problems with workflows which were saved again before their notifications were sent.
* **/api/tags**: Allow saving of tags without `_acl` even if the stored `_acl` (which are copied to the new `tags`) contain errors.
* Removal of a mail schedule for a user is now supported.
* Fixed cache expiration for fylr start page and plugins.
* Address some cache race problems.
* **Support column type `date_range` in nested** with option `nested index` set in mask. In such a scenario the built-in data type of Elasticsearch does not support multiple values (as we have in nested records). Fixed this by switching the underlying data type in the index.
* **Mapping of dates** fixed for files which contained multiple dates in their metadata.
* Support videos with odd heights. The height is adjusted to an even number, in order for the `MP4`-codec to be able to encode the video.
* Fixed sorting of loca fields: work around a problem with the ICU plugin of Elasticsearch >= 8. For some reason it is not possible to index a single `Q` or `W` character. This bug is not present in Opensearch or Elasticsearch 7.x. We filed a [bug report](https://github.com/elastic/elasticsearch/issues/99620) for this.
* Backup manager SQL dumps didn't restore the sequence of `object_rel` correctly. Also use smaller chunks for certain tables to avoid a psql "out of memory" message during restore.
* **/api/schema**: Fixed upload with mask splitters in mask with nested sort.
* **Metadata mapping** for date columns was fixed for some cases.
* **/api/eas/download**: Fixed HTTP header response for range requests. If "range: bytes=" were requested, the response was wrong and off by 1.
* **/api/db**: Sorting by linked objects in nested which have a date inside the standard output did not work properly. The date inside the linked object was rendered using the localization for the language resulting in date value which sort wrong if sorted by string. Fixed this by rendering a special version of the linked object standard info in case we render it for the nested sorting information.
* **/eas/produce**: If the produce recipe doesn't support the source format, we output an error message.
* Fixed loading of rights which contain deleted masks. This fixes cases where user were unable to login.
* **/api/search**: For formats like `long_inheritance` and `standard_extended`, `include_fields` now also used `inheritance` to compile the values.
* Fixed **reading of width and height** for `HEVC` formats.
* **/api/plugin/manage**: In case the class `unknown` is not configured as valid upload class, we would reject to install a new plugin. This fix ignores the baseconfig setting for this and allows to import a plugin nevertheless.
* Workflows: fixed tag filter *changed* check for more than one tag. If a tagfilter contained more than one tag to check the *changed* status, it would not work correctly.
* **/api/db**: Fixed reverse nested when set to read only in mask: If a mask defines reverse nested as read only, the db load & merge would fail for reverse nested object versions greater than 1.
* **Fixed sequence setting** for cases where a payload contained only predefined ids.
* Fixed **indexing of multiple date values** in masks where the nested records use a `nested` index type.
* **Correctly set transport state** in exports to done.
* **/api/search**: Fixed cases where **sorting by localised values** would return wrong results. This was particularly visible if the sorting involved numbers (like a year) as the only value in text columns.
* **Collections**: Don't output `_hotfolder_upload_urls`, if a user does not have the `create_in_collection` and `link` permissions on the collection.
* **IIIF tile production** was fixed for `TIFF` and other source formats which would produce a 32 bpp interim bitmap instead of the for tiler supported 24 bpp format. We now force the 24 bpp.
* Export: **Custom downloads** which set colorspace were fixed.
* **/inspect/files** with parents active was fixed for Sqlite backends.
* Permissions: If **files were in reverse nested**, we did not check the permission correctly. The permissions for reverse nested come from the top level object the reverse nested is in. This patch acknowledges that and passes in the correct `obj_uuid` to the download url. There, the file is matches inside the reverse nested structure and the rights are checked properly.
* **Hotfolder**: Fixed **detection of series** in hotfolder. Also, for nested records, improve merging of metadata. Now it's possible to link a file into a nested record while enriching that record with metadata mapped from the file.

### Webfrontend

* Fixed errors in the version list of the asset browser in the info menu.
* Fixed an issue when trying to save workflows that contain deleted users.
* Fixed an error in the Presentation Manager when adding new elements.
* Fixed an error in Pool Selectors that prevented pool searches.
* Fixed errors when loading a base config from JSON.
* Fixed an error related to inherited data in the text format of objects.
* Fixed the display of inherited fields in the quick view panel.
* Fixed an error where new workflows could not be saved in Fylr.


# Release v6.6.4 (2023-09-29)

Published 2023-09-29 14:10:00Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.4/fylr_checksums.txt)
* [fylr\_v6.6.4\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.4/fylr_v6.6.4_darwin_amd64.tar.gz)
* [fylr\_v6.6.4\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.4/fylr_v6.6.4_darwin_arm64.tar.gz)
* [fylr\_v6.6.4\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.4/fylr_v6.6.4_linux_amd64.tar.gz)
* [fylr\_v6.6.4\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.4/fylr_v6.6.4_windows_amd64.zip)

We forgot to bump the version number in `6.6.3`, this one has `6.6.4` set correctly.

## Improved

* Make **file workers faster** when picking up a new job. A new index makes it possible to pick up jobs faster. This becomes relevant on huge file queues (after migration or re-sync) where the queue is filled with more than **100k jobs**. This patch also switches the locking to a different lock which avoids the otherwise harmless error message in the Postgres log: *ERROR: could not obtain lock on row in relation "file\_queue"*.

## Fixed

* **/api/config**: When storing event `BASE_CONFIG_UPDATE`, we now store the **url path RFC compliant**. Before, the format was using a "sloppy" approach, same found in Go stdlib where " " is accepted as part of a path.


# Release v6.6.3 (2023-09-28)

Published 2023-09-28 13:50:44Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.3/fylr_checksums.txt)
* [fylr\_v6.6.3\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.3/fylr_v6.6.3_darwin_amd64.tar.gz)
* [fylr\_v6.6.3\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.3/fylr_v6.6.3_darwin_arm64.tar.gz)
* [fylr\_v6.6.3\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.3/fylr_v6.6.3_linux_amd64.tar.gz)
* [fylr\_v6.6.3\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.3/fylr_v6.6.3_windows_amd64.zip)

**This release is a bugfix release. It adds back some patches from 6.6.1 which where lost when we published 6.6.2:**

* If `pdftotext` returns an error while parsing text from PDF documents, this error is now stored as the full text information of the PDF. It is a common error that no text can be extracted for secured PDF. Before errors would have the metadata production fail and thus the whole produce chain would stop executing, not producing any thumbnails or other previews.
* Setting up the automatic environment for helper programs called by programs which are actually configured in `fylr.services.execserver` failed for configurations where programs in `fylr.services.execserver.commands` were configured with relative or absolute path names (and not just with the program name). In `v6.6.0` the `FYLR_CMD_*` environment variables can still be set manually to avoid this problem.
* Adjusted timeouts for pdf and video recipes to 1 hour; was 15 and 30 minutes, resp.
* **/api/schema**: When sending pre-defined column-ids for `reverse_link` and `link` types, they would be ignored, leading to sync problems with centrally stored data models.
* **/api/schema**: When sending pre-defined column-ids for `reverse_link` and `link` types, they would be ignored, leading to sync problems with centrally stored data models.

## New

* **/api/baseconfig**: Use location names for default locations instead of the ID. We are doing this for better support of backup & restore where we cannot use IDs.

## Improved

* **/api/plugin/manage**: This patch adds `created_at`, `updated_at` and `last_checked_at` dates.

## Fixes

* The patch fixes a problem which happened when the **exec server if busy** and no free worker can be found. Instead of re-queueing the job, we errored out with an error message `Error producing file: %!w(<nil>)`. Fixed by passing the correct error. Now, in case of an re-queueable error, the job is put back into the queue and tried in + 1 minute.
* **/eas/rput**: Improved filename detection. If a filename did not have a proper extension, we would try to find it by using a HEAD request to the remote file and take our best guess about the file type. The Docker images we delivered however, did not contain the proper mime type detection files, so that file types like `image/tiff` would not be recognised.
* Some cache update race problems have been fixed. In rare cases the cache IDs would not be updated properly. This patch overall improves the cache management for plugin bundles.


# Release 6.6.2 (2023-09-14)

Published 2023-09-14 07:39:37Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.2/fylr_checksums.txt)
* [fylr\_v6.6.2\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.2/fylr_v6.6.2_darwin_amd64.tar.gz)
* [fylr\_v6.6.2\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.2/fylr_v6.6.2_darwin_arm64.tar.gz)
* [fylr\_v6.6.2\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.2/fylr_v6.6.2_linux_amd64.tar.gz)
* [fylr\_v6.6.2\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.2/fylr_v6.6.2_windows_amd64.zip)

## Fixed

* Fixes an **indexing bug** where objects would be index in all versions. The order of the versions was random, so that we could not guarantee that the latest version of the object is indexed. If this problem occurs, you can see wrong pool counts after pool changes or do not find objects with their latest data as they are not indexed. **A full re-index is recommended after applying this update**. This update is recommended for all users.
* Fixed error reporting when **connecting to an S3** storage location. Before a session connect error would not be properly reported.
* Fixed `fylr restore` with no `base_config.json` in `manifest.json`. Before we would try to load an non existing file and error out.

## Frontend

* \#69302: New feature. Show nested as table. Now nested tables can be configured in the mask to be displayed in table format.
* \#69515: Improved selection of multiple objects in list views, and also fixed multi-selection when using OSX systems.
* \#69453: Numerous corrections have been made in the base-migration plugin when performing migrations to Fylr.
* \#69454: Fixed an error in the ACLManager that prevented it from opening when a certain right had no available options.
* \#65354: Fixed errors in the date range textual representation.
* \#69763: Added a new block in the Authentication Services in the group manager to add Auto Added System groups.
* \#69776: Fixed an error when using automatic values in Date Columns.
* \#69776: Now plugins will be displayed using the 'name' property, and the 'display-name' property is now deprecated.
* \#68841: Added the global\_object\_id column for reversed linked objects as a selectable field in exports.
* \#68964: Added the option to sort nested using eas fields in Fylr.
* \#69715: Fixed an error when replacing URLs in the Json Importer.
* \#69118: Added some top\_level\_data fields to the display-field-values plugin.
* \#69683: Multiple improvements have been made in the plugin manager.
* \#69598: Improved the management of image extensions in the version manager.
* \#69670: Improved the field selection button in the print manager.
* \#69682: Fixed errors in the buttons for creating new templates in the detail panel.
* \#69656: The default value for collections has been increased to display 100 objects instead of 10.
* \#69632: Corrections have been made in the loading of base configs.
* \#69616: Added a new 'None' option in the presets of schedule email, in the user editing panel.
* \#69161: Now when loading new base configs, the user will be asked if they really want to overwrite important information such as the license and other settings.
* \#69149: Numerous corrections have been made in the event manager.
* \#68944: Corrections in the Fylr license panel.
* \#69248: Improved the order of the panels in the base config.


# Release v6.6.1 (2023-08-10)

Published 2023-08-10 07:16:37Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.1/fylr_checksums.txt)
* [fylr\_v6.6.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.1/fylr_v6.6.1_darwin_amd64.tar.gz)
* [fylr\_v6.6.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.1/fylr_v6.6.1_darwin_arm64.tar.gz)
* [fylr\_v6.6.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.1/fylr_v6.6.1_linux_amd64.tar.gz)
* [fylr\_v6.6.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.1/fylr_v6.6.1_windows_amd64.zip)

## Fixes

* If a `fylr+.yml` contains an empty command declaration in `fylr.services.execserver.commands` it could happen that the loader received a panic and **fylr** didn't start. An easy fix is to set the empty command to `{}` which avoids this problem. However, this fixes allows an empty config and avoids the panic.
* Setting up the automatic environment for helper programs called by programs which are actually configured in `fylr.services.execserver` failed for configurations where programs in `fylr.services.execserver.commands` were configured with relative or absolute path names (and not just with the program name). In `v6.6.0` the `FYLR_CMD_*` environment variables can still be set manually to avoid this problem.
* Fixed overwriting of the default set `FYLR_CMD_*` environment variables using the top level setting `fylr.services.execserver.env`. This bug didn't really show in most configurations because of the previous bug. Also allow to set an empty program. Can be used to disabled `ffmpegthumbnailer`.
* Fixed setting environment on the `fylr.services.execserver.commands.COMMAND.env` level. This works for the first command only, if you want to set environment for commands which are started by the main service command, you need to set the environment on the `fylr.servicees.execserver.env` level.
* `/inspect/file` re-sync has been fixed. If re-syncing multiple versions at once it could easily happen that unique index violation would occur. The error looks something like *pq: duplicate key value violates unique constraint "file\_u3""*. The underlying problem has been addressed and re-syncing should work more reliably now.
* If `pdftotext` returns an error while parsing text from PDF documents, this error is now stored as the full text information of the PDF. It is a common error that no text can be extracted for secured PDF. Before errors would have the metadata production fail and thus the whole produce chain would stop executing, not producing any thumbnails or other previews.
* Adjusted timeouts for pdf and video recipes to 1 hour; was 15 and 30 minutes, resp.
* **/api/schema**: When sending pre-defined column-ids for `reverse_link` and `link` types, they would be ignored, leading to sync problems with centrally stored data models.


# Release v6.6.0 (2023-08-03)

Published 2023-08-03 13:48:50Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.0/fylr_checksums.txt)
* [fylr\_v6.6.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.0/fylr_v6.6.0_darwin_amd64.tar.gz)
* [fylr\_v6.6.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.0/fylr_v6.6.0_darwin_arm64.tar.gz)
* [fylr\_v6.6.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.0/fylr_v6.6.0_linux_amd64.tar.gz)
* [fylr\_v6.6.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.6.0/fylr_v6.6.0_windows_amd64.zip)

## Important

The big changes in this release are:

* **Custom produce configs** in the base configuration are no longer valid, this update **resets them to the defaults**. If you have configured your own versions, you must re-configure them after the update.
* All existing file versions get a new produce hash, so **fylr** considers all versions outdated and wants them re-computed. This is not done automatically and will only happen if a **re-sync** is triggered (via `/inspect/files`).
* Removed `fylr_*` utils and incorporated them into fylr as subcommands. Use `fylr -h` for a full overview of the new capabilities. **This change requires a non fylr+ YML to be changed!**. The `fylr.default.yml` has been changed accordingly.
* A new subcommand `fylr convert` is used to simplify our recipes and be able to make file preview renderings more powerful and better in a future release. In order for this to work, you must add a block to you `fylr.yml`. If you use the `fylr.default.yml` as basis (and that we highly recommend), you don't need to change anything. You **must** add a command **fylr** (see below).

Blocks like this, should be removed and merged into a new top level setting in `fylr.services.execserver`:

**Before:**

```yml
fylr:
  services:
    execserver:
      services:
        "NAME":
          commands:
            fylr_metadata:
              env:
                - FYLR_METADATA_BLURHASH=10M
              prog: "fylr_metadata"
            fylr_pdf2pages:
              prog: "fylr_pdf2pages"
            fylr_iiif:
              prog: "fylr_iiif"
```

**After:**

```yml
fylr:
  services:
    execserver:
      # this is new, a global env section
      env:
        - FYLR_METADATA_BLURHASH=10M
      # this is new, a global commands section
      commands:
        # it is essential to add "fylr" here, so the "fylr convert" and other tools can be called
        fylr:
          prog: fylr
        exiftool:
          prog: exiftool
        ffmpeg:
          prog: ffmpeg
        inkscape:
          prog: inkscape
        soffice:
          prog: soffice
        pdftotext:
          prog: pdftotext
        magick:
          prog: magick
        ffprobe:
          prog: ffprobe
        ffmpegthumbnailer:
          prog: ffmpegthumbnailer
        node:
          prog: node
        python3:
          prog: python3
        xsltproc:
          prog: xsltproc
        # used by fylr-plugin-example (Tesseract)
        java:
          prog: java
      services:
        "NAME":
            # this still works
           commands:
              ...         
```

* A **re-index** is recommended for all uses, Go to `/inspect/system` to start this after the update.
* **inkscape** needs to be installed for **WMF** support.
* **pdftotext** needs to be installed for **PDF** text metadata support.
* **java** is pre-defined in `fylr.default.yml` but is currently not needed by **fylr**, as long as you don't play with the **fylr-plugin-example**. However, in a future release we will require this to support OCR features.

> If you are struggling with getting your `fylr.yml` right, you can use `fylr server --dump-config` to output the current config as **fylr** compiles it. If **fylr** is running, you can use `/inspect/config` for a deep dive into your settings.

## New

* **File previews**: Added support for **WMF** file format. The conversion of this format requires **inkscape** as a helper program.
* **File previews**: Support for **RAW** file formats: **CR2**, **NEF**, **DNG** and **RAF**. The preview generated is using the metadata embedded thumbnail of the **RAW** file.
* **PDF support**: We added text search support for PDF. This uses embedded text from the PDF, this is not an OCR feature. However, most PDFs include the text they show. The text is added to the **fulltext** index information of the objects which link the PDF. Existing **PDF** need to re-sync their metadata for the text to be indexed.
* Synchronise fylr backends. **fylr** now keeps a list of running instances in a database table. With that, cleanups for index and file queues can be performed at startup.
* **/api/plugin**: Renamed **/plugin/base** to **/plugin/extension**. This new name of the path reflects much better what this endpoint does: It serves the api extensions provided by the plugin. The plugin `manifest.yml` also uses `extension:` to configure these.
* **Removed user search languages**: This setting was only confusing most users, so now the database languages of a user are also used for searching.
* **DELETE /api/db**: This endpoint gained the capability of setting references to NULL (if allowed) where the deleted objects would be in use. This is communicated to the user using a 202 response.
* **Execserver**: Add **/healthz** endpoint.
* **/api/objecttype**: A new setting `empty_placeholder_icon` can be stored. This icon can be used to display objects of that type if no asset is available or wanted.
* `fylr convert` replaces all helper programs in standard recipes. Also, `fylr_metadata`, `fylr_pdf2pages` and `fylr_iiif` have been incorporated into the **fylr** binary. This will help us to support file formats even better in the future.

## Improved

* **backup/restore**: Improvements and bug fixes Include *publications*, *mappings*, *plugins* (fylr only) and some **baseconfig** .
* Improvements to pages and emails. The emails in this release look much better than before and are localised.
* **Collections**: Support for from and to dates for ACL items. Now it is possible to set expiration and or future start dates for sharing.
* **Usermanagement**: For **sso** and **ldap** users no passwords can be stored. For other system users, such as **oai\_pmh** and **deep\_link** we allow this. Also, system rights can be stored for these users, so it is possible to actually login as **oai\_pmh** user to configure and check their permissions more easily.
* **/api/eas**: We no allow access to the id if at least one version is accessible. That is that same amount of data one sees if the file is embedded in an object.
* **fylr.yml**: `fylr.api.oauth2Server.<CLIENT>.redirectURIs` for client **fylr-web-frontend** are not set per default anymore, but auto-set (if empty) to `fylr.externalURL`. This simplifies configuration of OAUTH2.
* **WebDAV**: Removed Windows-WebDAV-URLs from collection settings. This URLs do not work anymore on more recent Windows versions, and Windows does support the **http\://** based URLs to connect to WebDAV.
* **/api/schema/commit**: Improved re-index check. The improved checks include changes to standard, re-ordered fields and type changeswhen suggesting a re-index to the user. We also suggest re-index if mask where deleted or added.
* Renamed **login of system users**, to not start with **system:**. Unlike **root** the other system users **oai\_pmh**, **deep\_link**, **deleted\_user** started their login with `system:`, which looks weird in search results from the logins of these users. The reference is kept to start with `system:`. This affects updates as well as new setups.
* **/eas/mapping**: Support merging of nested. If a nested already exist with a value other than the to be merged value, the same record is used. This fixes mapping of nested records with more than one column.
* **/api**: Timestamps gained better support when scanning during inject. We use the ISO8601 parser to parse regular timestamps, output for timestamps is RFC3339.
* **/api/eas/rput**: Change filename detection. Now, if a filename is given and has an extension we do not check the remote to improve the filename. Before, if the file class was **unknown** to our recipes we would add the remotely delivered extension to the provided filename. This is a surprising behaviour and caused problem with restoring .xslt files from easydb 5. Those files are delivered as `.html`.
* **Embed** all `/resources` into the fylr binary. It is now optional to configure `fylr.resources`. This setting is only useful during development now. However, the web frontend is still not part of the fylr binary and need to exist on disk and configured in `fylr.yml`.
* Use the stdlib token refresh capabilities in `go-client` library. This helps refreshing tokens during long running backups using `fylr backup`.
* **/api/search**: Support searching of `user.email`.
* **Base config**: When email configuration has set **No TLS** we now really do not attempt to use **STARTTLS** during a connection to the email server.
* **Improved error handling during exec server plugin callback read backs.** If a plugin reported an error, we would fail to deliver this properly to the caller.
* **Base config**: Improved user visible error messages.
* **/api/search**: Improved type `text` wildcard searches. If a text is analysed and generated multiple tokens and then search with multiple tokens and wildcard, we throw an error. This combination is unsearchable using elastic. Also, throw an error is mode "wildcard" is used with query "match" or "match\_phrase", both combinations are not supported.
* **File previews**: An **aac** file version for more audio formats. This can be used to "preview" the audio file in a browser.
* **HTML pages** like login and register gained localised error support.
* **Metadata mapping**: Enable list mode for `XMP-iptcCore:Scene` tag.
* **/api/db**: Faster dependent object calculation for re-index. This patch bring a faster and more accurate algorithm for calculating which objects need to be re-indexed if objects are updated. The way to determine related objects for indexing has been refactored. We now use a cache table based system (table "object\_rel") to find related objects which needs re-indexing when objects are saved. The old algorithm would not catch all cases, and would already fail in easy reverse cases with an top level obj connection OT A and OT B (both reverse). B would like to C. C.file was changed without A being re-indexed.
* **Startup: re-queue stale jobs**: The index and file queues can now be cleared from stale jobs. These jobs can be left-overs from a shutdown while the job was still processing. All jobs which timestamp is older than the oldest fylr running, will be set back to state **NEW** and can be picked up from a worker again.
* **/inspect/objects**: Output api column names in **title** of label in the HTML rendering.

## Fixed

* **Bidirectional records**: Fixed cases where an incomplete bidirectional record would not save properly.
* **/inspect/files**: FIxed re-sync originals.
* **fylr.yml** on Windows: Fixed `fylr.stdErrFile` when installed as a service and using a relative path.
* **backup**: Fixed some SQL commands to support a proper restore.
* **Execserver**: The log level was not changed when changed via **baseconfig**, it was set only at startup.
* **Rights management**: Fix for permissions on versions. Before the class +version was compiled using the class of the version and not of the original. So, for a version "office.preview" fylr would check the right for "image.preview" which was wrong.
* **PDF**: PDF production was fixed so that the frontend viewer works better now. It might be necessary to re-sync PDF originals.
* **Index**: Fixed re-index of objects with files with class `unknown`. Before such objects would never get re-indexed (on changes) because of a fast path of file sync with class `unknown`.
* **Janitor**: Fixed and improvements for deletion of **events**. The previous code would never really delete huge amounts of events (like 1M+), so expect a busy cleanup with this update. We now a clean up job until no more todos are encountered.
* **Sorting by localised values** for user types and base types got confused if not all languages were set. Now the sorting acts smarter to sort by the best value in the order of the user's configured database languages.
* **/api/objecttype**: Added missing support for tag filters in column filters.
* **/api/tags**: Store order of tags when stored. This fixed various issues we had with our frontend when storing ACL for tags. For most parts this was not working correctly.
* Removed obsolete **/docs** endpoint. Our documentation has moved to [docs.fylr.io](https://docs.fylr.io)
* Don't crash with empty `fylr.externalURL`. This setting can be omitted for exec server only configurations.
* **/api/event**: Add **objecttype** to CSV exports.
* **Rights management**: More checks when `_owner` is changed.
* **Backend**: Improve mime type support for disk stored assets This patch makes better use of the storage layer by delivering the detected mime type to the layer at put time. Before this was left to auto-detection and written correctly from `file` only for http storage without redirect. So, disk storage and S3 remote delivery where not setting our detected mime type correctly. This is especially important for **SVG**, which is detected as `text/xml` by the Go stdlib, but that is not sufficient for browsers to display this correctly when referenced inside an IMG src.
* **Concurrent map write fix**: If accessing **/api/config** very frequently such a panic could occur and crash fylr.
* **Janitor**: Fixed deleting of users who are `_owner` of another another user.
* **/inspect/system/stats**: The statistics were only compiled for the first 10 object types.
* **/api/db**: Omit `_path` from output if mask has all path output configured to `off`. The system field which steers the output of path(s) was not reflected over the API. Now, if all output if turned `off` no `_path` or `_paths` is output in the api response.
* **/api/search**: `_path,_system_object_is` is not allowed in `fields`. Fixed this to report an error, also changed that error to a featured error.
* **/api/db**: Accept (and ignore) `_mapped_metadata_created` during inject. This key is used by fylr to indicate that metadata originates from a on-the-fly mapping of objects. The data may end up in an inject and can be safely ignored. Before the API would throw an error about an unknown key. Fixes a case reported for the JSON importer.
* **Collection WebDAV hotfolder**: Fixed metadata mapping, if configured.
* **Workflows**: Send user configured emails if a transition is rejected. Previously these emails were forgotten and not sent.
* **/api/plugin**: Fixed bundling code for plugins by excluding plugins which depend on others and were the other plugin wasn't installed. This fixes console errors in the web frontend during startup.
* **/api/search**: Fixed sorting by `user.generated_display_name`. This needs a new Elastic base mapping and thus an index rebuild.


# Release v6.5.1 (2023-06-23)

Published 2023-06-23 13:38:47Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_checksums.txt)
* [fylr\_v6.5.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_v6.5.1_darwin_amd64.tar.gz)
* [fylr\_v6.5.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_v6.5.1_darwin_arm64.tar.gz)
* [fylr\_v6.5.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_v6.5.1_linux_amd64.tar.gz)
* [fylr\_v6.5.1\_linux\_arm.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_v6.5.1_linux_arm.tar.gz)
* [fylr\_v6.5.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.1/fylr_v6.5.1_windows_amd64.zip)

## Fixed

* **Login page** did not show a `Login`-button on Firefox.
* **Custom Reverse Proxy** configuration worked only for http GET method.


# Release v6.5.0 (2023-06-22)

Published 2023-06-22 16:24:29Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_checksums.txt)
* [fylr\_v6.5.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_v6.5.0_darwin_amd64.tar.gz)
* [fylr\_v6.5.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_v6.5.0_darwin_arm64.tar.gz)
* [fylr\_v6.5.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_v6.5.0_linux_amd64.tar.gz)
* [fylr\_v6.5.0\_linux\_arm.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_v6.5.0_linux_arm.tar.gz)
* [fylr\_v6.5.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.5.0/fylr_v6.5.0_windows_amd64.zip)

## Important

1. This release brings **license management** to **fylr**. Make sure to get your license as soon as possible!
2. The **license management is in beta testing**, in v6.5.0 you will have to actively enable it in the base config.
3. This possibility to run without license management will be **removed in v6.6.0**.
4. Make sure to **re-index** before opening this update to users. Go to `/inspect/system` and choose `Reindex (Blocking...)` for the best user experience. Without re-index your users will be greeted with an error message about groups which could not been loaded.
5. Make sure that the new `fylr.services.webapp.oauth2.internalURL` which is set in `fylr.default.yml`, doesn't interfere with your setup. This can happen if you are using a `fylr+` style .yml. The default is set to `http://localhost:8080`. A new `fylr.yml` browser in **/inspect/config/** can support to debug this.

## New

* **Added** [**license management**](https://docs.fylr.io/license-management). A valid **license** is required in order to use **fylr** with an `fylr.externalURL` other than `localhost`. Without license and non-`localhost` setups, only the `system:root` user is allowed to login. All other users are declined. Make sure to properly setup fylr email service as well as setting an administrator email, so that **fylr** can warn you about an expiring license. To obtain a license contact <support@programmfabrik.de>.
* **WebDAV Hotfolder support**: If set up in `fylr.yml`, the new Hotfolder features brings back the drop folder feature known from easydb 5. Files being dropped to a folder will be imported into **fylr** (after a 15 second wait) and then removed from the Hotfolder. This Hotfolder implementation is about 5-10x faster than the read-write access. Both can now be turned on and off in the base configuration individually.
* Added custom reverse proxy targets in `fylr.services.webapp.reverseProxy.custom`. This allows to proxy custom paths towards a custom target URL.
* Support `AAC` **preview version** for `WAV` files. With this the frontend will show an audio player for files of type `WAV`.
* **Redirect web access** from other than `fylr.externalURL` to the external URL. If you have a DNS resolving `www.database.fylr.com` as well as `database.fylr.com` (being the external URL), fylr will redirect to `database.fylr.com`.
* Let's encrypt certificate service now **supports multiple domains**. Setting up multiple DNS names for your fylr server is now supported and can be configured to seamlessly work with fylr's auto certificate service.
* A new config setting `fylr.services.webapp.oauth2.internalURL` allows for **easier configuration of OAUTH2** in complex network setups where the internal fylr server cannot resolve the external URL of **fylr**. If you are using a `fylr+` style .yml, make sure that the default for this config doesn't interfere with your setup.
* A new config `fylr.stdErrFile` allows to **redirect Stderr output** to a file. This will be most useful for Windows users who start **fylr** as a service and have no chance to capture Stderr. Please note that panics are not caught by this and are still sent to Stderr. If you installed fylr as a service and it panics, Windows will restart fylr without an obvious trace of that panic.

## Improved

* **/inspect/system/janitor**: Output information about the current configuration. Before this, it would be hard to tell from inside **/inspect** if the janitor was activated or not.
* **/api/db** will compile empty `_generated_rights`, if the user has no `MASK` permission. This also affects the warning which fylr shows to the user if he loses all the permissions to an object after saving.
* Some **error messages** were improved, like unique key violation.
* **Speed up metadata mapping** during uploads. New internal process management allows for faster mapping from file to object metadata.
* **Make `group.name` unique**. If the system contains multiple `group.name` this update will change the names and add the `group._id` as suffix. This was done to fix mapping issues which could occur with some SAML configurations and non unique `group.name` entries.
* **/api/db**: When using `_version:auto_increment` we changed the behaviour to match the frontend JSON importer: The version is automatically set and an existing object is merged with the new data delivered. Essentially it works like the group mode. `_version:auto_increment` works when used together with `lookup:_id`.
* **/api/db**: Set `_owner` to `system:root` if the mask doesn't show the owner of an object in the editor. This brings **fylr** in line with easydb 5.
* Use **less memory on Windows** when creating renditions for bigger files. This change stores the file on disk before calling `convert` to resize it. Before we used pipes to accomplish this. It turns out that this is using a lot of memory on Windows. This change also allows us to save some data being transferred from the file to the exec server, by doing less copying.
* Limit the size up to which **Blurhash is calculated** to `10M`in `fylr.default.yml`.
* The **ISO8601 date parser** now accepts timestamps with time zones without minutes.
* **Improved the design** of the login, registration and password pages.
* The exec server has now **new log level for busy situations**. In general the log levels have been reduced to not create worry if a worker is not available for a short period.
* Plugins now receive the `fylr.externalURL` in the `%info.json%` blob.

## Fixed

* **/inspect/files**: Fixed format `standard` for API output.
* Removed newline option for standard rendering. This never worked properly in the fylr design.
* **/api/db** could cause an infinite frontend loop between a 202 response and transitions to be confirmed. This was fixed by making fylr aware of this case and creating one confirm key for both confirmations.
* **OAUTH2 clients** with more than one `redirect_uri` did not work properly with our frontend. Fixed by explicitly setting `redirect_uri` on all relevant requests.
* **Copying of group settings** for new users has been fixed.
* **Removed unsupported system groups**: SYSTEM\_FALLBACK, SYSTEM\_INTERNET\_CONNECTION, SYSTEM\_INTRANET\_CONNECTION have been removed. These were left overs from easydb 5 time and not used in **fylr**. For the internet and intranet groups, an IP filter can be set for a group instead. **This fix requires a re-index!**
* A case was fixed were a deletion of a mask could cause **fylr** to panic, if the mask was used in a collection hotfolder setting.
* Fixed usage of OAUTH2 domains with *token* in there host names.
* Fixed rendering of standard info in certain complex and deeply nested data models.
* Fixed a case involving changed link masks when committing a data model failed with a panic.
* Do not cache **HTTP redirects**.
* Metadata mapping of **PersonInImage** was fixed. If your mapping affected by this bug, you need to re-save it in the Mappings Editor.
* **Creating backups and restoring** them was fixed for some cases when tagfilter or mappings were configured for object types.
* Allow only `system:root` to change the owner of `group` and `user`.
* **Improved robustness of the exec server**: In case that a called program would have dangling i/o, the exec server could not kill the program after the timeout. Instead the program would be kept in memory and the exec server would never release the claimed waitgroup semaphore. In this case, the exec server would not be able to answer more requests on that specific service. Fixed by improving the mechanism which kills the called program (and its children), if the program doesn't exit in time.
* **/api/db**: Fixed group mode's pool change check. With this patch, we only check for reverse pools if the top level pool changed. This avoid a 202 error wrongly reporting that a pool was changed.
* Fixed a case where users could not be deleted by the janitor, because their collections were not yet removed. Fixed by using the owner instead of the collection reference to find the user collections.
* Fixed base config manager for users with only `system.config` system right.

## Plugins

* Improved [**server-pdf plugin**](https://github.com/programmfabrik/fylr-plugin-server-pdf/releases) to replace `fylr.externalURL` with `fylr.execserver.callbackApiInternalURL`. This fixes situations where **fylr** is unable to resolve its external URL.
* Make **easydb-plugin-connector** compatible with both, **easydb 5** and **fylr**. This plugin works as a hybrid plugin and can be installed on either system. It is part of the standard fylr distribution.
* Fixes for **easydb-presentation-pptx-plugin**, this also works now in **fylr** and **ez5**. This plugin works as a hybrid plugin and can be installed on either system. It is part of the standard fylr distribution.
* Make [**easydb-export-transport-ftp-plugin**](https://github.com/programmfabrik/easydb-export-transport-ftp-plugin) a hybrid plugin. This plugin can be installed on easydb 5 and fylr alike. It is part of the standard fylr distribution.

## Frontend Changes

* Style and design fixes.
* Main search now uses wildcard mode by default.
* Improved image loading significantly and fixed the flickering issue during image loading.
* Added a manager in the base config to view and manage Fylr licenses.
* Improved link detection in text fields, now detects links within brackets or parentheses.
* Improved the search buttons for nested objects in the detail sidebar.
* Fixed issues with the filter button in the user panel.
* Fixed issues with configuring objects as buttons in the main menu.
* The quick access menu now properly hides its content if a user doesn't have permission to view it.
* Fixed issues with retrieving language tags.
* Text fields in the PDF creator now support line breaks.
* Added template support in the HTML editor custom data type.
* Fixed the "Download as CSV" button in the event manager.
* Fixed an issue when changing the pool in a reverse linked field.
* Fixed an error when duplicating a pool that contains a pool reference.
* Fixed an error that prevented users without permission from viewing a pool when it had a parent pool.
* Fixed the "Copy Record" button in the detail panel.
* Fixed issues with the detection of .acc files in the asset browser, now the audio player is displayed for this file type.
* Fixed issues in the user manager where fields were automatically filled by the browser.
* Fixed an issue where custom metadata fields were duplicated each time they were edited.


# Release v6.4.0 (2023-05-31)

Published 2023-05-31 15:42:50Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_checksums.txt)
* [fylr\_v6.4.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_v6.4.0_darwin_amd64.tar.gz)
* [fylr\_v6.4.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_v6.4.0_darwin_arm64.tar.gz)
* [fylr\_v6.4.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_v6.4.0_linux_amd64.tar.gz)
* [fylr\_v6.4.0\_linux\_arm.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_v6.4.0_linux_arm.tar.gz)
* [fylr\_v6.4.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.4.0/fylr_v6.4.0_windows_amd64.zip)

Release v6.4.0 on 2023-05-31T15:12:41Z

## New

* **/api/db** now supports lookups in localised columns (one language only).
* Import mapping supports **adding localised keywords**.
* **A new SAML configuration** allows to configure the login page link to the single-sign-on system.
* Support binaries in plugins for execserver. This is used by the new plugin **server-pdf**.
* Add new plugin [**server-pdf**](https://github.com/programmfabrik/fylr-plugin-server-pdf) plugin to support server side pdf rendering for the **pdf-creator** plugin. This replaces the easydb 5 based **easydb-service** to support PDF creation. Make sure that **chromium** or **chrome** is installed in your execserver.
* A **new setting** for the `fylr.yml` has been added: `fylr.execserver.parallelHigh`. With this setting, specialised workers can be started which only pick up high priority jobs. Producing standard renditions are considered a high priority task. **This setting can be used to speed up the production of previews.**

## Improved

* **Improved startup check** of database to prevent accidently database purges. Previously any error during startup check could case a unconditional database purge.
* **Plugins: API extensions require an authenticated user to work**. Previously we didn't perform any user or auth checks on plugin endpoints. Currently it is not possible to support anonymous API extensions with no user. Contact us if you need that.
* **Webhooks** can be configured to receive the current fylr authentication token.
* **Automatically add files extension to download filenames**. Previously this needed to be configured in the download name template.
* **/api/db** now includes short names & references for `_tags` and `_pool`.
* **/api/db**: Include localised column names in the **unique key violation error**.
* **/api/db**: Include timing information in the http response header.
* **Office documents** get a 15 minute time limit to produce preview versions. Before this limit was the generic plugin execution limit in `fylr.yml` and per default a lot lower.
* **/api/search/parse**: Query parser no longer uses `type: text`, `query: intervals_ordered` when generating the search query, but `type: match`, `mode: wildcard` instead. This prevents errors which occured when search terms expanded to more than 128 terms while using wildcard.
* **Set all default OAUTH2 clients** to `public: true` so that no longer a client secret is stored or required. This seems a sensible thing to do as the published clients are not secret anyway and as such do not need to carry a client secret.
* **Improved cookbooks & recipe checks** for the produce config. If you have used a non default produce config make sure to re-save the config to fix recipes your configuration (the old default produce config contained ignored but harmless problems).
* **Run less object indexing after file syncs.** File syncs without object relevant changes no longer require the objects to be re-synced.

## Fixed

* **Webdav** support correctly generates linked objects (if configured via metadata profiles). Previously these objects did not have an owner assigned and failed to index properly.
* **Mapping of categories during import was fixed.**
* **Import of linked objects** via import mapping in top level objects was fixed.
* **Do not loop sync files in error state**. Previously the syncing action would not stop to re-produce and re-generate erroneous versions, even if these attempts were hopeless and prone to fail again.
* **Add localisation keys for disabled frontend languages.**
* **Don't store user in events if the event does not allow it.** In plugins this might need configuration in the `manifest.yml` to re-enable storing users in events.
* Check `mask` right in **/api/db**.
* Fixed concurrent map writes in transaction mapper. **This rare event could cause fylr to crash.**
* **Searching through changelog** in **/api/db** did not work properly in certain combinations of users & dates.
* Putting objects using **Webdav** was fixed for some configurations where series recognition was enabled.
* **Allow deletion of users** who are owners of a group. Previously the database would prohibit this per foreign key enforcement.
* Sharing **collection** to groups with **email** sending enabled, was fixed.
* Saving **export schedules on Windows** has been fixed. The previous version did not include the Unix timezone information and thus, the timezones sent by our front end caused an "unknown timezone" error on Windows. Fixed by including the timezone information per Go "time/tzdata".
* **Fixed database migration step** from 80 to 81. On some systems the sequence for baseconfig ids where off and this update step failed. Fixed by fixing the sequence before performing the migration step.
* **Fixed a problem with long filenames under Windows**. When uploading a file with a very long name (> 256 characters), the production of renditions would fail on Windows. This was fixed by no longer using the original filename for the rendition production command. However, this change affects all internally generated and kept produce hashes and thus fylr assumes that all renditions are outdated after this patch. In practise that has no effect, but if a sync action is performed on the original of the renditions, all renditions will be produced again.
* **Fixed embedded build info into fylr binaries.** This fixes the display of build times in the **About** dialog.
* **Removed footer output** of page name on login pages and others.
* **Fixed expiration calculation for janitor jobs to archive and delete users.** The bug would cause all users to be archived or deleted unless the janitor expiration days would be set to **0**.
* **Fixed transitions for users with avatar pictures**.
* **Fixed plugin loader for more than one URL**. Now its possible to configure more than one plugin using the URL method.

## Frontend

## New:

* A new feature has been added to allow copying an object as a template. Now, in the editors, a temporary template called Adhoc template will appear in the template selector. This template will contain the data of the last object copied as a template.
* A parent entry field has been added to the header-detail section of hierarchy objects when the hierarchy is configured to be displayed on the mask.

## Fixed:

* An issue has been resolved where share buttons were being displayed to users without permission to share on asset version panels.
* The sub-menu of the stored search collection has been improved. Options that should not appear in this sub-menu have been removed.
* The mask editor for object types has been improved when selecting the Index option for nested fields. Now, when this attribute is selected, the other masks of the object will copy this attribute, ensuring that all masks have the same nested index value for a specific field. Previously, the server was responsible for making this change, but now the frontend handles it.
* Bug fixes have been implemented in the expert search menu of the Filter for Linked Objects panel.
* Fixed delete and copy button on transitions manager.
* Fix a problem with the Export Assets Filename on object type general tab.
* Bugs in the Filter for Linked Objects functionality have been fixed, addressing issues related to their usage on searches.
* Fixed an error when trying to open group editor multiple times.
* Fixed a problem with the default pool for pool for linked object option on a collection upload settings.
* An error in the detail view has been fixed when the only available version of an asset was a watermarked version.
* A problem with Reverse Linked Nested has been fixed when there is a reference to an object where the configured field to be displayed in the reverse nested table has been emptied.

## Improved:

* The Show Standard Info option is now set as the default option for slides in presentations.
* Enhanced the pool field order on general form, on pool manager.
* Enhanced the navigation tool texts on pool manager list.
* The main menu object type buttons have been enhanced to be displayed to users who only have read permissions for these object types.
* The admin messages before downloads have been improved. Now, all asset download options include these messages.
* The generation of language tags for the languages configured in the base-config has been improved.
* The utility for modifying object tags from the search has been improved. Now, the utility is more efficient and notifies the user if any errors occur.
* The updating of objects in the search when receiving updates from the server has been significantly improved.


# Release v6.3.1 (2023-04-28)

Published 2023-04-28 16:54:58Z

* [analysis-icu-7.17.10.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/analysis-icu-7.17.10.zip)
* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_checksums.txt)
* [fylr\_v6.3.1\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_v6.3.1_darwin_amd64.tar.gz)
* [fylr\_v6.3.1\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_v6.3.1_darwin_arm64.tar.gz)
* [fylr\_v6.3.1\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_v6.3.1_linux_amd64.tar.gz)
* [fylr\_v6.3.1\_linux\_arm.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_v6.3.1_linux_arm.tar.gz)
* [fylr\_v6.3.1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.1/fylr_v6.3.1_windows_amd64.zip)

## Highlights 🎉

This is a bug fixing release. One important fix is the fixed propagation of read rights for updated pools (see below). Another bug involved a rare indexing race bug which could lead to unindexed objects.

## Improved

* `/api/objects` adds a `Last-Modified` time stamp to the http headers.
* Configuring object metadata based filename downloads required the addition of `%asset.append_extension%`. This is no longer supported. fylr will automatically add the correct extension of the file.
* Blurhash is now rendered client side, the technical\_metadata `blurhash_img` will no longer be compiled for new uploads. This reduces code complexity in fylr as well as speeds up loading times as less data needs to be transported to the client.
* Logging improved for https server connection errors. The new handler uses the main log handler in level Debug and no longer the stdlib direct error logging.
* Improved *fylr backup / restore* compatibility. There is still stuff which isn't restored from easydb 5 (like logo in base config), but we hope to get this done by the next release.
* Base config items have been re-ordered for an improved experience.
* Metadata mapping into reverse objects is now supported. Before this was configurable in our metadata drag & drop editor, but ignored during import.
* Improved Web Socket support for event stream. This version cuts all connections upon server **purge**. This should make the front end better reacting to a purged server (it simply reloads now to show the login screen when **fylr** is back).
* Tags which are in use by objects can now be deleted. In that case they are automatically removed from the objects using them. Before the server would prohibit this.
* Plugin callback **db\_pre\_save**: Added `_callback_context` including `original_mask`. The mask is the mask the object has been posted with.
* PDF previews are now rendered as JPEG and always use a white background. This brings down the size of the "pages.zip" archive to 20% of the previous version.

## Fixed

* PDF preview creation on Windows has been fixed.
* Fixed race bug in indexing queue during re-index. During reindex it could happen that not all objects made it into the newly created index, but rather got indexed into the old index.
* Properly escape file names in `/api/export`.
* Added `_created_at` and `_updated_at` to *group* and *messages*. System groups created date are set in a migration step to the created date of the system pools. Manually created groups and messages do not get timestamps set.
* Switching on hierarchy in data model would not fix the corresponding masks, resulting in undisplayed parent column. This could be fixed by manually adjusting the mask settings but is now fixed automatically.
* Loading problems with some plugins (like the `easydb-barcode-display-pdf` are now reported without errors. Such problems no longer prevent **fylr** from starting up.
* Resource menu in front end is no longer empty if a user uses a frontend language which is not among the base config configured database languages.
* Column type **double** can no longer be passed to the API as *string*. The problem here was that the response of that value was also *string* for these values.
* Base config uploaded logo and background images where only recognized as being ready after another base object was saved (cache expires in that case).
* `/api/objects/.../format/html` was fixed. It no longer causes an eternal wait in the responding Go routine.
* Pool updates properly index subpools and immediate parents now. This fixes issues with pool searches which could be out-of-sync after permission changes.

## Web frontend

fylr includes the latest version of the web frontend with the following changes.

## Improved

* Web frontend and CUI source now require Node.js version 16 or higher to build.
* Enhanced **date filters** on the main search and fixed related issues.
* Improved the **search popover** when no image standard is available on the object type.
* Enhanced some order hints on the base configuration to improve usability.
* Improved the preview of objects that do not have a standard available.
* Enhanced the preview of objects with no standard on collections to improve user experience.
* Enhanced the way CUI hides or shows elements on the frontend.
* Enhanced behavior when no language is available by implementing a fallback language.
* Improved the text view of polyhierarchical objects and fixed the creation of parent elements in the editor.
* Improved the naming convention for JSON and CSV files generated in various parts of the application.
* Improved the collection options menu to allow users to continue working when file uploads are not enabled.

## Fixed

* Fixed design and CSS issues.
* Fixed an error on the frontend when opening the fullscreen detail on collections.
* Fixed EAS behavior on editor related to the DOM structure and drag and drop functionality.
* Fixed an error on the object type menu when a workflow with an empty comment was set.
* Fixed errors on the weblink plugin with links containing # and ? parameters.
* Fixed a problem with the group editor that occurred when more than 100 objects were present. This also improve the speed of this option on the frontend.
* Fixed errors related to field rights and expert search.
* Fixed a problem with mask splitters and nested tables with no visible children.
* Fixed an issue with the CSV importer where an error message was always displayed during import preparation.
* Fixed an issue where the quick access menu could not be displayed and remained hidden until the page was refreshed.
* Fixed an issue with the detail-linked-plugin where it was not displayed if it was the only element within a mask-splitter.
* Fixed an issue where the CSV importer would become stuck if an object type with a display-field-value-mask-splitter was used.
* Fixed an issue where metadata mapping did not work properly when uploading objects to collections and in the editor.
* Made improvements to the base-migration plugin related to export and import in fylr.
* Improved the user experience for archiving and unarchiving users.
* Fixed several errors in the behavior of the new event stream.


# Release v6.3.0 (2023-04-05)

Published 2023-04-05 08:13:29Z

* [fylr\_checksums.txt](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_checksums.txt)
* [fylr\_v6.3.0-fix1\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0-fix1_windows_amd64.zip)
* [fylr\_v6.3.0\_darwin\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0_darwin_amd64.tar.gz)
* [fylr\_v6.3.0\_darwin\_arm64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0_darwin_arm64.tar.gz)
* [fylr\_v6.3.0\_linux\_amd64.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0_linux_amd64.tar.gz)
* [fylr\_v6.3.0\_linux\_arm.tar.gz](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0_linux_arm.tar.gz)
* [fylr\_v6.3.0\_windows\_amd64.zip](https://s3.eu-central-1.wasabisys.com/fylr-releases/v6.3.0/fylr_v6.3.0_windows_amd64.zip)

## Highlights 🎉

Changes and improvements all over the place. Our Zoomer got a lot faster now (make sure to use our latest iiif service configuration, see below) and we added a re-sync button to produce new file versions easily.

## Known Problems

Under Windows, you need to remove the plugin `easydb-barcode-display-pdf-plugin`, or else fylr cannot start. Fixed in the added download fylr\_v6.3.0-fix1\_windows\_amd64.zip.

## New

* `/inspect/files` got a new `Re-sync done` button. It can be used to **re-sync** done originals. That is helpful after the base config was changed to update all auto produced versions.
* Includes **public OAUTH2 clients** for integrators & our mobile App.
* New endpoint `/api/event/stream` allows to open a Websocket listening to fylr's event stream. Latest web frontend uses that too, so no more polling for events. With this change, updating the search after updating a record should be almost immediate.
* `fylr.services.api.oauth2Server.allowHttpRedirects`: This new settings allows to configure **OAUTH2 in HTTP only environments**. Before this was only supported for `http://*.localhost`. This is useful in intranet environments where it is hard to obtain HTTPS certificates regularly.
* Introducing chain loaded `fylr.yml`. Now it is possible to use multiple `-c` on the command line to pass in more than one `fylr.yml`. A new internal `fylr.default.yml` is a starting point which can be used for most configurations. It includes a fully configured execserver (for Linux & Mac OS systems). The new `.yml` format allows to replace, add and delete value from config files which were loaded first. Current `fylr.yml` setups continue to work, as the new syntax requires a top level property `fylr+:` to use the merge functionality. More information can be found in `fylr.example.yml`.

## Improved

* **Much faster tile production for IIIF and Zoomer output**. The new code uses a BMP interim format and fast system memory mapping to achieve fast tile production, especially for big images. You need to add the `convert` command to the `iiif` service in your fylr.yml:

```yaml
fylr:
  services:
    execserver:
      services:
        iiif:
          commands:
            convert:
              prog: convert
```

* Zoomer endpoint now also supports `.png` output.
* Support encrypted data in export plugin transport options. If a property ends in `:secret` it's value will be stored safely in fylr's database and only decrypted when presented to the transport plugin.
* Actually use password requirements as defined in the base config. Before we only stored the regexps, but never enforced them. Administrators can overwrite the policy and have the server ignore it.
* Added preview for `pptx`. Before we only had `ppt` support.
* No more standard cached are used on `/api/db` endpoint. This makes sure that linked object data gets merged from the current database rather than from the standard cache which follow the indexer.
* Fast indexer wake-ups in system which have the indexer running on the same fylr binary as the API service. This makes the indexer less laggy and together with the new event stream facility, the web frontend can show changes almost immediately.

## Fixes

* Reading images width & height was buggy if the EXIF data contained different values. Fixed by relying solely on `exiftool` Composite information about the file size. This causes the Zoomer to behave erratically.
* Parallel access to WebDAV volumes has been fixed. `rclone` easily runs 8-10 parallel tasks to sync files, that caused our WebDAV endpoint to produce errors pretty quickly.
* Certmagic now works on Port 80 to pose the Let's encrypt challenge. With that issuing HTTPS certificates gets easier behind certain firewall configurations.
* `/api/search/parse` got more syntax fixed. This time a simple `OR` case failed to compile correctly.
* Fixed aggregations in hierarchies. If hierarchies were filtered by parent, in bigger lists the filter was filtering the wrong data and not returning any results.




---

[Next Page](/llms-full.txt/1)

