> For the complete documentation index, see [llms.txt](https://docs.fylr.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fylr.io/releases/2026/v6.34.2.md).

# 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
```
