From c6e07ed414458dc6c9aa35d37366074968a76206 Mon Sep 17 00:00:00 2001
From: DEV_DSW <562304744@qq.com>
Date: Mon, 19 Jan 2026 16:16:56 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E5=A4=9A=E6=A0=87=E7=AD=BE=E5=88=87=E6=8D=A2=E6=96=B9=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
html/dialog.html | 16 -
html/home.html | 16 -
html/knowledge.html | 16 -
html/login.html | 16 -
html/setting.html | 16 -
html/task.html | 16 -
html/index.html => index.html | 0
package-lock.json | 596 +-------------------------
src/main/main.ts | 50 ++-
src/main/wins/dialog.ts | 49 ---
src/main/wins/index.ts | 9 -
src/main/wins/main.ts | 185 --------
src/main/wins/setting.ts | 20 -
src/renderer/App.vue | 6 +-
src/renderer/views/dialog/index.ts | 15 -
src/renderer/views/home/index.ts | 40 --
src/renderer/views/home/tab.ts | 40 --
src/renderer/views/knowledge/index.ts | 38 --
src/renderer/views/login/index.ts | 38 --
src/renderer/views/setting/index.ts | 15 -
src/renderer/views/task/index.ts | 38 --
vite.renderer.config.ts | 16 -
22 files changed, 42 insertions(+), 1209 deletions(-)
delete mode 100644 html/dialog.html
delete mode 100644 html/home.html
delete mode 100644 html/knowledge.html
delete mode 100644 html/login.html
delete mode 100644 html/setting.html
delete mode 100644 html/task.html
rename html/index.html => index.html (100%)
delete mode 100644 src/main/wins/dialog.ts
delete mode 100644 src/main/wins/index.ts
delete mode 100644 src/main/wins/main.ts
delete mode 100644 src/main/wins/setting.ts
delete mode 100644 src/renderer/views/dialog/index.ts
delete mode 100644 src/renderer/views/home/index.ts
delete mode 100644 src/renderer/views/home/tab.ts
delete mode 100644 src/renderer/views/knowledge/index.ts
delete mode 100644 src/renderer/views/login/index.ts
delete mode 100644 src/renderer/views/setting/index.ts
delete mode 100644 src/renderer/views/task/index.ts
diff --git a/html/dialog.html b/html/dialog.html
deleted file mode 100644
index f871326..0000000
--- a/html/dialog.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
diff --git a/html/home.html b/html/home.html
deleted file mode 100644
index f80b85e..0000000
--- a/html/home.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/html/knowledge.html b/html/knowledge.html
deleted file mode 100644
index efe804d..0000000
--- a/html/knowledge.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
diff --git a/html/login.html b/html/login.html
deleted file mode 100644
index a08a57f..0000000
--- a/html/login.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
diff --git a/html/setting.html b/html/setting.html
deleted file mode 100644
index 23e9991..0000000
--- a/html/setting.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
diff --git a/html/task.html b/html/task.html
deleted file mode 100644
index f4a25b3..0000000
--- a/html/task.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- NIANXX
-
-
-
-
-
-
-
-
diff --git a/html/index.html b/index.html
similarity index 100%
rename from html/index.html
rename to index.html
diff --git a/package-lock.json b/package-lock.json
index d9b8037..92f8598 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1501,99 +1501,6 @@
"node": ">=18"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
- "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
- "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
- "node_modules/@eslint/js": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
"node_modules/@exodus/schemasafe": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz",
@@ -1633,47 +1540,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
- "dev": true,
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.3",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "license": "Apache-2.0",
- "peer": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
- "dev": true,
- "license": "BSD-3-Clause",
- "peer": true
- },
"node_modules/@iconify-json/material-symbols": {
"version": "1.2.50",
"resolved": "https://registry.npmmirror.com/@iconify-json/material-symbols/-/material-symbols-1.2.50.tgz",
@@ -3270,14 +3136,6 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
- "dev": true,
- "license": "ISC",
- "peer": true
- },
"node_modules/@vitejs/plugin-vue": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.3.tgz",
@@ -3683,17 +3541,6 @@
"acorn": "^8.14.0"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -4738,14 +4585,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/defaults": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
@@ -4864,20 +4703,6 @@
"node": ">=8"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/dotenv": {
"version": "17.2.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
@@ -5901,6 +5726,7 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
+ "optional": true,
"engines": {
"node": ">=10"
},
@@ -5908,64 +5734,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.1",
- "@humanwhocodes/config-array": "^0.13.0",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -5993,75 +5761,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/eslint/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz",
@@ -6078,50 +5777,6 @@
"node": ">=0.10"
}
},
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
- "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "peer": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -6165,17 +5820,6 @@
"@types/estree": "^1.0.0"
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
@@ -6406,14 +6050,6 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"license": "MIT"
},
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
@@ -6476,20 +6112,6 @@
}
}
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
"node_modules/filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
@@ -6548,22 +6170,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
"node_modules/flatted": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
@@ -6908,37 +6514,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globals/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/globalthis": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
@@ -7022,14 +6597,6 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC"
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -7390,17 +6957,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-promise": {
"version": "2.2.2",
"resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz",
@@ -7583,14 +7139,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -7632,21 +7180,6 @@
"json-buffer": "3.0.1"
}
},
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/lightningcss": {
"version": "1.30.2",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
@@ -8097,14 +7630,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -8719,14 +8244,6 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/negotiator": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
@@ -9242,25 +8759,6 @@
"dev": true,
"license": "0BSD"
},
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/ora": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
@@ -9735,17 +9233,6 @@
"node": "^12.20.0 || >=14"
}
},
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/prettier": {
"version": "3.7.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
@@ -9820,17 +9307,6 @@
"once": "^1.3.1"
}
},
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/punycode.js": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -9901,16 +9377,6 @@
"safe-buffer": "^5.1.0"
}
},
- "node_modules/react": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
- "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/read-binary-file-arch": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz",
@@ -10885,20 +10351,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/strip-literal": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz",
@@ -11166,14 +10618,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/timers-ext": {
"version": "0.1.8",
"resolved": "https://registry.npmmirror.com/timers-ext/-/timers-ext-0.1.8.tgz",
@@ -11339,20 +10783,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/type-fest": {
"version": "0.21.3",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
@@ -11370,7 +10800,7 @@
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@@ -11572,17 +11002,6 @@
"browserslist": ">= 4.21.0"
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
"node_modules/username": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz",
@@ -11913,6 +11332,7 @@
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"license": "MIT",
+ "optional": true,
"engines": {
"node": ">=0.10.0"
}
@@ -12146,16 +11566,6 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
- },
- "node_modules/zod": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz",
- "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==",
- "license": "MIT",
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
}
}
}
diff --git a/src/main/main.ts b/src/main/main.ts
index 0c297dd..5cb11bc 100644
--- a/src/main/main.ts
+++ b/src/main/main.ts
@@ -1,9 +1,9 @@
import { app, BrowserWindow } from 'electron'
-import { setupWindows } from '@main/wins'
+import { CONFIG_KEYS } from '@common/constants'
import started from 'electron-squirrel-startup'
import configManager from '@main/service/config-service'
import logManager from '@main/service/logger'
-import { CONFIG_KEYS } from '@common/constants'
+import path from "path";
// Handle creating/removing shortcuts on Windows when installing/uninstalling.
if (started) {
@@ -18,19 +18,32 @@ process.on('unhandledRejection', (reason, promise) => {
logManager.error('unhandledRejection', reason, promise);
});
-// This method will be called when Electron has finished
-// initialization and is ready to create browser windows.
-// Some APIs can only be used after this event occurs.
-app.whenReady().then(() => {
- setupWindows();
-
- // On OS X it's common to re-create a window in the app when the
- // dock icon is clicked and there are no other windows open.
- app.on('activate', () => {
- if (BrowserWindow.getAllWindows().length === 0) {
- setupWindows();
- }
+const createWindow = () => {
+ // Create the browser window.
+ const mainWindow = new BrowserWindow({
+ width: 1920,
+ height: 1080,
+ autoHideMenuBar: true,
+ webPreferences: {
+ preload: path.join(__dirname, "preload.js"),
+ },
});
+
+ // and load the index.html of the app.
+ if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
+ mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL);
+ } else {
+ mainWindow.loadFile(
+ path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`)
+ );
+ }
+
+ // Open the DevTools.
+ mainWindow.webContents.openDevTools();
+};
+
+app.whenReady().then(() => {
+ createWindow();
});
// Quit when all windows are closed, except on macOS. There, it's common
@@ -43,5 +56,10 @@ app.on('window-all-closed', () => {
}
});
-// In this file you can include the rest of your app's specific main process
-// code. You can also put them in separate files and import them here.
+// On OS X it's common to re-create a window in the app when the
+// dock icon is clicked and there are no other windows open.
+app.on('activate', () => {
+ if (BrowserWindow.getAllWindows().length === 0) {
+ createWindow();
+ }
+});
diff --git a/src/main/wins/dialog.ts b/src/main/wins/dialog.ts
deleted file mode 100644
index 471517e..0000000
--- a/src/main/wins/dialog.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { IPC_EVENTS, WINDOW_NAMES } from '@common/constants'
-import { BrowserWindow, ipcMain } from 'electron'
-import { windowManager } from '@main/service/window-service'
-
-export function setupDialogWindow() {
- let dialogWindow: BrowserWindow | void;
- let params: CreateDialogProps | void
- let feedback: string | void
-
- ipcMain.handle(WINDOW_NAMES.DIALOG + 'get-params',(e)=>{
- if(BrowserWindow.fromWebContents(e.sender) !== dialogWindow) return
- return {
- winId: e.sender.id,
- ...params
- }
- });
-
- ['confirm','cancel'].forEach(_feedback => {
- ipcMain.on(WINDOW_NAMES.DIALOG + _feedback,(e,winId:number)=> {
- if(e.sender.id !== winId) return
- feedback = _feedback;
- windowManager.close(BrowserWindow.fromWebContents(e.sender));
- });
- });
-
- ipcMain.handle(`${IPC_EVENTS.OPEN_WINDOW}:${WINDOW_NAMES.DIALOG}`, (e, _params) => {
- params = _params;
- dialogWindow = windowManager.create(
- WINDOW_NAMES.DIALOG,
- {
- width: 350, height: 200,
- minWidth: 350, minHeight: 200,
- maxWidth: 400, maxHeight: 300,
- },
- {
- parent: BrowserWindow.fromWebContents(e.sender) as BrowserWindow,
- resizable: false
- }
- );
-
- return new Promise((resolve) => dialogWindow?.on('closed', () => {
- resolve(feedback);
- feedback = void 0;
- }))
- })
-
-}
-
-export default setupDialogWindow
diff --git a/src/main/wins/index.ts b/src/main/wins/index.ts
deleted file mode 100644
index 452cb34..0000000
--- a/src/main/wins/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { setupMainWindow } from './main';
-import { setupDialogWindow } from './dialog';
-import { setupSetttingWindow } from './setting';
-
-export function setupWindows() {
- setupMainWindow();
- setupSetttingWindow();
- setupDialogWindow();
-}
diff --git a/src/main/wins/main.ts b/src/main/wins/main.ts
deleted file mode 100644
index db307d9..0000000
--- a/src/main/wins/main.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-import type { BrowserWindow } from 'electron'
-import { ipcMain } from 'electron';
-import { WINDOW_NAMES, MAIN_WIN_SIZE, IPC_EVENTS, MENU_IDS, CONVERSATION_ITEM_MENU_IDS, CONVERSATION_LIST_MENU_IDS, MESSAGE_ITEM_MENU_IDS, CONFIG_KEYS } from '@common/constants'
-import { createProvider } from '../providers'
-import { windowManager } from '@main/service/window-service'
-import { menuManager } from '@main/service/menu-service'
-import { logManager } from '@main/service/logger'
-import { configManager } from '@main/service/config-service'
-import { trayManager } from '@main/service/tray-service'
-import { TabManager } from '@service/tab-manager'
-import path from 'node:path'
-
-const handleTray = (minimizeToTray: boolean) => {
- if (minimizeToTray) {
- trayManager.create();
- return;
- }
-
- trayManager.destroy();
-}
-
-const registerMenus = (window: BrowserWindow) => {
-
- const conversationItemMenuItemClick = (id: string) => {
- logManager.logUserOperation(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.CONVERSATION_ITEM}-${id}`)
- window.webContents.send(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.CONVERSATION_ITEM}`, id);
- }
-
- menuManager.register(MENU_IDS.CONVERSATION_ITEM, [
- {
- id: CONVERSATION_ITEM_MENU_IDS.PIN,
- label: 'menu.conversation.pinConversation',
- click: () => conversationItemMenuItemClick(CONVERSATION_ITEM_MENU_IDS.PIN)
- },
- {
- id: CONVERSATION_ITEM_MENU_IDS.RENAME,
- label: 'menu.conversation.renameConversation',
- click: () => conversationItemMenuItemClick(CONVERSATION_ITEM_MENU_IDS.RENAME)
- },
- {
- id: CONVERSATION_ITEM_MENU_IDS.DEL,
- label: 'menu.conversation.delConversation',
- click: () => conversationItemMenuItemClick(CONVERSATION_ITEM_MENU_IDS.DEL)
- },
- ])
-
- const conversationListMenuItemClick = (id: string) => {
- logManager.logUserOperation(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.CONVERSATION_LIST}-${id}`)
- window.webContents.send(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.CONVERSATION_LIST}`, id);
- }
-
- menuManager.register(MENU_IDS.CONVERSATION_LIST, [
- {
- id: CONVERSATION_LIST_MENU_IDS.NEW_CONVERSATION,
- label: 'menu.conversation.newConversation',
- click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.NEW_CONVERSATION)
- },
- { type: 'separator' },
- {
- id: CONVERSATION_LIST_MENU_IDS.SORT_BY, label: 'menu.conversation.sortBy', submenu: [
- { id: CONVERSATION_LIST_MENU_IDS.SORT_BY_CREATE_TIME, label: 'menu.conversation.sortByCreateTime', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_BY_CREATE_TIME) },
- { id: CONVERSATION_LIST_MENU_IDS.SORT_BY_UPDATE_TIME, label: 'menu.conversation.sortByUpdateTime', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_BY_UPDATE_TIME) },
- { id: CONVERSATION_LIST_MENU_IDS.SORT_BY_NAME, label: 'menu.conversation.sortByName', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_BY_NAME) },
- { id: CONVERSATION_LIST_MENU_IDS.SORT_BY_MODEL, label: 'menu.conversation.sortByModel', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_BY_MODEL) },
- { type: 'separator' },
- { id: CONVERSATION_LIST_MENU_IDS.SORT_ASCENDING, label: 'menu.conversation.sortAscending', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_ASCENDING) },
- { id: CONVERSATION_LIST_MENU_IDS.SORT_DESCENDING, label: 'menu.conversation.sortDescending', type: 'radio', checked: false, click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.SORT_DESCENDING) },
- ]
- },
- {
- id: CONVERSATION_LIST_MENU_IDS.BATCH_OPERATIONS,
- label: 'menu.conversation.batchOperations',
- click: () => conversationListMenuItemClick(CONVERSATION_LIST_MENU_IDS.BATCH_OPERATIONS)
- }
- ])
-
- const messageItemMenuItemClick = (id: string) => {
- logManager.logUserOperation(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.MESSAGE_ITEM}-${id}`)
- window.webContents.send(`${IPC_EVENTS.SHOW_CONTEXT_MENU}:${MENU_IDS.MESSAGE_ITEM}`, id);
- }
-
- menuManager.register(MENU_IDS.MESSAGE_ITEM, [
- {
- id: MESSAGE_ITEM_MENU_IDS.COPY,
- label: 'menu.message.copyMessage',
- click: () => messageItemMenuItemClick(MESSAGE_ITEM_MENU_IDS.COPY)
- },
- {
- id: MESSAGE_ITEM_MENU_IDS.SELECT,
- label: 'menu.message.selectMessage',
- click: () => messageItemMenuItemClick(MESSAGE_ITEM_MENU_IDS.SELECT)
- },
- { type: 'separator' },
- {
- id: MESSAGE_ITEM_MENU_IDS.DELETE,
- label: 'menu.message.deleteMessage',
- click: () => messageItemMenuItemClick(MESSAGE_ITEM_MENU_IDS.DELETE)
- },
- ])
-}
-
-export function setupMainWindow() {
- windowManager.onWindowCreate(WINDOW_NAMES.MAIN, (mainWindow) => {
- let minimizeToTray = configManager.get(CONFIG_KEYS.MINIMIZE_TO_TRAY);
- configManager.onConfigChange((config) => {
- if (minimizeToTray === config[CONFIG_KEYS.MINIMIZE_TO_TRAY]) return;
- minimizeToTray = config[CONFIG_KEYS.MINIMIZE_TO_TRAY];
- handleTray(minimizeToTray);
- });
- handleTray(minimizeToTray);
- registerMenus(mainWindow);
-
- const tabManager = new TabManager(mainWindow)
- tabManager.enable()
- let tabsInitialized = false
-
- mainWindow.on('closed', () => {
- tabManager.destroy()
- })
-
- const getPageUrl = (page: string) => {
- if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
- return `${MAIN_WINDOW_VITE_DEV_SERVER_URL}/html/${page}.html`
- }
- return `file://${path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/html/${page}.html`)}`
- }
-
- const initTabs = () => {
- if (tabsInitialized) return
- tabsInitialized = true
- tabManager.create(getPageUrl('home'), true)
- tabManager.create(getPageUrl('knowledge'), false)
- tabManager.create(getPageUrl('task'), false)
- tabManager.create(getPageUrl('setting'), false)
- }
-
- mainWindow.webContents.on('did-finish-load', () => {
- const url = mainWindow.webContents.getURL()
- const isDevRoot = MAIN_WINDOW_VITE_DEV_SERVER_URL && (url === MAIN_WINDOW_VITE_DEV_SERVER_URL || url === `${MAIN_WINDOW_VITE_DEV_SERVER_URL}/`)
- if (url.includes('/html/index.html') || url.endsWith('index.html') || isDevRoot) {
- initTabs()
- }
- })
- });
- windowManager.create(WINDOW_NAMES.MAIN, MAIN_WIN_SIZE);
-
- ipcMain.on(IPC_EVENTS.START_A_DIALOGUE, async (_event, props: CreateDialogueProps) => {
- const { providerName, messages, messageId, selectedModel } = props;
- const mainWindow = windowManager.get(WINDOW_NAMES.MAIN);
-
- if (!mainWindow) {
- throw new Error('mainWindow not found');
- }
-
- try {
-
- const provider = createProvider(providerName);
- const chunks = await provider?.chat(messages, selectedModel);
-
- if (!chunks) {
- throw new Error('chunks or stream not found');
- }
-
- for await (const chunk of chunks) {
- const chunkContent = {
- messageId,
- data: chunk
- }
- mainWindow.webContents.send(IPC_EVENTS.START_A_DIALOGUE + 'back' + messageId, chunkContent);
- }
-
- } catch (error) {
- const errorContent = {
- messageId,
- data: {
- isEnd: true,
- isError: true,
- result: error instanceof Error ? error.message : String(error),
- }
- }
-
- mainWindow.webContents.send(IPC_EVENTS.START_A_DIALOGUE + 'back' + messageId, errorContent);
- }
- })
-}
diff --git a/src/main/wins/setting.ts b/src/main/wins/setting.ts
deleted file mode 100644
index 2d1dee9..0000000
--- a/src/main/wins/setting.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { IPC_EVENTS, WINDOW_NAMES } from '@common/constants'
-import { ipcMain } from 'electron'
-import { windowManager } from '@main/service/window-service'
-
-export function setupSetttingWindow() {
- ipcMain.on(`${IPC_EVENTS.OPEN_WINDOW}:${WINDOW_NAMES.SETTING}`, () => {
- const settingWindow = windowManager.get(WINDOW_NAMES.SETTING);
- if (settingWindow && !settingWindow.isDestroyed())
- return windowManager.focus(settingWindow);
-
- windowManager.create(WINDOW_NAMES.SETTING, {
- width: 800,
- height: 600,
- minHeight: 600,
- minWidth: 800,
- });
- })
-}
-
-export default setupSetttingWindow;
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 6dd241c..5dad25a 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -1,5 +1,9 @@
-
+
+
+
+
+
diff --git a/src/renderer/views/dialog/index.ts b/src/renderer/views/dialog/index.ts
deleted file mode 100644
index a075b40..0000000
--- a/src/renderer/views/dialog/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import '@renderer/styles/index.css'
-
-import errorHandler from '@utils/errorHandler'
-import i18n from '@renderer/i18n'
-import HeaderBar from '@renderer/components/HeaderBar/index.vue'
-import DragRegion from '@renderer/components/DragRegion/index.vue'
-
-import Dialog from './index.vue'
-
-createApp(Dialog)
- .use(i18n)
- .use(errorHandler)
- .component('HeaderBar', HeaderBar)
- .component('DragRegion', DragRegion)
- .mount('#app')
diff --git a/src/renderer/views/home/index.ts b/src/renderer/views/home/index.ts
deleted file mode 100644
index 8ab2856..0000000
--- a/src/renderer/views/home/index.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { createApp, type Plugin } from "vue"
-import errorHandler from '@utils/errorHandler'
-
-// 引入 Element Plus 组件库
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-// 引入 i18n 插件
-import i18n from '@renderer/i18n'
-
-import Home from './index.vue'
-
-// 样式文件隔离
-import '@renderer/styles/index.css'
-import 'element-plus/dist/index.css'
-
-// 引入全局组件
-import HeaderBar from '@components/HeaderBar/index.vue'
-import DragRegion from '@components/DragRegion/index.vue'
-import Layout from '@components/Layout/index.vue'
-
-const components: Plugin = (app) => {
- app.component('HeaderBar', HeaderBar);
- app.component('DragRegion', DragRegion);
- app.component('Layout', Layout);
-}
-
-// 创建 Vue 应用实例
-const app = createApp(Home);
-const pinia = createPinia();
-
-// 使用 Pinia 状态管理
-app.use(pinia);
-app.use(ElementPlus, { locale })
-app.use(components)
-app.use(i18n)
-app.use(errorHandler)
-
-// 挂载应用到 DOM
-app.mount("#app");
diff --git a/src/renderer/views/home/tab.ts b/src/renderer/views/home/tab.ts
deleted file mode 100644
index 2d99fd3..0000000
--- a/src/renderer/views/home/tab.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { createApp, type Plugin } from "vue"
-import errorHandler from '@utils/errorHandler'
-
-// 引入 Element Plus 组件库
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-// 引入 i18n 插件
-import i18n from '@renderer/i18n'
-
-import Home from './HomeTab.vue'
-
-// 样式文件隔离
-import '@renderer/styles/index.css'
-import 'element-plus/dist/index.css'
-
-// 引入全局组件
-import HeaderBar from '@components/HeaderBar/index.vue'
-import DragRegion from '@components/DragRegion/index.vue'
-import Layout from '@components/Layout/index.vue'
-
-const components: Plugin = (app) => {
- app.component('HeaderBar', HeaderBar);
- app.component('DragRegion', DragRegion);
- app.component('Layout', Layout);
-}
-
-// 创建 Vue 应用实例
-const app = createApp(Home);
-const pinia = createPinia();
-
-// 使用 Pinia 状态管理
-app.use(pinia);
-app.use(ElementPlus, { locale })
-app.use(components)
-app.use(i18n)
-app.use(errorHandler)
-
-// 挂载应用到 DOM
-app.mount("#app");
diff --git a/src/renderer/views/knowledge/index.ts b/src/renderer/views/knowledge/index.ts
deleted file mode 100644
index a87565b..0000000
--- a/src/renderer/views/knowledge/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { createApp, type Plugin } from "vue"
-import errorHandler from '@utils/errorHandler'
-
-// 引入 Element Plus 组件库
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-// 引入 i18n 插件
-import i18n from '@renderer/i18n'
-
-import Knowledge from './index.vue'
-
-// 样式文件隔离
-import '@renderer/styles/index.css'
-import 'element-plus/dist/index.css'
-
-// 引入全局组件
-import HeaderBar from '@components/HeaderBar/index.vue'
-import DragRegion from '@components/DragRegion/index.vue'
-
-const components: Plugin = (app) => {
- app.component('HeaderBar', HeaderBar);
- app.component('DragRegion', DragRegion);
-}
-
-// 创建 Vue 应用实例
-const app = createApp(Knowledge);
-const pinia = createPinia();
-
-// 使用 Pinia 状态管理
-app.use(pinia);
-app.use(ElementPlus, { locale })
-app.use(components)
-app.use(i18n)
-app.use(errorHandler)
-
-// 挂载应用到 DOM
-app.mount("#app");
diff --git a/src/renderer/views/login/index.ts b/src/renderer/views/login/index.ts
deleted file mode 100644
index b5ad8d5..0000000
--- a/src/renderer/views/login/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { createApp, type Plugin } from "vue"
-import errorHandler from '@utils/errorHandler'
-
-// 引入 Element Plus 组件库
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-// 引入 i18n 插件
-import i18n from '@renderer/i18n'
-
-import Login from './index.vue'
-
-// 样式文件隔离
-import '@renderer/styles/index.css'
-import 'element-plus/dist/index.css'
-
-// 引入全局组件
-import HeaderBar from '@components/HeaderBar/index.vue'
-import DragRegion from '@components/DragRegion/index.vue'
-
-const components: Plugin = (app) => {
- app.component('HeaderBar', HeaderBar);
- app.component('DragRegion', DragRegion);
-}
-
-// 创建 Vue 应用实例
-const app = createApp(Login);
-const pinia = createPinia();
-
-// 使用 Pinia 状态管理
-app.use(pinia);
-app.use(ElementPlus, { locale })
-app.use(components)
-app.use(i18n)
-app.use(errorHandler)
-
-// 挂载应用到 DOM
-app.mount("#app");
diff --git a/src/renderer/views/setting/index.ts b/src/renderer/views/setting/index.ts
deleted file mode 100644
index d035fe4..0000000
--- a/src/renderer/views/setting/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import '@renderer/styles/index.css'
-
-import errorHandler from '@renderer/utils/errorHandler'
-import i18n from '@renderer/i18n'
-import HeaderBar from '@renderer/components/HeaderBar/index.vue'
-import DragRegion from '@renderer/components/DragRegion/index.vue'
-
-import Setting from './index.vue'
-
-createApp(Setting)
- .use(i18n)
- .use(errorHandler)
- .component('HeaderBar', HeaderBar)
- .component('DragRegion', DragRegion)
- .mount('#app')
diff --git a/src/renderer/views/task/index.ts b/src/renderer/views/task/index.ts
deleted file mode 100644
index 2f8aae4..0000000
--- a/src/renderer/views/task/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { createApp, type Plugin } from "vue"
-import errorHandler from '@utils/errorHandler'
-
-// 引入 Element Plus 组件库
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-// 引入 i18n 插件
-import i18n from '@renderer/i18n'
-
-import Task from './index.vue'
-
-// 样式文件隔离
-import '@renderer/styles/index.css'
-import 'element-plus/dist/index.css'
-
-// 引入全局组件
-import HeaderBar from '@components/HeaderBar/index.vue'
-import DragRegion from '@components/DragRegion/index.vue'
-
-const components: Plugin = (app) => {
- app.component('HeaderBar', HeaderBar);
- app.component('DragRegion', DragRegion);
-}
-
-// 创建 Vue 应用实例
-const app = createApp(Task);
-const pinia = createPinia();
-
-// 使用 Pinia 状态管理
-app.use(pinia);
-app.use(ElementPlus, { locale })
-app.use(components)
-app.use(i18n)
-app.use(errorHandler)
-
-// 挂载应用到 DOM
-app.mount("#app");
diff --git a/vite.renderer.config.ts b/vite.renderer.config.ts
index fd42ba1..ab6afd6 100644
--- a/vite.renderer.config.ts
+++ b/vite.renderer.config.ts
@@ -16,22 +16,6 @@ export default defineConfig(async () => {
css: {
transformer: 'lightningcss' as CSSOptions['transformer'],
},
-
- build: {
- target: 'es2022',
- publicDir: 'public',
- rollupOptions: {
- input: [
- resolve(__dirname, 'html/index.html'),
- resolve(__dirname, 'html/dialog.html'),
- resolve(__dirname, 'html/setting.html'),
- resolve(__dirname, 'html/login.html'),
- resolve(__dirname, 'html/home.html'),
- resolve(__dirname, 'html/task.html'),
- resolve(__dirname, 'html/knowledge.html'),
- ]
- }
- },
resolve: {
alias: {