Releases

Release notes and version history

Latest Release

Ontologies and No Code Assay (Latest)

August 25, 2026

Release 26.8.0 – Ontologies and No Code Assay

This release introduces two major new features: Ontologies and No Code Assays. Ontologies feature mapping of official ontology terms to LabID annotations, improving the data quality tremendously. No Code Assays allow admin users to create and manage new assay types on the fly, making LabID even more flexible and ensuring that user needs can be met without code changes.


UI

Repository: labid-ui

Highlights

In-Browser File Preview

Data-file copies can now be opened through short-lived signed URLs. Images, media, text, JSON, CSV, Markdown, PDF, XML, and HTML use an appropriate in-browser preview. (a161c2e7, d2ef1600)

Standardized User Tasks

User tasks now use the standard list and detail views, with filtering, pagination, ownership controls, related-record navigation, copyable task IDs, and live status updates. (0f75d96a)

More Consistent Forms

Detail fields now follow one responsive layout model across view and edit modes. Free-text autocomplete fields behave like normal inputs with suggestions instead of removable selection tags. (f119cd30, 761c5adb, 8266be47)

Ontology-Linked Vocabularies

Vocabularies can now be connected to OLS ontologies. Users can browse and import ontologies, search and link terms individually or in batches, and manage ontology sources through permissions-aware panels. (7e445d23, 540214c9, 534853f4)

RO-Crate Export Management

Workflow versions and runs now provide a dedicated RO-Crate section for generation, status tracking, regeneration, download or path access, and deletion where allowed. (15d3f6ae)

Major Features

  • Add signed downloads and type-aware in-browser file previews, including clear empty, oversized, unsupported, and download-fallback states. (a161c2e7, d2ef1600)
  • Replace the custom task table and component-scoped polling with standard list/detail browsing and one session-scoped polling engine. (0f75d96a)
  • Introduce a consistent responsive field grid with aligned label columns and stable behavior for single, paired, and triple fields. (b8cbd7ca, 560990ca, f119cd30, 8266be47, 8c8313ff)
  • Add a dedicated, keyboard-friendly autocomplete text input with debounced and abortable server search. (761c5adb)
  • Allow users to keep record permissions when cloning supported records; experiment cloning remains on its dedicated server path. (00afafc8)
  • Integrate OLS ontology browsing, import, term search, single and batch linking, source management, and deleted-source handling into vocabularies. (7e445d23, 540214c9, 74fa8db8, 534853f4)
  • Add RO-Crate generation and management for workflow versions and runs, including support for the current server response formats. (15d3f6ae)
  • Extend workflow-file previews with image, Markdown, and additional text formats, a rendered/raw view, and preview actions on latest workflow files. (982d7346, 6e3b4fa9, d5e27a1c)
  • Add standard list and detail views for annotation types. (a039645f)

Minor Features

  • Replace the single-line note composer with an autosizing multiline textarea; Cmd/Ctrl+Enter submits a note. (2962fef3)
  • Make rich-text view and edit containers bounded, scrollable, and manually resizable. (8f20640d)
  • Add order sharing controls, widen order layouts, and improve table text selection and drag-selection behavior. (19da0fd6)
  • Group assay navigation and assay-type selection by scientific domain. (bf84acf6)
  • Add subtle visual feedback for updated field values and reordered lists. (40b6af26)

Bug Fixes

  • Prevent the Lineage viewer from freezing when expanded, wait for a measurable graph container, improve loading states, and correct output-sample placement and loading. (888ec1c0, be828edc, dd210445, e135cbbe, dd09b813)
  • Fix specimen/sample derivation routes, parent prefill, lineage layout, and navigation away from a dirty sample editor. (261c44f7, 1c72a2b5, 7a88f412, 88111ca0)
  • Preserve literal scientific text such as <gene> by storing plain text unchanged and applying escape or sanitization profiles at render boundaries. (017a4db2)
  • Restrict Galaxy synchronization to the instance the server actually targets and correct API-key, loading, and configuration handling. (d950b576)
  • Stop order carts from duplicating the last item and retain order details while users continue shopping. (7283ec2e, 646f9198)
  • Resolve each field’s specific editor in batch edit and exclude fields made read-only by patched metadata. (ec4dc72b)
  • Restore sample-type selection for generic assay raw-data collections. (a39e31dd)
  • Correct Instrument Model creation payloads, surface validation errors, and remove excessive modal spacing. (946308cc, 7eddf57e)
  • Preserve field focus and component state by caching async widgets and assigning stable field-grid keys. (9e58ad3e, b1e5c244)
  • Fix annotation form alignment, validation state, focus stability, and Add-button behavior. (93e0109c)
  • Stop ELN saves from triggering a false “edited by you” warning. (d6740f6d)
  • Prevent Number/Unit fields from overflowing and restore field-specific select placeholders. (d96f799e)
  • Fix clipped file/path tooltips in overflow containers. (92cd0180)
  • Fix Office document viewer sizing and keep long ordered-item names from hiding actions. (c2c8b090)
  • Clear the shell loading state after navigation errors instead of leaving an infinite progress bar. (578eec40)
  • Prefill repository URLs when importing workflows. (408aa45f)
  • Clear stale authentication when changing the development server URL and avoid initializing the wrong layout during route resolution. (c2bd7a4b)
  • Render imaging-channel selectors, labels, requiredness, and layout consistently from server metadata. (96509b68)
  • Sanitize untrusted notification, modal, tooltip, and rich-text content while preserving rich-text editing. (88f0e0d6)
  • Restore workflow-version file uploads after leaving and re-entering edit mode. (4987a395)
  • Preserve item descriptions when adding records to an order from detail views and distinguish order-status colors. (9736b041, ec097030)
  • Prevent list views from failing when model metadata is unavailable. (844ce735)

CI/CD

  • Add GitLab issue templates for bugs and improvements. (ebfd2e08)

Server

Repository: labid-server

Highlights

OLS Ontology Integration

New Ontology and OntologyTerm models with EBI OLS4 integration: ontology import, term search, single and batch linking, permission gating, and defining-ontology enforcement. (c8893d9b, 52b4f081, e6bc51a9)

No Code Assays

Admin users can create new assay types on the fly via TypeStore, without code changes. (d5c88790)

Async RO-Crate Generation

RO-Crate generation is now asynchronous and Celery queues are configured to be durable. Workflow Run RO-Crates now get saved to the user-dropbox by default (given they can be fairly large). (e7e04fbc)

Major Features

  • Let import-term name the Term it creates and carry the OLS short id as dbxref_id; keep imported terms out of ontology-scoped OLS use. (ecaaee27, 52b4f081)
  • Expose annotation types in the UI. (c86858fe)
  • Add user-task dashboard endpoint: categories, ownership, status, completion, related objects, deletion details, plus searching/ordering/filters. (e5bec4d1)
  • Replace django-address with a self-contained Photon OSM autocomplete widget (keyless, structured “Street N, ZIP City, Country” output). (d8b91017)
  • Register Galaxy paired collections (and each paired sub-collection of a list:paired) as single virtual Paired-End FASTQ datasets. (ccbbc196)
  • Record parent/child dataset relations in exported ROCrates. (2e921e20)
  • New datasets inherit permissions from their assay. (6c20cfbf)
  • Implement training-data autodiscovery for user dropboxes. (dfb82b08)
  • Detect TSA certificate updates via a weekly Celery task (creates a pending TSA row and emails the admin). (4cabac71)
  • Support authenticated SMTP; make EMAIL_HOST / EMAIL_PORT / EMAIL_USE_TLS / EMAIL_USE_SSL environment-driven and drop the site-specific default. (829aeb9e)
  • Expand Sample project-context filter to include all sample relations. (6fb17ed7)

Minor Features

  • Reworked workflow export as RO-Crate: adding URL for git repo under codeRepository, setting version to commit hash if defined (falling back on version name) and dateCreated to commit date (if available).
  • Improved error message for Galaxy workflow-run imports (e.g. hint on outdated API key).
  • Introduced new env variable ROCRATE_EXPORT_ALLOWED_ROOTS to specify a list of directories to which Workflow Run RO-Crates can be saved if the user does not have a dropbox configured (see Upgrade Guide for details).
  • Add id_list filter on vocabulary terms and term_iri_list batch filter on ontology terms. (e11c1d1b, 1f797240)
  • Open OLS term search to all authenticated users; keep import gated by CanImportOntologyTerms. (053886da)
  • Default allow_user_term_import to False on new categories. (9f5c1641)
  • Add published_datasets admin metric and an endpoint returning just the logged-in user’s info. (116c67c2, f3a269ec)
  • Add missing code filter to SampleFilter. (84dc11e2)
  • Rework labels and helper strings for workflow / workflow-run attributes. (e982fcd7)
  • Add a field-order list under base-stock to manage common mixin fields. (fb513a78)
  • Centralize admin CC mail and send actionable ingestion failure emails. (00588fbe, 43cd0b43)
  • Reduce ModelMeta log noise for FK fields without an endpoint. (87a91c67)
  • Check .gitignore upon upload. (514590f6)

Bug Fixes

  • Import workflows from git: fix missing recent commits when checking for new workflow versions to import. (797d5d36)
  • Allow updating an existing workflow run in-place via the REST API. (a77dd568)
  • Ensure the is_imported flag of WorkflowRun is honored when submitting/editing a wfrun from the REST API. (fe38afd2)
  • Fix a URL mismatch in the Galaxy server configuration (settings/base.py) and add Galaxy EMBL to public workflow repos. (6a22ac1f)
  • Handle Galaxy dataset collections when importing workflow runs (HDCA expansion); fix output-loop iteration and a worklowrun= typo in the same code path. (3a14077a)
  • Gate admin endpoints and the admin site on is_superuser (IsAdminUser was letting any is_staff user through). (265ebc00)
  • Stricter username validation, opt-out via STRICT_USERNAMES. (3c58a867)
  • Make UUID list filters validate without failing (fixes 406 on category_id_list and other UUID batch filters). (931e1af8)
  • Handle thumbnail failures gracefully and remove an external dependency from test_rocrate.py. (c8e5c927)
  • Preserve bulk field updates in studies. (a78ae1f0)
  • Fix lifecycle fields (created, modified, created_by, modified_by) being hidden in detail model meta. (6e3952bf)
  • Fix missing folder permissions after DMA pullover to user dropbox. (ddc780bc)
  • Use timezone.now/localtime for removed_date and bulk-template assertions (drops libc-TZ dependency; keeps stored timestamps aware UTC). (0c3dd037)
  • Improve timestamp error handling to preserve more information. (2d222cbb)
  • Fix enums in admin UI being used as enum.value instead of the enum. (72ff7253)
  • Add custom formset for GroupDetail in admin and update GroupAdmin fieldsets. (96459b7d)
  • Pin botocore/aiobotocore to a compatible set (fixes _SERVICE_MAX_ATTEMPTS import error). (91083b32)
  • Fix s3fs dependency resolution in the base image. (bfafb452)
  • Pin DRF to <3.18 due to breaking changes in list-serializer error collection. (33dff1f3)
  • Drop the orphaned GOOGLE_API_KEY setting. (c062ace1)
  • Fix flaky admin-metrics tests by clamping fixture dates to now. (31be43a5)
  • Datetime timing: use timedelta instead of minute-based accuracy. (555bf22d)

CI/CD

  • Add initial GitLab issue templates. (5e2f6e15)
  • Make workflow tests parallel-safe (git daemon on an OS-picked ephemeral port; run all tests in a single parallel pass). (9d853654, 7c25b915)
  • Update pre-commit configuration to use base settings for Django migration checks. (89e6535b)
  • Update deploy-token variable in CI configuration. (a449cc62)
  • Bump version to 26.5.1. (21f76577)

CLI

Repository: labid-cli

Highlights

This new release adds a number of commands to create, edit and delete item on the server from the CLI. Like the Lib, the CLI now makes use of the ModelMeta from the server to ensure objects are as close as possible to their server representation.

Major Features

  • added arg --assay to register wfrun and register assay commands such that the registered data is stored with the data of the existing assay
  • made arg --workflow-version of register wfrun commands optional. Leaving the possibility to workflow run sniffers to automatically identify the workflow version from the run dir
  • added optional arg --workflow-run to register wfrun commands : this can be passed to updated an existing workflow run in-place

Minor Features

  • added color-coding of log-level in logged messages

Bug Fixes

  • fix export of ENA table when datasets have no assay ID (i.e derived datasets)
  • fix uuid1:uuid2 alias format used for EXPERIMENT alias
  • fix issue with newer versions of typer/click by bumping those dependencies
  • fix potential issue with study in register wfrun when --no-input-in-labid was passed

CI/CD

  • added branch rules such that job tests_for_release runs on branches staging and production exclusively, while test_dev job runs on all other branches
  • tests_for_release checks that the Lib version is pinned to an actual release of the lib (tag) and not just main
  • fix CI/CD using flag --force-reinstall instead of --upgrade to ensure the last version of the Lib is installed from main for test dev

Lib

Repository: labid-lib

See CHANGELOG for versions 26.07.1 and 26.08.1

Highlights

  • Many methods were added to the LabidManager to allow creating, editing and deleting items on the server.
  • The Lib now makes use of the server’s ModelMeta to ensure objects are as close as possible to their server representation
  • Added a NextflowRunSniffer capable of extracting informations about a run from the log file (workflow version, run name…)

Major Features

  • manager.register_workflow_run allows editing existing workflow runs, this can be used e.g to create placeholder runs when starting a workflow, and edit it once the run is complete
  • argument workflow_version of WorkflowRunSniffer.sniff_workflow_run is now optional. If omitted, sniffers derived from the BaseWorkflowRunSniffer have the possibility to identify the WorkflowVersion from the run directory by implementing extract_workflow_version()
  • added manager batch_export_items() and batch_edit_items() - to fetch some excel template, edit and re-update to the server

Minor Features

  • added dependency cooldown to pyproject when installing with uv
  • added manager.get_dataset_by_name(), manager.fetch_workflow_version_by_commit_hash() and fetch_workflow_by_repository_url()
  • added workflow_utils.py module with function find_workflow_version()
  • added function get_workflow_git_repo(), get_workflow_version() and get_workflow_version_hash() to WorkflowRunLogParser

Bug Fixes

  • fixed a number of issues when passing relative paths to the register commands
  • fixed a number of small issues with PydanticExperiment

Upgrade Guide for System Administrators

This release changes a number of server dependencies, settings, and infrastructure expectations. If you self-host LabID, review each item below before rolling out 26.8.0.

Python dependencies (docker-compose/django-base/environment.yml)

  • boto3 / botocore / aiobotocore / s3fs are now pinned explicitly to boto3=1.43.46, botocore=1.43.46, aiobotocore=3.8.0, s3fs=2026.4.0. Previously only boto3 was pinned; the solver was free to pull an incompatible botocore, producing ImportError: cannot import name '_SERVICE_MAX_ATTEMPTS' from 'botocore.retries.standard'. If you maintain a custom conda environment, keep these four pinned together. (91083b32, bfafb452)
  • django-address was removed and replaced by a self-contained Photon OSM autocomplete widget. No Google Maps API key is needed anymore. (d8b91017)
  • djangorestframework is capped at <3.18 because 3.18 changed list-serializer error collection in a breaking way. (33dff1f3)

Environment variables / settings

New — set for any environment that needs them:

VariableDefaultPurpose
DJANGO_EMAIL_HOST_USER / DJANGO_EMAIL_HOST_PASSWORDemptyCredentials for authenticated SMTP; leave empty for unauthenticated relays.
DJANGO_EMAIL_PORT25SMTP port.
DJANGO_EMAIL_USE_TLS / DJANGO_EMAIL_USE_SSLFalseToggle STARTTLS or implicit TLS.
DJANGO_STRICT_USERNAMESTrueEnforce stricter username validation on create/change. Set to False if you need to edit externally provisioned (e.g. LDAP) usernames that do not satisfy the strict rules.
DJANGO_LABID_UI_ORIGINS[]Origins the labid-ui is served from. Added to Content-Security-Policy: frame-ancestors on inline preview responses so the viewer iframe can embed files across origins. Empty list is same-origin only. Set per-environment when the UI is served from a different origin than the server.
DJANGO_OLS4_API_BASE_URLhttps://www.ebi.ac.uk/ols4/apiEBI OLS4 API root used by the new ontology integration.
DJANGO_OLS4_WEB_BASE_URLhttps://www.ebi.ac.uk/ols4EBI OLS4 web root (used to build human-readable term URLs).
DJANGO_OLS4_REQUEST_TIMEOUT30Seconds.
DJANGO_OLS4_CACHE_TTL3600Seconds.
DJANGO_ROCRATE_EXPORT_ALLOWED_ROOTS[]Directories a user may target with the WorkflowRun RO-Crate export custom_path option. Any path outside these roots (after symlink resolution) is rejected. Empty list disables custom paths entirely; the default dropbox target is always allowed.

Changed defaults — review before upgrade:

  • DJANGO_EMAIL_HOST default changed from smtp.embl.de to localhost. If your production configuration relied on the old default, set DJANGO_EMAIL_HOST explicitly (e.g. in production.py or shared.env). (829aeb9e)

Removed:

  • DJANGO_GOOGLE_API_KEY — orphaned after django-address removal. Safe to delete from environment files. (c062ace1)
  • address app dropped from THIRD_PARTY / INSTALLED_APPS. No action needed; handled by migration core/0043.

RabbitMQ / Celery queues

RO-Crate generation now runs asynchronously and all known Celery queues (celery, archive, ingestion, plus their prefixed variants for dev/test/prod) are declared durable. Kombu cannot redeclare an existing queue with a different durability setting, so the first-time deploy of 26.8.0 requires draining and deleting the old non-durable queues before restarting workers:

rabbitmqctl delete_queue <prefix>celery
rabbitmqctl delete_queue <prefix>archive
rabbitmqctl delete_queue <prefix>ingestion

Replace <prefix> with your environment prefix (prod-, dev-, test-, or empty). Workers will re-declare the queues as durable on startup. (e7e04fbc)

Database migrations

Run ./manage.py migrate as usual. Notable new migrations:

  • core/0043_alter_place_address — moves the Place.address FK to a plain CharField, copies existing addresses into the formatted string column, and drops the orphaned address_* tables plus the address app’s django_migrations history. (d8b91017)
  • core/0041_add_tsa_cert_url — adds tsa_cert_url on TimeStampAuthority and seeds the FreeTSA URL. (4cabac71)
  • core/0042_alter_usertask_category / 0044_alter_usertask_category — new user-task dashboard schema. (e5bec4d1)
  • core/0045_platform_technology, stocks/0042_instrumentmodel_technology, assays/0050_assay_type_hierarchies, annotations/0025_typestore_assay_metadata — support the No Code Assay feature. (d5c88790)
  • vocabularies/0010_add_ontology_models, 0011_populate_ena_efo_ontology_mappings — Ontology and OntologyTerm models. (c8893d9b)
  • workflows/0006_alter_workflow_imported_from_rocrate_and_more, 0007_workflowrun_imported_rocrate_path_rocrategeneration — RO-Crate async generation state. (e7e04fbc)
  • data_management/0047_attachment_is_rocrate — flag attachments that are RO-Crates.

Take a database backup before running migrations; the address rewrite in core/0043 is destructive to the legacy address_* tables.

Celery beat schedule

configure_celery_tasks.sh now schedules a weekly check_tsa_certificate_updates task (Mondays 03:15). Re-run the script (or your equivalent bootstrap) after upgrading to pick it up. (4cabac71)


Known Upgrade Issues

  • The UI released with this release will not be compatible with old versions of the server, as the login for users changed with (3ca85184). Using the UI of this release requires a simultaneous update of the server to at least the same version.
View release page

We maintain a rapid release cycle, delivering new features, bug fixes, and improvements every 2-3 months.

We use Calendar Versioning (CalVer) to identify releases. Each version follows the format YY.M.RELEASE_NUMBER, where YY is the year, M is the month without a leading zero, and RELEASE_NUMBER starts at 0 for the first release in that month.

Previous Releases