> For the complete documentation index, see [llms.txt](https://docs.libnova.com/libnova/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.libnova.com/libnova/what-changed-recently/libsafe-v1.6.0-whats-new-march-2026.md).

# Libsafe v1.6.0 – What's New (March 2026)

<table><thead><tr><th width="280">Release date</th><th>Version</th></tr></thead><tbody><tr><td>09 / March / 2026</td><td>v.1.6.0</td></tr></tbody></table>

## What's new at a glance <a href="#whats-new-at-a-glance" id="whats-new-at-a-glance"></a>

<table><thead><tr><th width="280">Area</th><th>What changed</th></tr></thead><tbody><tr><td><a href="#id-1.-integrity-audit-reports">Integrity audit reports</a></td><td>New reports show integrity check results at container, file, and global level with CSV export.</td></tr><tr><td><a href="#id-2.-onfileingested-trigger">OnFileIngested trigger</a></td><td>A new trigger fires a function automatically when a file completes ingestion.</td></tr><tr><td><a href="#id-3.-premis-events-complete-file-history-visible">PREMIS events</a></td><td>All PREMIS events for a file are now shown in its detail view, regardless of which container they were generated in.</td></tr><tr><td><a href="#id-4.-clearer-error-message-when-uploading-large-batches-of-files">File upload error messages</a></td><td>Timeout errors when uploading large folders now show a clear message instead of a generic HTTP code.</td></tr><tr><td><a href="#id-5.-job-list-only-manually-launched-jobs-shown-by-default">Job list</a></td><td>The job list now shows only jobs launched manually from the interface, not background trigger jobs.</td></tr><tr><td><a href="#id-6.-s3browser-users-see-only-their-permitted-containers">S3Browser permissions</a></td><td>Users accessing via S3Browser now see only the containers they have permission to access.</td></tr><tr><td><a href="#id-7.-control-public-container-sharing-at-platform-level">Public container access control</a></td><td>Administrators can now enable or disable public container sharing at the platform level.</td></tr><tr><td><a href="#id-8.-mirroring-minio-support">Mirroring – MinIO support</a></td><td>The mirroring service now supports MinIO as a replica destination in addition to AWS S3.</td></tr><tr><td><a href="#id-9.-format-identification-updated-to-siegfried-v1.11.4">Format identification (Siegfried)</a></td><td>Siegfried updated to v1.11.4, providing improved and up-to-date file format identification.</td></tr><tr><td><a href="#id-10.-structure-editor-page-turned-list-objects">Structure Editor</a></td><td>Page-turned list objects can now be created and managed in the Structure Editor.</td></tr><tr><td><a href="#id-11.-accessibility-improvements-wcag-2.1-aa">Accessibility</a></td><td>Toggle switches, switches, form field labels, and the language selector are now fully keyboard-accessible.</td></tr><tr><td><a href="#bug-fixes">Bug fixes</a></td><td>Fifteen issues fixed across copy/move, deletion requests, mirroring, ingestion, settings, and reports.</td></tr></tbody></table>

***

## New features and improvements <a href="#new-features-and-improvements" id="new-features-and-improvements"></a>

### Integrity audit reports <a href="#id-1.-integrity-audit-reports" id="id-1.-integrity-audit-reports"></a>

You can now review the results of integrity audits (fixity checks) at three different levels, without having to inspect each file individually.

#### **Container level**

Each container now displays an overall integrity status (OK, Warning, or Failed) as a visual indicator. You can see at a glance whether all files in the container have passed their integrity checks, and which ones are outstanding or have failed.

#### **File level**

When viewing the properties of an individual file, you can see the full history of Level 1 and Level 2 integrity verifications, including the timestamp, type of check, and result. This view is available in the file detail panel and does not generate a separate report.

#### **Global report (CSV)**

A new global report is available in the administration interface. It lists all containers and shows for each one:

* Total number of files.
* Number of files with failed integrity checks.
* Number of files not audited within the expected timeframe.

Files with failures and files not yet audited appear in separate tabs within the report. The report can be downloaded in CSV format.

#### **How to access the global integrity report**

1. Go to **Administration → Reports**.
2. Select the **Integrity** report.
3. Click **Generate** to produce the latest results.
4. Download the CSV from the report view.

{% hint style="info" %}
The global CSV report is generated on demand. After running a new audit, re-generate the report to see updated results.
{% endhint %}

***

### OnFileIngested trigger <a href="#id-2.-onfileingested-trigger" id="id-2.-onfileingested-trigger"></a>

A new trigger type — **OnFileIngested** (code: `OI_INGESTED`) — is now available when configuring functions. A function with this trigger fires automatically when a file has completed the full ingestion process successfully.

This is useful for workflows that depend on having the file's technical metadata (hashes, format, extracted content) fully available, such as automatically assigning or updating metadata values based on the ingestion result.

#### **How to add an OnFileIngested trigger**

1. Go to **Configuration → Functions** and open the function you want to configure.
2. In the Triggers section, add a new trigger and select **OnFileIngested** as the type.
3. Save the function.

The function will now be called automatically each time a file in the configured scope completes ingestion without errors.

{% hint style="info" %}
Jobs triggered automatically by *OnFileIngested* are not shown in the function job list by default. To show or hide these jobs, see section 5 (Job list display).
{% endhint %}

***

### PREMIS events – complete file history visible <a href="#id-3.-premis-events-complete-file-history-visible" id="id-3.-premis-events-complete-file-history-visible"></a>

When you open the PREMIS events panel for a file, you now see all events associated with that file, regardless of which container the events were generated in. Previously, only events linked to the current container were shown, which could result in an incomplete history when a file had been copied or moved.

The PREMIS events panel for containers is unchanged.

***

### Clearer error message when uploading large batches of files <a href="#id-4.-clearer-error-message-when-uploading-large-batches-of-files" id="id-4.-clearer-error-message-when-uploading-large-batches-of-files"></a>

When uploading a large number of files through the web interface and the upload times out, the error message now explains what happened and recommends using S3Browser for large uploads, instead of showing only a generic HTTP 524 error code.

{% hint style="info" %}
If you need to upload a folder with a very large number of files, use S3Browser or another S3-compatible client to avoid upload timeouts.
{% endhint %}

***

### Job list – only manually launched jobs shown by default <a href="#id-5.-job-list-only-manually-launched-jobs-shown-by-default" id="id-5.-job-list-only-manually-launched-jobs-shown-by-default"></a>

The function job list (both the container-level list and the global list) now shows only jobs that were launched manually from the interface. Background jobs triggered automatically by trigger functions (such as OnFileCreated or OnFileIngested) are hidden by default to reduce noise.

{% hint style="info" %}
If you need to see trigger-generated jobs, the **functions\_trigger.list** setting can be enabled. Contact your administrator or refer to the configuration settings documentation.
{% endhint %}

***

### S3Browser – users see only their permitted containers <a href="#id-6.-s3browser-users-see-only-their-permitted-containers" id="id-6.-s3browser-users-see-only-their-permitted-containers"></a>

When users access the platform via S3Browser, they now see only the containers they have been granted access to in Libsafe. Previously, users could see containers they did not have permission to access, even if they could not open them. This applies to both individual users and group-based permissions.

***

### Control public container sharing at platform level <a href="#id-7.-control-public-container-sharing-at-platform-level" id="id-7.-control-public-container-sharing-at-platform-level"></a>

{% hint style="info" %}
**Who this affects:** administrators managing platform-wide sharing settings.
{% endhint %}

Administrators can now enable or disable the ability to share containers publicly across the entire platform.

**How to configure it**

1. Go to **Configuration → Settings**.
2. Locate the **container.shared.public\_container** setting.
3. Set it to **true** to allow public sharing, or **false** to disable it.

When this setting is set to false, the public sharing option is no longer available on the Container Shared tab, and a message is shown explaining that the feature has been disabled by the administrator. The default value is true (public sharing enabled).

{% hint style="info" %}
This setting applies globally to all containers. Only administrators can change it.
{% endhint %}

***

### Mirroring – MinIO support <a href="#id-8.-mirroring-minio-support" id="id-8.-mirroring-minio-support"></a>

{% hint style="info" %}
**Who this affects:** administrators configuring mirroring to on-premise or hybrid storage infrastructure.
{% endhint %}

The mirroring service now supports **MinIO** as a replica destination, in addition to AWS S3. This allows institutions running on-premise or hybrid storage infrastructure to use their own MinIO instances as a mirror target.

Configuration of MinIO as a mirror destination requires administrator access. Contact Libnova support for setup assistance.

***

### Format identification updated to Siegfried v1.11.4 <a href="#id-9.-format-identification-updated-to-siegfried-v1.11.4" id="id-9.-format-identification-updated-to-siegfried-v1.11.4"></a>

The format identification component (Siegfried) has been updated to version **1.11.4**, which includes an expanded and updated PRONOM file format registry. This means more file types are correctly identified and the PREMIS format identification event will report `siegfried:1.11.4` in the event details.

You can verify the version for any file by going to its Properties panel → PREMIS tab → Format identification event → event details.

***

### Structure Editor – Page-turned list objects <a href="#id-10.-structure-editor-page-turned-list-objects" id="id-10.-structure-editor-page-turned-list-objects"></a>

The Structure Editor now supports creating and managing **Page-turned list** objects. A page-turned list is a structure that holds ordered references to other Page-turned objects (for example, the volumes of a series), rather than containing content files directly.

#### **What you can do**

* Create a new **List (Page-turned list)** node in the Structure Editor.
* Add **Item (Page-turned object)** nodes as children, each referencing an existing Libsafe object by its identifier.
* Define a custom label and order for each item within the list.

#### **Rules and constraints**

* A Page-turned list node can only contain Page-turned object items — no other node types.
* Each item must reference an object that exists in Libsafe and has object type "Page-turned".
* The list itself does not contain content files; only the referenced objects do.
* The resulting object (with its structure file and METS descriptor) can be archived and returned to the Workspace for further editing.

***

### Accessibility improvements (WCAG 2.2 AA) <a href="#id-11.-accessibility-improvements-wcag-2.1-aa" id="id-11.-accessibility-improvements-wcag-2.1-aa"></a>

Version 1.6.0 continues the accessibility programme with keyboard and screen-reader support for the following interface elements:

#### **Toggle switches**

All toggle switches across the interface can now be activated with a keyboard. Navigate to them with Tab, and toggle the state with Enter. The current state (ON/OFF) is announced by screen readers. Screens affected: Configuration → Submission Areas (Edit) and My Profile.

#### **Switches (Active / Yes/No buttons)**

Active/inactive switches used in configuration lists are now keyboard-operable. Navigate with Tab, toggle with Space, and the current state is announced by screen readers. Screens affected: Configuration → Submission Areas, Users, Functions, Pipelines.

#### **Form field labels**

All form fields across the application (inputs, text areas, selects, search boxes) now have visible labels or accessible descriptions. Every field is reachable by Tab and correctly announced by screen readers.

#### **Language selector**

The language selector icon in the header can now be operated fully with a keyboard:

* **Tab** — move focus to the language icon.
* **Enter** — open the language list.
* **↑ / ↓** — navigate between language options.
* **Enter** — select the focused language.
* **Esc** — close the list and return focus to the icon.

***

## Bug fixes <a href="#bug-fixes" id="bug-fixes"></a>

<table><thead><tr><th width="280">Area</th><th>What was fixed</th></tr></thead><tbody><tr><td>Copy/Move – function errors</td><td>Executing a copy or move operation returned an error for some file selections. This is now fixed.</td></tr><tr><td>Copy/Move – job list</td><td>Jobs created by copy and move functions did not appear in the function job list. They now appear correctly.</td></tr><tr><td>Copy/Move – ingestion processes not copied</td><td>When copying a file, the ingestion process records associated with the original were not copied to the new file. They are now copied correctly.</td></tr><tr><td>Deletion Requests – non-admin users</td><td>Non-admin users with the appropriate permissions could not see deletion requests they had submitted. This is now resolved.</td></tr><tr><td>Deletion Requests – approval error</td><td>Approving a deletion request submitted by a non-admin user returned an error. Approval now works correctly.</td></tr><tr><td>Mirroring – policies not displayed</td><td>Mirroring policy data was not shown in the mirroring policies view. The data is now displayed correctly.</td></tr><tr><td>Mirroring – hierarchy parameter save error</td><td>Saving or changing the hierarchy parameter on a metadata descriptor in Configuration returned an error. This is now fixed.</td></tr><tr><td>Settings – could not be edited from the interface</td><td>The edit icon was not displayed in Configuration → Settings, making it impossible to modify settings. The icon now appears correctly and settings can be edited.</td></tr><tr><td>Ingestion – text content not indexed</td><td>The text content extracted from files was not being saved to the search index during ingestion. Files were marked as ingested with errors. Content extraction now works correctly.</td></tr><tr><td>Metadata extraction – special characters in filenames</td><td>When a .txt file contained special characters or international scripts in its filename, the metadata extraction event detail appeared empty in the container Events view. Details are now displayed correctly.</td></tr><tr><td>Reports – Platform processing chart</td><td>The Platform Processing and Performance chart showed only one record even when multiple items were pending. All pending items are now shown.</td></tr><tr><td>Disposition Approval report – litigation records missing</td><td>Records with a Litigation Start and Litigation End date (where today is after the end date) were not included in the Disposition Approval CSV report. These records are now included so they can be approved.</td></tr><tr><td>Email notifications not sent</td><td>Email notifications were not being generated for events such as container creation, workflow changes, and new ingests. Notifications are now sent correctly.</td></tr><tr><td>Share selected content – thumbnails not loading</td><td>When sharing folders, image and video file thumbnails did not load in the shared view (jpg, png, tif, gif, mp4), although files could be opened. Thumbnails now load correctly.</td></tr><tr><td>OCFL validator – incorrect error code</td><td>The OCFL validator was returning error code E023 in cases where the correct code was E092. The correct error codes are now reported.</td></tr></tbody></table>

***

## Summary of changes by role <a href="#summary-of-changes-by-role" id="summary-of-changes-by-role"></a>

<table><thead><tr><th width="280">Role</th><th>Key changes to be aware of</th></tr></thead><tbody><tr><td><strong>End user</strong></td><td>All PREMIS events are now visible per file; copy/move and deletion requests work correctly; shared content thumbnails load correctly; clearer error on large uploads.</td></tr><tr><td><strong>Administrator</strong></td><td>Integrity audit reports available at container and global level; public sharing is now controllable at platform level; S3Browser permissions are properly scoped; OnFileIngested trigger available for automation.</td></tr><tr><td><strong>Compliance / Audit</strong></td><td>Global CSV integrity report enables system-wide fixity audits; Disposition Approval report now includes litigation-expired records.</td></tr><tr><td><strong>Operations</strong></td><td>MinIO support for mirroring; Siegfried updated to v1.11.4; job list cleaned up to show only manual jobs; email notifications restored.</td></tr></tbody></table>
