diff --git a/client/src/components/Libraries/LibraryFolder/LibraryFolder.vue b/client/src/components/Libraries/LibraryFolder/LibraryFolder.vue index e8ddce0e5a53..0862a434916f 100644 --- a/client/src/components/Libraries/LibraryFolder/LibraryFolder.vue +++ b/client/src/components/Libraries/LibraryFolder/LibraryFolder.vue @@ -454,7 +454,12 @@ export default { } }); - return this.selected.length + unselectable === this.$refs.folder_content_table.computedItems.length; + const numComputedItems = this.$refs.folder_content_table.computedItems.length; + if (numComputedItems === 0 || numComputedItems === unselectable) { + return false; + } + + return this.selected.length + unselectable === numComputedItems; }, toggleSelect() { this.unselected = []; diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue index 32cad9437746..2e619d5d0a11 100644 --- a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue +++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue @@ -90,7 +90,7 @@ const containsFileOrFolder = computed(() => { return props.folderContents.find((el) => el.type === "folder" || el.type === "file"); }); const canDelete = computed(() => { - return !!(containsFileOrFolder.value && props.metadata.can_modify_folder); + return !!props.metadata.can_modify_folder; }); const datasetManipulation = computed(() => { return !!(containsFileOrFolder.value && userStore.currentUser); diff --git a/doc/source/admin/db_migration.md b/doc/source/admin/db_migration.md index b3edf508496c..3b29abf53f9a 100644 --- a/doc/source/admin/db_migration.md +++ b/doc/source/admin/db_migration.md @@ -542,6 +542,12 @@ After that, run the upgrade script: `./manage_db.sh upgrade`. And you're done! ## Troubleshooting +### Deadlock detected + +If you see a deadlock error, that may have been caused by a migration script requiring exclusive access +to a database object, such as a row or a table. To avoid this error, it is recommended to shut down +all Galaxy processes during database migration. + ### How to handle migrations.IncorrectVersionError If you see this error, you'll need to upgrade or downgrade your database *before* upgrading to @@ -552,4 +558,3 @@ is 181. Please see [this issue](https://github.com/galaxyproject/galaxy/issues/1 #### Please help us improve this page: If you encounter any migration-related errors or issues, please [open an issue](https://github.com/galaxyproject/galaxy/issues/new?assignees=&labels=&template=bug_report.md&title=), and we will add the solution with any relevant context to this page. - diff --git a/doc/source/releases/24.2.rst b/doc/source/releases/24.2.rst new file mode 100644 index 000000000000..e4b9c6666fc3 --- /dev/null +++ b/doc/source/releases/24.2.rst @@ -0,0 +1,1047 @@ + +.. to_doc + +24.2 +=============================== + +.. announce_start + +Enhancements +------------------------------- + +.. major_feature + +.. feature + +Features +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Backport of Workflow Editor Activity Bar + (thanks to `@dannon `__). + `Pull Request 19212`_ +* Add onedata templates + (thanks to `@bwalkowi `__). + `Pull Request 18457`_ +* Add linter to check validity of output filters + (thanks to `@bernt-matthias `__). + `Pull Request 19114`_ +* FITS file table graph visualization plugin + (thanks to `@francoismg `__). + `Pull Request 19003`_ +* Experimental galactic wizard + (thanks to `@dannon `__). + `Pull Request 15860`_ +* Allow OAuth 2.0 user defined file sources (w/Dropbox integration) + (thanks to `@jmchilton `__). + `Pull Request 18272`_ +* Add job metrics per invocation + (thanks to `@mvdbeek `__). + `Pull Request 19048`_ +* Feature - stdout live reporting + (thanks to `@gecage952 `__). + `Pull Request 16975`_ + +.. enhancement_tag_viz + +Vizualization enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix MSA viz, new dependency specification options + (thanks to `@dannon `__). + `Pull Request 18760`_ +* Parse stored config details to script-based visualizations + (thanks to `@guerler `__). + `Pull Request 18651`_ +* Migrate NGL viewer to npm package + (thanks to `@guerler `__). + `Pull Request 18946`_ +* Support deferred datasets in visualizations + (thanks to `@davelopez `__). + `Pull Request 19097`_ +* Openlayer update to npm package + (thanks to `@hujambo-dunia `__). + `Pull Request 19134`_ +* Replace static Cytoscape plugin with npm package + (thanks to `@itisAliRH `__). + `Pull Request 19127`_ +* Update tiff viewer to use script entry_point + (thanks to `@guerler `__). + `Pull Request 19151`_ +* Migrate Venn Diagram to Script-Tag + (thanks to `@guerler `__). + `Pull Request 19153`_ +* Remove OpenLayers legacy files and add SVG logo + (thanks to `@guerler `__). + `Pull Request 19135`_ + +.. enhancement_tag_datatypes + +Datatype enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Add pod5 datatype + (thanks to `@TomHarrop `__). + `Pull Request 18419`_ +* Handle compressed content in dataset preview for all sequence classes + (thanks to `@PlushZ `__). + `Pull Request 18776`_ +* Improve usability of Directory datatype + (thanks to `@wm75 `__). + `Pull Request 17614`_ +* Add some Zarr-based datatypes + (thanks to `@davelopez `__). + `Pull Request 19040`_ +* Add XML based `vtk` datatype + (thanks to `@tStehling `__). + `Pull Request 19104`_ + +.. enhancement_tag_tools + +Tool enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Update GPU JupyterLab tool + (thanks to `@anuprulez `__). + `Pull Request 18220`_ +* Add Tool-Centric APIs to the Tool Shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 18524`_ +* Add BlobToolkit to the list of interactive tools + (thanks to `@Delphine-L `__). + `Pull Request 18630`_ +* Remove some unused dynamic drill down options + (thanks to `@jmchilton `__). + `Pull Request 18892`_ +* Add filter null collection operation tool + (thanks to `@mvdbeek `__). + `Pull Request 18928`_ +* Jupyter Interactive Tool 1.0.1/24.07 + (thanks to `@natefoo `__). + `Pull Request 18861`_ +* Add Interactive Tool Ilastik + (thanks to `@lldelisle `__). + `Pull Request 16837`_ + +.. enhancement_tag_workflows + +* Fix problem with multiple layers in workflow metrics + (thanks to `@jmchilton `__). + `Pull Request 19283`_ +* Fix workflow metrics chart style + (thanks to `@davelopez `__). + `Pull Request 19291`_ +Workflow enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix usability of workflow best practice attribute checking. + (thanks to `@jmchilton `__). + `Pull Request 19230`_ +* Workflow Inputs Activity + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19252`_ +* Fix default value handling for parameters connected to required parameters + (thanks to `@mvdbeek `__). + `Pull Request 19219`_ +* Allow connecting text param into data column parameter + (thanks to `@mvdbeek `__). + `Pull Request 18674`_ +* Allow specifying multi-select workflow parameters + (thanks to `@mvdbeek `__). + `Pull Request 18715`_ +* Allow access to invocation via shared or published history + (thanks to `@mvdbeek `__). + `Pull Request 18707`_ +* Modelling for Test Assertions + (thanks to `@jmchilton `__). + `Pull Request 18787`_ +* Implement Pydantic model for workflow test format. + (thanks to `@jmchilton `__). + `Pull Request 18884`_ +* Improvements to Planemo test format based on feedback/discussions + (thanks to `@jmchilton `__). + `Pull Request 18889`_ +* Allow CORS requests to /api/workflow_landings + (thanks to `@mvdbeek `__). + `Pull Request 18963`_ +* Workflow landing improvements + (thanks to `@mvdbeek `__). + `Pull Request 18979`_ +* Always validate hashes when provided + (thanks to `@nsoranzo `__). + `Pull Request 19110`_ +* Workflow Landing Requests + (thanks to `@jmchilton `__). + `Pull Request 18807`_ +* Implement Declarative Testing for Workflow Behaviors + (thanks to `@jmchilton `__). + `Pull Request 18542`_ +* Allow recovering a normalized version of workflow request state from API + (thanks to `@jmchilton `__). + `Pull Request 18985`_ + +.. enhancement_tag_ui + +UI enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Enable verbatimModuleSyntax, fix jest usage + (thanks to `@dannon `__). + `Pull Request 18595`_ +* Make vite tool shed client proxy configurable + (thanks to `@mvdbeek `__). + `Pull Request 18988`_ +* Upgrade `openapi-typescript` to 7.0.2 + swap to `openapi-fetch` + (thanks to `@davelopez `__). + `Pull Request 18532`_ + +.. enhancement_tag_jobs + +Job enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Record container id and type in core job metrics + (thanks to `@mvdbeek `__). + `Pull Request 18579`_ +* Add type annotations to ``JobRunnerMapper`` and related code + (thanks to `@nsoranzo `__). + `Pull Request 19115`_ +* Allow to overwrite `real_system_username` per destination + (thanks to `@bernt-matthias `__). + `Pull Request 18945`_ + +.. enhancement_tag_admin + +Admin enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Remove `defaults` channel for conda usage + (thanks to `@bernt-matthias `__). + `Pull Request 18757`_ +* Allow setting a few global defaults for file source plugin types + (thanks to `@jmchilton `__). + `Pull Request 18909`_ +* Bring your own file sources: Add the WebDAV template and configuration + (thanks to `@sanjaysrikakulam `__). + `Pull Request 18598`_ +* Decouple user email from role name + (thanks to `@jdavcs `__). + `Pull Request 18966`_ +* Support high-availability setups for the interactive tools proxy + (thanks to `@kysrpex `__). + `Pull Request 18481`_ +* Minor config documentation enhancements + (thanks to `@bgruening `__). + `Pull Request 18499`_ +* Better cleanup of sharing roles on user purge + (thanks to `@jdavcs `__). + `Pull Request 19096`_ + +.. enhancement + +* List private file sources first in Remote Files Dialog + (thanks to `@davelopez `__). + `Pull Request 19455`_ +* Various list of pairs builder usability fixes + (thanks to `@jmchilton `__). + `Pull Request 19248`_ +* Fix to not display upload when creating collections from existing datasets + (thanks to `@jmchilton `__). + `Pull Request 19373`_ +Misc. enhancements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Activity bar add new workflow button + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19281`_ +* Guide users to collection builders + (thanks to `@ahmedhamidawan `__). + `Pull Request 18857`_ +* Updates the About Page + (thanks to `@guerler `__). + `Pull Request 18461`_ +* Moves Libraries from Masthead to Activity Bar + (thanks to `@guerler `__). + `Pull Request 18468`_ +* Adds an option to restore activity bar defaults + (thanks to `@guerler `__). + `Pull Request 18469`_ +* Add errors fast api + (thanks to `@arash77 `__). + `Pull Request 18093`_ +* Add task expiration to persistent task monitor + (thanks to `@davelopez `__). + `Pull Request 18551`_ +* Improve datasets permissions API schema typing + (thanks to `@davelopez `__). + `Pull Request 18563`_ +* Group tool templating exceptions in sentry + (thanks to `@mvdbeek `__). + `Pull Request 18570`_ +* Add a new version of the production s3fs file source template with the writable configuration variable added + (thanks to `@sanjaysrikakulam `__). + `Pull Request 18575`_ +* Move history multiview item actions to top + (thanks to `@ahmedhamidawan `__). + `Pull Request 18265`_ +* Improve update user API payload schema + (thanks to `@davelopez `__). + `Pull Request 18602`_ +* Improve update history payload schema + (thanks to `@davelopez `__). + `Pull Request 18618`_ +* Rev pinned gxformat2 + (thanks to `@jmchilton `__). + `Pull Request 18624`_ +* Improve typing for archived histories API schema + (thanks to `@davelopez `__). + `Pull Request 18586`_ +* Reduce unnecessary requests when browsing tool repositories in Admin Panel + (thanks to `@davelopez `__). + `Pull Request 18632`_ +* Improve types around User in schema and client + (thanks to `@davelopez `__). + `Pull Request 18645`_ +* Rip repository_registry out of tool shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 18647`_ +* Improve accept header API schema + (thanks to `@davelopez `__). + `Pull Request 18668`_ +* Another round of parameter model improvements + (thanks to `@jmchilton `__). + `Pull Request 18673`_ +* Another round of parameter model enhancements and tool tests + (thanks to `@jmchilton `__). + `Pull Request 18678`_ +* Dynamic Models for Tool Test Validation + (thanks to `@jmchilton `__). + `Pull Request 18679`_ +* Implement tool upgrade assistant + (thanks to `@jmchilton `__). + `Pull Request 18728`_ +* Cache pip directory as part of `setup-python` action + (thanks to `@nsoranzo `__). + `Pull Request 18789`_ +* Refactor FolderTopBar to TypeScript + (thanks to `@itisAliRH `__). + `Pull Request 18488`_ +* Update Visualization FastAPI + (thanks to `@arash77 `__). + `Pull Request 18792`_ +* Add Alireza to committers group + (thanks to `@nsoranzo `__). + `Pull Request 18613`_ +* Improvements to help terms & tool help + (thanks to `@jmchilton `__). + `Pull Request 18722`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 18578`_ +* Add wizard-like export view for workflow invocations + (thanks to `@davelopez `__). + `Pull Request 18796`_ +* Improvements to parameter models for test case inputs + (thanks to `@jmchilton `__). + `Pull Request 18743`_ +* Add docs on indexing for filter column + (thanks to `@bernt-matthias `__). + `Pull Request 18844`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 18864`_ +* Add unique constraints to the email and username fields in the galaxy_user table + (thanks to `@jdavcs `__). + `Pull Request 18493`_ +* Replace History Dataset Picker in Library Folder + (thanks to `@itisAliRH `__). + `Pull Request 18518`_ +* Allow using tracks and groups in visualization xml + (thanks to `@guerler `__). + `Pull Request 18779`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 18904`_ +* Add support for arbitrarily ordered image axes in image content assertions + (thanks to `@kostrykin `__). + `Pull Request 18891`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 18943`_ +* Add BioBlend tests + (thanks to `@arash77 `__). + `Pull Request 18975`_ +* Optimize to_history_dataset_association in create_datasets_from_library_folder + (thanks to `@arash77 `__). + `Pull Request 18970`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 18982`_ +* Add workflow to update PR title based on target branch version + (thanks to `@arash77 `__). + `Pull Request 18835`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 19031`_ +* Enable extra user preferences for remotely authorized users + (thanks to `@maartenschermer `__). + `Pull Request 18887`_ +* UI Improvements for Tool Shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 19041`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 19062`_ +* Annotate ``DatasetAssociationManager`` as generic type + (thanks to `@nsoranzo `__). + `Pull Request 19063`_ +* Better logging around tool loading + (thanks to `@jmchilton `__). + `Pull Request 19029`_ +* Add `galaxy-upload` link to `UploadModal` + (thanks to `@ahmedhamidawan `__). + `Pull Request 19055`_ +* Do not skip CI tests on missing tools + (thanks to `@jmchilton `__). + `Pull Request 19002`_ +* Add a filter for `labels` (tags) in Tool Search + (thanks to `@ahmedhamidawan `__). + `Pull Request 19076`_ +* Replace poetry with uv + (thanks to `@nsoranzo `__). + `Pull Request 19075`_ +* Add Python 3.13 support + (thanks to `@nsoranzo `__). + `Pull Request 18449`_ +* Allow deferred datasets to behave as URIs + (thanks to `@davelopez `__). + `Pull Request 19077`_ +* uv: Do not recalculate dependencies when exporting + (thanks to `@nsoranzo `__). + `Pull Request 19099`_ +* Test hash validation also for upload by path + (thanks to `@nsoranzo `__). + `Pull Request 19109`_ +* Integrate Tool Parameter Modeling into Linting (for Planemo) + (thanks to `@jmchilton `__). + `Pull Request 19073`_ +* Better search stuff in Tool Shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 19047`_ +* Enable specifying dataset hash in test jobs + (thanks to `@mvdbeek `__). + `Pull Request 19113`_ +* Access public history in job cache / job search + (thanks to `@mvdbeek `__). + `Pull Request 19108`_ +* Update Python dependencies + (thanks to `@galaxybot `__). + `Pull Request 19123`_ +* Also use miniforge docker for container building + (thanks to `@bernt-matthias `__). + `Pull Request 19128`_ +* Silence the quota manager for updates + (thanks to `@bernt-matthias `__). + `Pull Request 19046`_ +* Enhance relabel_from_file to work with any column pair in mapping file + (thanks to `@wm75 `__). + `Pull Request 19022`_ +* Irods ssl connection + (thanks to `@pauldg `__). + `Pull Request 19014`_ +* Update Japanese locale.js + (thanks to `@manabuishii `__). + `Pull Request 19101`_ +* Update vizarr version to 0.1.5 + (thanks to `@guerler `__). + `Pull Request 19142`_ +* Fix word wrapping in invocation panel list items + (thanks to `@ahmedhamidawan `__). + `Pull Request 19141`_ +* Add Workflow Title and Annotation sections + (thanks to `@hujambo-dunia `__). + `Pull Request 18762`_ +* Assert that `data_column` parameters have a valid `data_ref` + (thanks to `@bernt-matthias `__). + `Pull Request 18949`_ +* Switch update annotate image to new script entry_point + (thanks to `@guerler `__). + `Pull Request 19150`_ +* Workflow license and creator edit keyboard access + (thanks to `@itisAliRH `__). + `Pull Request 18936`_ +* More data access tests, some refactoring and cleanup + (thanks to `@jdavcs `__). + `Pull Request 18312`_ +* Add hint to the tool schema about runtime conditional changes + (thanks to `@martenson `__). + `Pull Request 18996`_ +* Undo stack UI + (thanks to `@ElectronicBlueberry `__). + `Pull Request 18548`_ +* Run installed Galaxy with no config and a simplified entry point + (thanks to `@natefoo `__). + `Pull Request 19050`_ +* A variety of improvements around tool parameter modeling (second try) + (thanks to `@jmchilton `__). + `Pull Request 19027`_ +* Parameter Model Improvements + (thanks to `@jmchilton `__). + `Pull Request 18641`_ +* Masthead Revision + (thanks to `@guerler `__). + `Pull Request 17927`_ +* Workflow Invocation view improvements + (thanks to `@ahmedhamidawan `__). + `Pull Request 18615`_ +* Add linters for datatypes + (thanks to `@bernt-matthias `__). + `Pull Request 17600`_ + +.. small_enhancement + +* Release testing - selenium tests for workflow invocation export + (thanks to `@jmchilton `__). + `Pull Request 19262`_ +* Update versions of GitHub actions + (thanks to `@nsoranzo `__). + `Pull Request 18197`_ +* Update openapi-typescript dependency to version 6.7.6 + (thanks to `@davelopez `__). + `Pull Request 18519`_ +* Mixed enhancements from CWL branch + (thanks to `@nsoranzo `__). + `Pull Request 18539`_ +* Fix some Toolshed 2.0 development paper-cuts + (thanks to `@davelopez `__). + `Pull Request 18538`_ +* Improvements to Tool Test Parsing + (thanks to `@jmchilton `__). + `Pull Request 18560`_ +* Drop unused datasets controller methods + (thanks to `@mvdbeek `__). + `Pull Request 18568`_ +* Consistent type imports, fixes and linting + (thanks to `@dannon `__). + `Pull Request 18589`_ +* Tighten user notification API response types + (thanks to `@davelopez `__). + `Pull Request 18599`_ +* More tool test typing + (thanks to `@jmchilton `__). + `Pull Request 18590`_ +* Remove unused functions in dataset managers + (thanks to `@jmchilton `__). + `Pull Request 18631`_ +* Better Typing for Tool Execution Plumbing + (thanks to `@jmchilton `__). + `Pull Request 18626`_ +* De-couple XML from tool interface for test collections + (thanks to `@jmchilton `__). + `Pull Request 18676`_ +* Update ExportToRemoteModal.vue to use TypeScript + (thanks to `@davelopez `__). + `Pull Request 18706`_ +* More typing, docs, and decomposition around tool execution + (thanks to `@jmchilton `__). + `Pull Request 18758`_ +* Migrate Visualizations API to FastAPI + (thanks to `@arash77 `__). + `Pull Request 18721`_ +* Refactor ``LibraryDatasetsManager`` and fix type annotation issue + (thanks to `@nsoranzo `__). + `Pull Request 18773`_ +* Update Mypy to 1.11.2 and fix new signature override errors + (thanks to `@nsoranzo `__). + `Pull Request 18811`_ +* Remove Build Dataset Pair option from history actions + (thanks to `@guerler `__). + `Pull Request 18740`_ +* Backend handling of setting user-role, user-group, and group-role associations + (thanks to `@jdavcs `__). + `Pull Request 18777`_ +* Refactor migration testing setup code + (thanks to `@jdavcs `__). + `Pull Request 18886`_ +* Enable ``ignore-without-code`` mypy error code + (thanks to `@nsoranzo `__). + `Pull Request 18898`_ +* Raise exception if CompressedFile used on incompatible file + (thanks to `@mvdbeek `__). + `Pull Request 18888`_ +* Type annotations and fixes + (thanks to `@nsoranzo `__). + `Pull Request 18911`_ +* Remove outdated fimo wrapper and galaxy-sequence-utils dependency + (thanks to `@nsoranzo `__). + `Pull Request 18937`_ +* Migrate Library Contents API to FastAPI + (thanks to `@arash77 `__). + `Pull Request 18838`_ +* Fix extra files path type hint + (thanks to `@davelopez `__). + `Pull Request 18958`_ +* Move TRS import into WorkflowContentManager + (thanks to `@mvdbeek `__). + `Pull Request 19070`_ +* More concise, readable tool execution testing + (thanks to `@jmchilton `__). + `Pull Request 18977`_ +* Libraries Modernisation: Directory Dataset Picker + (thanks to `@itisAliRH `__). + `Pull Request 18638`_ + + +Fixes +------------------------------- + +.. major_bug + + +.. bug_tag_viz + +* Prevent cycling through failing conversion jobs in trackster + (thanks to `@mvdbeek `__). + `Pull Request 19494`_ +Vizualization fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Update visualizations package versions + (thanks to `@guerler `__). + `Pull Request 19232`_ +* Install npm-package viz to the package prefix explicitly + (thanks to `@dannon `__). + `Pull Request 18950`_ +* Restore access to saved visualizations + (thanks to `@guerler `__). + `Pull Request 19136`_ + +.. bug_tag_datatypes + +Datatype fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Add gtf to auto_compressed_types + (thanks to `@mvdbeek `__). + `Pull Request 19175`_ + +.. bug_tag_tools + +Tool fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Drop "Send to cloud" tool and associated cloudauthz code + (thanks to `@jdavcs `__). + `Pull Request 18196`_ +* Fix commas that shouldn't be in biotools_mappings.tsv + (thanks to `@jmchilton `__). + `Pull Request 18919`_ + +.. bug_tag_workflows + +* Fix error message when subworkflow input connection missing + (thanks to `@mvdbeek `__). + `Pull Request 19526`_ +* Also check `trs_tool_id` for imported workflow indicator + (thanks to `@ahmedhamidawan `__). + `Pull Request 19460`_ +* Set a hard limit of 100 invocations per request in api/invocations + (thanks to `@mvdbeek `__). + `Pull Request 19497`_ +* Fix import of previously-deleted TRS workflow + (thanks to `@mvdbeek `__). + `Pull Request 19311`_ +Workflow fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix workflows with optional non-default parameter input + (thanks to `@mvdbeek `__). + `Pull Request 19332`_ +* Fix cancellation of workflow scheduling + (thanks to `@ahmedhamidawan `__). + `Pull Request 19238`_ +* Fix collection type drag and drop validation + (thanks to `@mvdbeek `__). + `Pull Request 18623`_ + +.. bug_tag_ui + +UI fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Bump requirejs from 2.3.6 to 2.3.7 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18610`_ +* Bump axios from 1.6.2 to 1.7.4 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18717`_ +* Bump webpack from 5.89.0 to 5.94.0 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18768`_ +* Bump express from 4.19.2 to 4.21.0 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18808`_ +* Bump dompurify from 3.0.6 to 3.1.3 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18821`_ +* Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 19060`_ +* Bump dompurify from 2.3.10 to 3.1.6 in /client + (thanks to `@dependabot[bot] `__). + `Pull Request 18880`_ + +.. bug_tag_jobs + +* Use instance wide default ``real_system_username`` if not defined on destination + (thanks to `@bernt-matthias `__). + `Pull Request 19544`_ +* Fix job parameter summary for inputs without label + (thanks to `@mvdbeek `__). + `Pull Request 19427`_ +* Serialize message exceptions on execution error + (thanks to `@mvdbeek `__). + `Pull Request 19483`_ +* Partial backport of `#19331 `__ + (thanks to `@nsoranzo `__). + `Pull Request 19342`_ +* Fixes for console logging + (thanks to `@jmchilton `__). + `Pull Request 19381`_ +Job fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fixes random job failures in kubernetes + (thanks to `@mapk-amazon `__). + `Pull Request 19001`_ + +.. bug_tag_admin + +* Downgrade 'InteractiveTools are not enabled' to warning + (thanks to `@mvdbeek `__). + `Pull Request 19518`_ +.. bug + +* Use visualizations api in trackster + (thanks to `@mvdbeek `__). + `Pull Request 19495`_ +* Fix extracting workflows from purged and deleted histories + (thanks to `@mvdbeek `__). + `Pull Request 19525`_ +* Fix WSGI response status handling in controller methods + (thanks to `@mvdbeek `__). + `Pull Request 19520`_ +* Fix remap for parameter called id + (thanks to `@mvdbeek `__). + `Pull Request 19532`_ +* Fix admin cancel job message not being displayed to the user + (thanks to `@davelopez `__). + `Pull Request 19537`_ +* Provide guidance in case of deadlock during db migration + (thanks to `@jdavcs `__). + `Pull Request 19551`_ +* Update 24.2 db revision tags + (thanks to `@jdavcs `__). + `Pull Request 19550`_ +* Fix to only show ChatGXY when available + (thanks to `@dannon `__). + `Pull Request 19389`_ +* Display upload help highlight only once and include Rule-based upload info + (thanks to `@ahmedhamidawan `__). + `Pull Request 19393`_ +* Show message for mixed extensions in collection creator + (thanks to `@ahmedhamidawan `__). + `Pull Request 19404`_ +* Fix Activity Bar state lost on page reload + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19426`_ +* Show Keycloak provider label in UI + (thanks to `@ahmedhamidawan `__). + `Pull Request 19447`_ +* `mulled-build-tool` fix for packages wo version + (thanks to `@bernt-matthias `__). + `Pull Request 19450`_ +* Fix parsing of validators with inf limits + (thanks to `@mvdbeek `__). + `Pull Request 19459`_ +* Fix help text overflow breaking tool inspector + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19465`_ +* Fix object not found handling + (thanks to `@mvdbeek `__). + `Pull Request 19468`_ +* Remove print statement + (thanks to `@bernt-matthias `__). + `Pull Request 19469`_ +* Bump typescript target to es2020 + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19473`_ +* Fail with error message when submitting invalid request + (thanks to `@mvdbeek `__). + `Pull Request 19489`_ +* Fix invocation query in JobInformation.vue component + (thanks to `@mvdbeek `__). + `Pull Request 19496`_ +* Fix minor typo in event name in collection creator + (thanks to `@ahmedhamidawan `__). + `Pull Request 19499`_ +* Fix library dataset current user potentially null + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19505`_ +* Fix workflowID assignment in Markdown.vue + (thanks to `@davelopez `__). + `Pull Request 19507`_ +* Skip token refresh without refresh token in psa + (thanks to `@mvdbeek `__). + `Pull Request 19514`_ +* Fix tool search constantly loading bug + (thanks to `@ahmedhamidawan `__). + `Pull Request 19528`_ +* Add tool_id index on job table + (thanks to `@mvdbeek `__). + `Pull Request 19543`_ +* Outputs filter linter fixes + (thanks to `@bernt-matthias `__). + `Pull Request 19208`_ +* Fix some collection builder help and language choices + (thanks to `@jmchilton `__). + `Pull Request 19244`_ +* Only allow moving activity bar icons when editing the bar + (thanks to `@jmchilton `__). + `Pull Request 19258`_ +* Fix CollectionCreatorModal being reopened on history + (thanks to `@davelopez `__). + `Pull Request 19276`_ +* Fix invocation metrics usability by providing job context + (thanks to `@jmchilton `__). + `Pull Request 19279`_ +* Fix inconsistent tab handling in invocation view + (thanks to `@ahmedhamidawan `__). + `Pull Request 19298`_ +* Don't show published workflows in workflow activity of workflow editor + (thanks to `@mvdbeek `__). + `Pull Request 19312`_ +* Fix timeout handling for planemo / galaxy-tool-util + (thanks to `@mvdbeek `__). + `Pull Request 19384`_ +* Fix for empty string in regex validator message + (thanks to `@jmchilton `__). + `Pull Request 19387`_ +Misc. fixes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix handling of step id offsets when duplicating selections + (thanks to `@ElectronicBlueberry `__). + `Pull Request 19351`_ +* Fix simple activity panel item style + (thanks to `@guerler `__). + `Pull Request 19350`_ +* Fixes window manager scrolling and resizing + (thanks to `@guerler `__). + `Pull Request 19308`_ +* Fix activity-bar-id handling wrt activityStore + (thanks to `@dannon `__). + `Pull Request 19316`_ +* Login redirect followup + (thanks to `@dannon `__). + `Pull Request 19251`_ +* Build collection only if populated in collection builder + (thanks to `@ahmedhamidawan `__). + `Pull Request 19250`_ +* Avoid a class of unhelpful accepted format drop downs + (thanks to `@jmchilton `__). + `Pull Request 19241`_ +* Improve the empty history message for guiding users to collections. + (thanks to `@jmchilton `__). + `Pull Request 19242`_ +* Fix PSA Redirect + (thanks to `@dannon `__). + `Pull Request 19247`_ +* release testing - UI tests for new workflow parameters + (thanks to `@jmchilton `__). + `Pull Request 19182`_ +* Return generic message for password reset email + (thanks to `@ahmedhamidawan `__). + `Pull Request 18479`_ +* Raise Message Exception when displaying binary data + (thanks to `@mvdbeek `__). + `Pull Request 18503`_ +* Handle all requests error in ``ApiBiotoolsMetadataSource._raw_get_metadata`` + (thanks to `@nsoranzo `__). + `Pull Request 18510`_ +* Follow-up on `#18212 `__ + (thanks to `@nsoranzo `__). + `Pull Request 18516`_ +* Fix "worklfow" typo here and there + (thanks to `@abretaud `__). + `Pull Request 18523`_ +* Fix MessageException handling in get_edit + (thanks to `@mvdbeek `__). + `Pull Request 18529`_ +* Fix bugs in tool shed tool API + (thanks to `@jmchilton `__). + `Pull Request 18558`_ +* Fix Archive header encoding + (thanks to `@arash77 `__). + `Pull Request 18583`_ +* Fix for not-null in 'column_list' object + (thanks to `@hujambo-dunia `__). + `Pull Request 18553`_ +* Fix API key reveals on mouse hover + (thanks to `@itisAliRH `__). + `Pull Request 18593`_ +* Fix for Numeric form field to allow Null min/max values in validation methods + (thanks to `@hujambo-dunia `__). + `Pull Request 18585`_ +* xsd: allow `change_format` and `actions` also in statically defined collection elements, and break recursion + (thanks to `@bernt-matthias `__). + `Pull Request 18605`_ +* Fixes for errors reported by mypy 1.11.0 + (thanks to `@nsoranzo `__). + `Pull Request 18608`_ +* Bug fix for invalid duplicate id in function test tools + (thanks to `@jmchilton `__). + `Pull Request 18644`_ +* Handle output parsing when tool is not available for tool-centric API + (thanks to `@jmchilton `__). + `Pull Request 18643`_ +* Restore interactive tools watcher + (thanks to `@guerler `__). + `Pull Request 18581`_ +* Strip whitespace when listifying admin users + (thanks to `@jdavcs `__). + `Pull Request 18656`_ +* Update mercurial + (thanks to `@mvdbeek `__). + `Pull Request 18686`_ +* Restore repository update in the tool shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 18655`_ +* Fix "Latest Updates" order in tool shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 16894`_ +* Replace types-pkg-resources with types-setuptools + (thanks to `@nsoranzo `__). + `Pull Request 18708`_ +* Update ruff to 0.6.1 + (thanks to `@nsoranzo `__). + `Pull Request 18716`_ +* Fix new flake8-bugbear B039 and mypy type-var errors + (thanks to `@nsoranzo `__). + `Pull Request 18755`_ +* Fixing RegisterForm.vue not appending prefix when set + (thanks to `@mcuaya1 `__). + `Pull Request 18786`_ +* Fix response if dataset requested by display application is deleted + (thanks to `@mvdbeek `__). + `Pull Request 18803`_ +* Fix alert handling in workflow label handler + (thanks to `@guerler `__). + `Pull Request 18836`_ +* Fix transiently failing selenium tooltip issues + (thanks to `@jmchilton `__). + `Pull Request 18847`_ +* Fix flaky `test/integration_selenium/test_toolbox_filters.py::TestToolboxFiltersSeleniumIntegration::test_toolbox_filters` + (thanks to `@ahmedhamidawan `__). + `Pull Request 18854`_ +* Fix migration data fixes tests + (thanks to `@jdavcs `__). + `Pull Request 18885`_ +* data_column params: offer same columns with and without use_header_names + (thanks to `@wm75 `__). + `Pull Request 18879`_ +* Allow users with 'can_modify_folder' permission to delete items in libraries + (thanks to `@npinter `__). + `Pull Request 18924`_ +* Fix `WorkflowInvocationHeader` import type and current user errors + (thanks to `@itisAliRH `__). + `Pull Request 18956`_ +* Explicitly display dataset preview in pages and workflow reports + (thanks to `@guerler `__). + `Pull Request 18968`_ +* Ignore preflight options in API schema + (thanks to `@jmchilton `__). + `Pull Request 18983`_ +* Define environment variables in ``env:`` section + (thanks to `@nsoranzo `__). + `Pull Request 18987`_ +* Fix the bioblend test failures + (thanks to `@arash77 `__). + `Pull Request 18991`_ +* Fix job directory not being cleaned up + (thanks to `@davelopez `__). + `Pull Request 18997`_ +* Fix job search statement building + (thanks to `@mvdbeek `__). + `Pull Request 19010`_ +* Fix test_stock.py unit test + (thanks to `@mvdbeek `__). + `Pull Request 19037`_ +* add data source doc to the list in index + (thanks to `@PlushZ `__). + `Pull Request 18742`_ +* Fix auto-detect metadata from Edit Dataset Attributes panel + (thanks to `@davelopez `__). + `Pull Request 19025`_ +* Fix numerous issues with tool input format "21.01" + (thanks to `@jmchilton `__). + `Pull Request 19030`_ +* Prevent purged users from logging in + (thanks to `@jdavcs `__). + `Pull Request 19094`_ +* Fixes and tests for data fetch models + (thanks to `@jmchilton `__). + `Pull Request 18834`_ +* Run ``uv lock`` under Python 3.9 + (thanks to `@nsoranzo `__). + `Pull Request 19111`_ +* Allow modes `z` and `Z` for docker volumes + (thanks to `@bernt-matthias `__). + `Pull Request 18998`_ +* Fix handling of v2 hashes + (thanks to `@bernt-matthias `__). + `Pull Request 18522`_ +* Dynamics options add library dataset + (thanks to `@gagayuan `__). + `Pull Request 18198`_ +* Add merge migration to merge 2 heads + (thanks to `@jdavcs `__). + `Pull Request 19163`_ +* Disallow /tool_runner? in robots.txt + (thanks to `@dannon `__). + `Pull Request 19020`_ +* Avoid possible negative offset in LibraryFolder + (thanks to `@martenson `__). + `Pull Request 19090`_ +* Fix backend role sharing bug + (thanks to `@jdavcs `__). + `Pull Request 18942`_ +* Update a localized word with a more appropriate one + (thanks to `@mpalmada `__). + `Pull Request 18910`_ +* Fix tag processing in library upload + (thanks to `@davelopez `__). + `Pull Request 18714`_ +* Update plausible script name in mako templates + (thanks to `@sanjaysrikakulam `__). + `Pull Request 18458`_ +* Fix issue with generating slug for sharing + (thanks to `@arash77 `__). + `Pull Request 18986`_ +* Consolidate tag validation + (thanks to `@dannon `__). + `Pull Request 19166`_ +* Move invocation view running actions and improve styling of annotation section + (thanks to `@ahmedhamidawan `__). + `Pull Request 19168`_ +* Fix mulled_hash + (thanks to `@bernt-matthias `__). + `Pull Request 19199`_ +* Add requirement/resource to schema docs + (thanks to `@bernt-matthias `__). + `Pull Request 19172`_ +* Normalize usernames to lowercase in OIDC authentication + (thanks to `@arash77 `__). + `Pull Request 19131`_ + +.. include:: 24.2_prs.rst + diff --git a/doc/source/releases/24.2_announce.rst b/doc/source/releases/24.2_announce.rst index 112bddcd20d5..ca20109db1c5 100644 --- a/doc/source/releases/24.2_announce.rst +++ b/doc/source/releases/24.2_announce.rst @@ -1,12 +1,361 @@ -:orphan: +=========================================================== +24.2 Galaxy Release (February 2025) +=========================================================== + +.. include:: _header.rst + +Highlights +=========================================================== + + + +**A Wizard-like Export View for Workflow Invocations**. The workflow invocation +export process has been enhanced with a new wizard-like interface, making it +more guided and user-friendly. This interface simplifies complex processes with +many options, providing a step-by-step approach to exporting workflow +invocations. + +**Workflow Editor Enhancements: Activity Bar and Undo Stack UI**. The Activity +Bar is now present in the Workflow Editor along side multiple interface +improvements. + +**Masthead Revision and Activity Bar Improvements**. The Galaxy masthead has +been revised to achieve consistency and reduce redundancy, aligning its +functionality with the Activity Bar. + +**Improved Navigation and Usability of Collection Builders**. To guide users +towards creating collections of the correct type, Galaxy now provides better +navigation via buttons directly on data collection parameters. Users can create +a collection with the required structure for the input, with pre-filtered items +from their current history, also ensuring compatibility with required file +extensions. Additionally, users can upload datasets directly to the collection +builder. + +**Enhanced Workflow Invocation View**. The Workflow Invocation View, introduced +in the previous release has been significantly refined to improve the usability +and visualization of workflow runs. + +**Display Metrics for Workflow Invocations**. Galaxy now provides a Metrics tab +in the Workflow Invocation View, allowing users to quickly summarize runtime, +memory usage, and core allocation per invocation. This enhancement helps users +better understand the resource usage of their workflows. + +**Libraries Modernization: Directory Dataset Picker**. The dataset picker for +user and import directories has been modernized, providing a more intuitive and +user-friendly interface. Users can now easily import files or folders from +their user directory or import directory into a library. + +**Live Reporting of Job Console Outputs**. If enabled by the Galaxy +administrators, it will now be possible to view live console output for running +jobs. The job output will be available on the Job Information page where these +logs have always been available for completed jobs. + +**ChatGXY - Job Error Wizard**. With this release, we're excited to introduce +ChatGXY — AI assistance built directly into the Galaxy interface. The first +functionality being rolled out is an AI-driven job error diagnoser that +automatically inspects errored jobs and provides actionable insights. Users on +supported servers can access this feature through the Dataset Error interface, +where ChatGXY offers targeted suggestions to help diagnose and resolve job +errors quickly and efficiently. + + +Please see the `24.2 user release notes <24.2_announce_user.html>`__ for a summary of new user features. + +Get Galaxy +=========================================================== + +The code lives at `GitHub `__ and you should have `Git `__ to obtain it. + +To get a new Galaxy repository run: + .. code-block:: shell + + $ git clone -b release_24.2 https://github.com/galaxyproject/galaxy.git + +To update an existing Galaxy repository run: + .. code-block:: shell + + $ git fetch origin && git checkout release_24.2 && git pull --ff-only origin release_24.2 + +See the `community hub `__ for additional details on source code locations. + +Upcoming Deprecation Notices +=========================================================== + +**Deprecation of support for Python 3.8 in Galaxy release 25.0** + This Galaxy release (24.2) will be the last release that supports Python 3.8. + We encourage updating to a newer version of Python if possible. + +Admin Notes +=========================================================== + +* Migrating the database to 24.2 may require a short downtime. The 24.2 + database migrations require exclusive access to the `galaxy_user` table. + Therefore, it is recommended to shut down all Galaxy procesess while + upgrading the database. +* Database migration `04288b6a5b25 (make dataset uuids unique)` requires + function `gen_random_uuid()` which was added in PostgreSQL version 13.0. + Prior to version 13.0, UUID generation functions were available in the + external modules uuid-ossp and pgcrypto (see `PostgreSQL 13.0 release notes + `__). Thus, you need to + upgrade your database to version 13.0 or newer, or, alternatively, load the + pgcrypto extension (see `this solution on Stackoverflow + `__). * A user's email address + is no longer used as the name of their private role; + instead, the association between a user and their private role is handled + through a foreign key at the database level. Although a role name is no + longer required to be unique in the database (automatically generated private + roles have the generic name "private role"), manually created roles still + must have a unique name; this prevents from accidentally creating duplicate + roles. +* The user/role/group association tables in the database have been given + additional constraints which prevent accidental creation of duplicate or + incomplete records. In addition to these changes to the database schema, the + database upgrade includes data migration scripts (executed as part of the + upgrade) which will automatically fix any inconsistent data in these tables. + [`#18777 `__] +* OAuth 2.0 enabled plugin for Dropbox has been added to the user defined file + sources framework. See `#18272 `__ + for updates to the admin documentation on how to build and configure a + Dropbox app within Dropbox for a Galaxy instance. +* Support has been added for high-availability setups for the interactive tools proxy. + [`#18481 `__] + + +Configuration Changes +=========================================================== + + +Added +----- + +The following configuration options are new + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.file_source_listings_expiry_time +- mapping.galaxy.mapping.file_source_temp_dir +- mapping.galaxy.mapping.file_source_webdav_use_temp_files +- mapping.galaxy.mapping.interactivetoolsproxy_map +- mapping.galaxy.mapping.openai_api_key +- mapping.galaxy.mapping.openai_model +- mapping.galaxy.mapping.workflow_scheduling_separate_materialization_iteration + + +Changed +------- + +The following configuration options have been changed + +config/user_preferences_extra_conf.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- preferences.onedata.inputs has changed from + + :: + + {'name': 'onezone_domain', 'label': 'Domain of the Onezone service (e.g. datahub.egi.eu)', 'type': 'text', 'required': False} + {'name': 'access_token', 'label': 'Your access token, suitable for REST API access in a Oneprovider service', 'type': 'password', 'required': False} + {'name': 'disable_tls_certificate_validation', 'label': 'Allow connection to Onedata servers that do not present trusted SSL certificates. SHOULD NOT be used unless you really know what you are doing.', 'type': 'boolean', 'required': False, 'value': False} + + to + + :: + + {'name': 'onezone_domain', 'label': 'Domain of the Onezone service (e.g. datahub.egi.eu). The minimal supported Onezone version is 21.02.4.', 'type': 'text', 'required': False} + {'name': 'access_token', 'label': 'Your access token, suitable for REST API access in a Oneprovider service', 'type': 'password', 'required': False} + {'name': 'disable_tls_certificate_validation', 'label': 'Allow connection to Onedata servers that do not present trusted SSL certificates. SHOULD NOT be used unless you really know what you are doing.', 'type': 'boolean', 'required': False, 'value': False} + + +config/file_sources_conf.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- has changed from + + :: + + {'type': 'dropbox', 'id': 'dropbox1', 'label': 'Dropbox files (configure access in user preferences)', 'doc': 'Your Dropbox files - configure an access token via the user preferences', 'access_token': "${user.preferences['dropbox|access_token']}"} + {'type': 'webdav', 'id': 'owncloud1', 'label': 'OwnCloud', 'doc': 'External OwnCloud files (configure access in user preferences)', 'url': "${user.preferences['owncloud|url']}", 'root': "${user.preferences['owncloud|root']}", 'login': "${user.preferences['owncloud|username']}", 'password': "${user.preferences['owncloud|password']}", 'temp_path': '/your/temp/path', 'writable': False} + {'type': 'posix', 'root': '/data/5/galaxy_import/galaxy_user_data/covid-19/data/sequences/', 'id': 'covid19-raw-sequences', 'label': 'COVID-19 FASTQ', 'doc': 'COVID-19 RAW sequences in FASTQ format'} + {'type': 'posix', 'root': '/data/db/databases/pdb/pdb/', 'id': 'pdb-gzip', 'doc': 'Protein Data Bank (PDB)', 'label': 'PDB'} + {'type': 'ftp', 'id': 'ebi-ftp', 'label': 'EBI FTP server', 'doc': 'European Bioinformatic Institute FTP server', 'host': 'ftp.ebi.ac.uk', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ftp', 'id': 'ncbi-ftp', 'label': 'NCBI FTP server', 'doc': 'NCBI FTP server', 'host': 'ftp.ncbi.nlm.nih.gov', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ftp', 'id': 'ensembl-ftp', 'label': 'ENSEMBL FTP server', 'doc': 'ENSEMBL FTP server', 'host': 'ftp.ensemblgenomes.org/vol1/pub/', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ssh', 'id': 'writeable-ssh-dir', 'requires_roles': 'writeable-galaxy-role', 'writable': True, 'label': 'Push your files to me', 'doc': 'This is an example of a writeable SSH dir', 'host': 'coolhost', 'user': 'user', 'passwd': 'passwd', 'timeout': 10, 'path': '/home/cooluser/', 'config_path': '', 'port': 2222} + {'type': 's3fs', 'label': 'My MinIO storage', 'endpoint_url': 'https://minio.usegalaxy.eu', 'id': 'galaxy-minio-storage', 'doc': 'Galaxy MinIO S3 storage', 'anon': False, 'secret': 'UHAJ6asd6asdhasd', 'key': 'MCJU76agdt98GGFAROIP7'} + {'type': 's3fs', 'label': 'Genome Ark', 'id': 'genomeark', 'doc': 'Access to Genome Ark open data on AWS.', 'bucket': 'genomeark', 'anon': True} + {'type': 's3fs', 'label': '1000 Genomes', 'id': '1000genomes', 'doc': 'Access to the 1000 Genomes Project with human genetic variation, including SNPs, structural variants, and their haplotype context.', 'bucket': '1000genomes', 'anon': True} + {'type': 's3fs', 'label': 'The Cancer Genome Atlas', 'id': 'tcga-2-open', 'doc': 'Access to the Cancer Genome Atlas (TCGA)', 'bucket': 'tcga-2-open', 'anon': True} + {'type': 's3fs', 'label': 'COVID-19 Data Lake', 'id': 'covid19-lake', 'doc': 'A centralized repository of up-to-date and curated datasets on or related to the spread and characteristics of the novel corona virus (SARS-CoV-2) and its associated illness, COVID-19', 'bucket': 'covid19-lake', 'anon': True} + {'type': 's3fs', 'label': 'Encyclopedia of DNA Elements (ENCODE)', 'id': 'encode-public', 'doc': 'The Encyclopedia of DNA Elements (ENCODE) Consortium is an international collaboration of research groups funded by the National Human Genome Research Institute (NHGRI)', 'bucket': 'encode-public', 'anon': True} + {'type': 's3fs', 'label': 'Sentinel-3', 'id': 'meeo-s3-nrt', 'doc': 'European Commission’s Copernicus Earth Observation Programme. Sentinel-3 is a polar orbiting satellite that completes 14 orbits of the Earth a day.', 'bucket': 'meeo-s3/NRT/', 'anon': True} + {'type': 's3fs', 'label': 'Sentinel-5P Level 2', 'id': 'meeo-s5p-nrti', 'doc': 'Observations from the Sentinel-5 Precursor satellite of the Copernicus Earth Observation Programme. It contains a polar orbiting satellite that completes 14 orbits of the Earth a day.', 'bucket': 'meeo-s5p/RPRO/', 'anon': True} + {'type': 's3fs', 'label': 'Coupled Model Intercomparison Project 6', 'id': 'esgf-world', 'doc': 'The sixth phase of global coupled ocean-atmosphere general circulation model ensemble', 'bucket': 'esgf-world', 'anon': True} + {'type': 's3fs', 'label': 'CMIP6 GCMs downscaled using WRF', 'id': 'wrf-cmip6-noversioning', 'doc': 'High-resolution historical and future climate simulations from 1980-2100', 'bucket': 'wrf-cmip6-noversioning', 'anon': True} + {'type': 's3fs', 'label': 'NOAA Global Forecast System (GFS)', 'id': 'noaa-gfs-bdp-pds', 'doc': 'The Global Forecast System (GFS) is a weather forecast model produced by the National Centers for Environmental Prediction (NCEP).', 'bucket': 'noaa-gfs-bdp-pds', 'anon': True} + {'type': 's3fs', 'label': 'NOAA Unified Forecast System Subseasonal to Seasonal Prototype 5', 'id': 'noaa-ufs-prototype5-pds', 'doc': 'The Unified Forecast System Subseasonal to Seasonal prototype 5 (UFS S2Sp5) dataset is reforecast data from the UFS atmosphere-ocean.', 'bucket': 'noaa-ufs-prototype5-pds', 'anon': True} + {'type': 's3fs', 'label': 'Copernicus Digital Elevation Model (DEM)', 'id': 'copernicus-dem-30m', 'doc': 'The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation.', 'bucket': 'copernicus-dem-30m', 'anon': True} + {'type': 'http', 'label': 'Custom http filesource', 'id': 'httpcustom', 'url_regex': '^https?://myprotectedsite.org/', 'http_headers': {'Authorization': '#import base64\nBasic ${base64.b64encode(str.encode(user.preferences[\'myprotectedsite|username\'] + ":" + user.preferences[\'myprotectedsite|password\'])).decode()}'}, 'doc': 'Only define this if you want custom control over http downloads. You should also define a stock http source (below) or only downloads from this site will be allowed.'} + {'type': 'http', 'label': 'Stock http filesource', 'id': 'httpstock', 'doc': 'Make sure to define this generic http file source if you have defined any other http file sources, or stock http download capability will be disabled.'} + {'type': 'drs', 'label': 'Custom DRS filesource', 'id': 'drscustom', 'url_regex': '^drs://mydrssite.org/', 'http_headers': {'Authorization': '#import base64\nBasic ${base64.b64encode(str.encode(user.preferences[\'mydrssite|username\'] + ":" + user.preferences[\'mydrssite|password\'])).decode()}'}, 'doc': 'Define this if you want custom control over drs downloads. You should also define a stock drs source (below) or only downloads from this drs server will be allowed.'} + {'type': 'drs', 'label': 'Stock DRS filesource', 'id': 'drsstock', 'doc': 'Make sure to define this generic drs file source if you have defined any other drs file sources, or stock drs download capability will be disabled.'} + {'type': 'inveniordm', 'id': 'invenio_sandbox', 'doc': 'This is the Sandbox instance of Invenio. It is used for testing purposes only, content is NOT preserved. DOIs created in this instance are not real and will not resolve.', 'label': 'Invenio RDM Sandbox Repository (TESTING ONLY)', 'url': 'https://inveniordm.web.cern.ch/', 'token': "${user.user_vault.read_secret('preferences/invenio_sandbox/token')}", 'public_name': "${user.preferences['invenio_sandbox|public_name']}", 'writable': True} + {'type': 'zenodo', 'id': 'zenodo', 'doc': 'Zenodo is a general-purpose open-access repository developed under the European OpenAIRE program and operated by CERN. It allows researchers to deposit data sets, research software, reports, and any other research-related digital artifacts. For each submission, a persistent digital object identifier (DOI) is minted, which makes the stored items easily citeable.', 'label': 'Zenodo', 'url': 'https://zenodo.org', 'token': "${user.user_vault.read_secret('preferences/zenodo/token')}", 'public_name': "${user.preferences['zenodo|public_name']}", 'writable': True} + {'type': 'zenodo', 'id': 'zenodo_sandbox', 'doc': 'This is the Sandbox instance of Zenodo. It is used for testing purposes only, content is NOT preserved. DOIs created in this instance are not real and will not resolve.', 'label': 'Zenodo Sandbox (TESTING ONLY)', 'url': 'https://sandbox.zenodo.org', 'token': "${user.user_vault.read_secret('preferences/zenodo_sandbox/token')}", 'public_name': "${user.preferences['zenodo_sandbox|public_name']}", 'writable': True} + {'type': 'onedata', 'id': 'onedata1', 'label': 'Onedata', 'doc': 'Your Onedata files - configure an access token via user preferences', 'accessToken': "${user.preferences['onedata|access_token']}", 'onezoneDomain': "${user.preferences['onedata|onezone_domain']}", 'disableTlsCertificateValidation': "${user.preferences['onedata|disable_tls_certificate_validation']}"} + + to + + :: + + {'type': 'dropbox', 'id': 'dropbox1', 'label': 'Dropbox files (configure access in user preferences)', 'doc': 'Your Dropbox files - configure an access token via the user preferences', 'access_token': "${user.preferences['dropbox|access_token']}"} + {'type': 'webdav', 'id': 'owncloud1', 'label': 'OwnCloud', 'doc': 'External OwnCloud files (configure access in user preferences)', 'url': "${user.preferences['owncloud|url']}", 'root': "${user.preferences['owncloud|root']}", 'login': "${user.preferences['owncloud|username']}", 'password': "${user.preferences['owncloud|password']}", 'temp_path': '/your/temp/path', 'writable': False} + {'type': 'posix', 'root': '/data/5/galaxy_import/galaxy_user_data/covid-19/data/sequences/', 'id': 'covid19-raw-sequences', 'label': 'COVID-19 FASTQ', 'doc': 'COVID-19 RAW sequences in FASTQ format'} + {'type': 'posix', 'root': '/data/db/databases/pdb/pdb/', 'id': 'pdb-gzip', 'doc': 'Protein Data Bank (PDB)', 'label': 'PDB'} + {'type': 'ftp', 'id': 'ebi-ftp', 'label': 'EBI FTP server', 'doc': 'European Bioinformatic Institute FTP server', 'host': 'ftp.ebi.ac.uk', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ftp', 'id': 'ncbi-ftp', 'label': 'NCBI FTP server', 'doc': 'NCBI FTP server', 'host': 'ftp.ncbi.nlm.nih.gov', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ftp', 'id': 'ensembl-ftp', 'label': 'ENSEMBL FTP server', 'doc': 'ENSEMBL FTP server', 'host': 'ftp.ensemblgenomes.org/vol1/pub/', 'user': 'anonymous', 'passwd': '', 'timeout': 10, 'port': 21} + {'type': 'ssh', 'id': 'writeable-ssh-dir', 'requires_roles': 'writeable-galaxy-role', 'writable': True, 'label': 'Push your files to me', 'doc': 'This is an example of a writeable SSH dir', 'host': 'coolhost', 'user': 'user', 'passwd': 'passwd', 'timeout': 10, 'path': '/home/cooluser/', 'config_path': '', 'port': 2222} + {'type': 's3fs', 'label': 'My MinIO storage', 'endpoint_url': 'https://minio.usegalaxy.eu', 'id': 'galaxy-minio-storage', 'doc': 'Galaxy MinIO S3 storage', 'anon': False, 'secret': 'UHAJ6asd6asdhasd', 'key': 'MCJU76agdt98GGFAROIP7'} + {'type': 's3fs', 'label': 'Genome Ark', 'id': 'genomeark', 'doc': 'Access to Genome Ark open data on AWS.', 'bucket': 'genomeark', 'anon': True} + {'type': 's3fs', 'label': '1000 Genomes', 'id': '1000genomes', 'doc': 'Access to the 1000 Genomes Project with human genetic variation, including SNPs, structural variants, and their haplotype context.', 'bucket': '1000genomes', 'anon': True} + {'type': 's3fs', 'label': 'The Cancer Genome Atlas', 'id': 'tcga-2-open', 'doc': 'Access to the Cancer Genome Atlas (TCGA)', 'bucket': 'tcga-2-open', 'anon': True} + {'type': 's3fs', 'label': 'COVID-19 Data Lake', 'id': 'covid19-lake', 'doc': 'A centralized repository of up-to-date and curated datasets on or related to the spread and characteristics of the novel corona virus (SARS-CoV-2) and its associated illness, COVID-19', 'bucket': 'covid19-lake', 'anon': True} + {'type': 's3fs', 'label': 'Encyclopedia of DNA Elements (ENCODE)', 'id': 'encode-public', 'doc': 'The Encyclopedia of DNA Elements (ENCODE) Consortium is an international collaboration of research groups funded by the National Human Genome Research Institute (NHGRI)', 'bucket': 'encode-public', 'anon': True} + {'type': 's3fs', 'label': 'Sentinel-3', 'id': 'meeo-s3-nrt', 'doc': 'European Commission’s Copernicus Earth Observation Programme. Sentinel-3 is a polar orbiting satellite that completes 14 orbits of the Earth a day.', 'bucket': 'meeo-s3/NRT/', 'anon': True} + {'type': 's3fs', 'label': 'Sentinel-5P Level 2', 'id': 'meeo-s5p-nrti', 'doc': 'Observations from the Sentinel-5 Precursor satellite of the Copernicus Earth Observation Programme. It contains a polar orbiting satellite that completes 14 orbits of the Earth a day.', 'bucket': 'meeo-s5p/RPRO/', 'anon': True} + {'type': 's3fs', 'label': 'Coupled Model Intercomparison Project 6', 'id': 'esgf-world', 'doc': 'The sixth phase of global coupled ocean-atmosphere general circulation model ensemble', 'bucket': 'esgf-world', 'anon': True} + {'type': 's3fs', 'label': 'CMIP6 GCMs downscaled using WRF', 'id': 'wrf-cmip6-noversioning', 'doc': 'High-resolution historical and future climate simulations from 1980-2100', 'bucket': 'wrf-cmip6-noversioning', 'anon': True} + {'type': 's3fs', 'label': 'NOAA Global Forecast System (GFS)', 'id': 'noaa-gfs-bdp-pds', 'doc': 'The Global Forecast System (GFS) is a weather forecast model produced by the National Centers for Environmental Prediction (NCEP).', 'bucket': 'noaa-gfs-bdp-pds', 'anon': True} + {'type': 's3fs', 'label': 'NOAA Unified Forecast System Subseasonal to Seasonal Prototype 5', 'id': 'noaa-ufs-prototype5-pds', 'doc': 'The Unified Forecast System Subseasonal to Seasonal prototype 5 (UFS S2Sp5) dataset is reforecast data from the UFS atmosphere-ocean.', 'bucket': 'noaa-ufs-prototype5-pds', 'anon': True} + {'type': 's3fs', 'label': 'Copernicus Digital Elevation Model (DEM)', 'id': 'copernicus-dem-30m', 'doc': 'The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation.', 'bucket': 'copernicus-dem-30m', 'anon': True} + {'type': 'http', 'label': 'Custom http filesource', 'id': 'httpcustom', 'url_regex': '^https?://myprotectedsite.org/', 'http_headers': {'Authorization': '#import base64\nBasic ${base64.b64encode(str.encode(user.preferences[\'myprotectedsite|username\'] + ":" + user.preferences[\'myprotectedsite|password\'])).decode()}'}, 'doc': 'Only define this if you want custom control over http downloads. You should also define a stock http source (below) or only downloads from this site will be allowed.'} + {'type': 'http', 'label': 'Stock http filesource', 'id': 'httpstock', 'doc': 'Make sure to define this generic http file source if you have defined any other http file sources, or stock http download capability will be disabled.'} + {'type': 'drs', 'label': 'Custom DRS filesource', 'id': 'drscustom', 'url_regex': '^drs://mydrssite.org/', 'http_headers': {'Authorization': '#import base64\nBasic ${base64.b64encode(str.encode(user.preferences[\'mydrssite|username\'] + ":" + user.preferences[\'mydrssite|password\'])).decode()}'}, 'doc': 'Define this if you want custom control over drs downloads. You should also define a stock drs source (below) or only downloads from this drs server will be allowed.'} + {'type': 'drs', 'label': 'Stock DRS filesource', 'id': 'drsstock', 'doc': 'Make sure to define this generic drs file source if you have defined any other drs file sources, or stock drs download capability will be disabled.'} + {'type': 'inveniordm', 'id': 'invenio_sandbox', 'doc': 'This is the Sandbox instance of Invenio. It is used for testing purposes only, content is NOT preserved. DOIs created in this instance are not real and will not resolve.', 'label': 'Invenio RDM Sandbox Repository (TESTING ONLY)', 'url': 'https://inveniordm.web.cern.ch/', 'token': "${user.user_vault.read_secret('preferences/invenio_sandbox/token')}", 'public_name': "${user.preferences['invenio_sandbox|public_name']}", 'writable': True} + {'type': 'zenodo', 'id': 'zenodo', 'doc': 'Zenodo is a general-purpose open-access repository developed under the European OpenAIRE program and operated by CERN. It allows researchers to deposit data sets, research software, reports, and any other research-related digital artifacts. For each submission, a persistent digital object identifier (DOI) is minted, which makes the stored items easily citeable.', 'label': 'Zenodo', 'url': 'https://zenodo.org', 'token': "${user.user_vault.read_secret('preferences/zenodo/token')}", 'public_name': "${user.preferences['zenodo|public_name']}", 'writable': True} + {'type': 'zenodo', 'id': 'zenodo_sandbox', 'doc': 'This is the Sandbox instance of Zenodo. It is used for testing purposes only, content is NOT preserved. DOIs created in this instance are not real and will not resolve.', 'label': 'Zenodo Sandbox (TESTING ONLY)', 'url': 'https://sandbox.zenodo.org', 'token': "${user.user_vault.read_secret('preferences/zenodo_sandbox/token')}", 'public_name': "${user.preferences['zenodo_sandbox|public_name']}", 'writable': True} + {'type': 'onedata', 'id': 'onedata1', 'label': 'Onedata', 'doc': 'Your Onedata files - configure an access token via user preferences', 'access_token': "${user.preferences['onedata|access_token']}", 'onezone_domain': "${user.preferences['onedata|onezone_domain']}", 'disable_tls_certificate_validation': "${user.preferences['onedata|disable_tls_certificate_validation']}"} + + + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.conda_auto_init.desc has changed from + + :: + + Set to true to instruct Galaxy to install Conda from the web automatically + if it cannot find a local copy and conda_exec is not configured. + + to + + :: + + Set to true to instruct Galaxy to install Conda from the web automatically + if it cannot find a local copy and conda_exec is not configured. The default is + true if running Galaxy from source, and false if running from installed packages. + + +- mapping.galaxy.mapping.geographical_server_location_code.desc has changed from + + :: + + The estimated geographical location of the server hosting your galaxy instance given as an ISO 3166 code. + This is used to make carbon emissions estimates more accurate as the location effects the + carbon intensity values used in the estimate calculation. This defaults to "GLOBAL" if not set or the + `geographical_server_location_code` value is invalid or unsupported. To see a full list of supported locations, + visit https://galaxyproject.org/admin/carbon_emissions + + to + + :: + + The estimated geographical location of the server hosting your galaxy instance given as an ISO 3166 code. + This is used to make carbon emissions estimates more accurate as the location effects the + carbon intensity values used in the estimate calculation. This defaults to "GLOBAL" if not set or the + `geographical_server_location_code` value is invalid or unsupported. To see a full list of supported locations, + visit https://docs.galaxyproject.org/en/master/admin/carbon_emissions.html + + +- mapping.galaxy.mapping.interactivetools_map.desc has changed from + + :: + + Map for interactivetool proxy. + + to + + :: + + Map for the interactivetool proxy. Mappings are stored in a SQLite database file + located on this path. As an alternative, you may also store them in any other RDBMS + supported by SQLAlchemy using the option ``interactivetoolsproxy_map``, which + overrides this one. + + +- mapping.galaxy.mapping.object_store_cache_size.desc has changed from + + :: + + Default cache size for caching object stores if cache not configured for + that object store entry. + + to + + :: + + Default cache size, in GB, for caching object stores if the cache is not + configured for that object store entry. + + +Removed +------- + +The following configuration options have been completely removed + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.conda_auto_init + + +Developer Notes =========================================================== -October 2024 Galaxy Release (v 24.2) + +* More concise, readable tool execution testing: infrastructure and some examples. [`#18977 `__] +* More examples of new data access tests. [`#18312 `__] +* Poetry replaced: Galaxy's Python dependency management is now handled with uv. [`#19075 `__] +* Upgrades to openapi-typescript cause some breaking changes. See `#18532 `__ for more details. + + +Release Notes =========================================================== +.. include:: 24.2.rst + :start-after: announce_start -Schedule +Release Team =========================================================== - * Planned Freeze Date: 2024-10-07 - * Planned Release Date: 2024-10-28 + +Release manager: `John Davis `__, `Ahmed Awan `__ + +Release testing: + +* `Patrik Smeds `__ +* `Junhao Qiu `__ +* `Mina Hojat Ansari `__ +* `John Chilton `__ +* `Jennifer Hillman-Jackson `__ +* `Aysam Guerler `__ +* `Srividya Ramakrishnan `__ + +A special thank you goes to everyone who helped test the new release after its deployment on usegalaxy.org. + +---- + +.. include:: _thanks.rst diff --git a/doc/source/releases/24.2_announce_user.rst b/doc/source/releases/24.2_announce_user.rst new file mode 100644 index 000000000000..c42460e00ce8 --- /dev/null +++ b/doc/source/releases/24.2_announce_user.rst @@ -0,0 +1,297 @@ + +=========================================================== +24.2 Galaxy Release (January 2025) +=========================================================== + +.. include:: _header.rst + +Please see the full :doc:`24.2 release notes <24.2_announce>` for more details. + +Highlights +=========================================================== + +A Wizard-like Export View for Workflow Invocations +----------------------------------------------------------- + +The workflow invocation export process has been enhanced with a new wizard-like interface, +making it more guided and user-friendly. This interface simplifies complex processes with many +options, providing a step-by-step approach to exporting workflow invocations. + +- **Select export format**. Choose from various formats such as RO Crate, BioCompute Object, + or Compressed File. +- **Choose export destination**. Options include temporary direct download, remote file source, + or RDM repository. +- **Export**! Finalize and complete the export process with ease. + +This new interface aims to improve the user experience and may be extended to other complex +processes in Galaxy in the future. +[`#18796 `__] + +.. figure:: images/24.2-export-invocation-wizard.gif + :alt: Export invocation wizard. + +Workflow Editor Enhancements: Activity Bar and Undo Stack UI +----------------------------------------------------------- + +The Activity Bar is now present in the Workflow Editor along side multiple interface +improvements. +[`#18729 `__] +[`#18548 `__] + +- **No more double side bars**. Inspecting a step now has it's own floating window, + which can be easily expanded and remembers it's size. All other features were moved to the + left side-bar. +- **Undo redo UI**. A new interactive way of viewing recent changes. Click a change to scroll + backwards and forwards in time. +- **Layout anything with ease**. The auto-layout feature was moved to the Editor Tool Bar. It + now aligns to the grid, untangles connections, and sorts Workflow Comments along with steps. +- **Find your workflows**. Workflows now have their own dedicated interface, from which you can + find, copy into, and inserts Sub-Workflows into your Workflow. +- **Inputs** are not tools, and are now no longer treated as such. Find inputs in their own + interface, and easily add input sub-types directly. + +.. raw:: html + + + +Masthead Revision and Activity Bar Improvements +----------------------------------------------------------- + +The Galaxy masthead has been revised to achieve consistency and reduce redundancy, aligning its +functionality with the Activity Bar. + +- **New "More" activity**. Hidden and less frequently used activities are now accessible through + a new "More" activity, allowing users to add or remove items from the activity bar and navigate + directly to any activity. +- **Username visible in masthead**. The username is now visible in the masthead, with user + preferences and logout options accessible through the user dropdown. +- **A compact masthead**. The masthead has been streamlined, removing redundant links and only + displaying essential items such as storage and the username on the right end. + +These changes enhance the user experience by making the interface more intuitive and reducing +clutter. +[`#17927 `__] + +.. raw:: html + + + +Improved Navigation and Usability of Collection Builders +----------------------------------------------------------- + +To guide users towards creating collections of the correct type, Galaxy now provides +better navigation via buttons directly on data collection parameters. Users can create a +collection with the required structure for the input, with pre-filtered items from their +current history, also ensuring compatibility with required file extensions. Additionally, users +can upload datasets directly to the collection builder. These updates will improve the user +experience of opening a workflow run form, creating appropriate collection(s) for its inputs +and running the workflow in one seamless iteration. +[`#18857 `__] + +.. raw:: html + + + +Enhanced Workflow Invocation View +----------------------------------------------------------- + +The Workflow Invocation View, introduced in the `previous release <24.1_announce_user.html>`__ +has been significantly refined to improve the usability and visualization of workflow runs. +[`#18615 `__] + +Updates include: + +- **Workflow steps moved to a separate tab**, allocating maximum space for the graph. +- **Progress bars relocated to the header** for a cleaner layout. +- **Workflow inputs displayed directly on the graph**, eliminating the need for clicking + and investigating each input. +- **The Invocations panel also toggles out on mouse leave**, providing an uncluttered view when + exploring runs. + +.. list-table:: + :header-rows: 1 + + * - Before + - After + * - .. image:: images/24.2-invocation-view-improvements-before.png + :alt: Invocation view improvements before + :width: 100% + - .. image:: images/24.2-invocation-view-improvements-after.png + :alt: Invocation view improvements after + :width: 100% + * - Steps show on the right, the progress bars are within the `Overview` tab + - Only the currently active step shows below, leaving full width for graph, progress + bars in the Header + +Display Metrics for Workflow Invocations +----------------------------------------------------------- + +Galaxy now provides a Metrics tab in the Workflow Invocation View, allowing users to quickly +summarize runtime, memory usage, and core allocation per invocation. This enhancement helps users +better understand the resource usage of their workflows. The Metrics tab displays runtime in +seconds and core allocation for each step and tool in the workflow. +[`#19048 `__] + +.. figure:: images/24.2-workflow-invocation-metrics.png + :alt: Metrics tab in the Workflow Invocation View. + +Libraries Modernization: Directory Dataset Picker +----------------------------------------------------------- + +The dataset picker for user and import directories has been modernized, providing a more +intuitive and user-friendly interface. Users can now easily import files or folders from their +user directory or import directory into a library. Admins can also import datasets from a +specified path. Additionally, the new History Dataset Picker allows users to explore their +histories and select datasets to add to the library, streamlining the dataset management process. +[`#18638 `__] + +.. raw:: html + + + +Live Reporting of Job Console Outputs +----------------------------------------------------------- + +If enabled by the Galaxy administrators, it will now be possible to view live console output +for running jobs. The job output will be available on the Job Information page where these +logs have always been available for completed jobs. The job information view has also been +updated with scrollable code blocks, a more intuitive expand/collapse feature, +and an auto-scroll function for seamless log viewing. This should allow you to debug issues with +running jobs faster and track the progress of running jobs in realtime in a way that has never +been an option in Galaxy. A huge thanks to Gregory Cage at Oak Ridge National Laboratory for +this valuable contribution! +[`#16975 `__] + + +ChatGXY - Job Error Wizard +----------------------------------------------------------- + +With this release, we're excited to introduce ChatGXY — AI assistance built +directly into the Galaxy interface. The first functionality being rolled out is +an AI-driven job error diagnoser that automatically inspects errored jobs and +provides actionable insights. Users on supported servers can access this +feature through the Dataset Error interface, where ChatGXY offers targeted +suggestions to help diagnose and resolve job errors quickly and efficiently. +[`#15860 `__] + +Visualizations +=========================================================== + +.. visualizations +* Prevent cycling through failing conversion jobs in trackster + (thanks to `@mvdbeek `__). + `Pull Request 19494`_ +* Update visualizations package versions + (thanks to `@guerler `__). + `Pull Request 19232`_ +* Fix MSA viz, new dependency specification options + (thanks to `@dannon `__). + `Pull Request 18760`_ +* Parse stored config details to script-based visualizations + (thanks to `@guerler `__). + `Pull Request 18651`_ +* Install npm-package viz to the package prefix explicitly + (thanks to `@dannon `__). + `Pull Request 18950`_ +* Migrate NGL viewer to npm package + (thanks to `@guerler `__). + `Pull Request 18946`_ +* Support deferred datasets in visualizations + (thanks to `@davelopez `__). + `Pull Request 19097`_ +* Openlayer update to npm package + (thanks to `@hujambo-dunia `__). + `Pull Request 19134`_ +* Replace static Cytoscape plugin with npm package + (thanks to `@itisAliRH `__). + `Pull Request 19127`_ +* Update tiff viewer to use script entry_point + (thanks to `@guerler `__). + `Pull Request 19151`_ +* Migrate Venn Diagram to Script-Tag + (thanks to `@guerler `__). + `Pull Request 19153`_ +* FITS file table graph visualization plugin + (thanks to `@francoismg `__). + `Pull Request 19003`_ +* Restore access to saved visualizations + (thanks to `@guerler `__). + `Pull Request 19136`_ +* Remove OpenLayers legacy files and add SVG logo + (thanks to `@guerler `__). + `Pull Request 19135`_ + +Datatypes +=========================================================== + +.. datatypes +* Add pod5 datatype + (thanks to `@TomHarrop `__). + `Pull Request 18419`_ +* Handle compressed content in dataset preview for all sequence classes + (thanks to `@PlushZ `__). + `Pull Request 18776`_ +* Type annotations and fixes + (thanks to `@nsoranzo `__). + `Pull Request 18911`_ +* Improve usability of Directory datatype + (thanks to `@wm75 `__). + `Pull Request 17614`_ +* Add some Zarr-based datatypes + (thanks to `@davelopez `__). + `Pull Request 19040`_ +* Add XML based `vtk` datatype + (thanks to `@tStehling `__). + `Pull Request 19104`_ +* Add gtf to auto_compressed_types + (thanks to `@mvdbeek `__). + `Pull Request 19175`_ + +Builtin Tool Updates +=========================================================== + +.. tools +* Drop "Send to cloud" tool and associated cloudauthz code + (thanks to `@jdavcs `__). + `Pull Request 18196`_ +* Update GPU JupyterLab tool + (thanks to `@anuprulez `__). + `Pull Request 18220`_ +* Improvements to Tool Test Parsing + (thanks to `@jmchilton `__). + `Pull Request 18560`_ +* Add Tool-Centric APIs to the Tool Shed 2.0 + (thanks to `@jmchilton `__). + `Pull Request 18524`_ +* Add BlobToolkit to the list of interactive tools + (thanks to `@Delphine-L `__). + `Pull Request 18630`_ +* Enable ``ignore-without-code`` mypy error code + (thanks to `@nsoranzo `__). + `Pull Request 18898`_ +* Remove some unused dynamic drill down options + (thanks to `@jmchilton `__). + `Pull Request 18892`_ +* Fix commas that shouldn't be in biotools_mappings.tsv + (thanks to `@jmchilton `__). + `Pull Request 18919`_ +* Add filter null collection operation tool + (thanks to `@mvdbeek `__). + `Pull Request 18928`_ +* Remove outdated fimo wrapper and galaxy-sequence-utils dependency + (thanks to `@nsoranzo `__). + `Pull Request 18937`_ +* Jupyter Interactive Tool 1.0.1/24.07 + (thanks to `@natefoo `__). + `Pull Request 18861`_ +* Add Interactive Tool Ilastik + (thanks to `@lldelisle `__). + `Pull Request 16837`_ + +Please see the full :doc:`24.2 release notes <24.2_announce>` for more details. + +.. include:: 24.2_prs.rst + +---- + +.. include:: _thanks.rst diff --git a/doc/source/releases/24.2_prs.rst b/doc/source/releases/24.2_prs.rst new file mode 100644 index 000000000000..c537e74380cf --- /dev/null +++ b/doc/source/releases/24.2_prs.rst @@ -0,0 +1,324 @@ + +.. github_links +.. _Pull Request 19471: https://github.com/galaxyproject/galaxy/pull/19471 +.. _Pull Request 19495: https://github.com/galaxyproject/galaxy/pull/19495 +.. _Pull Request 19525: https://github.com/galaxyproject/galaxy/pull/19525 +.. _Pull Request 19520: https://github.com/galaxyproject/galaxy/pull/19520 +.. _Pull Request 19494: https://github.com/galaxyproject/galaxy/pull/19494 +.. _Pull Request 19532: https://github.com/galaxyproject/galaxy/pull/19532 +.. _Pull Request 19537: https://github.com/galaxyproject/galaxy/pull/19537 +.. _Pull Request 19526: https://github.com/galaxyproject/galaxy/pull/19526 +.. _Pull Request 19544: https://github.com/galaxyproject/galaxy/pull/19544 +.. _Pull Request 19551: https://github.com/galaxyproject/galaxy/pull/19551 +.. _Pull Request 19550: https://github.com/galaxyproject/galaxy/pull/19550 +.. _Pull Request 19389: https://github.com/galaxyproject/galaxy/pull/19389 +.. _Pull Request 19393: https://github.com/galaxyproject/galaxy/pull/19393 +.. _Pull Request 19404: https://github.com/galaxyproject/galaxy/pull/19404 +.. _Pull Request 19426: https://github.com/galaxyproject/galaxy/pull/19426 +.. _Pull Request 19427: https://github.com/galaxyproject/galaxy/pull/19427 +.. _Pull Request 19447: https://github.com/galaxyproject/galaxy/pull/19447 +.. _Pull Request 19450: https://github.com/galaxyproject/galaxy/pull/19450 +.. _Pull Request 19455: https://github.com/galaxyproject/galaxy/pull/19455 +.. _Pull Request 19459: https://github.com/galaxyproject/galaxy/pull/19459 +.. _Pull Request 19460: https://github.com/galaxyproject/galaxy/pull/19460 +.. _Pull Request 19465: https://github.com/galaxyproject/galaxy/pull/19465 +.. _Pull Request 19468: https://github.com/galaxyproject/galaxy/pull/19468 +.. _Pull Request 19469: https://github.com/galaxyproject/galaxy/pull/19469 +.. _Pull Request 19473: https://github.com/galaxyproject/galaxy/pull/19473 +.. _Pull Request 19483: https://github.com/galaxyproject/galaxy/pull/19483 +.. _Pull Request 19489: https://github.com/galaxyproject/galaxy/pull/19489 +.. _Pull Request 19496: https://github.com/galaxyproject/galaxy/pull/19496 +.. _Pull Request 19497: https://github.com/galaxyproject/galaxy/pull/19497 +.. _Pull Request 19499: https://github.com/galaxyproject/galaxy/pull/19499 +.. _Pull Request 19505: https://github.com/galaxyproject/galaxy/pull/19505 +.. _Pull Request 19507: https://github.com/galaxyproject/galaxy/pull/19507 +.. _Pull Request 19514: https://github.com/galaxyproject/galaxy/pull/19514 +.. _Pull Request 19518: https://github.com/galaxyproject/galaxy/pull/19518 +.. _Pull Request 19528: https://github.com/galaxyproject/galaxy/pull/19528 +.. _Pull Request 19543: https://github.com/galaxyproject/galaxy/pull/19543 +.. _Pull Request 19208: https://github.com/galaxyproject/galaxy/pull/19208 +.. _Pull Request 19244: https://github.com/galaxyproject/galaxy/pull/19244 +.. _Pull Request 19248: https://github.com/galaxyproject/galaxy/pull/19248 +.. _Pull Request 19254: https://github.com/galaxyproject/galaxy/pull/19254 +.. _Pull Request 19258: https://github.com/galaxyproject/galaxy/pull/19258 +.. _Pull Request 19262: https://github.com/galaxyproject/galaxy/pull/19262 +.. _Pull Request 19276: https://github.com/galaxyproject/galaxy/pull/19276 +.. _Pull Request 19279: https://github.com/galaxyproject/galaxy/pull/19279 +.. _Pull Request 19283: https://github.com/galaxyproject/galaxy/pull/19283 +.. _Pull Request 19284: https://github.com/galaxyproject/galaxy/pull/19284 +.. _Pull Request 19288: https://github.com/galaxyproject/galaxy/pull/19288 +.. _Pull Request 19291: https://github.com/galaxyproject/galaxy/pull/19291 +.. _Pull Request 19298: https://github.com/galaxyproject/galaxy/pull/19298 +.. _Pull Request 19311: https://github.com/galaxyproject/galaxy/pull/19311 +.. _Pull Request 19312: https://github.com/galaxyproject/galaxy/pull/19312 +.. _Pull Request 19342: https://github.com/galaxyproject/galaxy/pull/19342 +.. _Pull Request 19373: https://github.com/galaxyproject/galaxy/pull/19373 +.. _Pull Request 19381: https://github.com/galaxyproject/galaxy/pull/19381 +.. _Pull Request 19384: https://github.com/galaxyproject/galaxy/pull/19384 +.. _Pull Request 19387: https://github.com/galaxyproject/galaxy/pull/19387 +.. _Pull Request 19351: https://github.com/galaxyproject/galaxy/pull/19351 +.. _Pull Request 19332: https://github.com/galaxyproject/galaxy/pull/19332 +.. _Pull Request 19350: https://github.com/galaxyproject/galaxy/pull/19350 +.. _Pull Request 19232: https://github.com/galaxyproject/galaxy/pull/19232 +.. _Pull Request 19399: https://github.com/galaxyproject/galaxy/pull/19399 +.. _Pull Request 19308: https://github.com/galaxyproject/galaxy/pull/19308 +.. _Pull Request 19316: https://github.com/galaxyproject/galaxy/pull/19316 +.. _Pull Request 19281: https://github.com/galaxyproject/galaxy/pull/19281 +.. _Pull Request 19251: https://github.com/galaxyproject/galaxy/pull/19251 +.. _Pull Request 19250: https://github.com/galaxyproject/galaxy/pull/19250 +.. _Pull Request 19230: https://github.com/galaxyproject/galaxy/pull/19230 +.. _Pull Request 19252: https://github.com/galaxyproject/galaxy/pull/19252 +.. _Pull Request 19238: https://github.com/galaxyproject/galaxy/pull/19238 +.. _Pull Request 18857: https://github.com/galaxyproject/galaxy/pull/18857 +.. _Pull Request 19241: https://github.com/galaxyproject/galaxy/pull/19241 +.. _Pull Request 19242: https://github.com/galaxyproject/galaxy/pull/19242 +.. _Pull Request 19247: https://github.com/galaxyproject/galaxy/pull/19247 +.. _Pull Request 19212: https://github.com/galaxyproject/galaxy/pull/19212 +.. _Pull Request 19219: https://github.com/galaxyproject/galaxy/pull/19219 +.. _Pull Request 19182: https://github.com/galaxyproject/galaxy/pull/19182 +.. _Pull Request 18197: https://github.com/galaxyproject/galaxy/pull/18197 +.. _Pull Request 18196: https://github.com/galaxyproject/galaxy/pull/18196 +.. _Pull Request 18220: https://github.com/galaxyproject/galaxy/pull/18220 +.. _Pull Request 18386: https://github.com/galaxyproject/galaxy/pull/18386 +.. _Pull Request 18461: https://github.com/galaxyproject/galaxy/pull/18461 +.. _Pull Request 18479: https://github.com/galaxyproject/galaxy/pull/18479 +.. _Pull Request 18503: https://github.com/galaxyproject/galaxy/pull/18503 +.. _Pull Request 18419: https://github.com/galaxyproject/galaxy/pull/18419 +.. _Pull Request 18468: https://github.com/galaxyproject/galaxy/pull/18468 +.. _Pull Request 18510: https://github.com/galaxyproject/galaxy/pull/18510 +.. _Pull Request 18516: https://github.com/galaxyproject/galaxy/pull/18516 +.. _Pull Request 18523: https://github.com/galaxyproject/galaxy/pull/18523 +.. _Pull Request 18519: https://github.com/galaxyproject/galaxy/pull/18519 +.. _Pull Request 18539: https://github.com/galaxyproject/galaxy/pull/18539 +.. _Pull Request 18469: https://github.com/galaxyproject/galaxy/pull/18469 +.. _Pull Request 18538: https://github.com/galaxyproject/galaxy/pull/18538 +.. _Pull Request 18093: https://github.com/galaxyproject/galaxy/pull/18093 +.. _Pull Request 18529: https://github.com/galaxyproject/galaxy/pull/18529 +.. _Pull Request 18558: https://github.com/galaxyproject/galaxy/pull/18558 +.. _Pull Request 18560: https://github.com/galaxyproject/galaxy/pull/18560 +.. _Pull Request 18551: https://github.com/galaxyproject/galaxy/pull/18551 +.. _Pull Request 18563: https://github.com/galaxyproject/galaxy/pull/18563 +.. _Pull Request 18568: https://github.com/galaxyproject/galaxy/pull/18568 +.. _Pull Request 18524: https://github.com/galaxyproject/galaxy/pull/18524 +.. _Pull Request 18583: https://github.com/galaxyproject/galaxy/pull/18583 +.. _Pull Request 18570: https://github.com/galaxyproject/galaxy/pull/18570 +.. _Pull Request 18575: https://github.com/galaxyproject/galaxy/pull/18575 +.. _Pull Request 18553: https://github.com/galaxyproject/galaxy/pull/18553 +.. _Pull Request 18589: https://github.com/galaxyproject/galaxy/pull/18589 +.. _Pull Request 18593: https://github.com/galaxyproject/galaxy/pull/18593 +.. _Pull Request 18599: https://github.com/galaxyproject/galaxy/pull/18599 +.. _Pull Request 18265: https://github.com/galaxyproject/galaxy/pull/18265 +.. _Pull Request 18602: https://github.com/galaxyproject/galaxy/pull/18602 +.. _Pull Request 18590: https://github.com/galaxyproject/galaxy/pull/18590 +.. _Pull Request 18579: https://github.com/galaxyproject/galaxy/pull/18579 +.. _Pull Request 18610: https://github.com/galaxyproject/galaxy/pull/18610 +.. _Pull Request 18623: https://github.com/galaxyproject/galaxy/pull/18623 +.. _Pull Request 18618: https://github.com/galaxyproject/galaxy/pull/18618 +.. _Pull Request 18624: https://github.com/galaxyproject/galaxy/pull/18624 +.. _Pull Request 18585: https://github.com/galaxyproject/galaxy/pull/18585 +.. _Pull Request 18605: https://github.com/galaxyproject/galaxy/pull/18605 +.. _Pull Request 18608: https://github.com/galaxyproject/galaxy/pull/18608 +.. _Pull Request 18586: https://github.com/galaxyproject/galaxy/pull/18586 +.. _Pull Request 18632: https://github.com/galaxyproject/galaxy/pull/18632 +.. _Pull Request 18644: https://github.com/galaxyproject/galaxy/pull/18644 +.. _Pull Request 18631: https://github.com/galaxyproject/galaxy/pull/18631 +.. _Pull Request 18643: https://github.com/galaxyproject/galaxy/pull/18643 +.. _Pull Request 18645: https://github.com/galaxyproject/galaxy/pull/18645 +.. _Pull Request 18647: https://github.com/galaxyproject/galaxy/pull/18647 +.. _Pull Request 18626: https://github.com/galaxyproject/galaxy/pull/18626 +.. _Pull Request 18581: https://github.com/galaxyproject/galaxy/pull/18581 +.. _Pull Request 18656: https://github.com/galaxyproject/galaxy/pull/18656 +.. _Pull Request 18668: https://github.com/galaxyproject/galaxy/pull/18668 +.. _Pull Request 18673: https://github.com/galaxyproject/galaxy/pull/18673 +.. _Pull Request 18676: https://github.com/galaxyproject/galaxy/pull/18676 +.. _Pull Request 18674: https://github.com/galaxyproject/galaxy/pull/18674 +.. _Pull Request 18686: https://github.com/galaxyproject/galaxy/pull/18686 +.. _Pull Request 18655: https://github.com/galaxyproject/galaxy/pull/18655 +.. _Pull Request 18706: https://github.com/galaxyproject/galaxy/pull/18706 +.. _Pull Request 16894: https://github.com/galaxyproject/galaxy/pull/16894 +.. _Pull Request 18708: https://github.com/galaxyproject/galaxy/pull/18708 +.. _Pull Request 18716: https://github.com/galaxyproject/galaxy/pull/18716 +.. _Pull Request 18717: https://github.com/galaxyproject/galaxy/pull/18717 +.. _Pull Request 18678: https://github.com/galaxyproject/galaxy/pull/18678 +.. _Pull Request 18679: https://github.com/galaxyproject/galaxy/pull/18679 +.. _Pull Request 18715: https://github.com/galaxyproject/galaxy/pull/18715 +.. _Pull Request 18728: https://github.com/galaxyproject/galaxy/pull/18728 +.. _Pull Request 18746: https://github.com/galaxyproject/galaxy/pull/18746 +.. _Pull Request 18707: https://github.com/galaxyproject/galaxy/pull/18707 +.. _Pull Request 18755: https://github.com/galaxyproject/galaxy/pull/18755 +.. _Pull Request 18768: https://github.com/galaxyproject/galaxy/pull/18768 +.. _Pull Request 18457: https://github.com/galaxyproject/galaxy/pull/18457 +.. _Pull Request 18630: https://github.com/galaxyproject/galaxy/pull/18630 +.. _Pull Request 18776: https://github.com/galaxyproject/galaxy/pull/18776 +.. _Pull Request 18758: https://github.com/galaxyproject/galaxy/pull/18758 +.. _Pull Request 18789: https://github.com/galaxyproject/galaxy/pull/18789 +.. _Pull Request 18488: https://github.com/galaxyproject/galaxy/pull/18488 +.. _Pull Request 18721: https://github.com/galaxyproject/galaxy/pull/18721 +.. _Pull Request 18786: https://github.com/galaxyproject/galaxy/pull/18786 +.. _Pull Request 18794: https://github.com/galaxyproject/galaxy/pull/18794 +.. _Pull Request 18773: https://github.com/galaxyproject/galaxy/pull/18773 +.. _Pull Request 18760: https://github.com/galaxyproject/galaxy/pull/18760 +.. _Pull Request 18792: https://github.com/galaxyproject/galaxy/pull/18792 +.. _Pull Request 18613: https://github.com/galaxyproject/galaxy/pull/18613 +.. _Pull Request 18722: https://github.com/galaxyproject/galaxy/pull/18722 +.. _Pull Request 18803: https://github.com/galaxyproject/galaxy/pull/18803 +.. _Pull Request 18651: https://github.com/galaxyproject/galaxy/pull/18651 +.. _Pull Request 18811: https://github.com/galaxyproject/galaxy/pull/18811 +.. _Pull Request 18578: https://github.com/galaxyproject/galaxy/pull/18578 +.. _Pull Request 18787: https://github.com/galaxyproject/galaxy/pull/18787 +.. _Pull Request 18740: https://github.com/galaxyproject/galaxy/pull/18740 +.. _Pull Request 18836: https://github.com/galaxyproject/galaxy/pull/18836 +.. _Pull Request 18595: https://github.com/galaxyproject/galaxy/pull/18595 +.. _Pull Request 18808: https://github.com/galaxyproject/galaxy/pull/18808 +.. _Pull Request 18847: https://github.com/galaxyproject/galaxy/pull/18847 +.. _Pull Request 18796: https://github.com/galaxyproject/galaxy/pull/18796 +.. _Pull Request 18743: https://github.com/galaxyproject/galaxy/pull/18743 +.. _Pull Request 18844: https://github.com/galaxyproject/galaxy/pull/18844 +.. _Pull Request 18852: https://github.com/galaxyproject/galaxy/pull/18852 +.. _Pull Request 18860: https://github.com/galaxyproject/galaxy/pull/18860 +.. _Pull Request 18864: https://github.com/galaxyproject/galaxy/pull/18864 +.. _Pull Request 18854: https://github.com/galaxyproject/galaxy/pull/18854 +.. _Pull Request 18821: https://github.com/galaxyproject/galaxy/pull/18821 +.. _Pull Request 18757: https://github.com/galaxyproject/galaxy/pull/18757 +.. _Pull Request 18777: https://github.com/galaxyproject/galaxy/pull/18777 +.. _Pull Request 18493: https://github.com/galaxyproject/galaxy/pull/18493 +.. _Pull Request 18885: https://github.com/galaxyproject/galaxy/pull/18885 +.. _Pull Request 18879: https://github.com/galaxyproject/galaxy/pull/18879 +.. _Pull Request 18884: https://github.com/galaxyproject/galaxy/pull/18884 +.. _Pull Request 18886: https://github.com/galaxyproject/galaxy/pull/18886 +.. _Pull Request 18898: https://github.com/galaxyproject/galaxy/pull/18898 +.. _Pull Request 18888: https://github.com/galaxyproject/galaxy/pull/18888 +.. _Pull Request 18889: https://github.com/galaxyproject/galaxy/pull/18889 +.. _Pull Request 18518: https://github.com/galaxyproject/galaxy/pull/18518 +.. _Pull Request 18911: https://github.com/galaxyproject/galaxy/pull/18911 +.. _Pull Request 18779: https://github.com/galaxyproject/galaxy/pull/18779 +.. _Pull Request 18904: https://github.com/galaxyproject/galaxy/pull/18904 +.. _Pull Request 18923: https://github.com/galaxyproject/galaxy/pull/18923 +.. _Pull Request 18892: https://github.com/galaxyproject/galaxy/pull/18892 +.. _Pull Request 18919: https://github.com/galaxyproject/galaxy/pull/18919 +.. _Pull Request 18928: https://github.com/galaxyproject/galaxy/pull/18928 +.. _Pull Request 18891: https://github.com/galaxyproject/galaxy/pull/18891 +.. _Pull Request 18937: https://github.com/galaxyproject/galaxy/pull/18937 +.. _Pull Request 18943: https://github.com/galaxyproject/galaxy/pull/18943 +.. _Pull Request 18909: https://github.com/galaxyproject/galaxy/pull/18909 +.. _Pull Request 18838: https://github.com/galaxyproject/galaxy/pull/18838 +.. _Pull Request 18924: https://github.com/galaxyproject/galaxy/pull/18924 +.. _Pull Request 18950: https://github.com/galaxyproject/galaxy/pull/18950 +.. _Pull Request 18956: https://github.com/galaxyproject/galaxy/pull/18956 +.. _Pull Request 18958: https://github.com/galaxyproject/galaxy/pull/18958 +.. _Pull Request 18963: https://github.com/galaxyproject/galaxy/pull/18963 +.. _Pull Request 18975: https://github.com/galaxyproject/galaxy/pull/18975 +.. _Pull Request 18968: https://github.com/galaxyproject/galaxy/pull/18968 +.. _Pull Request 18970: https://github.com/galaxyproject/galaxy/pull/18970 +.. _Pull Request 18983: https://github.com/galaxyproject/galaxy/pull/18983 +.. _Pull Request 18982: https://github.com/galaxyproject/galaxy/pull/18982 +.. _Pull Request 18598: https://github.com/galaxyproject/galaxy/pull/18598 +.. _Pull Request 18987: https://github.com/galaxyproject/galaxy/pull/18987 +.. _Pull Request 18988: https://github.com/galaxyproject/galaxy/pull/18988 +.. _Pull Request 18991: https://github.com/galaxyproject/galaxy/pull/18991 +.. _Pull Request 18997: https://github.com/galaxyproject/galaxy/pull/18997 +.. _Pull Request 18835: https://github.com/galaxyproject/galaxy/pull/18835 +.. _Pull Request 19010: https://github.com/galaxyproject/galaxy/pull/19010 +.. _Pull Request 19019: https://github.com/galaxyproject/galaxy/pull/19019 +.. _Pull Request 19001: https://github.com/galaxyproject/galaxy/pull/19001 +.. _Pull Request 18946: https://github.com/galaxyproject/galaxy/pull/18946 +.. _Pull Request 19037: https://github.com/galaxyproject/galaxy/pull/19037 +.. _Pull Request 19031: https://github.com/galaxyproject/galaxy/pull/19031 +.. _Pull Request 18887: https://github.com/galaxyproject/galaxy/pull/18887 +.. _Pull Request 18979: https://github.com/galaxyproject/galaxy/pull/18979 +.. _Pull Request 18742: https://github.com/galaxyproject/galaxy/pull/18742 +.. _Pull Request 19041: https://github.com/galaxyproject/galaxy/pull/19041 +.. _Pull Request 19062: https://github.com/galaxyproject/galaxy/pull/19062 +.. _Pull Request 19025: https://github.com/galaxyproject/galaxy/pull/19025 +.. _Pull Request 19063: https://github.com/galaxyproject/galaxy/pull/19063 +.. _Pull Request 19029: https://github.com/galaxyproject/galaxy/pull/19029 +.. _Pull Request 19055: https://github.com/galaxyproject/galaxy/pull/19055 +.. _Pull Request 19060: https://github.com/galaxyproject/galaxy/pull/19060 +.. _Pull Request 19002: https://github.com/galaxyproject/galaxy/pull/19002 +.. _Pull Request 19076: https://github.com/galaxyproject/galaxy/pull/19076 +.. _Pull Request 19070: https://github.com/galaxyproject/galaxy/pull/19070 +.. _Pull Request 17614: https://github.com/galaxyproject/galaxy/pull/17614 +.. _Pull Request 19075: https://github.com/galaxyproject/galaxy/pull/19075 +.. _Pull Request 18449: https://github.com/galaxyproject/galaxy/pull/18449 +.. _Pull Request 19030: https://github.com/galaxyproject/galaxy/pull/19030 +.. _Pull Request 19077: https://github.com/galaxyproject/galaxy/pull/19077 +.. _Pull Request 19097: https://github.com/galaxyproject/galaxy/pull/19097 +.. _Pull Request 19099: https://github.com/galaxyproject/galaxy/pull/19099 +.. _Pull Request 19094: https://github.com/galaxyproject/galaxy/pull/19094 +.. _Pull Request 19109: https://github.com/galaxyproject/galaxy/pull/19109 +.. _Pull Request 19073: https://github.com/galaxyproject/galaxy/pull/19073 +.. _Pull Request 19047: https://github.com/galaxyproject/galaxy/pull/19047 +.. _Pull Request 18834: https://github.com/galaxyproject/galaxy/pull/18834 +.. _Pull Request 19111: https://github.com/galaxyproject/galaxy/pull/19111 +.. _Pull Request 19113: https://github.com/galaxyproject/galaxy/pull/19113 +.. _Pull Request 19108: https://github.com/galaxyproject/galaxy/pull/19108 +.. _Pull Request 19110: https://github.com/galaxyproject/galaxy/pull/19110 +.. _Pull Request 19114: https://github.com/galaxyproject/galaxy/pull/19114 +.. _Pull Request 19123: https://github.com/galaxyproject/galaxy/pull/19123 +.. _Pull Request 19128: https://github.com/galaxyproject/galaxy/pull/19128 +.. _Pull Request 18998: https://github.com/galaxyproject/galaxy/pull/18998 +.. _Pull Request 19046: https://github.com/galaxyproject/galaxy/pull/19046 +.. _Pull Request 19115: https://github.com/galaxyproject/galaxy/pull/19115 +.. _Pull Request 19040: https://github.com/galaxyproject/galaxy/pull/19040 +.. _Pull Request 18522: https://github.com/galaxyproject/galaxy/pull/18522 +.. _Pull Request 18945: https://github.com/galaxyproject/galaxy/pull/18945 +.. _Pull Request 18198: https://github.com/galaxyproject/galaxy/pull/18198 +.. _Pull Request 19134: https://github.com/galaxyproject/galaxy/pull/19134 +.. _Pull Request 19022: https://github.com/galaxyproject/galaxy/pull/19022 +.. _Pull Request 19014: https://github.com/galaxyproject/galaxy/pull/19014 +.. _Pull Request 18880: https://github.com/galaxyproject/galaxy/pull/18880 +.. _Pull Request 18861: https://github.com/galaxyproject/galaxy/pull/18861 +.. _Pull Request 19101: https://github.com/galaxyproject/galaxy/pull/19101 +.. _Pull Request 19142: https://github.com/galaxyproject/galaxy/pull/19142 +.. _Pull Request 19127: https://github.com/galaxyproject/galaxy/pull/19127 +.. _Pull Request 19141: https://github.com/galaxyproject/galaxy/pull/19141 +.. _Pull Request 18762: https://github.com/galaxyproject/galaxy/pull/18762 +.. _Pull Request 18949: https://github.com/galaxyproject/galaxy/pull/18949 +.. _Pull Request 16837: https://github.com/galaxyproject/galaxy/pull/16837 +.. _Pull Request 19150: https://github.com/galaxyproject/galaxy/pull/19150 +.. _Pull Request 19151: https://github.com/galaxyproject/galaxy/pull/19151 +.. _Pull Request 19104: https://github.com/galaxyproject/galaxy/pull/19104 +.. _Pull Request 19153: https://github.com/galaxyproject/galaxy/pull/19153 +.. _Pull Request 18936: https://github.com/galaxyproject/galaxy/pull/18936 +.. _Pull Request 19003: https://github.com/galaxyproject/galaxy/pull/19003 +.. _Pull Request 19163: https://github.com/galaxyproject/galaxy/pull/19163 +.. _Pull Request 19136: https://github.com/galaxyproject/galaxy/pull/19136 +.. _Pull Request 19020: https://github.com/galaxyproject/galaxy/pull/19020 +.. _Pull Request 19170: https://github.com/galaxyproject/galaxy/pull/19170 +.. _Pull Request 15860: https://github.com/galaxyproject/galaxy/pull/15860 +.. _Pull Request 18272: https://github.com/galaxyproject/galaxy/pull/18272 +.. _Pull Request 19048: https://github.com/galaxyproject/galaxy/pull/19048 +.. _Pull Request 18977: https://github.com/galaxyproject/galaxy/pull/18977 +.. _Pull Request 18966: https://github.com/galaxyproject/galaxy/pull/18966 +.. _Pull Request 18807: https://github.com/galaxyproject/galaxy/pull/18807 +.. _Pull Request 18481: https://github.com/galaxyproject/galaxy/pull/18481 +.. _Pull Request 18312: https://github.com/galaxyproject/galaxy/pull/18312 +.. _Pull Request 18542: https://github.com/galaxyproject/galaxy/pull/18542 +.. _Pull Request 19135: https://github.com/galaxyproject/galaxy/pull/19135 +.. _Pull Request 19090: https://github.com/galaxyproject/galaxy/pull/19090 +.. _Pull Request 18996: https://github.com/galaxyproject/galaxy/pull/18996 +.. _Pull Request 18942: https://github.com/galaxyproject/galaxy/pull/18942 +.. _Pull Request 18910: https://github.com/galaxyproject/galaxy/pull/18910 +.. _Pull Request 18866: https://github.com/galaxyproject/galaxy/pull/18866 +.. _Pull Request 18714: https://github.com/galaxyproject/galaxy/pull/18714 +.. _Pull Request 18638: https://github.com/galaxyproject/galaxy/pull/18638 +.. _Pull Request 18548: https://github.com/galaxyproject/galaxy/pull/18548 +.. _Pull Request 18499: https://github.com/galaxyproject/galaxy/pull/18499 +.. _Pull Request 18458: https://github.com/galaxyproject/galaxy/pull/18458 +.. _Pull Request 19050: https://github.com/galaxyproject/galaxy/pull/19050 +.. _Pull Request 19027: https://github.com/galaxyproject/galaxy/pull/19027 +.. _Pull Request 18985: https://github.com/galaxyproject/galaxy/pull/18985 +.. _Pull Request 18641: https://github.com/galaxyproject/galaxy/pull/18641 +.. _Pull Request 18532: https://github.com/galaxyproject/galaxy/pull/18532 +.. _Pull Request 17927: https://github.com/galaxyproject/galaxy/pull/17927 +.. _Pull Request 18615: https://github.com/galaxyproject/galaxy/pull/18615 +.. _Pull Request 18986: https://github.com/galaxyproject/galaxy/pull/18986 +.. _Pull Request 19096: https://github.com/galaxyproject/galaxy/pull/19096 +.. _Pull Request 16975: https://github.com/galaxyproject/galaxy/pull/16975 +.. _Pull Request 19166: https://github.com/galaxyproject/galaxy/pull/19166 +.. _Pull Request 17600: https://github.com/galaxyproject/galaxy/pull/17600 +.. _Pull Request 19168: https://github.com/galaxyproject/galaxy/pull/19168 +.. _Pull Request 19199: https://github.com/galaxyproject/galaxy/pull/19199 +.. _Pull Request 19175: https://github.com/galaxyproject/galaxy/pull/19175 +.. _Pull Request 19172: https://github.com/galaxyproject/galaxy/pull/19172 +.. _Pull Request 19131: https://github.com/galaxyproject/galaxy/pull/19131 diff --git a/doc/source/releases/25.0_announce.rst b/doc/source/releases/25.0_announce.rst new file mode 100644 index 000000000000..4f1ce6ad6478 --- /dev/null +++ b/doc/source/releases/25.0_announce.rst @@ -0,0 +1,6 @@ + +:orphan: + +=========================================================== +25.0 Galaxy Release +=========================================================== diff --git a/doc/source/releases/images/24.2-export-invocation-wizard.gif b/doc/source/releases/images/24.2-export-invocation-wizard.gif new file mode 100644 index 000000000000..5c03c995613d Binary files /dev/null and b/doc/source/releases/images/24.2-export-invocation-wizard.gif differ diff --git a/doc/source/releases/images/24.2-invocation-view-improvements-after.png b/doc/source/releases/images/24.2-invocation-view-improvements-after.png new file mode 100644 index 000000000000..9212b6a39db3 Binary files /dev/null and b/doc/source/releases/images/24.2-invocation-view-improvements-after.png differ diff --git a/doc/source/releases/images/24.2-invocation-view-improvements-before.png b/doc/source/releases/images/24.2-invocation-view-improvements-before.png new file mode 100644 index 000000000000..bc7d9077d133 Binary files /dev/null and b/doc/source/releases/images/24.2-invocation-view-improvements-before.png differ diff --git a/doc/source/releases/images/24.2-workflow-invocation-metrics.png b/doc/source/releases/images/24.2-workflow-invocation-metrics.png new file mode 100644 index 000000000000..2b9e43b31930 Binary files /dev/null and b/doc/source/releases/images/24.2-workflow-invocation-metrics.png differ diff --git a/doc/source/releases/index.rst b/doc/source/releases/index.rst index 5e9d65038a4f..2a84a59df414 100644 --- a/doc/source/releases/index.rst +++ b/doc/source/releases/index.rst @@ -4,6 +4,7 @@ Releases .. toctree:: :maxdepth: 1 + 24.2_announce_user 24.1_announce_user 24.0_announce_user 23.2_announce_user diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 8dafd0d8b365..9a24a04dae98 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -2536,7 +2536,7 @@ def user_system_pwent(self): if self.__user_system_pwent is None: job = self.get_job() self.__user_system_pwent = job.user.system_user_pwent( - self.get_destination_configuration("real_system_username", None) + self.get_destination_configuration("real_system_username", self.app.config.real_system_username) ) return self.__user_system_pwent diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 11151b2b8479..da20ff941aa6 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -1453,7 +1453,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): update_time: Mapped[datetime] = mapped_column(default=now, onupdate=now, index=True, nullable=True) history_id: Mapped[Optional[int]] = mapped_column(ForeignKey("history.id"), index=True) library_folder_id: Mapped[Optional[int]] = mapped_column(ForeignKey("library_folder.id"), index=True) - tool_id: Mapped[Optional[str]] = mapped_column(String(255)) + tool_id: Mapped[Optional[str]] = mapped_column(String(255), index=True) tool_version: Mapped[Optional[str]] = mapped_column(TEXT, default="1.0.0") galaxy_version: Mapped[Optional[str]] = mapped_column(String(64), default=None) dynamic_tool_id: Mapped[Optional[int]] = mapped_column(ForeignKey("dynamic_tool.id"), index=True) diff --git a/lib/galaxy/model/migrations/alembic/env.py b/lib/galaxy/model/migrations/alembic/env.py index 8ec793787d54..b7766e4e20bf 100644 --- a/lib/galaxy/model/migrations/alembic/env.py +++ b/lib/galaxy/model/migrations/alembic/env.py @@ -10,6 +10,7 @@ from alembic.script import ScriptDirectory from alembic.script.base import Script from sqlalchemy import create_engine +from sqlalchemy.exc import OperationalError from galaxy.model import Base from galaxy.model.migrations import ( @@ -111,19 +112,30 @@ def _configure_and_run_migrations_offline(url: str) -> None: literal_binds=True, dialect_opts={"paramstyle": "named"}, ) - with context.begin_transaction(): - context.run_migrations() + _run_migrations() def _configure_and_run_migrations_online(url) -> None: engine = create_engine(url) with engine.connect() as connection: context.configure(connection=connection, target_metadata=target_metadata) - with context.begin_transaction(): - context.run_migrations() + _run_migrations() engine.dispose() +def _run_migrations(): + with context.begin_transaction(): + try: + context.run_migrations() + except OperationalError as error: + if getattr(error.orig, "pgcode", None) == "40P01": # PostgreSQL DeadlockDetected error detected + msg = """A deadlock has been detected. This may be due to a database +revision requiring exclusive access to a database object. To avoid this error, it is recommended to +shut down all Galaxy procesess during database migration.""" + log.error(msg) + raise + + def _get_url_from_config() -> str: url = config.get_main_option("sqlalchemy.url") return cast(str, url) diff --git a/lib/galaxy/model/migrations/alembic/versions_gxy/9a5207190a4d_remove_unique_constraint_from_role_name.py b/lib/galaxy/model/migrations/alembic/versions_gxy/9a5207190a4d_remove_unique_constraint_from_role_name.py index 4c4f31fb3ba0..36893551e7a4 100644 --- a/lib/galaxy/model/migrations/alembic/versions_gxy/9a5207190a4d_remove_unique_constraint_from_role_name.py +++ b/lib/galaxy/model/migrations/alembic/versions_gxy/9a5207190a4d_remove_unique_constraint_from_role_name.py @@ -6,6 +6,11 @@ """ +import logging + +from alembic import op +from sqlalchemy import text + from galaxy.model.database_object_names import build_index_name from galaxy.model.migrations.util import ( alter_column, @@ -14,6 +19,8 @@ transaction, ) +log = logging.getLogger(__name__) + # revision identifiers, used by Alembic. revision = "9a5207190a4d" down_revision = "a99a5b52ccb8" @@ -35,6 +42,15 @@ def upgrade(): def downgrade(): with transaction(): - drop_index(index_name, table_name) alter_column(table_name, column_name, nullable=True) - create_index(index_name, table_name, [column_name], unique=True) + + stmt = text("SELECT 1 FROM role GROUP BY name HAVING count(*) > 1") + has_nonunique_values = op.get_bind().scalar(stmt) + if not has_nonunique_values: + drop_index(index_name, table_name) + create_index(index_name, table_name, [column_name], unique=True) + else: + msg = f"""This downgrade requires creating a unique index on the `{table_name}.{column_name}` field. +This operation cannot proceed due to the existence of non-unique values in that column, which are the result of Galaxy v24.2 (and above) +operating under normal conditions. The current non-unique index will remain unchanged.""" + log.error(msg) diff --git a/lib/galaxy/model/migrations/alembic/versions_gxy/a4c3ef999ab5_add_index_on_tool_id_column_of_job_table.py b/lib/galaxy/model/migrations/alembic/versions_gxy/a4c3ef999ab5_add_index_on_tool_id_column_of_job_table.py new file mode 100644 index 000000000000..004ff6a875c6 --- /dev/null +++ b/lib/galaxy/model/migrations/alembic/versions_gxy/a4c3ef999ab5_add_index_on_tool_id_column_of_job_table.py @@ -0,0 +1,32 @@ +"""Add index on tool_id column of job table + +Revision ID: a4c3ef999ab5 +Revises: 75348cfb3715 +Create Date: 2025-02-05 14:55:13.348044 + +""" + +from galaxy.model.database_object_names import build_index_name +from galaxy.model.migrations.util import ( + create_index, + drop_index, +) + +# revision identifiers, used by Alembic. +revision = "a4c3ef999ab5" +down_revision = "75348cfb3715" +branch_labels = None +depends_on = None + + +table_name = "job" +column_name = "tool_id" +index_name = build_index_name(table_name, column_name) + + +def upgrade(): + create_index(index_name, table_name, [column_name]) + + +def downgrade(): + drop_index(index_name, table_name) diff --git a/lib/galaxy/model/migrations/dbscript.py b/lib/galaxy/model/migrations/dbscript.py index 8be9ddb67b69..ec0180676db3 100644 --- a/lib/galaxy/model/migrations/dbscript.py +++ b/lib/galaxy/model/migrations/dbscript.py @@ -44,8 +44,8 @@ "24.0": "55f02fd8ab6c", "release_24.1": "04288b6a5b25", "24.1": "04288b6a5b25", - "release_24.2": "75348cfb3715", - "24.2": "75348cfb3715", + "release_24.2": "a4c3ef999ab5", + "24.2": "a4c3ef999ab5", } diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py index 4756b4c5ab6a..032f8b072b21 100644 --- a/lib/galaxy/webapps/galaxy/buildapp.py +++ b/lib/galaxy/webapps/galaxy/buildapp.py @@ -618,7 +618,7 @@ def populate_api_routes(webapp, app): "/plugins/visualizations/{visualization_name}/saved", controller="visualization", action="saved", - conditions={"method": ["POST"]}, + conditions={"method": ["GET"]}, ) # Deprecated in favor of POST /api/workflows with 'workflow' in payload. webapp.mapper.connect(