From a48233493aeefb00a835b09f8316f09bcef14df9 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Wed, 5 May 2021 22:12:25 +0200 Subject: [PATCH 01/17] Release notes for 21.05 --- doc/source/releases/21.05.rst | 803 ++++++++++++++++++++ doc/source/releases/21.05_announce.rst | 12 + doc/source/releases/21.05_announce_user.rst | 129 ++++ doc/source/releases/21.05_prs.rst | 319 ++++++++ 4 files changed, 1263 insertions(+) create mode 100644 doc/source/releases/21.05.rst create mode 100644 doc/source/releases/21.05_announce.rst create mode 100644 doc/source/releases/21.05_announce_user.rst create mode 100644 doc/source/releases/21.05_prs.rst diff --git a/doc/source/releases/21.05.rst b/doc/source/releases/21.05.rst new file mode 100644 index 00000000000..7240a2b75a6 --- /dev/null +++ b/doc/source/releases/21.05.rst @@ -0,0 +1,803 @@ + +.. to_doc + +21.05 +=============================== + +.. announce_start + +Enhancements +------------------------------- + +.. major_feature + +* Beta History scrolling behavior and polling efficiency tuning + `Pull Request 11693`_ + +.. feature + +* Add FastAPI routes for tours + `Pull Request 11089`_ +* Add FastAPI routes for datatypes + (thanks to `@davelopez `__). + `Pull Request 11098`_ +* Add cache_dir to schema + `Pull Request 11202`_ +* Allow requesting extra scopes + (thanks to `@hexylena `__). + `Pull Request 11561`_ +* Github workflow for updating dependencies + `Pull Request 11570`_ +* Allow line break html tag in markdown pages + `Pull Request 11592`_ +* Allow workflow imports in pages + `Pull Request 11607`_ +* Add option to download collections in markdown pages + `Pull Request 11676`_ +* Add the SimText shiny app as Interactive Tool + (thanks to `@dlal-group `__). + `Pull Request 11680`_ +* Replace sqlalchemy-utilities with local implementation + `Pull Request 11696`_ +* Circus + Celery - MVP + `Pull Request 11720`_ +* Support role and group permissions in file sources plugins + (thanks to `@davelopez `__). + `Pull Request 11769`_ +* Add circus + gunicorn option when using run.sh + `Pull Request 11772`_ +* Run history export setup via celery, if configured + `Pull Request 11789`_ +* Allow importing histories through pages / reports + `Pull Request 11863`_ +.. enhancement_tag_viz + +* Migrate api/genomes to fastapi + `Pull Request 11241`_ +.. enhancement_tag_datatypes + +* Add FlowCytometry and MetaCyto datatypes + (thanks to `@pcm32 `__). + `Pull Request 9807`_ +* Add mrc datatype (and Python dependency) + (thanks to `@gregvonkuster `__). + `Pull Request 11220`_ +* Add HHR datatype + (thanks to `@bgruening `__). + `Pull Request 11661`_ +* add meryldb datatype + (thanks to `@bgruening `__). + `Pull Request 11694`_ +* Add datatype for PretextMap output + `Pull Request 11747`_ +* add new datatype class for meryldb + (thanks to `@bgruening `__). + `Pull Request 11758`_ +* Make Avivator GEDA and sniffer for ome.tiff datatype + (thanks to `@qiagu `__). + `Pull Request 11801`_ +* jellyfish db datatype + (thanks to `@astrovsky01 `__). + `Pull Request 11802`_ +* add new datatype JPEG 2000 in Galaxy + (thanks to `@annefou `__). + `Pull Request 11812`_ +* Make datatype h5_model for machine leaning models + (thanks to `@qiagu `__). + `Pull Request 11825`_ +* Add support for the Relion STAR data format + (thanks to `@gregvonkuster `__). + `Pull Request 11831`_ +* add minerva display app for covid + (thanks to `@hexylena `__). + `Pull Request 11880`_ +* Add toml datatype + (thanks to `@jj-umn `__). + `Pull Request 11909`_ +.. enhancement_tag_tools + +* grep, tail, head: add option to keep header + (thanks to `@bernt-matthias `__). + `Pull Request 11859`_ +* add a bit of docs to the add tags tool + (thanks to `@bernt-matthias `__). + `Pull Request 11874`_ +.. enhancement_tag_workflows + +* Selenium test case for invocation grid + display. + `Pull Request 11160`_ +* be more verbose on output filter errors + (thanks to `@bernt-matthias `__). + `Pull Request 11197`_ +* Add UpgradeAllSteps workflow refactor action + (thanks to `@simonbray `__). + `Pull Request 11429`_ +* Guess tool name when extracting workflows with imported datasets + (thanks to `@davelopez `__). + `Pull Request 11483`_ +* Avoid appending imported source on workflow name multiple times. + (thanks to `@davelopez `__). + `Pull Request 11671`_ +* Switch default handler assignment to skip locked or transaction isolation if possible + `Pull Request 11792`_ +.. enhancement_tag_ui + +* Client testing/linting updates and followup + `Pull Request 11121`_ +* replaced global vue with test vue in unit tests + `Pull Request 11138`_ +* Manage folder rewrite in Vue & VueRouter + (thanks to `@OlegZharkov `__). + `Pull Request 11259`_ +* Copy to Clipboard button next to the tool id in job information + (thanks to `@OlegZharkov `__). + `Pull Request 11478`_ +* Better webpack-dev-server handling. + `Pull Request 11566`_ +* Speed up get history list + `Pull Request 11883`_ +* Implement switch to history modal for beta history panel + `Pull Request 11895`_ +.. enhancement_tag_jobs + +* Store job_id on Dataset table. + `Pull Request 10222`_ +* Handle unschedulable jobs in k8s runner + (thanks to `@almahmoud `__). + `Pull Request 10496`_ +* Establish a best practice for trans dependency management. + `Pull Request 11113`_ +* Adding GALAXY_MEMORY_MB_PER_SLOT to k8s runner + (thanks to `@almahmoud `__). + `Pull Request 11227`_ +* add reworked chronos job runner + (thanks to `@mtangaro `__). + `Pull Request 11228`_ +* Generalise rule helper to detect whether tools can use any container + (thanks to `@pcm32 `__). + `Pull Request 11274`_ +* Only return a subset of jobs ready to run per user when querying for jobs ready to run + `Pull Request 11358`_ +* ITs on Kubernetes + (thanks to `@almahmoud `__). + `Pull Request 11383`_ +* Read cgroups from cgroup filesystem mount rather than cgget, which is not always installed + `Pull Request 11393`_ +* SLURM: stop editing job stderr file + (thanks to `@bernt-matthias `__). + `Pull Request 11575`_ +* Fixes for extended metadata working with Pulsar. + `Pull Request 11788`_ +* Fix collection state updates by setting collection update time + `Pull Request 11849`_ +* Test a better Pulsar configuration for extended metadata. + `Pull Request 11852`_ +* Add handler column in admin jobs, remove webcontroller + `Pull Request 11868`_ +* improve three debug messages + (thanks to `@bernt-matthias `__). + `Pull Request 11908`_ +.. enhancement_tag_admin + +* Add documentation on how to setup Pulsar's two-container job runner + `Pull Request 11557`_ +* sortable columns in Admin->Users + (thanks to `@OlegZharkov `__). + `Pull Request 11665`_ +* Create install database with create_db.sh + `Pull Request 11753`_ +.. enhancement + +* Performance testing infrastructure. + `Pull Request 10117`_ +* Stub MQ docs + (thanks to `@brinkmanlab `__). + `Pull Request 10347`_ +* Implement read-only conda resolver. + `Pull Request 10810`_ +* really test variables in conditionals + (thanks to `@bernt-matthias `__). + `Pull Request 11111`_ +* Updated API Design Guidelines + `Pull Request 11115`_ +* uvicorn-compatible factory function for fastapi. + `Pull Request 11116`_ +* Dynamic discovery of FastAPI routers. + `Pull Request 11124`_ +* FastAPI routes for configuration + `Pull Request 11126`_ +* Start type signature for UniverseApplication. + `Pull Request 11142`_ +* Various testing framework cleanups. + `Pull Request 11156`_ +* FastAPI routes for tool data tables + (thanks to `@davelopez `__). + `Pull Request 11167`_ +* Recommend 2FA and commit signing + (thanks to `@nsoranzo `__). + `Pull Request 11173`_ +* Warns that build_mulled_singularity requires docker + (thanks to `@pcm32 `__). + `Pull Request 11176`_ +* Documentation and helpers for using galaxy-selenium package within Jupyter + `Pull Request 11177`_ +* History beta poll decay time reset + `Pull Request 11178`_ +* Holistic approach to dependency injection. + `Pull Request 11180`_ +* Selenium test for ``library_import_dir`` + (thanks to `@OlegZharkov `__). + `Pull Request 11188`_ +* Replace pipenv with poetry. Update all dependencies + (thanks to `@nsoranzo `__). + `Pull Request 11192`_ +* Add missing xml:lang attribute to documentation annotations + (thanks to `@davelopez `__). + `Pull Request 11198`_ +* Selenium tests for user library import dir + (thanks to `@OlegZharkov `__). + `Pull Request 11203`_ +* FastAPI route for remote files + (thanks to `@davelopez `__). + `Pull Request 11211`_ +* More debug info for failed integration selenium tests during CI. + `Pull Request 11217`_ +* Implement abstraction around InferringApiRouter tailored to typical Galaxy usage. + `Pull Request 11219`_ +* FastAPI route for tags (Disabled) + (thanks to `@davelopez `__). + `Pull Request 11224`_ +* Remove `folder_up` button from data folder + (thanks to `@OlegZharkov `__). + `Pull Request 11230`_ +* add ActionChains example in documentation of galaxy-selenium package within Jupyter + (thanks to `@OlegZharkov `__). + `Pull Request 11232`_ +* Sync x-frame-options handling across frameworks and test. + `Pull Request 11235`_ +* FastAPI/ASGI CORS handling. + `Pull Request 11240`_ +* FastAPI routes for Pages (Disabled) + (thanks to `@davelopez `__). + `Pull Request 11262`_ +* Don't fail silently in `User.system_user_pwent()` + (thanks to `@nsoranzo `__). + `Pull Request 11272`_ +* Move docstring linting to GitHub workflows + (thanks to `@nsoranzo `__). + `Pull Request 11300`_ +* Add Nuwan Goonasekera to the committers group + `Pull Request 11304`_ +* ignore subdirectories if recurse is false + (thanks to `@bernt-matthias `__). + `Pull Request 11307`_ +* Fix transiently failing roles API test. + `Pull Request 11319`_ +* Allow `GET /api/dataset_collections/{hdca_id}` without specifying `instance_type` + (thanks to `@nsoranzo `__). + `Pull Request 11346`_ +* Add support for Plausible analytics and Matomo analytics + (thanks to `@selten `__). + `Pull Request 11351`_ +* Lint for optional or multiple selects with radio display + (thanks to `@bernt-matthias `__). + `Pull Request 11385`_ +* Test library dataset permissions + (thanks to `@OlegZharkov `__). + `Pull Request 11402`_ +* Use request id middleware to scope session + `Pull Request 11411`_ +* Move unit tests to GitHub workflows, test also under Python 3.9 + (thanks to `@nsoranzo `__). + `Pull Request 11452`_ +* Allow anonymous access to S3 buckets via file sources plugins. + `Pull Request 11458`_ +* add copy tooldID btn + (thanks to `@OlegZharkov `__). + `Pull Request 11477`_ +* Libraries rewrite + (thanks to `@OlegZharkov `__). + `Pull Request 11485`_ +* adding nameSuggestion to PairCollectionCreator + (thanks to `@assuntad23 `__). + `Pull Request 11489`_ +* xsd: use validator as child of param + (thanks to `@bernt-matthias `__). + `Pull Request 11497`_ +* add sshfs plugin to the new file infrastructure + (thanks to `@bgruening `__). + `Pull Request 11507`_ +* add ftp files.plugin + (thanks to `@bgruening `__). + `Pull Request 11508`_ +* Add ready-to-go gitpod config + `Pull Request 11509`_ +* Create pull_request_template.md + (thanks to `@assuntad23 `__). + `Pull Request 11530`_ +* Add more filtering options to api/jobs endpoint + (thanks to `@rikeshi `__). + `Pull Request 11560`_ +* Migrate metrics API to FastAPI + (thanks to `@davelopez `__). + `Pull Request 11568`_ +* Sample conf for dropbox and owncloud file sources + (thanks to `@abretaud `__). + `Pull Request 11580`_ +* An attempt to improve dependency management + `Pull Request 11619`_ +* Overhaul make-based release process + `Pull Request 11641`_ +* Pin fs.webdavfs requirement to latest version + (thanks to `@abretaud `__). + `Pull Request 11648`_ +* Update all Python dependencies + (thanks to `@nsoranzo `__). + `Pull Request 11649`_ +* update to cope with impending changes to cwltool internals + (thanks to `@rupertnash `__). + `Pull Request 11655`_ +* Lint for duplicated options + (thanks to `@bernt-matthias `__). + `Pull Request 11662`_ +* Single User Mode - Disable irrelevant and broken options + `Pull Request 11669`_ +* Swap 'Analyze Data' to home icon + `Pull Request 11674`_ +* Bugfix/11476/disabled upload button explanation + (thanks to `@assuntad23 `__). + `Pull Request 11682`_ +* Break up dynamic dataset collection into chunks + `Pull Request 11697`_ +* enable the S3 plugin to use non-AWS resrouces + (thanks to `@bgruening `__). + `Pull Request 11703`_ +* Implement selenium tests for exporting library datasets to history collections. + (thanks to `@OlegZharkov `__). + `Pull Request 11716`_ +* lint for checkboxes select + (thanks to `@bernt-matthias `__). + `Pull Request 11727`_ +* Refactor stdout/stderr in Job Information + (thanks to `@OlegZharkov `__). + `Pull Request 11731`_ +* Copy collections dbkey + (thanks to `@assuntad23 `__). + `Pull Request 11732`_ +* Fix CI docs build for feature branches + (thanks to `@nsoranzo `__). + `Pull Request 11740`_ +* Updated Code of Conduct to point to the exact copy of this CoC on the hub. + `Pull Request 11750`_ +* Allow AWS s3 access for ec2 instances without hardcoding credentials + (thanks to `@crashGoBoom `__). + `Pull Request 11757`_ +* Add an explicit statement of assent to licensing to the pull request template + `Pull Request 11777`_ +* Fixes for installed Galaxy + `Pull Request 11779`_ +* Update Python dependencies + `Pull Request 11782`_ +* Handle deprecated postgresql db urls; update postgres version in ci + `Pull Request 11790`_ +* Update localisation options to include Español + (thanks to `@hexylena `__). + `Pull Request 11791`_ +* Open update deps PRs from galaxybot's fork + (thanks to `@nsoranzo `__). + `Pull Request 11795`_ +* Make k8s container 39 MB smaller by using vim-tiny + (thanks to `@rhpvorderman `__). + `Pull Request 11826`_ +* Make tool parameter options capable of referring to metadata file + (thanks to `@qiagu `__). + `Pull Request 11832`_ +* Restore triggers dropped in `#10821 `__ + (thanks to `@nsoranzo `__). + `Pull Request 11843`_ +* Do not invoke workflow if not all tools are available + (thanks to `@simonbray `__). + `Pull Request 11844`_ +* Improve error handling when creating a new History with the master API key + (thanks to `@davelopez `__). + `Pull Request 11846`_ +* Expose StoredWorkflowId in invocation API + (thanks to `@simonbray `__). + `Pull Request 11871`_ +* Create FastAPI entry points for Tool Shed and Reports + (thanks to `@davelopez `__). + `Pull Request 11872`_ +* Rev mypy. + `Pull Request 11877`_ +* Backport `#11871 `__ + (thanks to `@scholtalbers `__). + `Pull Request 11881`_ +* Allow to filter /api/invocations by job_id + (thanks to `@scholtalbers `__). + `Pull Request 11882`_ +* Complete Spanish language version + (thanks to `@nomadscientist `__). + `Pull Request 11891`_ +* Add subpathing to k8s_persistent_volume_claims + (thanks to `@anvilproject `__). + `Pull Request 11899`_ +* Make _metadata regular JSONType field + `Pull Request 11902`_ +* Abstraction for fetching qualified app URL across webapp types + `Pull Request 11904`_ +* Add ``delete account`` selenium test + (thanks to `@OlegZharkov `__). + `Pull Request 11905`_ +* Update framework dependencies + `Pull Request 11907`_ +* expose copied_from_ldda_id on dataset api endpoint + (thanks to `@scholtalbers `__). + `Pull Request 11922`_ +.. small_enhancement + +* Fix remaining issues reported by bugbear; add it to flake8 reqs + (thanks to `@nsoranzo `__). + `Pull Request 11153`_ +* Fix all E203, E741 and W504 flake8 errors + (thanks to `@nsoranzo `__). + `Pull Request 11155`_ +* Remove unused TS methods. + `Pull Request 11179`_ +* Remove some seemingly unused cruft in GalaxyWebTransaction + `Pull Request 11234`_ +* Drop unused transfer_manager.py + `Pull Request 11238`_ +* Get rid of legacy decorator in api/tours + `Pull Request 11253`_ +* Update vscode dev instructions, drop helper script + `Pull Request 11258`_ +* Replace $.isArray with Array prototype check + `Pull Request 11264`_ +* Drop docker testing image + `Pull Request 11329`_ +* Renamed virtualscroller since it is no longer virtual + `Pull Request 11331`_ +* Dataset lib permissions Vue rewrite + (thanks to `@OlegZharkov `__). + `Pull Request 11347`_ +* Refactor libraries API logic into LibrariesManager + (thanks to `@davelopez `__). + `Pull Request 11359`_ +* Refactor display_applications API logic into DisplayApplicationsManager + (thanks to `@davelopez `__). + `Pull Request 11386`_ +* Repair styleguide + `Pull Request 11404`_ +* Refactor groups API logic into GroupsManager + (thanks to `@davelopez `__). + `Pull Request 11412`_ +* Refactor group_roles API logic into GroupRolesManager + (thanks to `@davelopez `__). + `Pull Request 11417`_ +* Refactor group_users API logic into GroupUsersManager + (thanks to `@davelopez `__). + `Pull Request 11418`_ +* Pin mypy to 0.790 to prevent linting errors when running v 0.8 + `Pull Request 11422`_ +* Use galaxy Router instead of InferringRouter + (thanks to `@davelopez `__). + `Pull Request 11591`_ +* Front-end Library Routing refactor + (thanks to `@OlegZharkov `__). + `Pull Request 11614`_ +* Remove unused `TraceLogger` class + (thanks to `@nsoranzo `__). + `Pull Request 11616`_ +* Refactor library folder API logic into FoldersService + (thanks to `@davelopez `__). + `Pull Request 11631`_ +* Rewrite Library Permissions + (thanks to `@OlegZharkov `__). + `Pull Request 11637`_ +* Fix prop mutation in FolderTopBar + (thanks to `@OlegZharkov `__). + `Pull Request 11638`_ +* Refactor library folder contents api + (thanks to `@davelopez `__). + `Pull Request 11686`_ +* Update Python dependencies + `Pull Request 11702`_ +* Partial refactor ShareableMixin into ShareableService + (thanks to `@davelopez `__). + `Pull Request 11712`_ +* Incorporate changes from Pulsar's copy of galaxy.jobs.runners.util + `Pull Request 11810`_ +* Separate tests for "remote" and "remote + extended" metadata. + `Pull Request 11840`_ +* Unify security decode id exceptions + (thanks to `@davelopez `__). + `Pull Request 11856`_ +* Optimized beta history polling by leveraging history.update_time + loading behavior bug fixes + `Pull Request 11884`_ +* Eslint tweaks + `Pull Request 11925`_ + + +Fixes +------------------------------- + +.. major_bug + + +.. bug_tag_viz + +* Shared visualization display fix + `Pull Request 11906`_ +.. bug_tag_datatypes + +* remove duplicated qcml from datatypes_conf sample + (thanks to `@bernt-matthias `__). + `Pull Request 11378`_ +* Limit max column in tabular dataset preview + `Pull Request 11901`_ +* Use keep_original in pysam.tabix_index to not remove original data + `Pull Request 11913`_ +.. bug_tag_tools + +* Resolve session problems, enabled pages and tags fastAPI routes + `Pull Request 11342`_ +* Make filter work with file containing header + (thanks to `@bernt-matthias `__). + `Pull Request 11365`_ +.. bug_tag_workflows + +* Workflow editor null/zero fixes + `Pull Request 11265`_ +* Fix reconnecting terminals + `Pull Request 11660`_ +* Fix tags not included when importing shared workflow + (thanks to `@davelopez `__). + `Pull Request 11663`_ +* Fix workflow rename dropping metadata. + `Pull Request 11670`_ +* Use Modal to show wrong RuntimeValue + `Pull Request 11678`_ +* Ensure new outputs have correct mapOver state + `Pull Request 11683`_ +* Redraw connections when adding or removing inputs + `Pull Request 11684`_ +* Fix displaying data column parameters in workflow editor + `Pull Request 11692`_ +* Fix workflow refactor schema parsing for pydantic 1.8. + `Pull Request 11778`_ +.. bug_tag_ui + +* Remove filter from list:paired element names when filter is not _1 + `Pull Request 11486`_ +* Beta history current history mismatch with legacy code. + `Pull Request 11850`_ +* Reposition history scroller during new updates + `Pull Request 11879`_ +.. bug_tag_jobs + +* Fix mule job messaging + `Pull Request 11148`_ +* Deal with empty claim names in k8s runner + (thanks to `@nuwang `__). + `Pull Request 11223`_ +* Fix SLURM runner for real user setups and avoid uneccesary chowns + (thanks to `@bernt-matthias `__). + `Pull Request 11403`_ +* Prevent endless fail_job cycles + `Pull Request 11673`_ +* Fix value of 'unknown_error' resubmit condition variable + (thanks to `@brinkmanlab `__). + `Pull Request 11749`_ +* Pulsar: mark cancelled jobs as finished + (thanks to `@abretaud `__). + `Pull Request 11763`_ +* Lower tool id case while populating resource params + (thanks to `@eancelet `__). + `Pull Request 11793`_ +* Don't overwrite $GALAXY_MEMORY_MB if it's already set + `Pull Request 11808`_ +* Transfer fewer unneeded files back to Galaxy when using remote extended metadata with Pulsar. + `Pull Request 11814`_ +* Don't write job and job-related attributes when creating export model + `Pull Request 11815`_ +* Handle resubmission before changing job state in CLI runner + (thanks to `@pcm32 `__). + `Pull Request 11886`_ +.. bug_tag_admin + +* fix broken docs links + `Pull Request 11384`_ +* Add missing ssl keyword in nginx example [docs] + (thanks to `@rhpvorderman `__). + `Pull Request 11633`_ +.. bug + +* Beta History: implement missing advanced search filters + `Pull Request 10972`_ +* Fix mypy error with Union in response_model + (thanks to `@davelopez `__). + `Pull Request 11132`_ +* Minor spelling error fix + (thanks to `@selten `__). + `Pull Request 11135`_ +* Fix permission in user dir library import + (thanks to `@OlegZharkov `__). + `Pull Request 11137`_ +* fix error message + (thanks to `@bernt-matthias `__). + `Pull Request 11157`_ +* changing tooltip to match functionality + (thanks to `@assuntad23 `__). + `Pull Request 11204`_ +* Copy only dataset tags in Extract Dataset tool + (thanks to `@pvanheus `__). + `Pull Request 11206`_ +* Fix regression of 'disabled' masthead items. + `Pull Request 11215`_ +* fix `test_user_library_import_dir_warning` + (thanks to `@OlegZharkov `__). + `Pull Request 11226`_ +* Make OIDC email matching case-insensitive + (thanks to `@selten `__). + `Pull Request 11251`_ +* Tool XML container requirements: fix example + (thanks to `@selten `__). + `Pull Request 11271`_ +* Bugfix/8488/rule builder fails for one bad url + (thanks to `@assuntad23 `__). + `Pull Request 11276`_ +* Fix printing non-dict output in api/display script + `Pull Request 11278`_ +* Fix images in workflow PDF report + (thanks to `@OlegZharkov `__). + `Pull Request 11296`_ +* consider collections in all tests + (thanks to `@bernt-matthias `__). + `Pull Request 11313`_ +* Replace Query with Path + `Pull Request 11320`_ +* Custos `aud` handling fix + `Pull Request 11322`_ +* Get latest pull request labels in maintenance bot + (thanks to `@nsoranzo `__). + `Pull Request 11326`_ +* Update OIDC links + (thanks to `@selten `__). + `Pull Request 11362`_ +* fix profile logic for configfile generation + (thanks to `@bernt-matthias `__). + `Pull Request 11380`_ +* Standardise tool param attribute docs + (thanks to `@nsoranzo `__). + `Pull Request 11390`_ +* Run maintainance bot on ready_for_review and edit + `Pull Request 11400`_ +* Decrease verbosity of messages in poetry + `Pull Request 11405`_ +* Rename fixtures to fix test database object name conflict + `Pull Request 11424`_ +* Check for binary files at the middle of the file instead of at the beginning + (thanks to `@pcm32 `__). + `Pull Request 11425`_ +* Set default USE_UVICORN to true only on python >= 3.7 + `Pull Request 11454`_ +* Fix galaxy.files.sources plugin unit tests being missed by CI. + `Pull Request 11469`_ +* Fix exception handling in datasets display API. + `Pull Request 11482`_ +* Mark some tool reload tests as expected to fail + (thanks to `@davelopez `__). + `Pull Request 11496`_ +* Fix clearing of search inputs + `Pull Request 11526`_ +* Fix bug with Pulsar and $__tool_directory__ + (thanks to `@abretaud `__). + `Pull Request 11599`_ +* Allow any extra field in Pages API + (thanks to `@davelopez `__). + `Pull Request 11600`_ +* Fix workflow labelling + `Pull Request 11604`_ +* Pin refgenconf to <0.10.0 + (thanks to `@nsoranzo `__). + `Pull Request 11627`_ +* Pin SQAlchemy to <1.4.0 + `Pull Request 11629`_ +* Change Upload button tooltip position + (thanks to `@OlegZharkov `__). + `Pull Request 11634`_ +* Set minimum requirements for starlette-context and fastapi + `Pull Request 11643`_ +* Match environment variable set up by doc building workflow + `Pull Request 11646`_ +* Don't check for missing `kind/` label for `minor` merged PRs + (thanks to `@nsoranzo `__). + `Pull Request 11647`_ +* Library folder_contents API tests + small fixes + (thanks to `@davelopez `__). + `Pull Request 11650`_ +* Refactor default mounting of $tmp_directory in containers + (thanks to `@brinkmanlab `__). + `Pull Request 11654`_ +* Fix datatype defined column name display + `Pull Request 11664`_ +* Expose command line if expose_dataset_path is set + `Pull Request 11687`_ +* Hotfix/paired list builder from data library + (thanks to `@assuntad23 `__). + `Pull Request 11700`_ +* Make extra user preferences behave like defaultdict + `Pull Request 11708`_ +* Fix importing collections to new history and import correct elements + `Pull Request 11718`_ +* Removedreference to remove-extensions + (thanks to `@assuntad23 `__). + `Pull Request 11724`_ +* Refgenie table del + (thanks to `@abretaud `__). + `Pull Request 11728`_ +* Fix job filtering by `date_range_max` / `date_range_mix` + (thanks to `@nsoranzo `__). + `Pull Request 11736`_ +* Fix a bug when unzipping collections with nametags. + `Pull Request 11741`_ +* Fix API job filtering by workflow or invocation + (thanks to `@nsoranzo `__). + `Pull Request 11751`_ +* Assorted tool shed fixes + `Pull Request 11762`_ +* Fix format="input" with implicit conversions + `Pull Request 11764`_ +* galaxy.webapps.tool_shed to webapp.tool_shed + (thanks to `@almahmoud `__). + `Pull Request 11765`_ +* Fix auto-pair naming in list paired creator. + `Pull Request 11773`_ +* Fix library scrolling + `Pull Request 11776`_ +* Use `assertRaisesRegex()` to fix new B017 linting errors + (thanks to `@nsoranzo `__). + `Pull Request 11783`_ +* Fix typo in `upstream_mod_zip` admin docs + (thanks to `@nsoranzo `__). + `Pull Request 11794`_ +* Fix tool profile details in schema docs + (thanks to `@nsoranzo `__). + `Pull Request 11798`_ +* Activate virtualenv in `updateucsc.sh.sample` + (thanks to `@nsoranzo `__). + `Pull Request 11800`_ +* Backport `#11815 `__: Don't write job and job-related attributes when creating export model + `Pull Request 11816`_ +* do not chown pasted urls + (thanks to `@bernt-matthias `__). + `Pull Request 11818`_ +* Fixed uploader link on tool list and legacy empty history message + `Pull Request 11830`_ +* Join QueueWorker thread + `Pull Request 11835`_ +* Patch to click the button which should be more stable + (thanks to `@hexylena `__). + `Pull Request 11838`_ +* fix data stickiness on folder change + (thanks to `@OlegZharkov `__). + `Pull Request 11845`_ +* BUGFIX: Also check for boolean True, not just string 'True' when evaluating conditional dependencies. + (thanks to `@rhpvorderman `__). + `Pull Request 11861`_ +* Fix ``Delete account`` visibility + `Pull Request 11897`_ +* Fix S3 backend support in iRODS object store + (thanks to `@kxk302 `__). + `Pull Request 11910`_ +* fix GalaxyInteractorApi get_tool_tests + (thanks to `@cat-bro `__). + `Pull Request 11911`_ +* Stabilize test_history_options selenium test + `Pull Request 11918`_ +* update legacy_framework.grids.StateColumn (bug fix) + (thanks to `@cat-bro `__). + `Pull Request 11923`_ + +.. include:: 21.05_prs.rst + diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst new file mode 100644 index 00000000000..a8bb6e8d3e3 --- /dev/null +++ b/doc/source/releases/21.05_announce.rst @@ -0,0 +1,12 @@ + +:orphan: + +=========================================================== +May 2021 Galaxy Release (v 21.05) +=========================================================== + + +Schedule +=========================================================== + * Planned Freeze Date: 2021-05-03 + * Planned Release Date: 2021-05-24 diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst new file mode 100644 index 00000000000..17b615e140a --- /dev/null +++ b/doc/source/releases/21.05_announce_user.rst @@ -0,0 +1,129 @@ + +=========================================================== +May 2021 Galaxy Release (v 21.05) +=========================================================== + +.. include:: _header.rst + +Highlights +=========================================================== + +**Feature1** + Feature description. + +**Feature2** + Feature description. + +**Feature3** + Feature description. + + +New Visualizations +=========================================================== + +.. visualizations +* Migrate api/genomes to fastapi + `Pull Request 11241`_ +* Shared visualization display fix + `Pull Request 11906`_ + +New Datatypes +=========================================================== + +.. datatypes +* Add FlowCytometry and MetaCyto datatypes + (thanks to `@pcm32 `__). + `Pull Request 9807`_ +* Add FastAPI routes for datatypes + (thanks to `@davelopez `__). + `Pull Request 11098`_ +* Fix remaining issues reported by bugbear; add it to flake8 reqs + (thanks to `@nsoranzo `__). + `Pull Request 11153`_ +* Add mrc datatype (and Python dependency) + (thanks to `@gregvonkuster `__). + `Pull Request 11220`_ +* remove duplicated qcml from datatypes_conf sample + (thanks to `@bernt-matthias `__). + `Pull Request 11378`_ +* Refactor display_applications API logic into DisplayApplicationsManager + (thanks to `@davelopez `__). + `Pull Request 11386`_ +* Merge release_21.01 -> dev + `Pull Request 11394`_ +* Add HHR datatype + (thanks to `@bgruening `__). + `Pull Request 11661`_ +* add meryldb datatype + (thanks to `@bgruening `__). + `Pull Request 11694`_ +* Merge 20.09 into dev + `Pull Request 11711`_ +* Add datatype for PretextMap output + `Pull Request 11747`_ +* add new datatype class for meryldb + (thanks to `@bgruening `__). + `Pull Request 11758`_ +* Make Avivator GEDA and sniffer for ome.tiff datatype + (thanks to `@qiagu `__). + `Pull Request 11801`_ +* jellyfish db datatype + (thanks to `@astrovsky01 `__). + `Pull Request 11802`_ +* add new datatype JPEG 2000 in Galaxy + (thanks to `@annefou `__). + `Pull Request 11812`_ +* Make datatype h5_model for machine leaning models + (thanks to `@qiagu `__). + `Pull Request 11825`_ +* Add support for the Relion STAR data format + (thanks to `@gregvonkuster `__). + `Pull Request 11831`_ +* add minerva display app for covid + (thanks to `@hexylena `__). + `Pull Request 11880`_ +* Limit max column in tabular dataset preview + `Pull Request 11901`_ +* Add toml datatype + (thanks to `@jj-umn `__). + `Pull Request 11909`_ +* Use keep_original in pysam.tabix_index to not remove original data + `Pull Request 11913`_ + +Builtin Tool Updates +=========================================================== + +.. tools +* Fix remaining issues reported by bugbear; add it to flake8 reqs + (thanks to `@nsoranzo `__). + `Pull Request 11153`_ +* Resolve session problems, enabled pages and tags fastAPI routes + `Pull Request 11342`_ +* Make filter work with file containing header + (thanks to `@bernt-matthias `__). + `Pull Request 11365`_ +* Add the SimText shiny app as Interactive Tool + (thanks to `@dlal-group `__). + `Pull Request 11680`_ +* grep, tail, head: add option to keep header + (thanks to `@bernt-matthias `__). + `Pull Request 11859`_ +* add a bit of docs to the add tags tool + (thanks to `@bernt-matthias `__). + `Pull Request 11874`_ + +Release Testing Team +=========================================================== + +A special thanks to the release testing team for testing many of the new features and reporting many bugs: + + + +Release Notes +=========================================================== + +Please see the `full release notes <21.05_announce.html>`_ for more details. + +.. include:: 21.05_prs.rst + +.. include:: _thanks.rst diff --git a/doc/source/releases/21.05_prs.rst b/doc/source/releases/21.05_prs.rst new file mode 100644 index 00000000000..52657e8df23 --- /dev/null +++ b/doc/source/releases/21.05_prs.rst @@ -0,0 +1,319 @@ + +.. github_links +.. _Pull Request 9807: https://github.com/galaxyproject/galaxy/pull/9807 +.. _Pull Request 10117: https://github.com/galaxyproject/galaxy/pull/10117 +.. _Pull Request 10222: https://github.com/galaxyproject/galaxy/pull/10222 +.. _Pull Request 10347: https://github.com/galaxyproject/galaxy/pull/10347 +.. _Pull Request 10496: https://github.com/galaxyproject/galaxy/pull/10496 +.. _Pull Request 10810: https://github.com/galaxyproject/galaxy/pull/10810 +.. _Pull Request 10972: https://github.com/galaxyproject/galaxy/pull/10972 +.. _Pull Request 11089: https://github.com/galaxyproject/galaxy/pull/11089 +.. _Pull Request 11098: https://github.com/galaxyproject/galaxy/pull/11098 +.. _Pull Request 11107: https://github.com/galaxyproject/galaxy/pull/11107 +.. _Pull Request 11111: https://github.com/galaxyproject/galaxy/pull/11111 +.. _Pull Request 11113: https://github.com/galaxyproject/galaxy/pull/11113 +.. _Pull Request 11115: https://github.com/galaxyproject/galaxy/pull/11115 +.. _Pull Request 11116: https://github.com/galaxyproject/galaxy/pull/11116 +.. _Pull Request 11121: https://github.com/galaxyproject/galaxy/pull/11121 +.. _Pull Request 11122: https://github.com/galaxyproject/galaxy/pull/11122 +.. _Pull Request 11124: https://github.com/galaxyproject/galaxy/pull/11124 +.. _Pull Request 11126: https://github.com/galaxyproject/galaxy/pull/11126 +.. _Pull Request 11128: https://github.com/galaxyproject/galaxy/pull/11128 +.. _Pull Request 11132: https://github.com/galaxyproject/galaxy/pull/11132 +.. _Pull Request 11135: https://github.com/galaxyproject/galaxy/pull/11135 +.. _Pull Request 11137: https://github.com/galaxyproject/galaxy/pull/11137 +.. _Pull Request 11138: https://github.com/galaxyproject/galaxy/pull/11138 +.. _Pull Request 11142: https://github.com/galaxyproject/galaxy/pull/11142 +.. _Pull Request 11148: https://github.com/galaxyproject/galaxy/pull/11148 +.. _Pull Request 11153: https://github.com/galaxyproject/galaxy/pull/11153 +.. _Pull Request 11155: https://github.com/galaxyproject/galaxy/pull/11155 +.. _Pull Request 11156: https://github.com/galaxyproject/galaxy/pull/11156 +.. _Pull Request 11157: https://github.com/galaxyproject/galaxy/pull/11157 +.. _Pull Request 11160: https://github.com/galaxyproject/galaxy/pull/11160 +.. _Pull Request 11167: https://github.com/galaxyproject/galaxy/pull/11167 +.. _Pull Request 11173: https://github.com/galaxyproject/galaxy/pull/11173 +.. _Pull Request 11176: https://github.com/galaxyproject/galaxy/pull/11176 +.. _Pull Request 11177: https://github.com/galaxyproject/galaxy/pull/11177 +.. _Pull Request 11178: https://github.com/galaxyproject/galaxy/pull/11178 +.. _Pull Request 11179: https://github.com/galaxyproject/galaxy/pull/11179 +.. _Pull Request 11180: https://github.com/galaxyproject/galaxy/pull/11180 +.. _Pull Request 11188: https://github.com/galaxyproject/galaxy/pull/11188 +.. _Pull Request 11192: https://github.com/galaxyproject/galaxy/pull/11192 +.. _Pull Request 11197: https://github.com/galaxyproject/galaxy/pull/11197 +.. _Pull Request 11198: https://github.com/galaxyproject/galaxy/pull/11198 +.. _Pull Request 11202: https://github.com/galaxyproject/galaxy/pull/11202 +.. _Pull Request 11203: https://github.com/galaxyproject/galaxy/pull/11203 +.. _Pull Request 11204: https://github.com/galaxyproject/galaxy/pull/11204 +.. _Pull Request 11206: https://github.com/galaxyproject/galaxy/pull/11206 +.. _Pull Request 11211: https://github.com/galaxyproject/galaxy/pull/11211 +.. _Pull Request 11214: https://github.com/galaxyproject/galaxy/pull/11214 +.. _Pull Request 11215: https://github.com/galaxyproject/galaxy/pull/11215 +.. _Pull Request 11217: https://github.com/galaxyproject/galaxy/pull/11217 +.. _Pull Request 11219: https://github.com/galaxyproject/galaxy/pull/11219 +.. _Pull Request 11220: https://github.com/galaxyproject/galaxy/pull/11220 +.. _Pull Request 11223: https://github.com/galaxyproject/galaxy/pull/11223 +.. _Pull Request 11224: https://github.com/galaxyproject/galaxy/pull/11224 +.. _Pull Request 11226: https://github.com/galaxyproject/galaxy/pull/11226 +.. _Pull Request 11227: https://github.com/galaxyproject/galaxy/pull/11227 +.. _Pull Request 11228: https://github.com/galaxyproject/galaxy/pull/11228 +.. _Pull Request 11230: https://github.com/galaxyproject/galaxy/pull/11230 +.. _Pull Request 11232: https://github.com/galaxyproject/galaxy/pull/11232 +.. _Pull Request 11234: https://github.com/galaxyproject/galaxy/pull/11234 +.. _Pull Request 11235: https://github.com/galaxyproject/galaxy/pull/11235 +.. _Pull Request 11238: https://github.com/galaxyproject/galaxy/pull/11238 +.. _Pull Request 11240: https://github.com/galaxyproject/galaxy/pull/11240 +.. _Pull Request 11241: https://github.com/galaxyproject/galaxy/pull/11241 +.. _Pull Request 11251: https://github.com/galaxyproject/galaxy/pull/11251 +.. _Pull Request 11253: https://github.com/galaxyproject/galaxy/pull/11253 +.. _Pull Request 11258: https://github.com/galaxyproject/galaxy/pull/11258 +.. _Pull Request 11259: https://github.com/galaxyproject/galaxy/pull/11259 +.. _Pull Request 11262: https://github.com/galaxyproject/galaxy/pull/11262 +.. _Pull Request 11264: https://github.com/galaxyproject/galaxy/pull/11264 +.. _Pull Request 11265: https://github.com/galaxyproject/galaxy/pull/11265 +.. _Pull Request 11267: https://github.com/galaxyproject/galaxy/pull/11267 +.. _Pull Request 11271: https://github.com/galaxyproject/galaxy/pull/11271 +.. _Pull Request 11272: https://github.com/galaxyproject/galaxy/pull/11272 +.. _Pull Request 11274: https://github.com/galaxyproject/galaxy/pull/11274 +.. _Pull Request 11276: https://github.com/galaxyproject/galaxy/pull/11276 +.. _Pull Request 11278: https://github.com/galaxyproject/galaxy/pull/11278 +.. _Pull Request 11292: https://github.com/galaxyproject/galaxy/pull/11292 +.. _Pull Request 11296: https://github.com/galaxyproject/galaxy/pull/11296 +.. _Pull Request 11300: https://github.com/galaxyproject/galaxy/pull/11300 +.. _Pull Request 11304: https://github.com/galaxyproject/galaxy/pull/11304 +.. _Pull Request 11307: https://github.com/galaxyproject/galaxy/pull/11307 +.. _Pull Request 11313: https://github.com/galaxyproject/galaxy/pull/11313 +.. _Pull Request 11319: https://github.com/galaxyproject/galaxy/pull/11319 +.. _Pull Request 11320: https://github.com/galaxyproject/galaxy/pull/11320 +.. _Pull Request 11322: https://github.com/galaxyproject/galaxy/pull/11322 +.. _Pull Request 11326: https://github.com/galaxyproject/galaxy/pull/11326 +.. _Pull Request 11329: https://github.com/galaxyproject/galaxy/pull/11329 +.. _Pull Request 11331: https://github.com/galaxyproject/galaxy/pull/11331 +.. _Pull Request 11342: https://github.com/galaxyproject/galaxy/pull/11342 +.. _Pull Request 11346: https://github.com/galaxyproject/galaxy/pull/11346 +.. _Pull Request 11347: https://github.com/galaxyproject/galaxy/pull/11347 +.. _Pull Request 11351: https://github.com/galaxyproject/galaxy/pull/11351 +.. _Pull Request 11358: https://github.com/galaxyproject/galaxy/pull/11358 +.. _Pull Request 11359: https://github.com/galaxyproject/galaxy/pull/11359 +.. _Pull Request 11362: https://github.com/galaxyproject/galaxy/pull/11362 +.. _Pull Request 11365: https://github.com/galaxyproject/galaxy/pull/11365 +.. _Pull Request 11378: https://github.com/galaxyproject/galaxy/pull/11378 +.. _Pull Request 11380: https://github.com/galaxyproject/galaxy/pull/11380 +.. _Pull Request 11383: https://github.com/galaxyproject/galaxy/pull/11383 +.. _Pull Request 11384: https://github.com/galaxyproject/galaxy/pull/11384 +.. _Pull Request 11385: https://github.com/galaxyproject/galaxy/pull/11385 +.. _Pull Request 11386: https://github.com/galaxyproject/galaxy/pull/11386 +.. _Pull Request 11390: https://github.com/galaxyproject/galaxy/pull/11390 +.. _Pull Request 11393: https://github.com/galaxyproject/galaxy/pull/11393 +.. _Pull Request 11394: https://github.com/galaxyproject/galaxy/pull/11394 +.. _Pull Request 11400: https://github.com/galaxyproject/galaxy/pull/11400 +.. _Pull Request 11402: https://github.com/galaxyproject/galaxy/pull/11402 +.. _Pull Request 11403: https://github.com/galaxyproject/galaxy/pull/11403 +.. _Pull Request 11404: https://github.com/galaxyproject/galaxy/pull/11404 +.. _Pull Request 11405: https://github.com/galaxyproject/galaxy/pull/11405 +.. _Pull Request 11411: https://github.com/galaxyproject/galaxy/pull/11411 +.. _Pull Request 11412: https://github.com/galaxyproject/galaxy/pull/11412 +.. _Pull Request 11417: https://github.com/galaxyproject/galaxy/pull/11417 +.. _Pull Request 11418: https://github.com/galaxyproject/galaxy/pull/11418 +.. _Pull Request 11422: https://github.com/galaxyproject/galaxy/pull/11422 +.. _Pull Request 11424: https://github.com/galaxyproject/galaxy/pull/11424 +.. _Pull Request 11425: https://github.com/galaxyproject/galaxy/pull/11425 +.. _Pull Request 11429: https://github.com/galaxyproject/galaxy/pull/11429 +.. _Pull Request 11452: https://github.com/galaxyproject/galaxy/pull/11452 +.. _Pull Request 11454: https://github.com/galaxyproject/galaxy/pull/11454 +.. _Pull Request 11458: https://github.com/galaxyproject/galaxy/pull/11458 +.. _Pull Request 11467: https://github.com/galaxyproject/galaxy/pull/11467 +.. _Pull Request 11469: https://github.com/galaxyproject/galaxy/pull/11469 +.. _Pull Request 11477: https://github.com/galaxyproject/galaxy/pull/11477 +.. _Pull Request 11478: https://github.com/galaxyproject/galaxy/pull/11478 +.. _Pull Request 11482: https://github.com/galaxyproject/galaxy/pull/11482 +.. _Pull Request 11483: https://github.com/galaxyproject/galaxy/pull/11483 +.. _Pull Request 11485: https://github.com/galaxyproject/galaxy/pull/11485 +.. _Pull Request 11486: https://github.com/galaxyproject/galaxy/pull/11486 +.. _Pull Request 11489: https://github.com/galaxyproject/galaxy/pull/11489 +.. _Pull Request 11496: https://github.com/galaxyproject/galaxy/pull/11496 +.. _Pull Request 11497: https://github.com/galaxyproject/galaxy/pull/11497 +.. _Pull Request 11507: https://github.com/galaxyproject/galaxy/pull/11507 +.. _Pull Request 11508: https://github.com/galaxyproject/galaxy/pull/11508 +.. _Pull Request 11509: https://github.com/galaxyproject/galaxy/pull/11509 +.. _Pull Request 11526: https://github.com/galaxyproject/galaxy/pull/11526 +.. _Pull Request 11530: https://github.com/galaxyproject/galaxy/pull/11530 +.. _Pull Request 11539: https://github.com/galaxyproject/galaxy/pull/11539 +.. _Pull Request 11552: https://github.com/galaxyproject/galaxy/pull/11552 +.. _Pull Request 11557: https://github.com/galaxyproject/galaxy/pull/11557 +.. _Pull Request 11560: https://github.com/galaxyproject/galaxy/pull/11560 +.. _Pull Request 11561: https://github.com/galaxyproject/galaxy/pull/11561 +.. _Pull Request 11566: https://github.com/galaxyproject/galaxy/pull/11566 +.. _Pull Request 11568: https://github.com/galaxyproject/galaxy/pull/11568 +.. _Pull Request 11570: https://github.com/galaxyproject/galaxy/pull/11570 +.. _Pull Request 11575: https://github.com/galaxyproject/galaxy/pull/11575 +.. _Pull Request 11580: https://github.com/galaxyproject/galaxy/pull/11580 +.. _Pull Request 11588: https://github.com/galaxyproject/galaxy/pull/11588 +.. _Pull Request 11589: https://github.com/galaxyproject/galaxy/pull/11589 +.. _Pull Request 11590: https://github.com/galaxyproject/galaxy/pull/11590 +.. _Pull Request 11591: https://github.com/galaxyproject/galaxy/pull/11591 +.. _Pull Request 11592: https://github.com/galaxyproject/galaxy/pull/11592 +.. _Pull Request 11599: https://github.com/galaxyproject/galaxy/pull/11599 +.. _Pull Request 11600: https://github.com/galaxyproject/galaxy/pull/11600 +.. _Pull Request 11604: https://github.com/galaxyproject/galaxy/pull/11604 +.. _Pull Request 11607: https://github.com/galaxyproject/galaxy/pull/11607 +.. _Pull Request 11614: https://github.com/galaxyproject/galaxy/pull/11614 +.. _Pull Request 11616: https://github.com/galaxyproject/galaxy/pull/11616 +.. _Pull Request 11619: https://github.com/galaxyproject/galaxy/pull/11619 +.. _Pull Request 11627: https://github.com/galaxyproject/galaxy/pull/11627 +.. _Pull Request 11629: https://github.com/galaxyproject/galaxy/pull/11629 +.. _Pull Request 11631: https://github.com/galaxyproject/galaxy/pull/11631 +.. _Pull Request 11633: https://github.com/galaxyproject/galaxy/pull/11633 +.. _Pull Request 11634: https://github.com/galaxyproject/galaxy/pull/11634 +.. _Pull Request 11637: https://github.com/galaxyproject/galaxy/pull/11637 +.. _Pull Request 11638: https://github.com/galaxyproject/galaxy/pull/11638 +.. _Pull Request 11639: https://github.com/galaxyproject/galaxy/pull/11639 +.. _Pull Request 11640: https://github.com/galaxyproject/galaxy/pull/11640 +.. _Pull Request 11641: https://github.com/galaxyproject/galaxy/pull/11641 +.. _Pull Request 11643: https://github.com/galaxyproject/galaxy/pull/11643 +.. _Pull Request 11646: https://github.com/galaxyproject/galaxy/pull/11646 +.. _Pull Request 11647: https://github.com/galaxyproject/galaxy/pull/11647 +.. _Pull Request 11648: https://github.com/galaxyproject/galaxy/pull/11648 +.. _Pull Request 11649: https://github.com/galaxyproject/galaxy/pull/11649 +.. _Pull Request 11650: https://github.com/galaxyproject/galaxy/pull/11650 +.. _Pull Request 11654: https://github.com/galaxyproject/galaxy/pull/11654 +.. _Pull Request 11655: https://github.com/galaxyproject/galaxy/pull/11655 +.. _Pull Request 11660: https://github.com/galaxyproject/galaxy/pull/11660 +.. _Pull Request 11661: https://github.com/galaxyproject/galaxy/pull/11661 +.. _Pull Request 11662: https://github.com/galaxyproject/galaxy/pull/11662 +.. _Pull Request 11663: https://github.com/galaxyproject/galaxy/pull/11663 +.. _Pull Request 11664: https://github.com/galaxyproject/galaxy/pull/11664 +.. _Pull Request 11665: https://github.com/galaxyproject/galaxy/pull/11665 +.. _Pull Request 11669: https://github.com/galaxyproject/galaxy/pull/11669 +.. _Pull Request 11670: https://github.com/galaxyproject/galaxy/pull/11670 +.. _Pull Request 11671: https://github.com/galaxyproject/galaxy/pull/11671 +.. _Pull Request 11673: https://github.com/galaxyproject/galaxy/pull/11673 +.. _Pull Request 11674: https://github.com/galaxyproject/galaxy/pull/11674 +.. _Pull Request 11676: https://github.com/galaxyproject/galaxy/pull/11676 +.. _Pull Request 11678: https://github.com/galaxyproject/galaxy/pull/11678 +.. _Pull Request 11680: https://github.com/galaxyproject/galaxy/pull/11680 +.. _Pull Request 11682: https://github.com/galaxyproject/galaxy/pull/11682 +.. _Pull Request 11683: https://github.com/galaxyproject/galaxy/pull/11683 +.. _Pull Request 11684: https://github.com/galaxyproject/galaxy/pull/11684 +.. _Pull Request 11686: https://github.com/galaxyproject/galaxy/pull/11686 +.. _Pull Request 11687: https://github.com/galaxyproject/galaxy/pull/11687 +.. _Pull Request 11692: https://github.com/galaxyproject/galaxy/pull/11692 +.. _Pull Request 11693: https://github.com/galaxyproject/galaxy/pull/11693 +.. _Pull Request 11694: https://github.com/galaxyproject/galaxy/pull/11694 +.. _Pull Request 11696: https://github.com/galaxyproject/galaxy/pull/11696 +.. _Pull Request 11697: https://github.com/galaxyproject/galaxy/pull/11697 +.. _Pull Request 11700: https://github.com/galaxyproject/galaxy/pull/11700 +.. _Pull Request 11702: https://github.com/galaxyproject/galaxy/pull/11702 +.. _Pull Request 11703: https://github.com/galaxyproject/galaxy/pull/11703 +.. _Pull Request 11708: https://github.com/galaxyproject/galaxy/pull/11708 +.. _Pull Request 11711: https://github.com/galaxyproject/galaxy/pull/11711 +.. _Pull Request 11712: https://github.com/galaxyproject/galaxy/pull/11712 +.. _Pull Request 11716: https://github.com/galaxyproject/galaxy/pull/11716 +.. _Pull Request 11718: https://github.com/galaxyproject/galaxy/pull/11718 +.. _Pull Request 11720: https://github.com/galaxyproject/galaxy/pull/11720 +.. _Pull Request 11724: https://github.com/galaxyproject/galaxy/pull/11724 +.. _Pull Request 11727: https://github.com/galaxyproject/galaxy/pull/11727 +.. _Pull Request 11728: https://github.com/galaxyproject/galaxy/pull/11728 +.. _Pull Request 11731: https://github.com/galaxyproject/galaxy/pull/11731 +.. _Pull Request 11732: https://github.com/galaxyproject/galaxy/pull/11732 +.. _Pull Request 11736: https://github.com/galaxyproject/galaxy/pull/11736 +.. _Pull Request 11740: https://github.com/galaxyproject/galaxy/pull/11740 +.. _Pull Request 11741: https://github.com/galaxyproject/galaxy/pull/11741 +.. _Pull Request 11747: https://github.com/galaxyproject/galaxy/pull/11747 +.. _Pull Request 11749: https://github.com/galaxyproject/galaxy/pull/11749 +.. _Pull Request 11750: https://github.com/galaxyproject/galaxy/pull/11750 +.. _Pull Request 11751: https://github.com/galaxyproject/galaxy/pull/11751 +.. _Pull Request 11753: https://github.com/galaxyproject/galaxy/pull/11753 +.. _Pull Request 11757: https://github.com/galaxyproject/galaxy/pull/11757 +.. _Pull Request 11758: https://github.com/galaxyproject/galaxy/pull/11758 +.. _Pull Request 11761: https://github.com/galaxyproject/galaxy/pull/11761 +.. _Pull Request 11762: https://github.com/galaxyproject/galaxy/pull/11762 +.. _Pull Request 11763: https://github.com/galaxyproject/galaxy/pull/11763 +.. _Pull Request 11764: https://github.com/galaxyproject/galaxy/pull/11764 +.. _Pull Request 11765: https://github.com/galaxyproject/galaxy/pull/11765 +.. _Pull Request 11769: https://github.com/galaxyproject/galaxy/pull/11769 +.. _Pull Request 11772: https://github.com/galaxyproject/galaxy/pull/11772 +.. _Pull Request 11773: https://github.com/galaxyproject/galaxy/pull/11773 +.. _Pull Request 11776: https://github.com/galaxyproject/galaxy/pull/11776 +.. _Pull Request 11777: https://github.com/galaxyproject/galaxy/pull/11777 +.. _Pull Request 11778: https://github.com/galaxyproject/galaxy/pull/11778 +.. _Pull Request 11779: https://github.com/galaxyproject/galaxy/pull/11779 +.. _Pull Request 11782: https://github.com/galaxyproject/galaxy/pull/11782 +.. _Pull Request 11783: https://github.com/galaxyproject/galaxy/pull/11783 +.. _Pull Request 11788: https://github.com/galaxyproject/galaxy/pull/11788 +.. _Pull Request 11789: https://github.com/galaxyproject/galaxy/pull/11789 +.. _Pull Request 11790: https://github.com/galaxyproject/galaxy/pull/11790 +.. _Pull Request 11791: https://github.com/galaxyproject/galaxy/pull/11791 +.. _Pull Request 11792: https://github.com/galaxyproject/galaxy/pull/11792 +.. _Pull Request 11793: https://github.com/galaxyproject/galaxy/pull/11793 +.. _Pull Request 11794: https://github.com/galaxyproject/galaxy/pull/11794 +.. _Pull Request 11795: https://github.com/galaxyproject/galaxy/pull/11795 +.. _Pull Request 11798: https://github.com/galaxyproject/galaxy/pull/11798 +.. _Pull Request 11800: https://github.com/galaxyproject/galaxy/pull/11800 +.. _Pull Request 11801: https://github.com/galaxyproject/galaxy/pull/11801 +.. _Pull Request 11802: https://github.com/galaxyproject/galaxy/pull/11802 +.. _Pull Request 11808: https://github.com/galaxyproject/galaxy/pull/11808 +.. _Pull Request 11810: https://github.com/galaxyproject/galaxy/pull/11810 +.. _Pull Request 11811: https://github.com/galaxyproject/galaxy/pull/11811 +.. _Pull Request 11812: https://github.com/galaxyproject/galaxy/pull/11812 +.. _Pull Request 11814: https://github.com/galaxyproject/galaxy/pull/11814 +.. _Pull Request 11815: https://github.com/galaxyproject/galaxy/pull/11815 +.. _Pull Request 11816: https://github.com/galaxyproject/galaxy/pull/11816 +.. _Pull Request 11818: https://github.com/galaxyproject/galaxy/pull/11818 +.. _Pull Request 11825: https://github.com/galaxyproject/galaxy/pull/11825 +.. _Pull Request 11826: https://github.com/galaxyproject/galaxy/pull/11826 +.. _Pull Request 11830: https://github.com/galaxyproject/galaxy/pull/11830 +.. _Pull Request 11831: https://github.com/galaxyproject/galaxy/pull/11831 +.. _Pull Request 11832: https://github.com/galaxyproject/galaxy/pull/11832 +.. _Pull Request 11835: https://github.com/galaxyproject/galaxy/pull/11835 +.. _Pull Request 11838: https://github.com/galaxyproject/galaxy/pull/11838 +.. _Pull Request 11839: https://github.com/galaxyproject/galaxy/pull/11839 +.. _Pull Request 11840: https://github.com/galaxyproject/galaxy/pull/11840 +.. _Pull Request 11843: https://github.com/galaxyproject/galaxy/pull/11843 +.. _Pull Request 11844: https://github.com/galaxyproject/galaxy/pull/11844 +.. _Pull Request 11845: https://github.com/galaxyproject/galaxy/pull/11845 +.. _Pull Request 11846: https://github.com/galaxyproject/galaxy/pull/11846 +.. _Pull Request 11847: https://github.com/galaxyproject/galaxy/pull/11847 +.. _Pull Request 11849: https://github.com/galaxyproject/galaxy/pull/11849 +.. _Pull Request 11850: https://github.com/galaxyproject/galaxy/pull/11850 +.. _Pull Request 11852: https://github.com/galaxyproject/galaxy/pull/11852 +.. _Pull Request 11856: https://github.com/galaxyproject/galaxy/pull/11856 +.. _Pull Request 11859: https://github.com/galaxyproject/galaxy/pull/11859 +.. _Pull Request 11861: https://github.com/galaxyproject/galaxy/pull/11861 +.. _Pull Request 11863: https://github.com/galaxyproject/galaxy/pull/11863 +.. _Pull Request 11868: https://github.com/galaxyproject/galaxy/pull/11868 +.. _Pull Request 11871: https://github.com/galaxyproject/galaxy/pull/11871 +.. _Pull Request 11872: https://github.com/galaxyproject/galaxy/pull/11872 +.. _Pull Request 11873: https://github.com/galaxyproject/galaxy/pull/11873 +.. _Pull Request 11874: https://github.com/galaxyproject/galaxy/pull/11874 +.. _Pull Request 11877: https://github.com/galaxyproject/galaxy/pull/11877 +.. _Pull Request 11878: https://github.com/galaxyproject/galaxy/pull/11878 +.. _Pull Request 11879: https://github.com/galaxyproject/galaxy/pull/11879 +.. _Pull Request 11880: https://github.com/galaxyproject/galaxy/pull/11880 +.. _Pull Request 11881: https://github.com/galaxyproject/galaxy/pull/11881 +.. _Pull Request 11882: https://github.com/galaxyproject/galaxy/pull/11882 +.. _Pull Request 11883: https://github.com/galaxyproject/galaxy/pull/11883 +.. _Pull Request 11884: https://github.com/galaxyproject/galaxy/pull/11884 +.. _Pull Request 11886: https://github.com/galaxyproject/galaxy/pull/11886 +.. _Pull Request 11891: https://github.com/galaxyproject/galaxy/pull/11891 +.. _Pull Request 11895: https://github.com/galaxyproject/galaxy/pull/11895 +.. _Pull Request 11897: https://github.com/galaxyproject/galaxy/pull/11897 +.. _Pull Request 11899: https://github.com/galaxyproject/galaxy/pull/11899 +.. _Pull Request 11900: https://github.com/galaxyproject/galaxy/pull/11900 +.. _Pull Request 11901: https://github.com/galaxyproject/galaxy/pull/11901 +.. _Pull Request 11902: https://github.com/galaxyproject/galaxy/pull/11902 +.. _Pull Request 11904: https://github.com/galaxyproject/galaxy/pull/11904 +.. _Pull Request 11905: https://github.com/galaxyproject/galaxy/pull/11905 +.. _Pull Request 11906: https://github.com/galaxyproject/galaxy/pull/11906 +.. _Pull Request 11907: https://github.com/galaxyproject/galaxy/pull/11907 +.. _Pull Request 11908: https://github.com/galaxyproject/galaxy/pull/11908 +.. _Pull Request 11909: https://github.com/galaxyproject/galaxy/pull/11909 +.. _Pull Request 11910: https://github.com/galaxyproject/galaxy/pull/11910 +.. _Pull Request 11911: https://github.com/galaxyproject/galaxy/pull/11911 +.. _Pull Request 11912: https://github.com/galaxyproject/galaxy/pull/11912 +.. _Pull Request 11913: https://github.com/galaxyproject/galaxy/pull/11913 +.. _Pull Request 11918: https://github.com/galaxyproject/galaxy/pull/11918 +.. _Pull Request 11922: https://github.com/galaxyproject/galaxy/pull/11922 +.. _Pull Request 11923: https://github.com/galaxyproject/galaxy/pull/11923 +.. _Pull Request 11925: https://github.com/galaxyproject/galaxy/pull/11925 +.. _Pull Request 11928: https://github.com/galaxyproject/galaxy/pull/11928 +.. _Pull Request 11929: https://github.com/galaxyproject/galaxy/pull/11929 From d81cf9008eb8ebdf7567ebf206db7668d63104d2 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Mon, 7 Jun 2021 14:24:09 +0200 Subject: [PATCH 02/17] ok, 21.05 out --- doc/source/releases/21.05_announce_user.rst | 87 ++++++--------------- 1 file changed, 22 insertions(+), 65 deletions(-) diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst index 17b615e140a..e71f3088b40 100644 --- a/doc/source/releases/21.05_announce_user.rst +++ b/doc/source/releases/21.05_announce_user.rst @@ -1,4 +1,3 @@ - =========================================================== May 2021 Galaxy Release (v 21.05) =========================================================== @@ -8,109 +7,67 @@ May 2021 Galaxy Release (v 21.05) Highlights =========================================================== -**Feature1** - Feature description. +**¡Galaxy, ahora en español!** +Thanks to Wendi Bacon (`Pull Request 11891`_), the spanish language translation of Galaxy has been finalised and merged, so if you prefer to use Galaxy in Spanish, now you can! This update will be part of an ongoing project from Spanish speakers within the Galaxy community to keep the Galaxy interface localisation up to date, and to produce some Spanish language training materials in the GTN. -**Feature2** - Feature description. +**Bugfixes and Stability** +This release of Galaxy features fewer user-facing changes, as a huge amount of developer time went into making this a maintenance release with better testing, better stability, and more bugfixes. But watch out, this is all in preparation for the next release of Galaxy, 21.09, which will have some of the biggest UI changes in years! -**Feature3** - Feature description. +**Remote Files: FTP Support** +In the last release, the Remote Files interface was added granting access to a huge number of remote data sources directly in Galaxy. Support was added for FTP servers in the latest release so now you can connect e.g. the NCBI FTP server for all of your genomic data needs. New Visualizations =========================================================== .. visualizations -* Migrate api/genomes to fastapi - `Pull Request 11241`_ -* Shared visualization display fix - `Pull Request 11906`_ + +Thanks to `@dlal-group `__, the SimText suite of tools has been added as an interactive tool within Galaxy. You can read about how to use this new Interactive Tool in the associated `GTN tutorial `__. + New Datatypes =========================================================== .. datatypes + * Add FlowCytometry and MetaCyto datatypes (thanks to `@pcm32 `__). `Pull Request 9807`_ -* Add FastAPI routes for datatypes - (thanks to `@davelopez `__). - `Pull Request 11098`_ -* Fix remaining issues reported by bugbear; add it to flake8 reqs - (thanks to `@nsoranzo `__). - `Pull Request 11153`_ -* Add mrc datatype (and Python dependency) +* Add support for `Mrc2014 format images `__, used in Microscopy (thanks to `@gregvonkuster `__). `Pull Request 11220`_ -* remove duplicated qcml from datatypes_conf sample - (thanks to `@bernt-matthias `__). - `Pull Request 11378`_ -* Refactor display_applications API logic into DisplayApplicationsManager - (thanks to `@davelopez `__). - `Pull Request 11386`_ -* Merge release_21.01 -> dev - `Pull Request 11394`_ -* Add HHR datatype - (thanks to `@bgruening `__). - `Pull Request 11661`_ -* add meryldb datatype +* Add meryldb datatype, used by the meryl and mercury tools, both part of the `VGP workflows `__. (thanks to `@bgruening `__). `Pull Request 11694`_ -* Merge 20.09 into dev - `Pull Request 11711`_ * Add datatype for PretextMap output `Pull Request 11747`_ -* add new datatype class for meryldb - (thanks to `@bgruening `__). - `Pull Request 11758`_ -* Make Avivator GEDA and sniffer for ome.tiff datatype +* Add Avivator GEDA and sniffer for ome.tiff datatype. Aviator is a visualizer of high-resolution multiplexed bioimaging data on the web. (thanks to `@qiagu `__). `Pull Request 11801`_ -* jellyfish db datatype +* Add jellyfish db datatype, Jellyfish database files are k-mer counts in binary format. (thanks to `@astrovsky01 `__). `Pull Request 11802`_ -* add new datatype JPEG 2000 in Galaxy +* Add support for JPEG 2000 in Galaxy, widely used for storing satellite imagery, for instance from EU Copernicus Sentinel. (thanks to `@annefou `__). `Pull Request 11812`_ -* Make datatype h5_model for machine leaning models +* Add an H5 format for Machine Leaning models (thanks to `@qiagu `__). `Pull Request 11825`_ -* Add support for the Relion STAR data format +* Add support for the Relion STAR data format for Microscopy (thanks to `@gregvonkuster `__). `Pull Request 11831`_ -* add minerva display app for covid - (thanks to `@hexylena `__). - `Pull Request 11880`_ -* Limit max column in tabular dataset preview - `Pull Request 11901`_ -* Add toml datatype +* Add toml datatype, a generic configuration file format that's used by a number of Proteomics applications (thanks to `@jj-umn `__). `Pull Request 11909`_ -* Use keep_original in pysam.tabix_index to not remove original data - `Pull Request 11913`_ Builtin Tool Updates =========================================================== .. tools -* Fix remaining issues reported by bugbear; add it to flake8 reqs - (thanks to `@nsoranzo `__). - `Pull Request 11153`_ -* Resolve session problems, enabled pages and tags fastAPI routes - `Pull Request 11342`_ -* Make filter work with file containing header - (thanks to `@bernt-matthias `__). - `Pull Request 11365`_ -* Add the SimText shiny app as Interactive Tool - (thanks to `@dlal-group `__). - `Pull Request 11680`_ -* grep, tail, head: add option to keep header - (thanks to `@bernt-matthias `__). - `Pull Request 11859`_ -* add a bit of docs to the add tags tool - (thanks to `@bernt-matthias `__). - `Pull Request 11874`_ + +* The filter, grep, tail, and head tools all now support working with a file + containing a header line (thanks to `@bernt-matthias `__). + `Pull Request 11365`_, `Pull Request 11859`_ Release Testing Team =========================================================== From b56d84177d68e51e102e76e1702ef978a9d3f663 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Mon, 7 Jun 2021 14:29:35 +0200 Subject: [PATCH 03/17] ok, some more niceness --- doc/source/releases/21.05_announce_user.rst | 8 ++++++++ doc/source/releases/images/21.05-espanol.png | Bin 0 -> 8456 bytes doc/source/releases/images/21.05-report.png | Bin 0 -> 64900 bytes 3 files changed, 8 insertions(+) create mode 100644 doc/source/releases/images/21.05-espanol.png create mode 100644 doc/source/releases/images/21.05-report.png diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst index e71f3088b40..e2bc863d7d1 100644 --- a/doc/source/releases/21.05_announce_user.rst +++ b/doc/source/releases/21.05_announce_user.rst @@ -10,12 +10,20 @@ Highlights **¡Galaxy, ahora en español!** Thanks to Wendi Bacon (`Pull Request 11891`_), the spanish language translation of Galaxy has been finalised and merged, so if you prefer to use Galaxy in Spanish, now you can! This update will be part of an ongoing project from Spanish speakers within the Galaxy community to keep the Galaxy interface localisation up to date, and to produce some Spanish language training materials in the GTN. +.. figure:: images/21.05-espanol.png + :alt: The shared data menu is shown, everything is in spanish. It reads "Datos compartidos" and lists items such as Bibliotecas de datos. + **Bugfixes and Stability** This release of Galaxy features fewer user-facing changes, as a huge amount of developer time went into making this a maintenance release with better testing, better stability, and more bugfixes. But watch out, this is all in preparation for the next release of Galaxy, 21.09, which will have some of the biggest UI changes in years! **Remote Files: FTP Support** In the last release, the Remote Files interface was added granting access to a huge number of remote data sources directly in Galaxy. Support was added for FTP servers in the latest release so now you can connect e.g. the NCBI FTP server for all of your genomic data needs. +**Download Collections from Reports** +Workflow reports are gaining popularity and features! You can not only insert previews of collections in your reports, but also download them directly from the report interface. + +.. figure:: images/21.05-report.png + :alt: Screenshot of a workflow report box showing a dataset collection. A new button, a download icon, appears at the top right. New Visualizations =========================================================== diff --git a/doc/source/releases/images/21.05-espanol.png b/doc/source/releases/images/21.05-espanol.png new file mode 100644 index 0000000000000000000000000000000000000000..c78b4e48213a7f898ec1fc29c631ec763df49f58 GIT binary patch literal 8456 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 BR#*T4 literal 0 HcmV?d00001 From f191197a7bc0fd4ac55525928aeaad037b06cc6e Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 16:09:33 +0200 Subject: [PATCH 04/17] Add new PRs to notes --- doc/source/releases/21.05.rst | 87 +++++++++++++++++++++++++++++++ doc/source/releases/21.05_prs.rst | 46 ++++++++++++++++ 2 files changed, 133 insertions(+) diff --git a/doc/source/releases/21.05.rst b/doc/source/releases/21.05.rst index 7240a2b75a6..81bbcbec6f9 100644 --- a/doc/source/releases/21.05.rst +++ b/doc/source/releases/21.05.rst @@ -188,6 +188,14 @@ Enhancements `Pull Request 11753`_ .. enhancement +* Include more info on test input staging exception + `Pull Request 11953`_ +* Add indexes on update_time columns used in ORDER BY clauses + `Pull Request 11988`_ +* Don't assert output_metadata state + `Pull Request 12100`_ +* Fix and enhance subworkflow step upgrade messages + `Pull Request 12120`_ * Performance testing infrastructure. `Pull Request 10117`_ * Stub MQ docs @@ -539,6 +547,8 @@ Fixes `Pull Request 11913`_ .. bug_tag_tools +* Open input file in read mode in liftover wrapper + `Pull Request 12001`_ * Resolve session problems, enabled pages and tags fastAPI routes `Pull Request 11342`_ * Make filter work with file containing header @@ -546,6 +556,8 @@ Fixes `Pull Request 11365`_ .. bug_tag_workflows +* Allow trs_version to refer to name or id field + `Pull Request 12021`_ * Workflow editor null/zero fixes `Pull Request 11265`_ * Fix reconnecting terminals @@ -567,6 +579,9 @@ Fixes `Pull Request 11778`_ .. bug_tag_ui +* fix undefined error in ui-file-source + (thanks to `@OlegZharkov `__). + `Pull Request 11586`_ * Remove filter from list:paired element names when filter is not _1 `Pull Request 11486`_ * Beta history current history mismatch with legacy code. @@ -575,6 +590,19 @@ Fixes `Pull Request 11879`_ .. bug_tag_jobs +* ITs on K8S tweaks and SSL + (thanks to `@almahmoud `__). + `Pull Request 11947`_ +* Fix anonymous user job walltime query + `Pull Request 11951`_ +* Fix container port parsing if IPv6 hostname is ``::`` + `Pull Request 11955`_ +* Fix isolated job home dir on pulsar + `Pull Request 12037`_ +* Don't start workflow scheduler for handler in job pool + `Pull Request 12075`_ +* Fix set metadata for primary discovered outputs + `Pull Request 12088`_ * Fix mule job messaging `Pull Request 11148`_ * Deal with empty claim names in k8s runner @@ -612,6 +640,65 @@ Fixes `Pull Request 11633`_ .. bug +* Create history_audit table to avoid write deadlocks during history.update_time updates + `Pull Request 11914`_ +* Fix `GET /api/datasets/` docs + (thanks to `@nsoranzo `__). + `Pull Request 11933`_ +* Don't move the `update_time` goalpost + (thanks to `@nsoranzo `__). + `Pull Request 11934`_ +* Force galaxy_id to string in galactic_job_json + (thanks to `@simonbray `__). + `Pull Request 11965`_ +* Update default base images, make DEFAULT_CHANNELS configurable via env var + `Pull Request 11966`_ +* Fix mulled singularity building + `Pull Request 11979`_ +* restrict invalid input in library pagination + (thanks to `@OlegZharkov `__). + `Pull Request 11996`_ +* Fix breadcrumb in dataset details in libraries + (thanks to `@OlegZharkov `__). + `Pull Request 11998`_ +* Fix deleted libs for user + (thanks to `@OlegZharkov `__). + `Pull Request 12011`_ +* fix library dataset permissions + (thanks to `@OlegZharkov `__). + `Pull Request 12015`_ +* Disable import button during "Import to History" + (thanks to `@OlegZharkov `__). + `Pull Request 12016`_ +* Hide edit libraries for users + (thanks to `@OlegZharkov `__). + `Pull Request 12023`_ +* Fix downloading (sub)folders from data-libraries + (thanks to `@OlegZharkov `__). + `Pull Request 12028`_ +* Fix subworkflow / update all steps upgrade action + `Pull Request 12029`_ +* Fix uploading multiple files in ftp upload / choose remote files + `Pull Request 12030`_ +* add GALAXY_MEMORY_MB* to passt hrough + (thanks to `@bgruening `__). + `Pull Request 12039`_ +* invocation_time report fix + `Pull Request 12070`_ +* Fix edit field reactivity in libraries + (thanks to `@OlegZharkov `__). + `Pull Request 12080`_ +* Fix select all in import from history backbone modal + (thanks to `@OlegZharkov `__). + `Pull Request 12082`_ +* Fix export select_all in collections + (thanks to `@OlegZharkov `__). + `Pull Request 12086`_ +* fix library search filter + (thanks to `@OlegZharkov `__). + `Pull Request 12087`_ +* Fix name of datasets with invalid contents + `Pull Request 12107`_ * Beta History: implement missing advanced search filters `Pull Request 10972`_ * Fix mypy error with Union in response_model diff --git a/doc/source/releases/21.05_prs.rst b/doc/source/releases/21.05_prs.rst index 52657e8df23..dd73e92f568 100644 --- a/doc/source/releases/21.05_prs.rst +++ b/doc/source/releases/21.05_prs.rst @@ -1,5 +1,51 @@ .. github_links +.. _Pull Request 11586: https://github.com/galaxyproject/galaxy/pull/11586 +.. _Pull Request 11742: https://github.com/galaxyproject/galaxy/pull/11742 +.. _Pull Request 11914: https://github.com/galaxyproject/galaxy/pull/11914 +.. _Pull Request 11933: https://github.com/galaxyproject/galaxy/pull/11933 +.. _Pull Request 11934: https://github.com/galaxyproject/galaxy/pull/11934 +.. _Pull Request 11936: https://github.com/galaxyproject/galaxy/pull/11936 +.. _Pull Request 11946: https://github.com/galaxyproject/galaxy/pull/11946 +.. _Pull Request 11947: https://github.com/galaxyproject/galaxy/pull/11947 +.. _Pull Request 11950: https://github.com/galaxyproject/galaxy/pull/11950 +.. _Pull Request 11951: https://github.com/galaxyproject/galaxy/pull/11951 +.. _Pull Request 11953: https://github.com/galaxyproject/galaxy/pull/11953 +.. _Pull Request 11955: https://github.com/galaxyproject/galaxy/pull/11955 +.. _Pull Request 11963: https://github.com/galaxyproject/galaxy/pull/11963 +.. _Pull Request 11965: https://github.com/galaxyproject/galaxy/pull/11965 +.. _Pull Request 11966: https://github.com/galaxyproject/galaxy/pull/11966 +.. _Pull Request 11973: https://github.com/galaxyproject/galaxy/pull/11973 +.. _Pull Request 11979: https://github.com/galaxyproject/galaxy/pull/11979 +.. _Pull Request 11988: https://github.com/galaxyproject/galaxy/pull/11988 +.. _Pull Request 11991: https://github.com/galaxyproject/galaxy/pull/11991 +.. _Pull Request 11996: https://github.com/galaxyproject/galaxy/pull/11996 +.. _Pull Request 11998: https://github.com/galaxyproject/galaxy/pull/11998 +.. _Pull Request 12001: https://github.com/galaxyproject/galaxy/pull/12001 +.. _Pull Request 12011: https://github.com/galaxyproject/galaxy/pull/12011 +.. _Pull Request 12015: https://github.com/galaxyproject/galaxy/pull/12015 +.. _Pull Request 12016: https://github.com/galaxyproject/galaxy/pull/12016 +.. _Pull Request 12020: https://github.com/galaxyproject/galaxy/pull/12020 +.. _Pull Request 12021: https://github.com/galaxyproject/galaxy/pull/12021 +.. _Pull Request 12023: https://github.com/galaxyproject/galaxy/pull/12023 +.. _Pull Request 12028: https://github.com/galaxyproject/galaxy/pull/12028 +.. _Pull Request 12029: https://github.com/galaxyproject/galaxy/pull/12029 +.. _Pull Request 12030: https://github.com/galaxyproject/galaxy/pull/12030 +.. _Pull Request 12037: https://github.com/galaxyproject/galaxy/pull/12037 +.. _Pull Request 12039: https://github.com/galaxyproject/galaxy/pull/12039 +.. _Pull Request 12070: https://github.com/galaxyproject/galaxy/pull/12070 +.. _Pull Request 12075: https://github.com/galaxyproject/galaxy/pull/12075 +.. _Pull Request 12079: https://github.com/galaxyproject/galaxy/pull/12079 +.. _Pull Request 12080: https://github.com/galaxyproject/galaxy/pull/12080 +.. _Pull Request 12082: https://github.com/galaxyproject/galaxy/pull/12082 +.. _Pull Request 12086: https://github.com/galaxyproject/galaxy/pull/12086 +.. _Pull Request 12087: https://github.com/galaxyproject/galaxy/pull/12087 +.. _Pull Request 12088: https://github.com/galaxyproject/galaxy/pull/12088 +.. _Pull Request 12096: https://github.com/galaxyproject/galaxy/pull/12096 +.. _Pull Request 12100: https://github.com/galaxyproject/galaxy/pull/12100 +.. _Pull Request 12107: https://github.com/galaxyproject/galaxy/pull/12107 +.. _Pull Request 12112: https://github.com/galaxyproject/galaxy/pull/12112 +.. _Pull Request 12120: https://github.com/galaxyproject/galaxy/pull/12120 .. _Pull Request 9807: https://github.com/galaxyproject/galaxy/pull/9807 .. _Pull Request 10117: https://github.com/galaxyproject/galaxy/pull/10117 .. _Pull Request 10222: https://github.com/galaxyproject/galaxy/pull/10222 From 806c7fb11e697ede1ae15cb0709e7e4a47a57a19 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 16:32:46 +0200 Subject: [PATCH 05/17] Add release testing team --- doc/source/releases/21.05_announce_user.rst | 5 ++++- doc/source/releases/index.rst | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst index e2bc863d7d1..012082933b3 100644 --- a/doc/source/releases/21.05_announce_user.rst +++ b/doc/source/releases/21.05_announce_user.rst @@ -82,7 +82,10 @@ Release Testing Team A special thanks to the release testing team for testing many of the new features and reporting many bugs: - +- `Keith Suderman `_ +- `David López `_ +- `Dave Bouvier `_ +- `Qiang Gu `_ Release Notes =========================================================== diff --git a/doc/source/releases/index.rst b/doc/source/releases/index.rst index a9c01588c2e..ff086565be3 100644 --- a/doc/source/releases/index.rst +++ b/doc/source/releases/index.rst @@ -4,6 +4,7 @@ Releases .. toctree:: :maxdepth: 1 + 21.05_announce_user 21.01_announce_user 20.09_announce_user 20.05_announce_user From 98da5a9547e61a4d793be3544b203f8060faba12 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 16:43:26 +0200 Subject: [PATCH 06/17] Add 21.05_announce --- doc/source/releases/21.05_announce.rst | 43 +++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index a8bb6e8d3e3..71aed64c279 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -1,12 +1,45 @@ -:orphan: - =========================================================== May 2021 Galaxy Release (v 21.05) =========================================================== +.. include:: _header.rst -Schedule +Highlights =========================================================== - * Planned Freeze Date: 2021-05-03 - * Planned Release Date: 2021-05-24 + +**Feature1** + Feature description. + +**Feature2** + Feature description. + +**Feature3** + Feature description. + +Also check out the `21.05 user release notes <21.05_announce_user.html>`__ + +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_21.05 https://github.com/galaxyproject/galaxy.git + +To update an existing Galaxy repository run: + .. code-block:: shell + + $ git fetch origin && git checkout release_21.05 && git pull --ff-only origin release_21.05 + +See the `community hub `__ for additional details on source code locations. + +Release Notes +=========================================================== + +.. include:: 21.05.rst + :start-after: announce_start + +.. include:: _thanks.rst From 1b1d419a791a50a7081c1d135b9e9d4a4960e9a1 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 17:59:51 +0200 Subject: [PATCH 07/17] Add deprecations, small tweaks to PR titles --- doc/source/releases/21.05.rst | 8 ++-- doc/source/releases/21.05_announce.rst | 41 ++++++++++++++++--- .../user_preferences_extra_conf.yml.sample | 4 +- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/doc/source/releases/21.05.rst b/doc/source/releases/21.05.rst index 81bbcbec6f9..8e8f9bdb0e1 100644 --- a/doc/source/releases/21.05.rst +++ b/doc/source/releases/21.05.rst @@ -73,22 +73,22 @@ Enhancements * add new datatype class for meryldb (thanks to `@bgruening `__). `Pull Request 11758`_ -* Make Avivator GEDA and sniffer for ome.tiff datatype +* Add Avivator GEDA and sniffer for ome.tiff datatype (thanks to `@qiagu `__). `Pull Request 11801`_ * jellyfish db datatype (thanks to `@astrovsky01 `__). `Pull Request 11802`_ -* add new datatype JPEG 2000 in Galaxy +* Add new datatype JPEG 2000 in Galaxy (thanks to `@annefou `__). `Pull Request 11812`_ -* Make datatype h5_model for machine leaning models +* Adding h5_model datatype for machine leaning models (thanks to `@qiagu `__). `Pull Request 11825`_ * Add support for the Relion STAR data format (thanks to `@gregvonkuster `__). `Pull Request 11831`_ -* add minerva display app for covid +* Add minerva display app for covid (thanks to `@hexylena `__). `Pull Request 11880`_ * Add toml datatype diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index 71aed64c279..958b78addd7 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -8,17 +8,46 @@ May 2021 Galaxy Release (v 21.05) Highlights =========================================================== -**Feature1** - Feature description. +**New development stack** + Galaxy release 21.09 will ship with a new web framework (`fastAPI `__), + `Celery `__ task queue and process management using `circus `__. You can try out this new stack now by running ``APP_WEBSERVER=dev./run.sh``. -**Feature2** - Feature description. +**Celery for long running tasks** + Galaxy can now run certain tasks in the background. The Celery workers are + currently not required, but if activated can perform certain long running tasks, + such as creating history export archives. Celery tasks will bridge the gap between + rapid requests that can be handled during a web request and jobs that require extensive + and relatively slow setup. (`Pull Request 11789`_, `Pull Request 11772`_, `Pull Request 11720`_) + +**More robust selection of job handlers** + Job throughput can be increased by starting Galaxy with multiple external job + handler processes. Jobs were traditionally assigned to a job handler process + by the web handler or workflow handler process that created the job. Since + Release 19.01 Galaxy has supported additional mechanisms that use database + serialization techniques to let job handlers assign processes to themselves. + This mechanism is more robust and doesn't require that all job handler + processes be alive and known by the web handler process. Galaxy now determines + the best method for assigning jobs based on the database in use, if the assignment + method is not set explicitly. Older job assignment methods will be removed in Galaxy + release 21.09. For more details see the `Job Handler Assignment Methods section `__ + of the Galaxy documentation. ( `Pull Request 11792`_) -**Feature3** - Feature description. Also check out the `21.05 user release notes <21.05_announce_user.html>`__ +Upcoming Deprecation Notices +=========================================================== + +**Deprecation of support for Python 3.6 in Galaxy release 21.09** + This Galaxy release (21.05) will be the last release that supports Python 3.6 or newer. + We encourage updating to a newer Python if possible. + +**Deprecation of uwsgi and paste** + This Galaxy release (21.05) will be the last release that supports the WSGI standard, + and with it uwsgi and paste. From release 21.09 Galaxy will be an ASGI application. + We will update documentation and playbooks during the upcoming development cycle to + enable a smooth transition. + Get Galaxy ========== diff --git a/lib/galaxy/config/sample/user_preferences_extra_conf.yml.sample b/lib/galaxy/config/sample/user_preferences_extra_conf.yml.sample index 464696a5929..d0280966e40 100644 --- a/lib/galaxy/config/sample/user_preferences_extra_conf.yml.sample +++ b/lib/galaxy/config/sample/user_preferences_extra_conf.yml.sample @@ -67,7 +67,7 @@ preferences: # Used in file_sources_conf.yml dropbox: - description: Your Dropbox account + description: Your Dropbox account inputs: - name: access_token label: Dropbox access token @@ -76,7 +76,7 @@ preferences: # Used in file_sources_conf.yml owncloud: - description: Your External OwnCloud account + description: Your External OwnCloud account inputs: - name: url label: Server Domain (e.g. https://myowncloud.org) From e6e7f1506d45a99196a0486f90864f02e7f8135b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 18:11:32 +0200 Subject: [PATCH 08/17] Add more PRs --- doc/source/releases/21.05.rst | 6 ++++++ doc/source/releases/21.05_prs.rst | 3 +++ 2 files changed, 9 insertions(+) diff --git a/doc/source/releases/21.05.rst b/doc/source/releases/21.05.rst index 8e8f9bdb0e1..058cdad3a2c 100644 --- a/doc/source/releases/21.05.rst +++ b/doc/source/releases/21.05.rst @@ -104,6 +104,8 @@ Enhancements `Pull Request 11874`_ .. enhancement_tag_workflows +* Add failed-to-submit error handling for simplified workflow run form + `Pull Request 12124`_ * Selenium test case for invocation grid + display. `Pull Request 11160`_ * be more verbose on output filter errors @@ -556,6 +558,10 @@ Fixes `Pull Request 11365`_ .. bug_tag_workflows +* Fix copying text in workflow editor + `Pull Request 12118`_ +* Make failure to save workflow dismissible + `Pull Request 12122`_ * Allow trs_version to refer to name or id field `Pull Request 12021`_ * Workflow editor null/zero fixes diff --git a/doc/source/releases/21.05_prs.rst b/doc/source/releases/21.05_prs.rst index dd73e92f568..c12528b4d5c 100644 --- a/doc/source/releases/21.05_prs.rst +++ b/doc/source/releases/21.05_prs.rst @@ -1,5 +1,8 @@ .. github_links +.. _Pull Request 12118: https://github.com/galaxyproject/galaxy/pull/12118 +.. _Pull Request 12122: https://github.com/galaxyproject/galaxy/pull/12122 +.. _Pull Request 12124: https://github.com/galaxyproject/galaxy/pull/12124 .. _Pull Request 11586: https://github.com/galaxyproject/galaxy/pull/11586 .. _Pull Request 11742: https://github.com/galaxyproject/galaxy/pull/11742 .. _Pull Request 11914: https://github.com/galaxyproject/galaxy/pull/11914 From 1c66b755a60bf392bb9d41005e2e03889e52317a Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 10 Jun 2021 18:52:59 +0200 Subject: [PATCH 09/17] include config schemas in diffing --- scripts/release-diff.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/release-diff.py b/scripts/release-diff.py index 7e28f80beea..4eb15a75e2a 100644 --- a/scripts/release-diff.py +++ b/scripts/release-diff.py @@ -120,7 +120,7 @@ def load_at_time(path, revision=None): def main(old_revision, new_revision=None): - files_to_diff = glob.glob("config/*.yml.sample") + files_to_diff = glob.glob("config/*.yml.sample") + glob.glob('lib/galaxy/webapps/galaxy/*schema.yml') added = {} removed = {} changed = {} @@ -138,13 +138,13 @@ def main(old_revision, new_revision=None): (a, r, c) = diff_files(old_contents, new_contents) if a: - added[file] = a + added[file] = sorted(a) if r: - removed[file] = r + removed[file] = sorted(r) if c: - changed[file] = c + changed[file] = sorted(c) except subprocess.CalledProcessError: new_files.append(file) From 3093c2dceff3e13fd7f5b6d21478dd05eaa04878 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 10 Jun 2021 18:56:17 +0200 Subject: [PATCH 10/17] handle subsections of configurations a bit better --- scripts/release-diff.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/scripts/release-diff.py b/scripts/release-diff.py index 4eb15a75e2a..944b897ab2f 100644 --- a/scripts/release-diff.py +++ b/scripts/release-diff.py @@ -44,8 +44,24 @@ def diff_files(old, new): old_k = set(old_kv.keys()) new_k = set(new_kv.keys()) - added = new_k - old_k - removed = old_k - new_k + added = [] + for item in (new_k - old_k): + parent = '.'.join(item.split('.')[0:-1]) + if parent in new_k and parent not in old_k: + added.append(item) + else: + added.append(parent) + added = set(added) + + removed = [] + for item in (old_k - new_k): + parent = '.'.join(item.split('.')[0:-1]) + if parent in old_k and parent not in new_k: + removed.append(item) + else: + removed.append(parent) + removed = set(removed) + shared = old_k & new_k changed = [(k, old_kv[k], new_kv[k]) for k in shared if old_kv[k] != new_kv[k]] From 364286df04c6eb432a1579373208bf9c30703dde Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 10 Jun 2021 18:59:56 +0200 Subject: [PATCH 11/17] munge filenames --- scripts/release-diff.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/scripts/release-diff.py b/scripts/release-diff.py index 944b897ab2f..7c362c043bd 100644 --- a/scripts/release-diff.py +++ b/scripts/release-diff.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +import os import argparse import glob import subprocess @@ -143,6 +144,12 @@ def main(old_revision, new_revision=None): new_files = [] for file in files_to_diff: + filename = file + if 'config_schema.yml' in file: + filename = 'config/galaxy.yml.sample:galaxy' + elif 'uwsgi_schema.yml' in file: + filename = 'config/galaxy.yml.sample:uwsgi' + real_path = Path(file).resolve().relative_to(Path.cwd()) try: old_contents = yaml.load( @@ -154,13 +161,13 @@ def main(old_revision, new_revision=None): (a, r, c) = diff_files(old_contents, new_contents) if a: - added[file] = sorted(a) + added[filename] = sorted(a) if r: - removed[file] = sorted(r) + removed[filename] = sorted(r) if c: - changed[file] = sorted(c) + changed[filename] = sorted(c) except subprocess.CalledProcessError: new_files.append(file) From 6f67579d92c4a7159acd9d0b565948b46c9c989c Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 19:14:15 +0200 Subject: [PATCH 12/17] Add configuration changes --- doc/source/releases/21.05_announce.rst | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index 958b78addd7..7240f4b9676 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -48,6 +48,51 @@ Upcoming Deprecation Notices We will update documentation and playbooks during the upcoming development cycle to enable a smooth transition. +Configuration Changes +===================== + +Added +----- + +The following configuration options are new + +config/user_preferences_extra_conf.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- preferences.dropbox +- preferences.owncloud + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.cache_dir +- mapping.galaxy.mapping.enable_celery_tasks +- mapping.galaxy.mapping.flush_per_n_datasets +- mapping.galaxy.mapping.matomo_server +- mapping.galaxy.mapping.matomo_site_id +- mapping.galaxy.mapping.plausible_domain +- mapping.galaxy.mapping.plausible_server +- mapping.galaxy.mapping.statsd_mock_calls + +Removed +------- + +The following configuration options have been completely removed + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.transfer_manager_port + + +New Configuration Files +----------------------- + +The following files are new, or recently converted to yaml + +- ``config/file_sources_conf.yml.sample`` + + Get Galaxy ========== From 2a7043f21863c39181924c38b7a77f4150f93b9e Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 19:40:24 +0200 Subject: [PATCH 13/17] Tweak notes --- doc/source/releases/21.05.rst | 40 --------------------- doc/source/releases/21.05_announce.rst | 35 ++++++++++++++++++ doc/source/releases/21.05_announce_user.rst | 4 --- 3 files changed, 35 insertions(+), 44 deletions(-) diff --git a/doc/source/releases/21.05.rst b/doc/source/releases/21.05.rst index 058cdad3a2c..266d140968e 100644 --- a/doc/source/releases/21.05.rst +++ b/doc/source/releases/21.05.rst @@ -13,9 +13,6 @@ Enhancements * Beta History scrolling behavior and polling efficiency tuning `Pull Request 11693`_ - -.. feature - * Add FastAPI routes for tours `Pull Request 11089`_ * Add FastAPI routes for datatypes @@ -50,12 +47,8 @@ Enhancements `Pull Request 11789`_ * Allow importing histories through pages / reports `Pull Request 11863`_ -.. enhancement_tag_viz - * Migrate api/genomes to fastapi `Pull Request 11241`_ -.. enhancement_tag_datatypes - * Add FlowCytometry and MetaCyto datatypes (thanks to `@pcm32 `__). `Pull Request 9807`_ @@ -94,16 +87,12 @@ Enhancements * Add toml datatype (thanks to `@jj-umn `__). `Pull Request 11909`_ -.. enhancement_tag_tools - * grep, tail, head: add option to keep header (thanks to `@bernt-matthias `__). `Pull Request 11859`_ * add a bit of docs to the add tags tool (thanks to `@bernt-matthias `__). `Pull Request 11874`_ -.. enhancement_tag_workflows - * Add failed-to-submit error handling for simplified workflow run form `Pull Request 12124`_ * Selenium test case for invocation grid + display. @@ -122,8 +111,6 @@ Enhancements `Pull Request 11671`_ * Switch default handler assignment to skip locked or transaction isolation if possible `Pull Request 11792`_ -.. enhancement_tag_ui - * Client testing/linting updates and followup `Pull Request 11121`_ * replaced global vue with test vue in unit tests @@ -140,8 +127,6 @@ Enhancements `Pull Request 11883`_ * Implement switch to history modal for beta history panel `Pull Request 11895`_ -.. enhancement_tag_jobs - * Store job_id on Dataset table. `Pull Request 10222`_ * Handle unschedulable jobs in k8s runner @@ -179,8 +164,6 @@ Enhancements * improve three debug messages (thanks to `@bernt-matthias `__). `Pull Request 11908`_ -.. enhancement_tag_admin - * Add documentation on how to setup Pulsar's two-container job runner `Pull Request 11557`_ * sortable columns in Admin->Users @@ -188,8 +171,6 @@ Enhancements `Pull Request 11665`_ * Create install database with create_db.sh `Pull Request 11753`_ -.. enhancement - * Include more info on test input staging exception `Pull Request 11953`_ * Add indexes on update_time columns used in ORDER BY clauses @@ -443,8 +424,6 @@ Enhancements * expose copied_from_ldda_id on dataset api endpoint (thanks to `@scholtalbers `__). `Pull Request 11922`_ -.. small_enhancement - * Fix remaining issues reported by bugbear; add it to flake8 reqs (thanks to `@nsoranzo `__). `Pull Request 11153`_ @@ -531,15 +510,8 @@ Enhancements Fixes ------------------------------- -.. major_bug - - -.. bug_tag_viz - * Shared visualization display fix `Pull Request 11906`_ -.. bug_tag_datatypes - * remove duplicated qcml from datatypes_conf sample (thanks to `@bernt-matthias `__). `Pull Request 11378`_ @@ -547,8 +519,6 @@ Fixes `Pull Request 11901`_ * Use keep_original in pysam.tabix_index to not remove original data `Pull Request 11913`_ -.. bug_tag_tools - * Open input file in read mode in liftover wrapper `Pull Request 12001`_ * Resolve session problems, enabled pages and tags fastAPI routes @@ -556,8 +526,6 @@ Fixes * Make filter work with file containing header (thanks to `@bernt-matthias `__). `Pull Request 11365`_ -.. bug_tag_workflows - * Fix copying text in workflow editor `Pull Request 12118`_ * Make failure to save workflow dismissible @@ -583,8 +551,6 @@ Fixes `Pull Request 11692`_ * Fix workflow refactor schema parsing for pydantic 1.8. `Pull Request 11778`_ -.. bug_tag_ui - * fix undefined error in ui-file-source (thanks to `@OlegZharkov `__). `Pull Request 11586`_ @@ -594,8 +560,6 @@ Fixes `Pull Request 11850`_ * Reposition history scroller during new updates `Pull Request 11879`_ -.. bug_tag_jobs - * ITs on K8S tweaks and SSL (thanks to `@almahmoud `__). `Pull Request 11947`_ @@ -637,15 +601,11 @@ Fixes * Handle resubmission before changing job state in CLI runner (thanks to `@pcm32 `__). `Pull Request 11886`_ -.. bug_tag_admin - * fix broken docs links `Pull Request 11384`_ * Add missing ssl keyword in nginx example [docs] (thanks to `@rhpvorderman `__). `Pull Request 11633`_ -.. bug - * Create history_audit table to avoid write deadlocks during history.update_time updates `Pull Request 11914`_ * Fix `GET /api/datasets/` docs diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index 7240f4b9676..ad39b1d46c4 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -51,6 +51,7 @@ Upcoming Deprecation Notices Configuration Changes ===================== + Added ----- @@ -74,6 +75,40 @@ config/galaxy.yml.sample:galaxy - mapping.galaxy.mapping.plausible_server - mapping.galaxy.mapping.statsd_mock_calls + +Changed +------- + +The following configuration options have been changed + +config/user_preferences_extra_conf.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- preferences.localization.inputs has changed from :: + + [{'label': 'Prefered language', + 'name': 'locale', + 'options': [['Navigator default', 'auto'], + ['Chinese', 'zh'], + ['English', 'en'], + ['French', 'fr'], + ['Japanese', 'ja']], + 'required': False, + 'type': 'select'}] + + to :: + + [{'label': 'Prefered language', + 'name': 'locale', + 'options': [['Navigator default', 'auto'], + ['中文', 'zh'], + ['English', 'en'], + ['Español', 'es'], + ['Français', 'fr'], + ['日本語', 'ja']], + 'required': False, + 'type': 'select'}] + Removed ------- diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst index 012082933b3..5c3b28ae300 100644 --- a/doc/source/releases/21.05_announce_user.rst +++ b/doc/source/releases/21.05_announce_user.rst @@ -36,8 +36,6 @@ Thanks to `@dlal-group `__, the SimText suite of New Datatypes =========================================================== -.. datatypes - * Add FlowCytometry and MetaCyto datatypes (thanks to `@pcm32 `__). `Pull Request 9807`_ @@ -71,8 +69,6 @@ New Datatypes Builtin Tool Updates =========================================================== -.. tools - * The filter, grep, tail, and head tools all now support working with a file containing a header line (thanks to `@bernt-matthias `__). `Pull Request 11365`_, `Pull Request 11859`_ From 91795d198d657a76a9b50f2ee58ce6395f4107d0 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 19:41:24 +0200 Subject: [PATCH 14/17] Lint fix --- scripts/release-diff.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/release-diff.py b/scripts/release-diff.py index 7c362c043bd..7848ee5bd01 100644 --- a/scripts/release-diff.py +++ b/scripts/release-diff.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -import os import argparse import glob import subprocess From 44b65b285fa7d5758665c5f0ea6e1c966eddaca8 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 20:00:20 +0200 Subject: [PATCH 15/17] Add missing whitespace --- doc/source/releases/21.05_announce.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index ad39b1d46c4..e305c7dd455 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -10,7 +10,7 @@ Highlights **New development stack** Galaxy release 21.09 will ship with a new web framework (`fastAPI `__), - `Celery `__ task queue and process management using `circus `__. You can try out this new stack now by running ``APP_WEBSERVER=dev./run.sh``. + `Celery `__ task queue and process management using `circus `__. You can preview new stack now by running ``APP_WEBSERVER=dev ./run.sh``. **Celery for long running tasks** Galaxy can now run certain tasks in the background. The Celery workers are From a8b3efb26f924cba1fd5c01e0534f831dc779d38 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 20:10:34 +0200 Subject: [PATCH 16/17] Minor text tweaks --- doc/source/releases/21.05_announce.rst | 4 ++-- doc/source/releases/21.05_announce_user.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index e305c7dd455..2315278ada2 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -12,9 +12,9 @@ Highlights Galaxy release 21.09 will ship with a new web framework (`fastAPI `__), `Celery `__ task queue and process management using `circus `__. You can preview new stack now by running ``APP_WEBSERVER=dev ./run.sh``. -**Celery for long running tasks** +**Celery for background tasks** Galaxy can now run certain tasks in the background. The Celery workers are - currently not required, but if activated can perform certain long running tasks, + currently not required, but if activated can perform certain long-running tasks, such as creating history export archives. Celery tasks will bridge the gap between rapid requests that can be handled during a web request and jobs that require extensive and relatively slow setup. (`Pull Request 11789`_, `Pull Request 11772`_, `Pull Request 11720`_) diff --git a/doc/source/releases/21.05_announce_user.rst b/doc/source/releases/21.05_announce_user.rst index 5c3b28ae300..41fe8bde8af 100644 --- a/doc/source/releases/21.05_announce_user.rst +++ b/doc/source/releases/21.05_announce_user.rst @@ -8,7 +8,7 @@ Highlights =========================================================== **¡Galaxy, ahora en español!** -Thanks to Wendi Bacon (`Pull Request 11891`_), the spanish language translation of Galaxy has been finalised and merged, so if you prefer to use Galaxy in Spanish, now you can! This update will be part of an ongoing project from Spanish speakers within the Galaxy community to keep the Galaxy interface localisation up to date, and to produce some Spanish language training materials in the GTN. +Thanks to Wendi Bacon (`Pull Request 11891`_), the Spanish language translation of Galaxy has been finalised and merged, so if you prefer to use Galaxy in Spanish, now you can! This update will be part of an ongoing project from Spanish speakers within the Galaxy community to keep the Galaxy interface localisation up to date, and to produce some Spanish language training materials in the GTN. .. figure:: images/21.05-espanol.png :alt: The shared data menu is shown, everything is in spanish. It reads "Datos compartidos" and lists items such as Bibliotecas de datos. From 546870466382a90a1c19255f605c3a6e17322251 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 10 Jun 2021 20:18:39 +0200 Subject: [PATCH 17/17] Capitalize Circus --- doc/source/releases/21.05_announce.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/releases/21.05_announce.rst b/doc/source/releases/21.05_announce.rst index 2315278ada2..c96060a4ac4 100644 --- a/doc/source/releases/21.05_announce.rst +++ b/doc/source/releases/21.05_announce.rst @@ -10,7 +10,7 @@ Highlights **New development stack** Galaxy release 21.09 will ship with a new web framework (`fastAPI `__), - `Celery `__ task queue and process management using `circus `__. You can preview new stack now by running ``APP_WEBSERVER=dev ./run.sh``. + `Celery `__ task queue and process management using `Circus `__. You can preview new stack now by running ``APP_WEBSERVER=dev ./run.sh``. **Celery for background tasks** Galaxy can now run certain tasks in the background. The Celery workers are