diff --git a/client/src/components/Workflow/Editor/Index.vue b/client/src/components/Workflow/Editor/Index.vue
index b045017acc9c..64502b77a927 100644
--- a/client/src/components/Workflow/Editor/Index.vue
+++ b/client/src/components/Workflow/Editor/Index.vue
@@ -13,6 +13,7 @@
@onRefactor="onRefactor"
@onShow="hideModal" />
+
import { Toast } from "composables/toast";
import { storeToRefs } from "pinia";
-import Vue, { computed, onUnmounted, ref, unref } from "vue";
+import Vue, { computed, nextTick, onUnmounted, ref, unref } from "vue";
import { replaceLabel } from "@/components/Markdown/parse";
import { getUntypedWorkflowParameters } from "@/components/Workflow/Editor/modules/parameters";
@@ -195,6 +196,7 @@ import WorkflowLint from "./Lint.vue";
import MessagesModal from "./MessagesModal.vue";
import WorkflowOptions from "./Options.vue";
import RefactorConfirmationModal from "./RefactorConfirmationModal.vue";
+import SaveChangesModal from "./SaveChangesModal.vue";
import StateUpgradeModal from "./StateUpgradeModal.vue";
import WorkflowGraph from "./WorkflowGraph.vue";
import MarkdownEditor from "@/components/Markdown/MarkdownEditor.vue";
@@ -207,6 +209,7 @@ export default {
components: {
MarkdownEditor,
FlexPanel,
+ SaveChangesModal,
StateUpgradeModal,
ToolPanel,
FormDefault,
@@ -313,7 +316,6 @@ export default {
data() {
return {
isCanvas: true,
- markdownConfig: null,
markdownText: null,
versions: [],
parameters: null,
@@ -341,6 +343,8 @@ export default {
transform: { x: 0, y: 0, k: 1 },
graphOffset: { left: 0, top: 0, width: 0, height: 0 },
debounceTimer: null,
+ showSaveChangesModal: false,
+ navUrl: "",
};
},
computed: {
@@ -702,14 +706,21 @@ export default {
const runUrl = `/workflows/run?id=${this.id}`;
this.onNavigate(runUrl);
},
- async onNavigate(url) {
+ async onNavigate(url, forceSave = false, ignoreChanges = false) {
if (this.isNewTempWorkflow) {
await this.onCreate();
- } else {
- await this.onSave(true);
+ } else if (this.hasChanges && !forceSave && !ignoreChanges) {
+ // if there are changes, prompt user to save or discard or cancel
+ this.navUrl = url;
+ this.showSaveChangesModal = true;
+ return;
+ } else if (forceSave) {
+ // when forceSave is true, save the workflow before navigating
+ await this.onSave();
}
this.hasChanges = false;
+ await nextTick();
this.$router.push(url);
},
onSave(hideProgress = false) {
@@ -787,8 +798,8 @@ export default {
const report = data.report || {};
const markdown = report.markdown || reportDefault;
+ this.report = report;
this.markdownText = markdown;
- this.markdownConfig = report;
this.hideModal();
this.stateMessages = getStateUpgradeMessages(data);
const has_changes = this.stateMessages.length > 0;
diff --git a/client/src/components/Workflow/Editor/SaveChangesModal.vue b/client/src/components/Workflow/Editor/SaveChangesModal.vue
new file mode 100644
index 000000000000..9a2b5bbda2d0
--- /dev/null
+++ b/client/src/components/Workflow/Editor/SaveChangesModal.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+ {{ body }}
+
+
+
+
+ {{ localize("Cancel") }}
+
+
+
+ {{ localize("Don't Save") }}
+
+
+
+ {{ localize("Save") }}
+
+
+
+
diff --git a/client/src/stores/workflowStepStore.ts b/client/src/stores/workflowStepStore.ts
index c696f3141ad9..e1ee49f479df 100644
--- a/client/src/stores/workflowStepStore.ts
+++ b/client/src/stores/workflowStepStore.ts
@@ -340,6 +340,7 @@ export const useWorkflowStepStore = defineScopedStore("workflowStepStore", (work
del(steps.value, stepId.toString());
del(stepExtraInputs.value, stepId);
+ del(stepMapOver.value, stepId.toString());
}
return {
diff --git a/doc/source/admin/galaxy_options.rst b/doc/source/admin/galaxy_options.rst
index 2100c81f8cae..f3021dc25d48 100644
--- a/doc/source/admin/galaxy_options.rst
+++ b/doc/source/admin/galaxy_options.rst
@@ -1453,7 +1453,7 @@
This option has no effect if the file specified by
object_store_config_file exists. Otherwise, if this option is set,
it overrides any other objectstore settings.
- The syntax, available instrumenters, and documentation of their
+ The syntax, available storage plugins, and documentation of their
options is explained in detail in the object store sample
configuration file, `object_store_conf.sample.yml`
:Default: ``None``
@@ -2606,8 +2606,20 @@
:Description:
The upload store is a temporary directory in which files uploaded
- by the tus middleware or server will be placed. Defaults to
- new_file_path if not set.
+ by the tus middleware or server for user uploads will be placed.
+ Defaults to new_file_path if not set.
+:Default: ``None``
+:Type: str
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``tus_upload_store_job_files``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+:Description:
+ The upload store is a temporary directory in which files uploaded
+ by the tus middleware or server for remote job files (Pulsar) will
+ be placed. Defaults to tus_upload_store if not set.
:Default: ``None``
:Type: str
@@ -4030,6 +4042,23 @@
:Type: str
+~~~~~~~~~~~~~~~~~~~~~
+``oidc_scope_prefix``
+~~~~~~~~~~~~~~~~~~~~~
+
+:Description:
+ Sets the prefix for OIDC scopes specific to this Galaxy instance.
+ If an API call is made against this Galaxy instance using an OIDC
+ bearer token, any scopes must be prefixed with this value e.g.
+ https://galaxyproject.org/api. More concretely, to request all
+ permissions that the user has, the scope would have to be
+ specified as ":*". e.g "https://galaxyproject.org/api:*".
+ Currently, only * is recognised as a valid scope, and future
+ iterations may provide more fine-grained scopes.
+:Default: ``https://galaxyproject.org/api``
+:Type: str
+
+
~~~~~~~~~~~~~~~~~~~~
``auth_config_file``
~~~~~~~~~~~~~~~~~~~~
@@ -5439,9 +5468,9 @@
:Type: str
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-``help_forum_tool_panel_integration_enabled``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``enable_help_forum_tool_panel_integration``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Description:
Enable the integration of the Galaxy Help Forum in the tool panel.
diff --git a/lib/galaxy/config/sample/galaxy.yml.sample b/lib/galaxy/config/sample/galaxy.yml.sample
index 96c2a84e0bda..21b325bdb490 100644
--- a/lib/galaxy/config/sample/galaxy.yml.sample
+++ b/lib/galaxy/config/sample/galaxy.yml.sample
@@ -1,21 +1,21 @@
# Galaxy is configured by default to be usable in a single-user development
# environment. To tune the application for a multi-user production
# environment, see the documentation at:
-#
+#
# https://docs.galaxyproject.org/en/master/admin/production.html
-#
+#
# Throughout this sample configuration file, except where stated otherwise,
# uncommented values override the default if left unset, whereas commented
# values are set to the default value. Relative paths are relative to the root
# Galaxy directory.
-#
+#
# Examples of many of these options are explained in more detail in the Galaxy
# Community Hub.
-#
+#
# https://galaxyproject.org/admin/config
-#
+#
# Config hackers are encouraged to check there before asking for help.
-#
+#
# Configuration for Gravity process manager.
# ``uwsgi:`` section will be ignored if Galaxy is started via Gravity commands (e.g ``./run.sh``, ``galaxy`` or ``galaxyctl``).
gravity:
@@ -181,7 +181,7 @@ gravity:
# enable: false
# gx-it-proxy version
- # version: '>=0.0.5'
+ # version: '>=0.0.6'
# Public-facing IP of the proxy
# ip: localhost
@@ -248,6 +248,14 @@ gravity:
# Must match ``tus_upload_store`` setting in ``galaxy:`` section.
# upload_dir:
+ # Value of tusd -hooks-httpd option
+ #
+ # the default of is suitable for using tusd for Galaxy uploads and should not be changed unless you are using tusd for
+ # other purposes such as Pulsar staging.
+ #
+ # The value of galaxy_infrastructure_url is automatically prepended if the option starts with a `/`
+ # hooks_http: /api/upload/hooks
+
# Comma-separated string of enabled tusd hooks.
#
# Leave at the default value to require authorization at upload creation time.
@@ -333,15 +341,9 @@ gravity:
# names.
# environment: {}
- # Configure dynamic handlers in this section. Below is a simple example
+ # Configure dynamic handlers in this section.
# See https://docs.galaxyproject.org/en/latest/admin/scaling.html#dynamically-defined-handlers for details.
- #handlers:
- # handler:
- # processes: 3
- # pools:
- # - job-handlers
- # - workflow-schedulers
-
+ # handlers: {}
galaxy:
# The directory that will be prepended to relative paths in options
@@ -1030,7 +1032,7 @@ galaxy:
# This option has no effect if the file specified by
# object_store_config_file exists. Otherwise, if this option is set,
# it overrides any other objectstore settings.
- # The syntax, available instrumenters, and documentation of their
+ # The syntax, available storage plugins, and documentation of their
# options is explained in detail in the object store sample
# configuration file, `object_store_conf.sample.yml`
#object_store_config: null
@@ -1067,6 +1069,13 @@ galaxy:
# for that object store entry.
#object_store_cache_size: -1
+ # Set this to true to indicate in the UI that a user's object store
+ # selection isn't simply a "preference" that job destinations often
+ # respect but in fact will always be respected. This should be set to
+ # true to simplify the UI as long as job destinations never override
+ # 'object_store_id's for a jobs.
+ #object_store_always_respect_user_selection: false
+
# What Dataset attribute is used to reference files in an ObjectStore
# implementation, this can be 'uuid' or 'id'. The default will depend
# on how the object store is configured, starting with 20.05 Galaxy
@@ -1304,9 +1313,6 @@ galaxy:
# The value of this option will be resolved with respect to
# .
#interactivetools_map: interactivetools_map.sqlite
- # Note: the following config should still be used due to lack of
- # support of data_dir resolution in gx-it-proxy and gravity:
- #interactivetools_map: database/interactivetools_map.sqlite
# Prefix to use in the formation of the subdomain or path for
# interactive tools
@@ -1547,10 +1553,15 @@ galaxy:
#nginx_upload_job_files_path: null
# The upload store is a temporary directory in which files uploaded by
- # the tus middleware or server will be placed. Defaults to
- # new_file_path if not set.
+ # the tus middleware or server for user uploads will be placed.
+ # Defaults to new_file_path if not set.
#tus_upload_store: null
+ # The upload store is a temporary directory in which files uploaded by
+ # the tus middleware or server for remote job files (Pulsar) will be
+ # placed. Defaults to tus_upload_store if not set.
+ #tus_upload_store_job_files: null
+
# Galaxy can upload user files in chunks without using nginx. Enable
# the chunk uploader by specifying a chunk size larger than 0. The
# chunk size is specified in bytes (default: 10MB).
@@ -2189,12 +2200,13 @@ galaxy:
# .
#oidc_backends_config_file: oidc_backends_config.xml
- # Sets the prefix for OIDC scopes specific to this Galaxy instance.
- # If an API call is made against this Galaxy instance using an OIDC bearer token,
- # any scopes must be prefixed with this value e.g. https://galaxyproject.org/api.
- # More concretely, to request all permissions that the user has, the scope
- # would have to be specified as ":*". e.g "https://galaxyproject.org/api:*".
- # Currently, only * is recognised as a valid scope, and future iterations may
+ # Sets the prefix for OIDC scopes specific to this Galaxy instance. If
+ # an API call is made against this Galaxy instance using an OIDC
+ # bearer token, any scopes must be prefixed with this value e.g.
+ # https://galaxyproject.org/api. More concretely, to request all
+ # permissions that the user has, the scope would have to be specified
+ # as ":*". e.g "https://galaxyproject.org/api:*". Currently,
+ # only * is recognised as a valid scope, and future iterations may
# provide more fine-grained scopes.
#oidc_scope_prefix: https://galaxyproject.org/api
@@ -2897,3 +2909,4 @@ galaxy:
# Enable the integration of the Galaxy Help Forum in the tool panel.
# This requires the help_forum_api_url to be set.
#enable_help_forum_tool_panel_integration: false
+
diff --git a/scripts/update_cwl_conformance_tests.sh b/scripts/update_cwl_conformance_tests.sh
index 2a71267c554e..4cc2cdc1386d 100755
--- a/scripts/update_cwl_conformance_tests.sh
+++ b/scripts/update_cwl_conformance_tests.sh
@@ -17,11 +17,7 @@ for version in $VERSIONS; do
conformance_filepath=conformance_tests.yaml
tests_dir=tests
fi
- if [ "$version" = '1.2' ]; then
- branch=1.2.1_proposed
- else
- branch=main
- fi
+ branch=main
wget "https://github.com/common-workflow-language/${repo_name}/archive/${branch}.zip"
unzip ${branch}.zip
rm -rf "${DEST_DIR}/v${version}"