From c3c2ad3da1b3f4c475bb6f8540219b430f6bbbbd Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 17 Sep 2024 17:03:33 +0300 Subject: [PATCH 001/185] store platform settings, teamMembership and team store values in localStorage --- frontend/src/store/account.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frontend/src/store/account.js b/frontend/src/store/account.js index 1fa315b069..84f83cb6e5 100644 --- a/frontend/src/store/account.js +++ b/frontend/src/store/account.js @@ -401,6 +401,15 @@ export default { persistence: { redirectUrlAfterLogin: { storage: 'localStorage' + }, + settings: { + storage: 'localStorage' + }, + teamMembership: { + storage: 'localStorage' + }, + team: { + storage: 'localStorage' } } } From 153bbfce42f2c7d43039aee4c6334311cd8a9db7 Mon Sep 17 00:00:00 2001 From: cstns Date: Wed, 18 Sep 2024 11:00:51 +0300 Subject: [PATCH 002/185] persist platform features instead of settings in localStorage, use sessionStorage for teamMembership & team to preserve multiple tab navigation integrity --- frontend/src/mixins/Features.js | 2 +- frontend/src/store/account.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/mixins/Features.js b/frontend/src/mixins/Features.js index 9b0048927a..4601ed7382 100644 --- a/frontend/src/mixins/Features.js +++ b/frontend/src/mixins/Features.js @@ -43,7 +43,7 @@ export default { return this.isStaticAssetFeatureEnabledForPlatform && this.isStaticAssetsFeatureEnabledForTeam }, isHTTPBearerTokensFeatureEnabledForTeam () { - return this.settings.features.httpBearerTokens && this.team.type.properties.features.teamHttpSecurity + return this.features.httpBearerTokens && this.team.type.properties.features.teamHttpSecurity } } } diff --git a/frontend/src/store/account.js b/frontend/src/store/account.js index 84f83cb6e5..f4d4187af3 100644 --- a/frontend/src/store/account.js +++ b/frontend/src/store/account.js @@ -402,14 +402,14 @@ export default { redirectUrlAfterLogin: { storage: 'localStorage' }, - settings: { + features: { storage: 'localStorage' }, teamMembership: { - storage: 'localStorage' + storage: 'sessionStorage' }, team: { - storage: 'localStorage' + storage: 'sessionStorage' } } } From 59d2e3e2040c946f3779af86f4029d897ddf0bd6 Mon Sep 17 00:00:00 2001 From: cstns Date: Wed, 18 Sep 2024 11:08:10 +0300 Subject: [PATCH 003/185] load assets contents based on team watcher because on initial load via url link the team might not be loaded yet due to asynchronicity --- frontend/src/pages/instance/Assets.vue | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/instance/Assets.vue b/frontend/src/pages/instance/Assets.vue index 042bb4c6b6..0d7bd35953 100644 --- a/frontend/src/pages/instance/Assets.vue +++ b/frontend/src/pages/instance/Assets.vue @@ -31,6 +31,7 @@ + + From fed1b7802b8be88c1b890c11ab99fa87c2a3d5dd Mon Sep 17 00:00:00 2001 From: cstns Date: Fri, 20 Sep 2024 19:13:28 +0300 Subject: [PATCH 034/185] bind the education modal to the closing of the welcome tour --- frontend/src/components/dialogs/EducationModal.vue | 11 +++++++++-- frontend/src/store/account.js | 7 +++++-- frontend/src/store/ux.js | 8 ++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/dialogs/EducationModal.vue b/frontend/src/components/dialogs/EducationModal.vue index 601d6b0a0d..d371f24146 100644 --- a/frontend/src/components/dialogs/EducationModal.vue +++ b/frontend/src/components/dialogs/EducationModal.vue @@ -60,18 +60,25 @@ + + From aa4fb678ec1ba79a0a009f3754cc5849b6349dfe Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Tue, 24 Sep 2024 16:38:09 +0100 Subject: [PATCH 055/185] Minor CSS amendment to EducationModal shadow --- frontend/src/components/dialogs/EducationModal.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/dialogs/EducationModal.vue b/frontend/src/components/dialogs/EducationModal.vue index de67a0a520..8ba0dc7979 100644 --- a/frontend/src/components/dialogs/EducationModal.vue +++ b/frontend/src/components/dialogs/EducationModal.vue @@ -117,7 +117,7 @@ export default { width: 350px; background: $ff-white; border: 1px solid $ff-grey-300; - box-shadow: -6px -6px 10px rgba(0, 0, 0, .2); + box-shadow: -6px 6px 10px rgba(0, 0, 0, .2); margin: 0; .ff-dialog-content { From 538ae572e74284c774f0e1458d28b1f395c2b226 Mon Sep 17 00:00:00 2001 From: PPawlowski Date: Wed, 25 Sep 2024 10:55:39 +0200 Subject: [PATCH 056/185] Enable BOM feature for Enterprise team on pre-staging (#4550) --- .github/scripts/initial-setup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/scripts/initial-setup.sh b/.github/scripts/initial-setup.sh index 089e354e28..1ad6fa1e69 100755 --- a/.github/scripts/initial-setup.sh +++ b/.github/scripts/initial-setup.sh @@ -290,7 +290,8 @@ curl -ks -w "\n" -XPOST \ "protectedInstance":true, "editorLimits":true, "customHostnames":true, - "staticAssets":true + "staticAssets":true, + "bom":true }, "instances": { "'"$projectTypeId"'": { From a49b2752c18848204160f95bdab1b465cbc6402b Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Wed, 25 Sep 2024 10:02:05 +0100 Subject: [PATCH 057/185] Update docs/user/bill-of-materials.md --- docs/user/bill-of-materials.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/bill-of-materials.md b/docs/user/bill-of-materials.md index 8c29c49550..c4d0ab9fed 100644 --- a/docs/user/bill-of-materials.md +++ b/docs/user/bill-of-materials.md @@ -16,7 +16,7 @@ You can search by instance/device name, package name, specific dependency, or ev ## Prerequisites ### FlowFuse Cloud - A Instance Stack with a launcher version of 2.9.0 or greater. -- Team or Enterprise Team Type. +- Enterprise Team Type. ### Self-Hosted From c1c19d9953f8f5589b42f85dd06c14b85df95043 Mon Sep 17 00:00:00 2001 From: cstns Date: Wed, 25 Sep 2024 12:45:43 +0300 Subject: [PATCH 058/185] reo return value functionality as it turns out it's more prevalent to return the values instead of the entire model, also fix display label when default not being used --- .../src/ui-components/components/form/ListBox.vue | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/frontend/src/ui-components/components/form/ListBox.vue b/frontend/src/ui-components/components/form/ListBox.vue index 6dcfd0f1a2..8b683b18aa 100644 --- a/frontend/src/ui-components/components/form/ListBox.vue +++ b/frontend/src/ui-components/components/form/ListBox.vue @@ -17,13 +17,15 @@
  • -
    {{ option.label }}
    +
    + {{ labelKey === 'label' ? option.label : option[labelKey] }} +
  • @@ -81,7 +83,7 @@ export default { default: 'value', type: String }, - returnModelValue: { + returnModel: { required: false, default: false, type: Boolean @@ -98,7 +100,7 @@ export default { return this.modelValue }, set (value) { - this.$emit('update:modelValue', this.returnModelValue ? value[this.valueKey] : value) + this.$emit('update:modelValue', !this.returnModel ? value[this.valueKey] : value) } }, selectedOption () { @@ -107,7 +109,7 @@ export default { } return this.options.find(opt => { - return opt[this.valueKey] === (this.returnModelValue ? this.value : this.value[this.valueKey]) + return opt[this.valueKey] === (!this.returnModel ? this.value : this.value[this.valueKey]) }) }, selectedLabel () { From 3b411c36cf78cd15dc1445cbff090b5e6c41fd50 Mon Sep 17 00:00:00 2001 From: cstns Date: Wed, 25 Sep 2024 13:35:49 +0300 Subject: [PATCH 059/185] make the immersive editor collapse button permanently visible when the drawer is open --- frontend/src/pages/instance/Editor/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/instance/Editor/index.vue b/frontend/src/pages/instance/Editor/index.vue index c42191e78e..9d9ec85250 100644 --- a/frontend/src/pages/instance/Editor/index.vue +++ b/frontend/src/pages/instance/Editor/index.vue @@ -19,7 +19,7 @@ From b2d1cbb0e29075f696ec981b6f24c34f3b646e47 Mon Sep 17 00:00:00 2001 From: cstns Date: Thu, 26 Sep 2024 11:28:23 +0300 Subject: [PATCH 060/185] qf after merge --- frontend/src/pages/instance/Assets.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/pages/instance/Assets.vue b/frontend/src/pages/instance/Assets.vue index a3de825938..a2eded41d6 100644 --- a/frontend/src/pages/instance/Assets.vue +++ b/frontend/src/pages/instance/Assets.vue @@ -149,8 +149,7 @@ export default { } const filepath = breadcrumbs.map(crumb => crumb.name).join('/') - const path = filepath + (breadcrumbs.length > 0 ? '/' : '') + (this.currentDirectory.name || '') - return AssetsAPI.getFiles(this.instance.id, path) + return AssetsAPI.getFiles(this.instance.id, filepath) .then(payload => { this.files = payload.files if (payload.folder && reloadDirectory) { From 87a4bfdb6f6ed2407b5d579ed2763d1338f7f906 Mon Sep 17 00:00:00 2001 From: cstns Date: Thu, 26 Sep 2024 12:31:12 +0300 Subject: [PATCH 061/185] Update CHANGELOG for 2.9.0 --- CHANGELOG.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9dd53d9c2..e48a506a6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,67 @@ +#### 2.9.0: Release + + - Enable BOM feature for Enterprise team on pre-staging (#4550) + - Bump flowfuse/github-actions-workflows from 0.29.0 to 0.30.0 (#4547) + - Bump flowfuse/github-actions-workflows from 0.28.0 to 0.29.0 (#4471) + - Bump flowfuse/github-actions-workflows from 0.21.0 to 0.28.0 (#4442) + - Bump slackapi/slack-github-action from 1.26.0 to 1.27.0 (#4441) + - Bump tj-actions/changed-files from 44 to 45 (#4404) + - ci: Add possibility to send e-mails from pre-staging environments (#4437) + - ci: Set Node-RED v4 as a default stack on pre-staging (#4436) + - ci: Enable latest features on pre-staging environment (#4435) + - Make the immersive editor collapse button permanently visible when the drawer is open (#4569) @cstns + - Add bill of materials docs (#4523) @cstns + - Add an user education modal to trial users (#4540) @cstns + - Add warning about file nodes to Assets page (#4541) @hardillb + - Implement history timeline API (backend) (#4509) @Steve-Mcl + - Use the provided user info sent to the audit endpoint to get which user is triggering an operation (#4530) @Steve-Mcl + - improved alert notification messages on asset service file/folder upload (#4542) @cstns + - handle new logout event from nr-editor (#4544) @cstns + - Bump find-my-way from 8.1.0 to 8.2.2 (#4513) @app/dependabot + - Allow users to delete accounts even when they have active teams (reapplied) (#4531) @knolleary + - Update BOM API use project model versions (#4535) @Steve-Mcl + - Add egress to banned list of instance names (#4533) @hardillb + - Revert "Allow users to delete accounts even when they have active teams" (#4528) @knolleary + - Add versions info to Project model (#4526) @knolleary + - fix visibility selector styling propagation (#4525) @cstns + - adds a fallback for missing semver/installed node-red versions for k8/docker deployments (#4520) @cstns + - Software bill of materials API (#4376) @Steve-Mcl + - Update docs following the static file service navivagtion and visibility selector changes (#4514) @cstns + - Add a directory navigation component (#4473) @cstns + - Update File Node docs to cover new Persistent Storage (#4516) @hardillb + - Wrap last PostHog API call in try catch (#4515) @hardillb + - Bump serve-static and express (#4492) @app/dependabot + - Ensure user has selected an available team type on upgrade (#4510) @knolleary + - Ensure consistent pictograms are used across devices and instances (#4466) @Steve-Mcl + - Add guards on PostHog API calls (#4508) @hardillb + - fix remaining HS chat bubble issues (#4504) @Steve-Mcl + - Improve user feedback when developer mode change fails (#4469) @Steve-Mcl + - Update ffc docs to include data security details (#4496) @knolleary + - Bump @vitejs/plugin-vue from 5.0.4 to 5.1.2 (#4324) @app/dependabot + - Bump sinon from 17.0.1 to 19.0.2 (#4491) @app/dependabot + - Only get tokens if team feature enabled (#4487) @hardillb + - Remove temp background highlight from HS chat bubble (#4486) @Steve-Mcl + - Mitigate chat widget blocking elements (#4477) @Steve-Mcl + - 4439 hide instance asset tab from users (#4448) @cstns + - Add debug logging for SSO Groups (#4470) @hardillb + - Handle team with inactive team-type when viewing change-type (#4464) @knolleary + - fix: Asset upload dialog (#4465) @Steve-Mcl + - Show missing application selection error in the right place (#4462) @knolleary + - Improve dashboard only landing page (#4444) @cstns + - Add suspended state for teams (#4446) @knolleary + - Ensure subscription is deleted from db when team is deleted (#4457) @knolleary + - Fix pipeline tests due to name reuse (#4460) @knolleary + - Don't try and create default items more than once (#4454) @hardillb + - ci: Enable FlowFuse Assistant on pre-staging environment (#4445) @ppawlowski + - Don't overwrite theme with pipeline (#4425) @hardillb + - Add static asset service user docs (#4426) @cstns + - Provide proactive feedback when trying to change team type to incompatible type (#4378) @knolleary + - Remove the file browser entry selectors because we don't support bulk operations (#4432) @cstns + - Bump webpack from 5.91.0 to 5.94.0 (#4405) @app/dependabot + - Update introduction.md (#4429) @sumitshinde-84 + - Add missing alert notification for create folder error (#4428) @cstns + - Fix the file upload component not clearing when clearing the component (#4427) @cstns + #### 2.8.0: Release - docs: Docker Engine on Windows how-to article (#4406) From 901a5ec5f39fd366e36999cb47ef9828ebc44903 Mon Sep 17 00:00:00 2001 From: cstns Date: Thu, 26 Sep 2024 12:31:16 +0300 Subject: [PATCH 062/185] Update version to 2.9.0 --- package-lock.json | 62 +++++++++++++++++++++++------------------------ package.json | 4 +-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69f57e5cbc..fb6ff204f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@flowfuse/flowfuse", - "version": "2.8.0", + "version": "2.9.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@flowfuse/flowfuse", - "version": "2.8.0", + "version": "2.9.0", "license": "SEE LICENSE IN ./LICENSE", "dependencies": { "@aws-sdk/client-ses": "^3.352.0", @@ -23,7 +23,7 @@ "@fastify/swagger": "^8.10.1", "@fastify/swagger-ui": "^3.0.0", "@fastify/websocket": "^8.1.0", - "@flowfuse/driver-localfs": "^2.8.0", + "@flowfuse/driver-localfs": "^2.9.0", "@flowfuse/flow-renderer": "^0.4.1", "@headlessui/vue": "1.7.19", "@heroicons/vue": "1.0.6", @@ -4287,11 +4287,11 @@ "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "node_modules/@flowfuse/driver-localfs": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@flowfuse/driver-localfs/-/driver-localfs-2.8.0.tgz", - "integrity": "sha512-pXYymL7X8NoIvasySbgVp+DfvWNlA6rsQlSbfgW8S2i9sS9e73nPSBZozGvlYYgDQLN6ICsSkqeN6hVn9LzL+A==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@flowfuse/driver-localfs/-/driver-localfs-2.9.0.tgz", + "integrity": "sha512-VMIkazVDuW/f/fOvPailpCAHyBdh9yrVu8doDlq045vsO1xmQv/YI+7NRcjoVOe4l/gp9rCJUGZ78DO2NnM1dg==", "dependencies": { - "@flowfuse/nr-launcher": "^2.8.0", + "@flowfuse/nr-launcher": "^2.9.0", "form-data": "^4.0.0", "got": "^11.8.5", "semver": "^7.3.8" @@ -4353,9 +4353,9 @@ } }, "node_modules/@flowfuse/nr-launcher": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@flowfuse/nr-launcher/-/nr-launcher-2.8.0.tgz", - "integrity": "sha512-TLBNZ77K8+6PTbZcKlGxF1YR+TsHXXoAUbCfUp666Nz6/lCcODpOIQ6gKhWOaSotzwJ17DG8ZcE4G81gB4GqKQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@flowfuse/nr-launcher/-/nr-launcher-2.9.0.tgz", + "integrity": "sha512-dbpMqwqCV1hxl/55SsGVmEjmqZbsoZqvrBuALdczouNkMp9KnBEvLP/PIKFL4NvsQWswWTxB4WWK5DjtCw0+Bw==", "dependencies": { "@flowfuse/nr-assistant": "^0.1.3", "@flowfuse/nr-file-nodes": "^0.0.7", @@ -4363,7 +4363,7 @@ "@node-red/util": "^3.1.0", "body-parser": "^1.20.2", "command-line-args": "^5.2.1", - "express": "^4.18.2", + "express": "^4.21.0", "express-session": "^1.18.0", "got": "^11.8.6", "json-stringify-safe": "5.0.1", @@ -4382,9 +4382,9 @@ } }, "node_modules/@flowfuse/nr-launcher/node_modules/@node-red/util": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.1.11.tgz", - "integrity": "sha512-S0+4Q5+F562BI9hx9oh+9VPfDbDQQKuVgW9oFuFi1+W4HMGGDfS6cG+Qh8XMX1j+sbl+RXxACpL5BjMKv2hSvQ==", + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.1.12.tgz", + "integrity": "sha512-3+23Q1nqmuKwJzI3SRuotyPB0VHjgQTu0kxDZ9jis9J+97bS2Jxb5fvZMmVwggbhaydhhxXde2TuNSp8+9WH2A==", "dependencies": { "fs-extra": "11.1.1", "i18next": "21.10.0", @@ -4417,9 +4417,9 @@ } }, "node_modules/@flowfuse/nr-project-nodes": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@flowfuse/nr-project-nodes/-/nr-project-nodes-0.7.2.tgz", - "integrity": "sha512-FVLVQjLQG6XzjfrpQongMVGSA6zQVrKGwEoAOyEw7Hys+sPeRf8qREBiCjTos287NRzwBQ2Ma4m5nXV38sE5Ow==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@flowfuse/nr-project-nodes/-/nr-project-nodes-0.7.3.tgz", + "integrity": "sha512-S4KaM64EVDRzhfrllE87G83LrnUsVviZpMggCUcN0rT8IPnycwWw2GecoFKoH9fFonT7pHkIo5rjmFnLDdOsYg==", "dependencies": { "got": "^11.8.6", "http-proxy-agent": "^7.0.2", @@ -26565,11 +26565,11 @@ "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "@flowfuse/driver-localfs": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@flowfuse/driver-localfs/-/driver-localfs-2.8.0.tgz", - "integrity": "sha512-pXYymL7X8NoIvasySbgVp+DfvWNlA6rsQlSbfgW8S2i9sS9e73nPSBZozGvlYYgDQLN6ICsSkqeN6hVn9LzL+A==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@flowfuse/driver-localfs/-/driver-localfs-2.9.0.tgz", + "integrity": "sha512-VMIkazVDuW/f/fOvPailpCAHyBdh9yrVu8doDlq045vsO1xmQv/YI+7NRcjoVOe4l/gp9rCJUGZ78DO2NnM1dg==", "requires": { - "@flowfuse/nr-launcher": "^2.8.0", + "@flowfuse/nr-launcher": "^2.9.0", "form-data": "^4.0.0", "got": "^11.8.5", "semver": "^7.3.8" @@ -26618,9 +26618,9 @@ } }, "@flowfuse/nr-launcher": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@flowfuse/nr-launcher/-/nr-launcher-2.8.0.tgz", - "integrity": "sha512-TLBNZ77K8+6PTbZcKlGxF1YR+TsHXXoAUbCfUp666Nz6/lCcODpOIQ6gKhWOaSotzwJ17DG8ZcE4G81gB4GqKQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@flowfuse/nr-launcher/-/nr-launcher-2.9.0.tgz", + "integrity": "sha512-dbpMqwqCV1hxl/55SsGVmEjmqZbsoZqvrBuALdczouNkMp9KnBEvLP/PIKFL4NvsQWswWTxB4WWK5DjtCw0+Bw==", "requires": { "@flowfuse/nr-assistant": "^0.1.3", "@flowfuse/nr-file-nodes": "^0.0.7", @@ -26628,7 +26628,7 @@ "@node-red/util": "^3.1.0", "body-parser": "^1.20.2", "command-line-args": "^5.2.1", - "express": "^4.18.2", + "express": "^4.21.0", "express-session": "^1.18.0", "got": "^11.8.6", "json-stringify-safe": "5.0.1", @@ -26643,9 +26643,9 @@ }, "dependencies": { "@node-red/util": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.1.11.tgz", - "integrity": "sha512-S0+4Q5+F562BI9hx9oh+9VPfDbDQQKuVgW9oFuFi1+W4HMGGDfS6cG+Qh8XMX1j+sbl+RXxACpL5BjMKv2hSvQ==", + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.1.12.tgz", + "integrity": "sha512-3+23Q1nqmuKwJzI3SRuotyPB0VHjgQTu0kxDZ9jis9J+97bS2Jxb5fvZMmVwggbhaydhhxXde2TuNSp8+9WH2A==", "requires": { "fs-extra": "11.1.1", "i18next": "21.10.0", @@ -26674,9 +26674,9 @@ } }, "@flowfuse/nr-project-nodes": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@flowfuse/nr-project-nodes/-/nr-project-nodes-0.7.2.tgz", - "integrity": "sha512-FVLVQjLQG6XzjfrpQongMVGSA6zQVrKGwEoAOyEw7Hys+sPeRf8qREBiCjTos287NRzwBQ2Ma4m5nXV38sE5Ow==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@flowfuse/nr-project-nodes/-/nr-project-nodes-0.7.3.tgz", + "integrity": "sha512-S4KaM64EVDRzhfrllE87G83LrnUsVviZpMggCUcN0rT8IPnycwWw2GecoFKoH9fFonT7pHkIo5rjmFnLDdOsYg==", "requires": { "got": "^11.8.6", "http-proxy-agent": "^7.0.2", diff --git a/package.json b/package.json index f3fd88d562..dbc2380395 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@flowfuse/flowfuse", - "version": "2.8.0", + "version": "2.9.0", "description": "An open source low-code development platform", "homepage": "https://flowfuse.com", "bugs": { @@ -67,7 +67,7 @@ "@fastify/swagger": "^8.10.1", "@fastify/swagger-ui": "^3.0.0", "@fastify/websocket": "^8.1.0", - "@flowfuse/driver-localfs": "^2.8.0", + "@flowfuse/driver-localfs": "^2.9.0", "@flowfuse/flow-renderer": "^0.4.1", "@headlessui/vue": "1.7.19", "@heroicons/vue": "1.0.6", From fe2520a7e585cbd169a137d2bc0ba31125e57b18 Mon Sep 17 00:00:00 2001 From: cstns Date: Thu, 26 Sep 2024 16:09:22 +0300 Subject: [PATCH 063/185] review changes --- frontend/src/mixins/Permissions.js | 8 ++-- frontend/src/pages/instance/Assets.vue | 5 ++- frontend/src/pages/instance/Editor/index.vue | 8 +++- frontend/src/pages/instance/index.vue | 3 +- frontend/src/utils/roles.js | 40 ++++++++++++++++++++ 5 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 frontend/src/utils/roles.js diff --git a/frontend/src/mixins/Permissions.js b/frontend/src/mixins/Permissions.js index 83cd7edde6..d573d21209 100644 --- a/frontend/src/mixins/Permissions.js +++ b/frontend/src/mixins/Permissions.js @@ -1,7 +1,7 @@ import { mapState } from 'vuex' import { Permissions } from '../../../forge/lib/permissions.js' -import { RoleNames, Roles } from '../../../forge/lib/roles.js' +import { Roles } from '../utils/roles.js' export default { computed: { @@ -29,7 +29,7 @@ export default { }, /** * - * @param {'dashboard', 'viewer', 'member', 'owner'} role + * @param {Roles} role * * @return Boolean */ @@ -38,9 +38,7 @@ export default { return true } - const [roleValue] = Object.entries(RoleNames).find(([key, value]) => value === role) || [] - - return this.teamMembership?.role >= roleValue + return this.teamMembership?.role >= role } } } diff --git a/frontend/src/pages/instance/Assets.vue b/frontend/src/pages/instance/Assets.vue index a2eded41d6..2bd63d87cd 100644 --- a/frontend/src/pages/instance/Assets.vue +++ b/frontend/src/pages/instance/Assets.vue @@ -47,6 +47,7 @@ import FileBrowser from '../../components/file-browser/FileBrowser.vue' import featuresMixin from '../../mixins/Features.js' import permissionsMixin from '../../mixins/Permissions.js' import Alerts from '../../services/alerts.js' +import { Roles } from '../../utils/roles.js' import FolderBreadcrumbs from './components/FolderBreadcrumbs.vue' @@ -114,7 +115,7 @@ export default { watch: { teamMembership: { handler (newState) { - if (newState && !this.hasAMinimumTeamRoleOf('member')) { + if (newState && !this.hasAMinimumTeamRoleOf(Roles.Member)) { return this.$router.push({ name: 'instance-overview' }) } }, @@ -143,7 +144,7 @@ export default { }, methods: { loadContents (breadcrumbs = [], reloadDirectory = false) { - if (this.isFeatureEnabled && this.hasAMinimumTeamRoleOf('member')) { + if (this.isFeatureEnabled && this.hasAMinimumTeamRoleOf(Roles.Member)) { if (breadcrumbs.length === 0) { breadcrumbs = this.breadcrumbs } diff --git a/frontend/src/pages/instance/Editor/index.vue b/frontend/src/pages/instance/Editor/index.vue index b65af4ccac..8a17a20722 100644 --- a/frontend/src/pages/instance/Editor/index.vue +++ b/frontend/src/pages/instance/Editor/index.vue @@ -32,7 +32,10 @@
    - + @@ -68,6 +71,7 @@ import InstanceActionsButton from '../../../components/instance/ActionButton.vue import FfPage from '../../../layouts/Page.vue' import instanceMixin from '../../../mixins/Instance.js' import permissionsMixin from '../../../mixins/Permissions.js' +import { Roles } from '../../../utils/roles.js' import DashboardLink from '../components/DashboardLink.vue' import EditorWrapper from './components/EditorWrapper.vue' @@ -128,7 +132,7 @@ export default { label: 'Assets', to: { name: 'instance-editor-assets', params: { id: this.instance.id } }, tag: 'instance-assets', - hidden: !this.hasAMinimumTeamRoleOf('member') + hidden: !this.hasAMinimumTeamRoleOf(Roles.Member) }, { label: 'Audit Log', diff --git a/frontend/src/pages/instance/index.vue b/frontend/src/pages/instance/index.vue index e0a0c44976..c33b8e2af6 100644 --- a/frontend/src/pages/instance/index.vue +++ b/frontend/src/pages/instance/index.vue @@ -76,6 +76,7 @@ import InstanceActionsButton from '../../components/instance/ActionButton.vue' import instanceMixin from '../../mixins/Instance.js' import permissionsMixin from '../../mixins/Permissions.js' +import { Roles } from '../../utils/roles.js' import ConfirmInstanceDeleteDialog from './Settings/dialogs/ConfirmInstanceDeleteDialog.vue' import DashboardLink from './components/DashboardLink.vue' @@ -113,7 +114,7 @@ export default { { label: 'Overview', to: { name: 'instance-overview', params: { id: this.instance.id } }, tag: 'instance-overview' }, { label: 'Devices', to: { name: 'instance-devices', params: { id: this.instance.id } }, tag: 'instance-remote' }, { label: 'Snapshots', to: { name: 'instance-snapshots', params: { id: this.instance.id } }, tag: 'instance-snapshots' }, - { label: 'Assets', to: { name: 'instance-assets', params: { id: this.instance.id } }, tag: 'instance-assets', hidden: !this.hasAMinimumTeamRoleOf('member') }, + { label: 'Assets', to: { name: 'instance-assets', params: { id: this.instance.id } }, tag: 'instance-assets', hidden: !this.hasAMinimumTeamRoleOf(Roles.Member) }, { label: 'Audit Log', to: { name: 'instance-audit-log', params: { id: this.instance.id } }, tag: 'instance-activity' }, { label: 'Node-RED Logs', to: { name: 'instance-logs', params: { id: this.instance.id } }, tag: 'instance-logs' }, { label: 'Settings', to: { name: 'instance-settings', params: { id: this.instance.id } }, tag: 'instance-settings' } diff --git a/frontend/src/utils/roles.js b/frontend/src/utils/roles.js new file mode 100644 index 0000000000..86691e7b91 --- /dev/null +++ b/frontend/src/utils/roles.js @@ -0,0 +1,40 @@ +/** + * 1:1 copy of forge/lib/roles.js, should be kept in sync + * + * We should use this version in the frontend repository to maintain domain cohesion and maintain separation of concerns + */ + +const Roles = { + None: 0, + Dashboard: 5, + Viewer: 10, + Member: 30, + Owner: 50, + Admin: 99 +} +const RoleNames = { + [Roles.None]: 'none', + [Roles.Dashboard]: 'dashboard', + [Roles.Viewer]: 'viewer', + [Roles.Member]: 'member', + [Roles.Owner]: 'owner', + [Roles.Admin]: 'admin' +} + +// For convenience, we want to be able to look up role values with both 'Role' and 'role' +Object.keys(RoleNames).forEach(role => { + Roles[RoleNames[role]] = parseInt(role) +}) + +const TeamRoles = [ + Roles.Dashboard, + Roles.Viewer, + Roles.Member, + Roles.Owner +] + +module.exports = { + Roles, + RoleNames, + TeamRoles +} From 168bc3b558801bd9bddba14244913437ff53afc4 Mon Sep 17 00:00:00 2001 From: cstns Date: Fri, 27 Sep 2024 09:41:02 +0300 Subject: [PATCH 064/185] update remaining FE roles imports to use local copy --- frontend/src/api/team.js | 2 +- frontend/src/api/user.js | 2 +- frontend/src/components/notifications/invitations/Accepted.vue | 3 +-- frontend/src/components/pipelines/PipelineRow.vue | 3 +-- frontend/src/components/tables/cells/UserRoleCell.vue | 2 +- frontend/src/mixins/Instance.js | 2 +- frontend/src/pages/application/Overview.vue | 3 +-- frontend/src/pages/device/index.vue | 2 +- frontend/src/pages/instance/Settings/ProtectInstance.vue | 3 +-- frontend/src/pages/team/Members/General.vue | 2 +- frontend/src/pages/team/dialogs/ChangeTeamRoleDialog.vue | 2 +- frontend/src/pages/team/dialogs/InviteMemberDialog.vue | 2 +- frontend/src/pages/team/index.vue | 3 +-- 13 files changed, 13 insertions(+), 18 deletions(-) diff --git a/frontend/src/api/team.js b/frontend/src/api/team.js index 81ba236995..6d4c08b342 100644 --- a/frontend/src/api/team.js +++ b/frontend/src/api/team.js @@ -1,9 +1,9 @@ -import { RoleNames, Roles } from '../../../forge/lib/roles.js' import product from '../services/product.js' import daysSince from '../utils/daysSince.js' import elapsedTime from '../utils/elapsedTime.js' import paginateUrl from '../utils/paginateUrl.js' +import { RoleNames, Roles } from '../utils/roles.js' import client from './client.js' diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 0db5237c40..8f21ada2ec 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -1,8 +1,8 @@ -import { RoleNames, Roles } from '../../../forge/lib/roles.js' import product from '../services/product.js' import daysSince from '../utils/daysSince.js' import elapsedTime from '../utils/elapsedTime.js' +import { RoleNames, Roles } from '../utils/roles.js' import client from './client.js' diff --git a/frontend/src/components/notifications/invitations/Accepted.vue b/frontend/src/components/notifications/invitations/Accepted.vue index 8e99b30aaf..07b6e7ea70 100644 --- a/frontend/src/components/notifications/invitations/Accepted.vue +++ b/frontend/src/components/notifications/invitations/Accepted.vue @@ -19,9 +19,8 @@ + + diff --git a/frontend/src/ui-components/components/form/ListBox.vue b/frontend/src/ui-components/components/form/ListBox.vue index c38709d46a..efc80d8f2e 100644 --- a/frontend/src/ui-components/components/form/ListBox.vue +++ b/frontend/src/ui-components/components/form/ListBox.vue @@ -130,6 +130,8 @@ export default { diff --git a/frontend/src/components/dialogs/AssetCompareDialog.vue b/frontend/src/components/dialogs/AssetCompareDialog.vue index b57390a391..54bac160d2 100644 --- a/frontend/src/components/dialogs/AssetCompareDialog.vue +++ b/frontend/src/components/dialogs/AssetCompareDialog.vue @@ -55,11 +55,9 @@ import FlowRenderer from '@flowfuse/flow-renderer' import SnapshotsApi from '../../api/snapshots.js' import Alerts from '../../services/alerts.js' -import FfListbox from '../../ui-components/components/form/ListBox.vue' export default { name: 'AssetCompareDialog', - components: { FfListbox }, props: { title: { type: String, diff --git a/frontend/src/ui-components/stylesheets/ff-components.scss b/frontend/src/ui-components/stylesheets/ff-components.scss index a21130227a..505e619cce 100644 --- a/frontend/src/ui-components/stylesheets/ff-components.scss +++ b/frontend/src/ui-components/stylesheets/ff-components.scss @@ -873,9 +873,6 @@ li.ff-list-item { padding: 0 $ff-unit-lg; color: $ff-white; font-weight: 600; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; } &-content { padding: $ff-funit-lg; From bab3da457e53575f013934f1e3955f674c64d6e1 Mon Sep 17 00:00:00 2001 From: "sumit shinde ( Roni )" <110285294+sumitshinde-84@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:36:31 +0530 Subject: [PATCH 088/185] Update docs/device-agent/install.md Co-authored-by: Ben Hardill --- docs/device-agent/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/device-agent/install.md b/docs/device-agent/install.md index e41299c01f..ea145cfe81 100644 --- a/docs/device-agent/install.md +++ b/docs/device-agent/install.md @@ -22,7 +22,7 @@ The Device Agent connects back to the FlowFuse platform on port 443. You will ne - `app.flowfuse.com:443` - `mqtt.flowfuse.cloud:443` -Additionally, ensure your firewall permits access to the npm registry. The Device Agent does not install Node-RED itself; when it receives a snapshot to run, it will need to download the required Node-RED version specified in that snapshot. +Additionally, ensure your firewall permits access to the npm registry. The Device Agent does not install Node-RED at startup; but when it receives a snapshot to run, it will need to download the required Node-RED version specified in that snapshot. ## Installing the Device Agent From 6168c1d8d0127ac54b61ffb50030d078bce51389 Mon Sep 17 00:00:00 2001 From: "sumit shinde ( Roni )" <110285294+sumitshinde-84@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:38:38 +0530 Subject: [PATCH 089/185] Update install.md --- docs/device-agent/install.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/device-agent/install.md b/docs/device-agent/install.md index ea145cfe81..1d8f535415 100644 --- a/docs/device-agent/install.md +++ b/docs/device-agent/install.md @@ -22,7 +22,9 @@ The Device Agent connects back to the FlowFuse platform on port 443. You will ne - `app.flowfuse.com:443` - `mqtt.flowfuse.cloud:443` -Additionally, ensure your firewall permits access to the npm registry. The Device Agent does not install Node-RED at startup; but when it receives a snapshot to run, it will need to download the required Node-RED version specified in that snapshot. +Additionally, the Device Agent does not install Node-RED at startup. When the agent receives a snapshot to run, it will need to download the required Node-RED version mentioned in the snapshot. Therefore, ensure that your firewall allows access to the following npm registry endpoint: + +- `https://registry.npmjs.com/` ## Installing the Device Agent From 68397229793d9d2c8d7f2773ffb546df7b8c162e Mon Sep 17 00:00:00 2001 From: cstns Date: Mon, 30 Sep 2024 13:09:21 +0300 Subject: [PATCH 090/185] fix e2e selectors --- .../cypress/tests-ee/devices/snapshots.spec.js | 2 +- .../frontend/cypress/tests-ee/instances/assets.spec.js | 10 +++++----- .../cypress/tests/applications/snapshots.spec.js | 2 +- .../frontend/cypress/tests/instances/snapshots.spec.js | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/e2e/frontend/cypress/tests-ee/devices/snapshots.spec.js b/test/e2e/frontend/cypress/tests-ee/devices/snapshots.spec.js index 06dfadf15c..0bd42c018b 100644 --- a/test/e2e/frontend/cypress/tests-ee/devices/snapshots.spec.js +++ b/test/e2e/frontend/cypress/tests-ee/devices/snapshots.spec.js @@ -234,7 +234,7 @@ describe('FlowForge - Devices - With Billing', () => { // select the snapshot to compare with cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"]').click() - cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .options > .option:first').click() + cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .ff-options > .ff-option:first').click() // click compare button cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] [data-action="compare-snapshots"]').click() cy.wait('@fullSnapshot') diff --git a/test/e2e/frontend/cypress/tests-ee/instances/assets.spec.js b/test/e2e/frontend/cypress/tests-ee/instances/assets.spec.js index 816cb4f57e..c327515a34 100644 --- a/test/e2e/frontend/cypress/tests-ee/instances/assets.spec.js +++ b/test/e2e/frontend/cypress/tests-ee/instances/assets.spec.js @@ -405,7 +405,7 @@ describe('FlowForge - Instance - Assets', () => { cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"]') .click() - cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .options') + cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .ff-options') .should('be.visible') cy.get('[data-el="folder-breadcrumbs"] [data-el="ff-data-cell"]:nth-child(2)').contains('hello_world') @@ -431,7 +431,7 @@ describe('FlowForge - Instance - Assets', () => { cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"]') .click() - cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .options') + cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .ff-options') .should('be.visible') .within(() => { cy.get('[data-action="select-private"]').click() @@ -464,7 +464,7 @@ describe('FlowForge - Instance - Assets', () => { cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"]') .click() - cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .options') + cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .ff-options') .should('be.visible') .within(() => { cy.get('[data-action="select-private"]').click() @@ -493,7 +493,7 @@ describe('FlowForge - Instance - Assets', () => { cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"]') .click() - cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .options') + cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .ff-options') .should('be.visible') .within(() => { cy.get('[data-action="select-public"]').click() @@ -537,7 +537,7 @@ describe('FlowForge - Instance - Assets', () => { cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"]') .click() - cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .options') + cy.get('[data-el="folder-breadcrumbs"] [data-el="visibility-selector"] .ff-options') .should('be.visible') .within(() => { cy.get('[data-action="select-public"]').click() diff --git a/test/e2e/frontend/cypress/tests/applications/snapshots.spec.js b/test/e2e/frontend/cypress/tests/applications/snapshots.spec.js index 2520c4e30f..55090e30ad 100644 --- a/test/e2e/frontend/cypress/tests/applications/snapshots.spec.js +++ b/test/e2e/frontend/cypress/tests/applications/snapshots.spec.js @@ -197,7 +197,7 @@ describe('FlowForge - Application - Snapshots', () => { // select a comparison snapshot cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"]').click() - cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .options > .option:first').click() + cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .ff-options > .ff-option:first').click() // click compare button cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] [data-action="compare-snapshots"]').click() cy.wait('@fullSnapshot') diff --git a/test/e2e/frontend/cypress/tests/instances/snapshots.spec.js b/test/e2e/frontend/cypress/tests/instances/snapshots.spec.js index 16cb9efa09..694d642403 100644 --- a/test/e2e/frontend/cypress/tests/instances/snapshots.spec.js +++ b/test/e2e/frontend/cypress/tests/instances/snapshots.spec.js @@ -159,7 +159,7 @@ describe('FlowForge - Instance Snapshots', () => { // select the snapshot to compare with cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"]').click() - cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .options > .option:first').click() + cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] .ff-options > .ff-option:first').click() // click compare button cy.get('[data-el="dialog-compare-snapshot"] [data-el="snapshot-compare-toolbar"] [data-action="compare-snapshots"]').click() cy.wait('@fullSnapshot') From 389271f393e0f2eaf7a328affb25d815443b56bc Mon Sep 17 00:00:00 2001 From: "sumit shinde ( Roni )" <110285294+sumitshinde-84@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:39:24 +0530 Subject: [PATCH 091/185] Update install.md --- docs/device-agent/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/device-agent/install.md b/docs/device-agent/install.md index 1d8f535415..c72aa92222 100644 --- a/docs/device-agent/install.md +++ b/docs/device-agent/install.md @@ -24,7 +24,7 @@ The Device Agent connects back to the FlowFuse platform on port 443. You will ne Additionally, the Device Agent does not install Node-RED at startup. When the agent receives a snapshot to run, it will need to download the required Node-RED version mentioned in the snapshot. Therefore, ensure that your firewall allows access to the following npm registry endpoint: -- `https://registry.npmjs.com/` +- `https://registry.npmjs.com` ## Installing the Device Agent From 99cd72df1423fb16790d8935149dd73a66b28f82 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 12:05:44 +0100 Subject: [PATCH 092/185] Add note about backing up the database (#4592) fixes #4549 --- docs/install/kubernetes/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/install/kubernetes/README.md b/docs/install/kubernetes/README.md index 6bf306a5b3..d7579916ec 100644 --- a/docs/install/kubernetes/README.md +++ b/docs/install/kubernetes/README.md @@ -64,6 +64,32 @@ with the following values: - `postgresql.auth.password` - `postgresql.auth.database` + +#### Database Backups + +If using Kubernetes CronJobs to backup the database then remember to add the `app: flowforge` label +to the job to ensure it has access to the database. This is because the Helm Chart includes +network rules to prevent the Node-RED instances having direct access to the FlowFuse Database. + +```yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: postgres-backup + labels: + app: flowforge +spec: + schedule: "5 23 * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: backup + image: postgres + ... +``` + ### DNS A [wildcard DNS entry](https://en.wikipedia.org/wiki/Wildcard_DNS_record) will be needed From e7b8dc7737cb4ccbdee336faa52ae3adbf0e4992 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 13:14:57 +0100 Subject: [PATCH 093/185] Add Team upgrade docs --- docs/cloud/images/availble-team-types.png | Bin 0 -> 186965 bytes docs/cloud/images/change-team-type.png | Bin 0 -> 40228 bytes docs/cloud/introduction.md | 43 ++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 docs/cloud/images/availble-team-types.png create mode 100644 docs/cloud/images/change-team-type.png diff --git a/docs/cloud/images/availble-team-types.png b/docs/cloud/images/availble-team-types.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b00deeef790978f183a30390707680cddaba31 GIT binary patch literal 186965 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.%vC;#>p|M4 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%0ANH{KUVH8J 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 a{*6H0{BEJ-3U=@KESjo%D&===pZ*u+$|ef{ literal 0 HcmV?d00001 diff --git a/docs/cloud/images/change-team-type.png b/docs/cloud/images/change-team-type.png new file mode 100644 index 0000000000000000000000000000000000000000..df342b50983804d238cf6fd55dc8603caffd3904 GIT binary patch literal 40228 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 U=-QQHAP(Yty85}Sb4q9e0Od-+0ssI2 literal 0 HcmV?d00001 diff --git a/docs/cloud/introduction.md b/docs/cloud/introduction.md index 68b71163ab..c09453fece 100644 --- a/docs/cloud/introduction.md +++ b/docs/cloud/introduction.md @@ -55,6 +55,49 @@ When a user signs up for FlowFuse Cloud an email will be sent to verify it. If this email doesn't get delivered one can be resend by signing in to FlowFuse and click the button to resend it. +## Team Types + +FlowFuse Cloud has three different Team Type aimed at different sorts of users + +### Starter + +Good for getting to know the platform, allows 2 small Instances, 2 Devices and 2 Team members + +### Team + +Has access to more features e.g. + +- Shared Team Library +- Project Nodes +- Team-based Dashboard/API security +- Email alerts for Instance crashes +- Has access to larger Instance Types + +Also includes 5 Instances in the base price + +### Enterprise + +All features from the Team Level plus + + - HA for Instances + - SSO + - Better Support SLA + +Includes 10 instances in the base price + +### Changing Team Type + +You can change Team Type by selecting the "Team Settings" option from the left hand +menu, then clicking on the "Change Team Type" button + +![Change Team Type](images/change-team-type.png) + +From here you will be presented with a choice of Team Types. You will not be able +to downgrade to a lower Team Type if you already have more resources than allowed at +that level. Please Suspend or Delete any no longer required Instances or Devices. + +![Available Team Types](images/availble-team-types.png) + ## Node-RED on FlowFuse Cloud FlowFuse currently offers Node-RED 4.x, 3.x and 2.x to customers. When creating a From 3127ca7801eb6c4daf69540476661a6bd2e7f1d9 Mon Sep 17 00:00:00 2001 From: cstns Date: Mon, 30 Sep 2024 15:39:57 +0300 Subject: [PATCH 094/185] remove image logo alt name to fix gmail email summary --- forge/postoffice/layouts/default.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge/postoffice/layouts/default.js b/forge/postoffice/layouts/default.js index 3d81ef348f..c3fcd702d4 100644 --- a/forge/postoffice/layouts/default.js +++ b/forge/postoffice/layouts/default.js @@ -33,8 +33,7 @@ module.exports = (htmlContent) => { - ff-logo--wordmark--dark From ce4264583cbfcc34643f314c6f778d1f17e56912 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 14:00:28 +0100 Subject: [PATCH 095/185] Only allow instance rename if suspended fixes #4499 --- forge/db/models/Project.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/forge/db/models/Project.js b/forge/db/models/Project.js index 0caff9b3a4..da3621eb50 100644 --- a/forge/db/models/Project.js +++ b/forge/db/models/Project.js @@ -150,6 +150,13 @@ module.exports = { await app.auditLog.Platform.platform.license.overage('system', null, instances) } }, + beforeUpdate: async (project, opts) => { + if (project.changed('name')) { + if (project.state != 'suspended') { + throw new Error('Name can only be changed when suspended') + } + } + }, afterDestroy: async (project, opts) => { await M.AccessToken.destroy({ where: { From f7c52ff56eb85038d952e5029bd0eee74bae56e7 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 14:11:50 +0100 Subject: [PATCH 096/185] Update image --- docs/cloud/images/change-team-type.png | Bin 40228 -> 43291 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/cloud/images/change-team-type.png b/docs/cloud/images/change-team-type.png index df342b50983804d238cf6fd55dc8603caffd3904..c6e57bac33cff17e760fe8feb771a07f94149a93 100644 GIT binary patch literal 43291 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 z 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 U=-QQHAP(Yty85}Sb4q9e0Od-+0ssI2 From 0e6cf01d2426f33cf80ff92343ba168b2c5fcedf Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 14:30:48 +0100 Subject: [PATCH 097/185] fix lint --- forge/db/models/Project.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge/db/models/Project.js b/forge/db/models/Project.js index da3621eb50..6455980b3e 100644 --- a/forge/db/models/Project.js +++ b/forge/db/models/Project.js @@ -152,7 +152,7 @@ module.exports = { }, beforeUpdate: async (project, opts) => { if (project.changed('name')) { - if (project.state != 'suspended') { + if (project.state !== 'suspended') { throw new Error('Name can only be changed when suspended') } } From 04acb4e5c7682a4ffeed04628c6268bda0a3d5a2 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 14:48:37 +0100 Subject: [PATCH 098/185] Add fix test and add extra --- test/unit/forge/routes/api/project_spec.js | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index aae0be688a..de7c8e66c8 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1477,6 +1477,38 @@ describe('Project API', function () { }) describe('Change project name', function () { + it('Updates the name', async function () { + // Setup some flows/credentials + await addFlowsToProject(app, + TestObjects.project1.id, + TestObjects.tokens.project, + TestObjects.tokens.alice, + [{ id: 'node1' }], + { testCreds: 'abc' }, + 'key1', + {} + ) + + const state = await app.inject({ + url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, + cookies: { sid: TestObjects.tokens.alice } + }) + + state.statusCode.should.equal(200) + + // call "Update a project" with a new name + const response = await app.inject({ + method: 'PUT', + url: `/api/v1/projects/${TestObjects.project1.id}`, + payload: { + name: 'new project name' + }, + cookies: { sid: TestObjects.tokens.alice } + }) + response.statusCode.should.equal(500) + JSON.parse(response.payload).should.have.property('error', 'new project name') + }) + it('Updates the name', async function () { // Setup some flows/credentials await addFlowsToProject(app, @@ -1499,7 +1531,7 @@ describe('Project API', function () { cookies: { sid: TestObjects.tokens.alice } }) response.statusCode.should.equal(200) - JSON.parse(response.payload).should.have.property('name', 'new project name') + JSON.parse(response.payload).should.have.property('name', 'Name can only be changed when suspended') }) it('Non-owner cannot change project name', async function () { From 2cf1804450915e34275d0cbbc917d9e9f51ea08c Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 15:03:54 +0100 Subject: [PATCH 099/185] fix tests --- test/unit/forge/routes/api/project_spec.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index de7c8e66c8..4b4b7002ae 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1505,7 +1505,7 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(500) + response.statusCode.should.equal(200) JSON.parse(response.payload).should.have.property('error', 'new project name') }) @@ -1521,6 +1521,13 @@ describe('Project API', function () { {} ) + const state = await app.inject({ + url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, + cookies: { sid: TestObjects.tokens.alice } + }) + + state.statusCode.should.equal(200) + // call "Update a project" with a new name const response = await app.inject({ method: 'PUT', @@ -1530,7 +1537,7 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(200) + response.statusCode.should.equal(500) JSON.parse(response.payload).should.have.property('name', 'Name can only be changed when suspended') }) From cda3300f5141ffb806441bbb6ceab663629ea28a Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 15:29:55 +0100 Subject: [PATCH 100/185] Try again with the tests --- test/unit/forge/routes/api/project_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index 4b4b7002ae..c17cb29b1a 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1522,7 +1522,7 @@ describe('Project API', function () { ) const state = await app.inject({ - url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, + url: `/api/v1/projects/${TestObjects.project1.id}/actions/start`, cookies: { sid: TestObjects.tokens.alice } }) From f244303238d59dc9a270986f45a0a8979cdbd774 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 15:45:28 +0100 Subject: [PATCH 101/185] re-order tests --- test/unit/forge/routes/api/project_spec.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index c17cb29b1a..50fa6b1088 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1477,7 +1477,7 @@ describe('Project API', function () { }) describe('Change project name', function () { - it('Updates the name', async function () { + it('Updates the name fail for running instance', async function () { // Setup some flows/credentials await addFlowsToProject(app, TestObjects.project1.id, @@ -1489,13 +1489,6 @@ describe('Project API', function () { {} ) - const state = await app.inject({ - url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, - cookies: { sid: TestObjects.tokens.alice } - }) - - state.statusCode.should.equal(200) - // call "Update a project" with a new name const response = await app.inject({ method: 'PUT', @@ -1505,8 +1498,8 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(200) - JSON.parse(response.payload).should.have.property('error', 'new project name') + response.statusCode.should.equal(500) + JSON.parse(response.payload).should.have.property('name', 'Name can only be changed when suspended') }) it('Updates the name', async function () { @@ -1522,7 +1515,7 @@ describe('Project API', function () { ) const state = await app.inject({ - url: `/api/v1/projects/${TestObjects.project1.id}/actions/start`, + url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, cookies: { sid: TestObjects.tokens.alice } }) @@ -1537,8 +1530,8 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(500) - JSON.parse(response.payload).should.have.property('name', 'Name can only be changed when suspended') + response.statusCode.should.equal(200) + JSON.parse(response.payload).should.have.property('error', 'new project name') }) it('Non-owner cannot change project name', async function () { From 25df4cddcdc363dcaee5ebb0f09f8dafc63efe28 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 15:48:49 +0100 Subject: [PATCH 102/185] re-order tests --- test/unit/forge/routes/api/project_spec.js | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index 50fa6b1088..296c97b41b 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1475,7 +1475,37 @@ describe('Project API', function () { }) }) }) + it('Updates the name', async function () { + // Setup some flows/credentials + await addFlowsToProject(app, + TestObjects.project1.id, + TestObjects.tokens.project, + TestObjects.tokens.alice, + [{ id: 'node1' }], + { testCreds: 'abc' }, + 'key1', + {} + ) + + const state = await app.inject({ + url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, + cookies: { sid: TestObjects.tokens.alice } + }) + + state.statusCode.should.equal(200) + // call "Update a project" with a new name + const response = await app.inject({ + method: 'PUT', + url: `/api/v1/projects/${TestObjects.project1.id}`, + payload: { + name: 'new project name' + }, + cookies: { sid: TestObjects.tokens.alice } + }) + response.statusCode.should.equal(200) + JSON.parse(response.payload).should.have.property('error', 'new project name') + }) describe('Change project name', function () { it('Updates the name fail for running instance', async function () { // Setup some flows/credentials From d22c14c7668346ab5b8a2d62205469c0dd974f87 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 16:28:18 +0100 Subject: [PATCH 103/185] tests now pass --- test/unit/forge/routes/api/project_spec.js | 55 +++++----------------- 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index 296c97b41b..5025ac9c7f 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1475,39 +1475,8 @@ describe('Project API', function () { }) }) }) - it('Updates the name', async function () { - // Setup some flows/credentials - await addFlowsToProject(app, - TestObjects.project1.id, - TestObjects.tokens.project, - TestObjects.tokens.alice, - [{ id: 'node1' }], - { testCreds: 'abc' }, - 'key1', - {} - ) - - const state = await app.inject({ - url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, - cookies: { sid: TestObjects.tokens.alice } - }) - - state.statusCode.should.equal(200) - - // call "Update a project" with a new name - const response = await app.inject({ - method: 'PUT', - url: `/api/v1/projects/${TestObjects.project1.id}`, - payload: { - name: 'new project name' - }, - cookies: { sid: TestObjects.tokens.alice } - }) - response.statusCode.should.equal(200) - JSON.parse(response.payload).should.have.property('error', 'new project name') - }) describe('Change project name', function () { - it('Updates the name fail for running instance', async function () { + it('Updates the name', async function () { // Setup some flows/credentials await addFlowsToProject(app, TestObjects.project1.id, @@ -1518,6 +1487,8 @@ describe('Project API', function () { 'key1', {} ) + TestObjects.project1.state = 'suspended' + await TestObjects.project1.save() // call "Update a project" with a new name const response = await app.inject({ @@ -1528,11 +1499,11 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(500) - JSON.parse(response.payload).should.have.property('name', 'Name can only be changed when suspended') + response.statusCode.should.equal(200) + JSON.parse(response.payload).should.have.property('name', 'new project name') }) - it('Updates the name', async function () { + it('Updates the name fail for running instance', async function () { // Setup some flows/credentials await addFlowsToProject(app, TestObjects.project1.id, @@ -1544,12 +1515,10 @@ describe('Project API', function () { {} ) - const state = await app.inject({ - url: `/api/v1/projects/${TestObjects.project1.id}/actions/stop`, - cookies: { sid: TestObjects.tokens.alice } - }) - - state.statusCode.should.equal(200) + TestObjects.project1.name = 'project1' + await TestObjects.project1.save() + TestObjects.project1.state = 'running' + await TestObjects.project1.save() // call "Update a project" with a new name const response = await app.inject({ @@ -1560,8 +1529,8 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(200) - JSON.parse(response.payload).should.have.property('error', 'new project name') + response.statusCode.should.equal(500) + JSON.parse(response.payload).should.have.property('error', 'Name can only be changed when suspended') }) it('Non-owner cannot change project name', async function () { From 796a6708459d03aad03ae7923ad1448e85475519 Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Mon, 30 Sep 2024 16:33:09 +0100 Subject: [PATCH 104/185] Docs: Improve the Docs Landing Page --- docs/README.md | 324 ++++++++++++++++++++++++++--- docs/assets/logo-dashboard.png | Bin 0 -> 19471 bytes docs/assets/logo-device-agent.png | Bin 0 -> 3781 bytes docs/assets/logo-device-agent.svg | 7 + docs/assets/logo-project-nodes.png | Bin 0 -> 4393 bytes docs/assets/logo-project-nodes.svg | 6 + 6 files changed, 309 insertions(+), 28 deletions(-) create mode 100644 docs/assets/logo-dashboard.png create mode 100644 docs/assets/logo-device-agent.png create mode 100644 docs/assets/logo-device-agent.svg create mode 100644 docs/assets/logo-project-nodes.png create mode 100644 docs/assets/logo-project-nodes.svg diff --git a/docs/README.md b/docs/README.md index adf5cbacf5..2403dd7c2a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,53 +15,321 @@ meta: - contributing --- + + # FlowFuse Documentation -FlowFuse adds to Node-RED; collaborative development, management of -remote deployments, support for DevOps delivery pipelines, and the ability to -host Node-RED applications on FlowFuse. FlowFuse is the DevOps platform for -Node-RED application development and delivery. +Welcome to the documentation for FlowFuse, an open-source, industrial data platform that enables engineers to build, manage, scale, and secure their Node-RED solutions. + +It covers everything from setup, to usage, and development. All [contributions](http://localhost:8080/docs/contribute/introduction/) are welcome. + +## Getting Started + +
    +
    + +

    Run FlowFuse yourself on your own infrastructure.

    + +
    +
    + +

    Hosted solution, nothing to install anything, jump straight in.

    + +
    +
    -## FlowFuse User Manuals +## Using FlowFuse - - [User Manual](./user/introduction/) - Documentation on how to use FlowFuse. - - [API Documentation](./api/) - - [Node-RED Migration](./migration/introduction/) - How to migrate your Node-RED standalone to FlowFuse? +### Getting Started -## Device Agent +Here are some quick reference links to our most popular topics. You can also view the full documentation available for FlowFuse in our [Getting Started](http://localhost:8080/docs/user/introduction) guide. -The [Device Agent](./device-agent/introduction/) allows you to manage Node-RED instances running on remote Devices. A Device runs a software agent that connects back to FlowFuse in order to receive updates. + -## FlowFuse Cloud +### Advanced Features -[FlowFuse Cloud](./cloud/introduction/) is our hosted service allowing users to sign-up and start creating Node-RED instances without having to install and manage their own instance of FlowFuse. +Once you're more comfortable with FlowFuse, you may want to explore some of our more advanced features that will help elevate your Node-RED experience even further. - - [Network Connections](./cloud/introduction/#network-connections) - Details what connections can and cannot be established to Node-RED instances running in FlowFuse Cloud. - - [Single Sign On](./cloud/introduction/#single-sign-on) - FlowFuse supports configuring SAML-based Single Sign-On for particular email domains. Contact us to configure for your team. - - [Billing](./cloud/billing/) - find out how we've configured FlowFuse for FlowFuse Cloud. + -You can run the FlowFuse platform for yourself. This guide will help you get setup -in no time. -- [Installing FlowFuse](./install/introduction/) - how to install the platform -- [Upgrade your FlowFuse Instance](./upgrade/) -- [From Open Source to Premium](./upgrade/open-source-to-premium.md) - How to add your license to the platform -- [Administrator Manual](./admin/introduction.md) - How to administer the platform +## FlowFuse Extras -## How to get support? +
    +
    + +

    Create interactive, responsive and secure Dashboards in Node-RED.

    +

    +
    +
    + +

    Manage thousands of Node-RED Instances remotely with the FlowFuse Device Agent.

    +

    +
    +
    + +

    AI in the Node-RED Editor to help build your flows.

    +

    +
    +
    + +

    Seamlessly pass data between your Node-RED Instances.

    +

    +
    +
    + +## Support - [Troubleshooting](/docs/debugging/) - [Community Support](https://community.flowfuse.com/) - [FlowFuse Cloud Support](/docs/premium-support/) - ## Contributing to FlowFuse +## Contributing to FlowFuse - [Useful Information](./contribute/introduction/#contributing-to-flowfuse) - Learn the foundational concepts of how FlowFuse is built & structured. - [Development Setup](./contribute/introduction/#development-setup) - Configure your local development environment to contribute to FlowFuse. - [Testing](./contribute/introduction/#testing) - Understand our testing philosophy at FlowFuse. + + + + + \ No newline at end of file diff --git a/docs/assets/logo-dashboard.png b/docs/assets/logo-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..cc75e13ff3b7c9d5783f633b4a92c7ff10ae9937 GIT binary patch literal 19471 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

    v#3&aJ%Af{+ZJM-}sG{ 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 HJd^$haM?QC literal 0 HcmV?d00001 diff --git a/docs/assets/logo-device-agent.svg b/docs/assets/logo-device-agent.svg new file mode 100644 index 0000000000..6f987829be --- /dev/null +++ b/docs/assets/logo-device-agent.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/assets/logo-project-nodes.png b/docs/assets/logo-project-nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef46f9200ca730112b0c5203dea1b855297e9cc GIT binary patch literal 4393 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 literal 0 HcmV?d00001 diff --git a/docs/assets/logo-project-nodes.svg b/docs/assets/logo-project-nodes.svg new file mode 100644 index 0000000000..0415636ef3 --- /dev/null +++ b/docs/assets/logo-project-nodes.svg @@ -0,0 +1,6 @@ + + + + + + From 5da892992c23276c54537abf42ed44593c504ef2 Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Mon, 30 Sep 2024 16:37:31 +0100 Subject: [PATCH 105/185] Ensure we have consistent text colouring --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 2403dd7c2a..a97ff3288a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -316,7 +316,7 @@ Once you're more comfortable with FlowFuse, you may want to explore some of our } .ff-product-feature-tile label, .ff-product-feature-tile .ff-product-feature-tile-decorator { - color: #4F46E5; + color: #2463eb; } .ff-product-feature-tile .ff-icon { width: 32px; From d7f861391f3d8273a06f23c40d0c437c35044b29 Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Mon, 30 Sep 2024 16:42:55 +0100 Subject: [PATCH 106/185] Fix internal doc reference links --- docs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index a97ff3288a..322782ce03 100644 --- a/docs/README.md +++ b/docs/README.md @@ -55,13 +55,13 @@ It covers everything from setup, to usage, and development. All [contributions](

  • - + Unlock Enterprise Features
  • - + Administering FlowFuse @@ -207,7 +207,7 @@ Once you're more comfortable with FlowFuse, you may want to explore some of our

    AI in the Node-RED Editor to help build your flows.

  • From 9175b0f5a129f9182b63dd01efc9e80ae6e4f37b Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 30 Sep 2024 17:02:29 +0100 Subject: [PATCH 107/185] update tests --- test/unit/forge/routes/api/project_spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/forge/routes/api/project_spec.js b/test/unit/forge/routes/api/project_spec.js index 5025ac9c7f..c7856fc8ba 100644 --- a/test/unit/forge/routes/api/project_spec.js +++ b/test/unit/forge/routes/api/project_spec.js @@ -1529,8 +1529,8 @@ describe('Project API', function () { }, cookies: { sid: TestObjects.tokens.alice } }) - response.statusCode.should.equal(500) - JSON.parse(response.payload).should.have.property('error', 'Name can only be changed when suspended') + response.statusCode.should.equal(200) + JSON.parse(response.payload).should.have.property('name', 'new project name') }) it('Non-owner cannot change project name', async function () { From 6b7dfe1560e18629ae7732f0a38bab1715f95c65 Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Mon, 30 Sep 2024 18:05:59 +0100 Subject: [PATCH 108/185] Add "/img? to ignore list for unit tests & fix /users > /user --- docs/README.md | 2 +- test/e2e/docs/valid-links.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 322782ce03..cdecbee870 100644 --- a/docs/README.md +++ b/docs/README.md @@ -207,7 +207,7 @@ Once you're more comfortable with FlowFuse, you may want to explore some of our

    AI in the Node-RED Editor to help build your flows.

    diff --git a/test/e2e/docs/valid-links.js b/test/e2e/docs/valid-links.js index 504c8c346b..e5560919e5 100644 --- a/test/e2e/docs/valid-links.js +++ b/test/e2e/docs/valid-links.js @@ -31,7 +31,8 @@ const exceptions = [ 'github.com/FlowFuse/content', 'github.com/FlowFuse/security', 'github.com/orgs/flowforge/projects', - '/support' + '/support', + '/img/' ] const parseUri = function (uri) { From b6bb8ef32b5a8f0dbdccad3e2313990ba5833e43 Mon Sep 17 00:00:00 2001 From: Joe Pavitt <99246719+joepavitt@users.noreply.github.com> Date: Mon, 30 Sep 2024 18:40:03 +0100 Subject: [PATCH 109/185] Remove tags for now due to Eleventy problems (#4599) --- docs/README.md | 4 ++-- test/e2e/docs/valid-links.js | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index cdecbee870..07cf13f562 100644 --- a/docs/README.md +++ b/docs/README.md @@ -185,7 +185,7 @@ Once you're more comfortable with FlowFuse, you may want to explore some of our
    - +

    Create interactive, responsive and secure Dashboards in Node-RED.

    - +

    Manage thousands of Node-RED Instances remotely with the FlowFuse Device Agent.

    • Install the Device Agent
    • diff --git a/test/e2e/docs/valid-links.js b/test/e2e/docs/valid-links.js index e5560919e5..504c8c346b 100644 --- a/test/e2e/docs/valid-links.js +++ b/test/e2e/docs/valid-links.js @@ -31,8 +31,7 @@ const exceptions = [ 'github.com/FlowFuse/content', 'github.com/FlowFuse/security', 'github.com/orgs/flowforge/projects', - '/support', - '/img/' + '/support' ] const parseUri = function (uri) { From 4f0ff1d365a3b233ed5e337672f3f723a378e799 Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 1 Oct 2024 11:19:55 +0300 Subject: [PATCH 110/185] add bulk notification update --- forge/db/models/Notification.js | 17 ++++++++ forge/routes/api/userNotifications.js | 63 ++++++++++++++++----------- forge/services/notifications.js | 8 ++++ 3 files changed, 63 insertions(+), 25 deletions(-) create mode 100644 forge/services/notifications.js diff --git a/forge/db/models/Notification.js b/forge/db/models/Notification.js index f299238e68..15f6111977 100644 --- a/forge/db/models/Notification.js +++ b/forge/db/models/Notification.js @@ -89,6 +89,23 @@ module.exports = { count, notifications: rows } + }, + markNotificationsAsRead: async ({ read = true, ids = [] }, user) => { + if (ids.length === 0) { + return + } + + ids = ids.map(id => Number.isNaN(id) ? M.Notification.decodeHashid(id) : id) + + await M.Notification.update( + { read: read ? 1 : 0 }, + { + where: { + id: ids.map(M.Notification.decodeHashid), + UserId: user.id + } + } + ) } } } diff --git a/forge/routes/api/userNotifications.js b/forge/routes/api/userNotifications.js index e921f35a6c..f2d633b0e7 100644 --- a/forge/routes/api/userNotifications.js +++ b/forge/routes/api/userNotifications.js @@ -1,3 +1,5 @@ +const { getNotifications } = require('../../services/notifications.js') + /** * User Notification api routes * @@ -27,35 +29,46 @@ module.exports = async function (app) { } } }, async (request, reply) => { - const paginationOptions = app.getPaginationOptions(request) - const notifications = await app.db.models.Notification.forUser(request.session.User, paginationOptions) - notifications.notifications = app.db.views.Notification.notificationList(notifications.notifications) + const notifications = await getNotifications(app, request) + reply.send(notifications) }) // Bulk update - // app.put('/', { - // schema: { - // summary: 'Mark notifications as read', - // tags: ['User'], - // body: { - // type: 'object', - // properties: { - // id: { type: 'string' }, - // read: { type: 'boolean' } - // } - // }, - // response: { - // 200: { - // $ref: 'APIStatus' - // }, - // '4xx': { - // $ref: 'APIError' - // } - // } - // } - // }, async (request, reply) => { - // }) + app.put('/', { + schema: { + summary: 'Mark notifications as read', + tags: ['User'], + body: { + type: 'object', + properties: { + ids: { type: 'array', items: { type: 'string' } }, + read: { type: 'boolean' } + } + }, + response: { + 200: { + type: 'object', + properties: { + meta: { $ref: 'PaginationMeta' }, + count: { type: 'number' }, + notifications: { $ref: 'NotificationList' } + } + }, + '4xx': { + $ref: 'APIError' + } + } + } + }, async (request, reply) => { + const payload = { read: request.body.read, ids: request.body.ids } + + await app.db.models.Notification.markNotificationsAsRead(payload, request.session.User) + + const notifications = await getNotifications(app, request) + + reply.send(notifications) + }) // Bulk delete // app.delete('/', { diff --git a/forge/services/notifications.js b/forge/services/notifications.js new file mode 100644 index 0000000000..9e46b90c36 --- /dev/null +++ b/forge/services/notifications.js @@ -0,0 +1,8 @@ +module.exports.getNotifications = async (app, request) => { + const paginationOptions = app.getPaginationOptions(request) + const notifications = await app.db.models.Notification.forUser(request.session.User, paginationOptions) + + notifications.notifications = app.db.views.Notification.notificationList(notifications.notifications) + + return notifications +} From d773207fd6f9631cc9a51f8fd89f6aecda5e8f83 Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 1 Oct 2024 11:20:29 +0300 Subject: [PATCH 111/185] add bulkNotification client call --- frontend/src/api/user.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 8f21ada2ec..21bf7c906a 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -94,7 +94,18 @@ const markNotificationRead = async (id) => { read: true }) } - +const markNotificationsBulk = async (ids, data = { read: true }) => { + return client.put('/api/v1/user/notifications/', { + ids, + ...data + }).then(res => { + res.data.notifications = res.data.notifications.map(n => { + n.createdSince = daysSince(n.createdAt) + return n + }) + return res.data + }) +} const getTeamInvitations = async () => { return client.get('/api/v1/user/invitations').then(res => { res.data.invitations = res.data.invitations.map(r => { @@ -240,6 +251,7 @@ export default { deleteUser, getNotifications, markNotificationRead, + markNotificationsBulk, getTeamInvitations, acceptTeamInvitation, rejectTeamInvitation, From deb71df3f16cbdbe6108e5ebc5241a60cd5bc3ac Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 1 Oct 2024 11:20:49 +0300 Subject: [PATCH 112/185] add a set notification store action --- frontend/src/store/account.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/store/account.js b/frontend/src/store/account.js index 5c35f37e45..4d350fc413 100644 --- a/frontend/src/store/account.js +++ b/frontend/src/store/account.js @@ -389,6 +389,9 @@ const actions = { }) .catch(_ => {}) }, + setNotifications (state, notifications) { + state.commit('setNotifications', notifications) + }, async getInvitations (state) { await userApi.getTeamInvitations() .then((invitations) => { From a87a2c4eea19dbbf5cbe3c2767442ed7aa2b4758 Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 1 Oct 2024 11:22:53 +0300 Subject: [PATCH 113/185] bubble up onSelect events --- frontend/src/components/notifications/Generic.vue | 2 ++ frontend/src/components/notifications/invitations/Accepted.vue | 2 ++ frontend/src/components/notifications/invitations/Received.vue | 2 ++ 3 files changed, 6 insertions(+) diff --git a/frontend/src/components/notifications/Generic.vue b/frontend/src/components/notifications/Generic.vue index dae05e30a4..b7450d2f34 100644 --- a/frontend/src/components/notifications/Generic.vue +++ b/frontend/src/components/notifications/Generic.vue @@ -3,6 +3,8 @@ :notification="notification" :selections="selections" data-el="generic-notification" :to="to" + @selected="onSelect" + @deselected="onDeselect" > diff --git a/frontend/src/stylesheets/components/notifications.scss b/frontend/src/stylesheets/components/notifications.scss index 62c855bf92..a9766300e4 100644 --- a/frontend/src/stylesheets/components/notifications.scss +++ b/frontend/src/stylesheets/components/notifications.scss @@ -1,157 +1,237 @@ .ff-notification-interview { - max-width: 450px; - border: 1px solid $ff-grey-400; - background-color: $ff-white; - box-shadow: -6px 6px 6px #00000040; - border-radius: 0 6px 6px 0; - padding: 12px 9px 12px 18px; - border: 1px solid $ff-blue-700; - border-left: 8px solid $ff-blue-700; - h3 { - font-size: 1.1rem; - margin-bottom: 12px; - } - p { - font-size: 1.1rem; - } - &--actions { - margin-top: 24px; - gap: 12px; - display: flex; - flex-direction: row-reverse; - justify-content: space-between; - font-size: 1rem; - .ff-btn.ff-btn--primary { - background-color: $ff-blue-700; - border-color: $ff-blue-700; - &:hover { - background-color: $ff-blue-800; - } - } + max-width: 450px; + background-color: $ff-white; + box-shadow: -6px 6px 6px #00000040; + border-radius: 0 6px 6px 0; + padding: 12px 9px 12px 18px; + border: 1px solid $ff-blue-700; + border-left: 8px solid $ff-blue-700; + + h3 { + font-size: 1.1rem; + margin-bottom: 12px; + } + + p { + font-size: 1.1rem; + } + + &--actions { + margin-top: 24px; + gap: 12px; + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + font-size: 1rem; + + .ff-btn.ff-btn--primary { + background-color: $ff-blue-700; + border-color: $ff-blue-700; + + &:hover { + background-color: $ff-blue-800; + } } + } } -$ff-notifications-drawer-side-padding: 12px; +$ff-notifications-drawer-side-padding: 6px; .ff-notifications-drawer { - display: flex; - flex-direction: column; - align-items: center; - height: 100%; + display: flex; + flex-direction: column; + align-items: center; + height: 100%; + width: 100%; + + > .header { + border-bottom: 1px solid $ff-grey-300; + padding: 10px 0; + width: 100%; + + .title { + padding: 0 $ff-notifications-drawer-side-padding; + margin: 0; + color: $ff-grey-800; + font-weight: bold; + font-size: 1.25rem; + line-height: 1.75rem; + } + + .actions { + margin-top: 5px; + padding: 0 12px; + display: flex; + gap: 5px; + + .forge-badge { + background-color: $ff-grey-100; + border-radius: 5px; + + &:hover { + cursor: pointer; + background-color: $ff-grey-300 + } + + &.disabled { + color: $ff-grey-400; + + &:hover { + cursor: not-allowed; + } + } + } + } + } + + .messages-wrapper { + flex: 1; width: 100%; - - > .header { - border-bottom: 1px solid $ff-grey-300; - padding: 10px 0; - width: 100%; - - .title { - padding: 0 $ff-notifications-drawer-side-padding; + background-color: $ff-grey-100; + $read: $ff-grey-400; + $info: blue; + $warning: $ff-yellow-600; + $error: $ff-red-500; + + .message-wrapper { + display: flex; + flex-direction: row; + color: $ff-grey-400; + background-color: $ff-white; + border-bottom: 1px solid $ff-grey-300; + border-left: 3px solid rgba(0, 0, 0, 0); + transition: ease-in-out .3s; + cursor: pointer; + + .counter { + margin-top: 0.2rem; + + .ff-notification-pill { + background-color: $read; + color: white; + padding: 2px 7px; + border-radius: 6px; + font-size: 0.65rem; + } + } + + .action { + display: flex; + justify-content: center; + align-items: center; + width: 40px; + cursor: default; + + .ff-checkbox { + height: 13px; + width: 13px; + padding: 0; + + span { margin: 0; - color: $ff-grey-800; - font-weight: bold; - font-size: 1.25rem; - line-height: 1.75rem; + padding: 0; + } } + } - .actions { - padding: 0 5px; - display: flex; - gap: 5px; + &:hover .title { + color: $ff-blue-500; + } - .forge-badge { - background-color: $ff-grey-100; + &.unread { + border-left: 3px solid $info; + border-left-color: $ff-blue-500; + color: $ff-grey-800; - &:hover { - cursor: pointer; - background-color: $ff-grey-300 - } + &.warning { + border-left: 3px solid $warning; - &.disabled { - color: $ff-grey-400; + .counter .ff-notification-pill { + background-color: $warning; + } + } - &:hover { - cursor: not-allowed; - } - } - } + &.error { + border-left: 3px solid $error; + + .counter .ff-notification-pill { + background-color: $error; + } } - } - .messages-wrapper { - flex: 1; - width: 100%; - background-color: $ff-grey-100; - - .message { - color: $ff-grey-400; - background-color: $ff-white; - border-bottom: 1px solid $ff-grey-300; - border-left: 3px solid rgba(0,0,0,0); - padding: 9px $ff-notifications-drawer-side-padding; - transition: ease-in-out .3s; - - cursor: pointer; + .counter .ff-notification-pill { + background-color: $info; + } + } - &:hover .title { - color: $ff-blue-500; - } - &.unread { - border-left-color: $ff-blue-500; - color: $ff-grey-800; - } - .body { - flex: 1; - display: flex; - align-items: center; - } + .body { + flex: 1; + display: flex; + flex-direction: column; + padding: 9px $ff-notifications-drawer-side-padding; - .text { - padding: 0 $ff-notifications-drawer-side-padding; - flex-grow: 1; - } + .header { + gap: 5px; + display: flex; + justify-content: space-between; + align-items: center; - .header { - display: flex; - justify-content: space-between; - .title { - flex: 1; - transition: ease-in-out .3s; - h4 { - margin: 0; - } - } - - input { - &:hover { - cursor: pointer; - } - } - } + .ff-icon { + height: 20px; + min-width: 20px; + min-height: 20px; + max-width: fit-content; + max-height: fit-content; + display: flex; + align-items: center; + justify-content: center; + } - .footer { - margin-top: 6px; - text-align: right; - color: $ff-grey-400; - font-size: 80%; - padding: 0 $ff-notifications-drawer-side-padding; - } + .title { + flex: 1; + transition: ease-in-out .3s; + margin: 0; + } + input { &:hover { - background-color: $ff-grey-100; + cursor: pointer; } - } - } - - .empty { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - color: $ff-grey-400; - width: 100%; + } + } + + .text { + display: flex; + margin: 10px 0; + align-items: center; + line-height: 1.5rem; + } + + .footer { + display: flex; + text-align: right; + color: $ff-grey-400; + font-size: 80%; + padding: 0 $ff-notifications-drawer-side-padding; + justify-content: flex-end; + } + } + + &:hover { background-color: $ff-grey-100; + } } - -} \ No newline at end of file + } + + .empty { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + color: $ff-grey-400; + width: 100%; + background-color: $ff-grey-100; + } + +} From 6401865877267e5d671c1f56ee2a3d788d39f96c Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 1 Oct 2024 16:16:11 +0300 Subject: [PATCH 118/185] styling ocs --- .../notifications/NotificationsDrawer.vue | 2 +- .../stylesheets/components/notifications.scss | 25 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/drawers/notifications/NotificationsDrawer.vue b/frontend/src/components/drawers/notifications/NotificationsDrawer.vue index 7923a06446..3f6bbcfa19 100644 --- a/frontend/src/components/drawers/notifications/NotificationsDrawer.vue +++ b/frontend/src/components/drawers/notifications/NotificationsDrawer.vue @@ -1,7 +1,7 @@