Skip to content

Release 26.5.0 – Vue 3 & Django Upgrade

This release upgrades the UI from Vue 2 to Vue 3 and the server from Django 3.2 to Django 5.2 LTS. On the UI side, users get improved responsiveness, multi-instance Galaxy support, and better record selection with drag-to-select. The CLI gains a dedicated register wfrun_crate command for workflow runs coming as RO-Crate, while the original register wfrun has a new --search-strategy-table option.
The documentation also features new trainings describing workflow runs registration via the UI and the CLI.


UI

Repository: labid-ui

Highlights

Multi-Instance Galaxy

Galaxy integration now supports multiple Galaxy endpoints from server configuration. Each instance can be independently set up with its own API key. The user dashboard has been redesigned with a UserCard, grouped badges, and deferred-loading info panels.

Improved Record Selection

List views now support three selection modes: checkbox (additive multi-select), select (click replaces, Cmd/Ctrl adds, Shift extends), and radio (single item, no modifiers). A drag-to-select rectangle has been added for quick multi-row selection with the mouse. Record picker modals for single-item fields now use radio mode, giving a clearer affordance. Copy-to-clipboard buttons are now consistently available in both list and detail contexts.

Improved Responsiveness and Layout Polish

Responsiveness has been improved across the application. CSS container queries are now used in several views (ELN editor, user dashboard, field grids) to adapt layouts to available space rather than the viewport, resulting in better centering and more consistent rendering at different panel sizes.

Sample Editor Improvements

Deleted (merged) samples can now be shown or hidden via toolbar toggle. Deleted nodes appear red in the lineage graph. Badge counts exclude deleted pairs. Unsaved changes are now clearly indicated before navigating away.

Major Features

  • Migrate UI to Vue 3.5, Vue Router 4, Vuex 4, Vite 6, Bulma 1.0, TinyMCE 6 (753a9b9a, !754)

    • All mixins replaced by composables; legacy slot syntax and portal-vue replaced by Vue 3 equivalents
    • New detail-view architecture: useDetailView composable + DetailViewShell shared chrome, FieldGrid declarative layout, three-layer field visibility model (global → view → component)
  • Multi-instance Galaxy support, config composables, and dashboard redesign (a3c2b147)

    • Multiple Galaxy endpoints now supported via server-provided GALAXY_ENDPOINTS
    • User dashboard redesigned with UserCard, group chips, and deferred-loading info panels
    • DefaultPanel extended with icon, count, status, help slot, and loading state
  • Detail-view discard confirmation modal and nav guard (b7be6fd4)

    • Cancel button is context-aware: "Close" when no edits, "Discard changes" when dirty
    • Confirmation modal with Discard / Continue editing / Save actions
  • Sample editor: deleted sample visibility and lineage improvements (2967a40b)

    • Deleted (merged) samples can be shown or hidden via toolbar toggle
    • Deleted nodes render red in the lineage graph; badge counts exclude them
    • Fixes infinite spinner on type change in the create-sample modal
  • Selection: three explicit modes (checkbox / select / radio) (188040f6)

    • checkbox: additive toggle (default multi-select)
    • select: click replaces selection; Cmd/Ctrl adds; Shift extends range
    • radio: single-item only, all modifiers ignored
  • Data-table: selectionMode prop threaded through to RecordPickerModal (fde24bd6)

    • Radio mode renders radio inputs per row and hides the select-all header checkbox
    • Single-item pickers (ContextSetterModal, LinkedSamples) migrated to radio mode
  • Fields: copy-to-clipboard button unified across list and detail views (d8438182)

  • Annotation: annotation meta models merged with detail views (08b03ef7)

  • Data-loader: smart mode-apply, identity field fixes, group row handling (4a4803b7)

  • Rich-text: A4/fullwidth layout picker extracted, smooth mode transition (9d0fee8f)

Minor Features

  • List: drag-to-select with dashed selection rectangle; disabled in radio mode (3c692a74)
  • Page titles: browser tab title set from current record and model type (d775dbc8)
  • UI: confirmation dropdown pattern (dd-content--confirm) (34f61c44)
  • DefaultPanel: manual refresh button on injected lists (0fd4d47c)
  • Fields: links open in new tab inside modals and workflows (ff692d60)
  • ELN: improved A4 grid centering and responsiveness via container queries (dcda2ab7)
  • CI: training build and deployment jobs added (4fb63927)
  • CI: release-candidate pipeline with Sentry support (9669dfee)

Bug Fixes

  • ELN: show empty description, deduplicate item details, fix label alignment (700e1f1a)
  • Workflow-version-detail: fix publish request and button UX (b4dc2a12)
  • Workflow: fix WorkflowHub publish modal loading forever (81113e18)
  • Rich-text: inline editor toolbar flow, scroll, and border (58574aef)
  • Forms: tighter spacing and label/value distinction (05a15c4f)
  • API config: fix urlNormalise usage (109a6ced)
  • Workflow runs: fix missing trailing slash when deleting input/output datasets (98c811fd)
  • Data-loader: overhaul assign-samples table UI (fcc7f53d)
  • Vue-multiselect: prevent layout jitter when dropdown opens with chips (9e5d278b)
  • Select-container: fix positioning when nested in a dropdown (e0cc6fc8)
  • Create-item-button: fix label formatting for assay and protocol types (bf9c7a90)

CI/CD

  • Bump kaniko to v1.24.0-debug (ee353bb3)
  • Upgrade release-it to v20, migrate calver config (e87668fc)
  • Upgrade ESLint to v9, fix Vite import warnings (86196f25)
  • Pin Node 24 in CI (c313f068)
  • Upgrade lint-staged to v16 (91150537)
  • Simplify dev tooling, refresh dev docs (66603ec5)

Server

Repository: labid-server

Highlights

  • Django 3.2 → 5.2 LTS upgrade
  • Multi-Galaxy support: users can configure multiple Galaxy instances from which to import workflow runs
  • Server now generates temporary signed URLs to download datafiles via the UI and CLI

Workflows

  • Workflow-run datasets are now sortable
  • Added workflow run info to the response payload of register wfrun endpoint (e47af3c8)
  • Fix export of workflows to WorkflowHub: ensuring only a single URL is populated for the main entity of Workflow RO-Crate (31dc1497)
  • Fix import of some workflows from WorkflowHub (previously raised an error if the crate listed a single profile) (c102de76)

Shipments

  • Deleted ShipmentItems can be restored and the item state is now correctly reverted

Data Ingestion and Export

  • Dataset loader throws a proper error on dead symlinks in the dropbox
  • Fixed study export for datasets not associated to an assay (4cf28f4e)

Administration

  • New admin metrics endpoint and metrics admin page
  • Admin UI: improved search toolbar, cleaner multi-select widgets, redesigned edit/add/view buttons
  • New create_fixture_from_db management command for annotation types and vocabulary terms
  • Enforced vocabulary category and unit choices on specific annotation/custom-property types

Improvements

  • Widget and field-type definitions now use the FieldType / WidgetType constants
  • Pre-commit sample config now ships with security hooks and an isort profile
  • Dependency updates for known CVEs

New / Added

  • Added example images to illustrate workflow run registration on the demo instance

CLI

Repository: labid-cli

New

  • Added a separate command to register workflow runs from a Workflow Run RO-Crate (register wfrun_crate), simplifying the number of parameters in register wfrun and facilitating distinction of sniffer-specific parameters
  • Added --search-strategy-table arg to register wfrun for a more user-friendly way to define search strategies instead of --sniffer-param
  • Added labid export template with a type option (-t), currently accepting template_search_strategy_table
  • Added option to pass an existing --assay to register collection so all datasets are assigned to the assay, saved in the existing assay directory under a subdirectory for the upload session

Changed / Refactored

  • Flag --sniffer-name in register wfrun and register wfrun_crate is now optional: the command deduces the most appropriate sniffer for the run directory
  • Renamed args in register wfrun: sample_sheetsamplesheet, and col/columnheader

CI/CD

  • Added two separate CI/CD jobs (test_release / test_dev): both run the same test suite, one using Lib from main and the other from the version specified in CLI requirements

Bug Fixes

  • Fixed a bug exporting study

Lib

Repository: labid-lib

New

  • Added module file_parsers.py with all parser classes (including SearchStrategyTableParser and TabularFileParser); moved SamplesheetParser from core to this module
  • Added base class WorkflowRunLogParser and implementation NextflowLogParser that can extract unique run name and executed command (also for non-RO-Crates)
  • Added classes SearchStrategyMapping and DatasetPrecursor for use in Sniffer classes
  • Extracts more information from RO-Crates (unique run name, executed command), especially for Nextflow via the new NextflowRunCrateSniffer

Changed / Refactored

  • Refactored workflow run sniffers to use SearchStrategyMapping and DatasetPrecursor instead of complex composite types; DatasetPrecursor allows per-dataset control over whether it is expected to exist on the server
  • Samplesheet in workflow run sniffers now registered as INPUT (not CONFIG) and not expected to exist on the server even when --input-datasets-in-labid is true
  • Workflow runs registered with RO-Crate sniffers now have is_imported_rocrate set to true

Bug Fixes

  • Fixed issues when passing . (current working directory) to some commands
  • Fixed a bug when a samplesheet contains both single-end and paired-end datasets
  • Fixed parsing of NanoporeAdaptiveMode from payload

Known Upgrade Issues

  • Upgrading LabID vue UI from a previous version may leave stale Vue 2 bindings that break npm run build — see Troubleshooting