diff --git a/web/package.json b/web/package.json index 1755b09c4..b4ac78d64 100644 --- a/web/package.json +++ b/web/package.json @@ -26,6 +26,7 @@ "json-bigint": "^1.0.0", "lodash-id": "^0.14.0", "lowdb": "^1.0.0", + "markdown-it": "^14.1.0", "moment": "^2.29.4", "monaco-editor": "^0.25.2", "mqtt": "4.3.7", @@ -50,6 +51,7 @@ "@types/json-bigint": "^1.0.4", "@types/lodash": "^4.14.142", "@types/lowdb": "^1.0.9", + "@types/markdown-it": "^14.1.1", "@types/mocha": "^5.2.7", "@types/node": "14.0.27", "@types/ws": "^8.5.3", @@ -70,6 +72,7 @@ "http-server": "^14.1.1", "monaco-editor-webpack-plugin": "^4.0.0", "prettier": "^2.0.5", + "raw-loader": "^4.0.2", "sass": "1.32.13", "sass-loader": "^10.1.1", "typescript": "^3.7.4", diff --git a/web/src/assets/doc/policy/data-collection-en.md b/web/src/assets/doc/policy/data-collection-en.md new file mode 100644 index 000000000..0e231fbe1 --- /dev/null +++ b/web/src/assets/doc/policy/data-collection-en.md @@ -0,0 +1,10 @@ +# Data Collection Disclaimer + +We prioritize your data privacy and security. Please note the following: + +* All configuration data is processed locally on your machine and never leaves your browser. +* Any topic and message data is solely related to the MQTT Broker you are connected to. +* We do not perform any cloud operations or data processing. +* We use Google Tag Manager (GTM) and Google Analytics (GA) only to collect page visit metrics, and no user privacy data is involved. + +Thank you for your trust and support. diff --git a/web/src/assets/doc/policy/data-collection-ja.md b/web/src/assets/doc/policy/data-collection-ja.md new file mode 100644 index 000000000..78518806a --- /dev/null +++ b/web/src/assets/doc/policy/data-collection-ja.md @@ -0,0 +1,10 @@ +# データ収集の免責事項 + +お客様のデータプライバシーとセキュリティを最優先に考えています。以下をご注意ください: + +* すべての設定データはお客様の端末でローカルに処理され、ブラウザから外部に送信されることはありません。 +* トピックやメッセージデータは、接続しているMQTTブローカーに関連するものです。 +* クラウド操作やデータ処理は行っていません。 +* Google Tag Manager(GTM)とGoogle Analytics(GA)を使用してページ訪問メトリクスを収集していますが、ユーザープライバシーデータは関与していません。 + +ご信頼とサポートありがとうございます。 diff --git a/web/src/assets/doc/policy/data-collection-zh.md b/web/src/assets/doc/policy/data-collection-zh.md new file mode 100644 index 000000000..9ffe43b36 --- /dev/null +++ b/web/src/assets/doc/policy/data-collection-zh.md @@ -0,0 +1,10 @@ +# 数据收集声明 + +我们重视您的数据隐私和安全。请注意以下几点: + +* 所有配置数据均在您的机器上本地处理,数据不会离开您的浏览器。 +* 任何主题和消息数据仅与您连接的 MQTT Broker 相关。 +* 我们不进行任何云端操作或数据处理。 +* 我们使用 Google Tag Manager (GTM) 和 Google Analytics (GA) 仅收集页面访问指标,不涉及任何用户隐私数据。 + +感谢您的信任与支持。 diff --git a/web/src/components/DataCollectionPolicy.vue b/web/src/components/DataCollectionPolicy.vue new file mode 100644 index 000000000..3d08f6e5f --- /dev/null +++ b/web/src/components/DataCollectionPolicy.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/web/src/lang/about.ts b/web/src/lang/about.ts index bc4c4d53e..e11622286 100644 --- a/web/src/lang/about.ts +++ b/web/src/lang/about.ts @@ -19,6 +19,11 @@ export default { en: 'Support', ja: 'サポート', }, + dataCollectionPolicy: { + zh: '数据收集政策', + en: 'Data Collection Policy', + ja: 'データ収集ポリシー', + }, releases: { zh: '更新日志', en: 'Releases', diff --git a/web/src/types/locale.d.ts b/web/src/types/locale.d.ts index 5e866a59a..5a33d4d89 100644 --- a/web/src/types/locale.d.ts +++ b/web/src/types/locale.d.ts @@ -11,3 +11,8 @@ declare module '*.json' { const value: any export default value } + +declare module '*.md' { + const value: string + export default value +} diff --git a/web/src/views/about/index.vue b/web/src/views/about/index.vue index 3628171c0..b59ff5497 100644 --- a/web/src/views/about/index.vue +++ b/web/src/views/about/index.vue @@ -15,6 +15,9 @@ {{ $t('about.support') }} + + {{ $t('about.dataCollectionPolicy') }} +

{{ $t('about.mqttxDesc') }}

@@ -69,14 +72,21 @@
+ + diff --git a/web/vue.config.js b/web/vue.config.js index 41c490f5e..5ae68e8df 100644 --- a/web/vue.config.js +++ b/web/vue.config.js @@ -54,5 +54,18 @@ module.exports = { ], }), ], + module: { + rules: [ + { + test: /\.mjs$/, + include: /node_modules/, + type: 'javascript/auto', + }, + { + test: /\.md$/, + use: 'raw-loader', + }, + ], + }, }, } diff --git a/web/yarn.lock b/web/yarn.lock index e173a7148..c64a4a3a5 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -1018,6 +1018,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/linkify-it@^5": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== + "@types/lodash@*", "@types/lodash@^4.14.142": version "4.14.182" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" @@ -1030,6 +1035,19 @@ dependencies: "@types/lodash" "*" +"@types/markdown-it@^14.1.1": + version "14.1.1" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.1.tgz#06bafb7a4e3f77b62b1f308acf7df76687887e0b" + integrity sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" + +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== + "@types/minimatch@*": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -1740,6 +1758,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3778,6 +3801,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -5957,6 +5985,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" @@ -6244,6 +6279,18 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -6263,6 +6310,11 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -7836,6 +7888,11 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -7936,6 +7993,14 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + read-pkg@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -9438,6 +9503,11 @@ typescript@^3.7.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + uglify-js@3.4.x: version "3.4.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"