diff --git a/package-lock.json b/package-lock.json
index 59508a17595d613f780b5f1bfc95e2f9936e339b..af04b6e119be9f8e467f854cfc5957d0fb52b231 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1504,11 +1504,11 @@
       }
     },
     "node_modules/@smithy/config-resolver": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.11.tgz",
-      "integrity": "sha512-q97FnlUmbai1c4JlQJgLVBsvSxgV/7Nvg/JK76E1nRq/U5UM56Eqo3dn2fY7JibqgJLg4LPsGdwtIyqyOk35CQ==",
+      "version": "2.0.12",
+      "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.12.tgz",
+      "integrity": "sha512-ISGEdQTGV2p5x9UZzb9SX3Y2MySLi5r69+UtDgB4KvJitV+ys1ONKpsLshi22bvQTy1yAgfLjOj33K7mSJakpQ==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.0.13",
+        "@smithy/node-config-provider": "^2.0.14",
         "@smithy/types": "^2.3.4",
         "@smithy/util-config-provider": "^2.0.0",
         "@smithy/util-middleware": "^2.0.3",
@@ -1519,11 +1519,11 @@
       }
     },
     "node_modules/@smithy/credential-provider-imds": {
-      "version": "2.0.13",
-      "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.13.tgz",
-      "integrity": "sha512-/xe3wNoC4j+BeTemH9t2gSKLBfyZmk8LXB2pQm/TOEYi+QhBgT+PSolNDfNAhrR68eggNE17uOimsrnwSkCt4w==",
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.14.tgz",
+      "integrity": "sha512-9dPBDuudRnrRuyKXdS4cn8A8FAOVVIgc+j3qC86c5xYnZ9Ykr7WKIl53OTQsZlEsiHC73d93YCA89KVhvGIlJg==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.0.13",
+        "@smithy/node-config-provider": "^2.0.14",
         "@smithy/property-provider": "^2.0.11",
         "@smithy/types": "^2.3.4",
         "@smithy/url-parser": "^2.0.10",
@@ -1704,11 +1704,11 @@
       }
     },
     "node_modules/@smithy/middleware-retry": {
-      "version": "2.0.13",
-      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.13.tgz",
-      "integrity": "sha512-zuOva8xgWC7KYG8rEXyWIcZv2GWszO83DCTU6IKcf/FKu6OBmSE+EYv3EUcCGY+GfiwCX0EyJExC9Lpq9b0w5Q==",
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.14.tgz",
+      "integrity": "sha512-+1zHIfRyRcTpWnI2z4H6qLKiHQR011JVekSCKDMADwDpRpGUFj+JdCLwu2yEPOPd3MwHLylHBKV03Oooe2PkZQ==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.0.13",
+        "@smithy/node-config-provider": "^2.0.14",
         "@smithy/protocol-http": "^3.0.6",
         "@smithy/service-error-classification": "^2.0.3",
         "@smithy/types": "^2.3.4",
@@ -1746,12 +1746,12 @@
       }
     },
     "node_modules/@smithy/node-config-provider": {
-      "version": "2.0.13",
-      "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.13.tgz",
-      "integrity": "sha512-pPpLqYuJcOq1sj1EGu+DoZK47DUS4gepqSTNgRezmrjnzNlSU2/Dcc9Ebzs+WZ0Z5vXKazuE+k+NksFLo07/AA==",
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.14.tgz",
+      "integrity": "sha512-DXn0NXmprmhcK81AgYoRct11If3Fvyd9U/T0Bu8ZId/XKho0SGTPahWHI1cZBtPZoiZVeXv3PZAzx6v8kw/0pw==",
       "dependencies": {
         "@smithy/property-provider": "^2.0.11",
-        "@smithy/shared-ini-file-loader": "^2.0.12",
+        "@smithy/shared-ini-file-loader": "^2.0.13",
         "@smithy/types": "^2.3.4",
         "tslib": "^2.5.0"
       },
@@ -1835,9 +1835,9 @@
       }
     },
     "node_modules/@smithy/shared-ini-file-loader": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.12.tgz",
-      "integrity": "sha512-umi0wc4UBGYullAgYNUVfGLgVpxQyES47cnomTqzCKeKO5oudO4hyDNj+wzrOjqDFwK2nWYGVgS8Y0JgGietrw==",
+      "version": "2.0.13",
+      "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.13.tgz",
+      "integrity": "sha512-r6BlDQdYgqDo5xuOOKbmhJD5jylg2Lm1Q1eXZ2mM1kg64GVQ0bHScELEb4W5jl+LEwrU9yNEly6c6ErtU3TJxw==",
       "dependencies": {
         "@smithy/types": "^2.3.4",
         "tslib": "^2.5.0"
@@ -1969,13 +1969,13 @@
       }
     },
     "node_modules/@smithy/util-defaults-mode-node": {
-      "version": "2.0.15",
-      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.15.tgz",
-      "integrity": "sha512-g6J7MHAibVPMTlXyH3mL+Iet4lMJKFVhsOhJmn+IKG81uy9m42CkRSDlwdQSJAcprLQBIaOPdFxNXQvrg2w1Uw==",
+      "version": "2.0.16",
+      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.16.tgz",
+      "integrity": "sha512-HYNqSVTYNGzJsxuhWwiew3zcJ2cDi3ZHz3M0km8ma01AdMd0pYFIGaN24rkXvEOAZPZGRg+3+Wefc3zv8ApRkw==",
       "dependencies": {
-        "@smithy/config-resolver": "^2.0.11",
-        "@smithy/credential-provider-imds": "^2.0.13",
-        "@smithy/node-config-provider": "^2.0.13",
+        "@smithy/config-resolver": "^2.0.12",
+        "@smithy/credential-provider-imds": "^2.0.14",
+        "@smithy/node-config-provider": "^2.0.14",
         "@smithy/property-provider": "^2.0.11",
         "@smithy/smithy-client": "^2.1.9",
         "@smithy/types": "^2.3.4",
@@ -4006,9 +4006,9 @@
       }
     },
     "node_modules/globals": {
-      "version": "13.22.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz",
-      "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==",
+      "version": "13.23.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+      "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
       "dev": true,
       "dependencies": {
         "type-fest": "^0.20.2"
@@ -6087,9 +6087,9 @@
       }
     },
     "node_modules/spdx-license-ids": {
-      "version": "3.0.15",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz",
-      "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==",
+      "version": "3.0.16",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
+      "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
       "dev": true
     },
     "node_modules/stream-browserify": {
diff --git a/src/components/object-storage/BucketListItem.vue b/src/components/object-storage/BucketListItem.vue
index 76c1025eb5c42a45c953e8c5656060d3de7dbf23..7833d851fe1df08e42bd70353df79bee010eb4e5 100644
--- a/src/components/object-storage/BucketListItem.vue
+++ b/src/components/object-storage/BucketListItem.vue
@@ -4,6 +4,7 @@ import type {
   BucketPermissionIn,
   BucketPermissionOut,
 } from "@/client/s3proxy";
+import { Constraint } from "@/client/s3proxy";
 import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue";
 import PermissionModal from "@/components/object-storage/modals/PermissionModal.vue";
 import BucketDetailModal from "@/components/object-storage/modals/BucketDetailModal.vue";
@@ -91,12 +92,12 @@ onMounted(() => {
         }"
       >
         <span class="text-truncate flex-grow-3">
-          <template v-if="bucket.owner_constraint === 'READ'"
-            >Upload Bucket</template
-          >
-          <template v-else-if="bucket.owner_constraint === 'WRITE'"
+          <template v-if="bucket.owner_constraint === Constraint.READ"
             >Download Bucket</template
           >
+          <template v-else-if="bucket.owner_constraint === Constraint.WRITE"
+            >Upload Bucket</template
+          >
           <template v-else>{{ bucket.name }}</template>
         </span>
         <div class="text-nowrap">
diff --git a/src/views/workflows/WorkflowVersionView.vue b/src/views/workflows/WorkflowVersionView.vue
index 8ca536b8c93ebda90cac9deefe429edbfd43fdb9..9aadf7b7cee1ee96c9f47510578b5f5d9fad5aaa 100644
--- a/src/views/workflows/WorkflowVersionView.vue
+++ b/src/views/workflows/WorkflowVersionView.vue
@@ -62,42 +62,62 @@ function downloadVersionFiles() {
       props.workflowId,
       props.versionId,
       DocumentationEnum.USAGE,
-    ).then((markdown) => {
-      versionState.descriptionMarkdown = markdown;
-    });
+    )
+      .then((markdown) => {
+        versionState.descriptionMarkdown = markdown;
+      })
+      .catch(() => {
+        versionState.descriptionMarkdown = "";
+      });
   const changelogPromise =
     WorkflowVersionService.workflowVersionDownloadWorkflowDocumentation(
       props.workflowId,
       props.versionId,
       DocumentationEnum.CHANGELOG,
-    ).then((markdown) => {
-      versionState.changelogMarkdown = markdown;
-    });
+    )
+      .then((markdown) => {
+        versionState.changelogMarkdown = markdown;
+      })
+      .catch(() => {
+        versionState.changelogMarkdown = "";
+      });
   const parameterPromise =
     WorkflowVersionService.workflowVersionDownloadWorkflowDocumentation(
       props.workflowId,
       props.versionId,
       DocumentationEnum.PARAMETER_SCHEMA,
       props.workflowModeId,
-    ).then((schema) => {
-      versionState.parameterSchema = schema;
-    });
+    )
+      .then((schema) => {
+        versionState.parameterSchema = schema;
+      })
+      .catch(() => {
+        versionState.parameterSchema = {};
+      });
   const usagePromise =
     WorkflowVersionService.workflowVersionDownloadWorkflowDocumentation(
       props.workflowId,
       props.versionId,
       DocumentationEnum.INPUT,
-    ).then((markdown) => {
-      versionState.usageMarkdown = markdown;
-    });
+    )
+      .then((markdown) => {
+        versionState.usageMarkdown = markdown;
+      })
+      .catch(() => {
+        versionState.usageMarkdown = "";
+      });
   const outputPromise =
     WorkflowVersionService.workflowVersionDownloadWorkflowDocumentation(
       props.workflowId,
       props.versionId,
       DocumentationEnum.OUTPUT,
-    ).then((markdown) => {
-      versionState.outputMarkdown = markdown;
-    });
+    )
+      .then((markdown) => {
+        versionState.outputMarkdown = markdown;
+      })
+      .catch(() => {
+        versionState.outputMarkdown = "";
+      });
   Promise.all([
     descriptionPromise,
     changelogPromise,
diff --git a/src/views/workflows/WorkflowView.vue b/src/views/workflows/WorkflowView.vue
index f902463200df91223517d4e4aa4923d7b635d945..ceea0bad90b512ee882398a19e26bb781f628217 100644
--- a/src/views/workflows/WorkflowView.vue
+++ b/src/views/workflows/WorkflowView.vue
@@ -124,12 +124,11 @@ watch(
 
 // Computed Properties
 // =============================================================================
-const workflow = computed<WorkflowOut | undefined>(() => {
-  console.log("Update workflow");
-  return props.developerView
+const workflow = computed<WorkflowOut | undefined>(() =>
+  props.developerView
     ? workflowRepository.comprehensiveWorkflowMapping[props.workflowId]
-    : workflowRepository.workflowMapping[props.workflowId];
-});
+    : workflowRepository.workflowMapping[props.workflowId],
+);
 
 const latestVersion = computed<WorkflowVersion | undefined>(() =>
   calculateLatestVersion(