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:
useDetailViewcomposable +DetailViewShellshared chrome,FieldGriddeclarative 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
DefaultPanelextended with icon, count, status, help slot, and loading state
- Multiple Galaxy endpoints now supported via server-provided
-
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 wfrunendpoint (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_dbmanagement 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 inregister wfrunand facilitating distinction of sniffer-specific parameters - Added
--search-strategy-tablearg toregister wfrunfor a more user-friendly way to define search strategies instead of--sniffer-param - Added
labid export templatewith a type option (-t), currently acceptingtemplate_search_strategy_table - Added option to pass an existing
--assaytoregister collectionso all datasets are assigned to the assay, saved in the existing assay directory under a subdirectory for the upload session
Changed / Refactored¶
- Flag
--sniffer-nameinregister wfrunandregister wfrun_crateis now optional: the command deduces the most appropriate sniffer for the run directory - Renamed args in
register wfrun:sample_sheet→samplesheet, andcol/column→header
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.pywith all parser classes (includingSearchStrategyTableParserandTabularFileParser); movedSamplesheetParserfromcoreto this module - Added base class
WorkflowRunLogParserand implementationNextflowLogParserthat can extract unique run name and executed command (also for non-RO-Crates) - Added classes
SearchStrategyMappingandDatasetPrecursorfor 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
SearchStrategyMappingandDatasetPrecursorinstead of complex composite types;DatasetPrecursorallows 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-labidis true - Workflow runs registered with RO-Crate sniffers now have
is_imported_rocrateset 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
NanoporeAdaptiveModefrom 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