Latest Release
Ontologies and No Code Assay (Latest) August 25, 2026
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+Entersubmits 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-termname the Term it creates and carry the OLS short id asdbxref_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
pairedsub-collection of alist: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_SSLenvironment-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, settingversionto commit hash if defined (falling back on version name) anddateCreatedto 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_ROOTSto 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_listfilter on vocabulary terms andterm_iri_listbatch filter on ontology terms. (e11c1d1b, 1f797240) - Open OLS term search to all authenticated users; keep import gated by
CanImportOntologyTerms. (053886da) - Default
allow_user_term_importto False on new categories. (9f5c1641) - Add
published_datasetsadmin metric and an endpoint returning just the logged-in user’s info. (116c67c2, f3a269ec) - Add missing
codefilter toSampleFilter. (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
.gitignoreupon 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_importedflag ofWorkflowRunis 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(IsAdminUserwas letting anyis_staffuser through). (265ebc00) - Stricter username validation, opt-out via
STRICT_USERNAMES. (3c58a867) - Make UUID list filters validate without failing (fixes
406oncategory_id_listand 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/localtimeforremoved_dateand 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.valueinstead of the enum. (72ff7253) - Add custom formset for
GroupDetailin admin and updateGroupAdminfieldsets. (96459b7d) - Pin
botocore/aiobotocoreto a compatible set (fixes_SERVICE_MAX_ATTEMPTSimport error). (91083b32) - Fix
s3fsdependency resolution in the base image. (bfafb452) - Pin DRF to
<3.18due to breaking changes in list-serializer error collection. (33dff1f3) - Drop the orphaned
GOOGLE_API_KEYsetting. (c062ace1) - Fix flaky admin-metrics tests by clamping fixture dates to now. (31be43a5)
- Datetime timing: use
timedeltainstead 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
--assaytoregister wfrunandregister assaycommands such that the registered data is stored with the data of the existing assay - made arg
--workflow-versionofregister wfruncommands optional. Leaving the possibility to workflow run sniffers to automatically identify the workflow version from the run dir - added optional arg
--workflow-runtoregister wfruncommands : 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-labidwas passed
CI/CD
- added branch rules such that job
tests_for_releaseruns on branchesstagingandproductionexclusively, whiletest_devjob runs on all other branches tests_for_releasechecks that the Lib version is pinned to an actual release of the lib (tag) and not just main- fix CI/CD using flag
--force-reinstallinstead of--upgradeto ensure the last version of the Lib is installed from main fortest dev
Lib
Repository: labid-lib
See CHANGELOG for versions 26.07.1 and 26.08.1
Highlights
- Many methods were added to the
LabidManagerto 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
NextflowRunSniffercapable of extracting informations about a run from the log file (workflow version, run name…)
Major Features
manager.register_workflow_runallows 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_versionofWorkflowRunSniffer.sniff_workflow_runis now optional. If omitted, sniffers derived from theBaseWorkflowRunSnifferhave the possibility to identify the WorkflowVersion from the run directory by implementingextract_workflow_version() - added manager
batch_export_items()andbatch_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()andfetch_workflow_by_repository_url() - added
workflow_utils.pymodule with functionfind_workflow_version() - added function
get_workflow_git_repo(),get_workflow_version()andget_workflow_version_hash()toWorkflowRunLogParser
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/s3fsare now pinned explicitly toboto3=1.43.46,botocore=1.43.46,aiobotocore=3.8.0,s3fs=2026.4.0. Previously onlyboto3was pinned; the solver was free to pull an incompatiblebotocore, producingImportError: 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-addresswas removed and replaced by a self-contained Photon OSM autocomplete widget. No Google Maps API key is needed anymore. (d8b91017)djangorestframeworkis capped at<3.18because 3.18 changed list-serializer error collection in a breaking way. (33dff1f3)
Environment variables / settings
New — set for any environment that needs them:
| Variable | Default | Purpose |
|---|---|---|
DJANGO_EMAIL_HOST_USER / DJANGO_EMAIL_HOST_PASSWORD | empty | Credentials for authenticated SMTP; leave empty for unauthenticated relays. |
DJANGO_EMAIL_PORT | 25 | SMTP port. |
DJANGO_EMAIL_USE_TLS / DJANGO_EMAIL_USE_SSL | False | Toggle STARTTLS or implicit TLS. |
DJANGO_STRICT_USERNAMES | True | Enforce 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_URL | https://www.ebi.ac.uk/ols4/api | EBI OLS4 API root used by the new ontology integration. |
DJANGO_OLS4_WEB_BASE_URL | https://www.ebi.ac.uk/ols4 | EBI OLS4 web root (used to build human-readable term URLs). |
DJANGO_OLS4_REQUEST_TIMEOUT | 30 | Seconds. |
DJANGO_OLS4_CACHE_TTL | 3600 | Seconds. |
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_HOSTdefault changed fromsmtp.embl.detolocalhost. If your production configuration relied on the old default, setDJANGO_EMAIL_HOSTexplicitly (e.g. inproduction.pyorshared.env). (829aeb9e)
Removed:
DJANGO_GOOGLE_API_KEY— orphaned after django-address removal. Safe to delete from environment files. (c062ace1)addressapp dropped fromTHIRD_PARTY/INSTALLED_APPS. No action needed; handled by migrationcore/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 thePlace.addressFK to a plainCharField, copies existing addresses into the formatted string column, and drops the orphanedaddress_*tables plus theaddressapp’sdjango_migrationshistory. (d8b91017)core/0041_add_tsa_cert_url— addstsa_cert_urlonTimeStampAuthorityand 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.
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.