diff --git a/package.json b/package.json
index 32109138..5e944acf 100644
--- a/package.json
+++ b/package.json
@@ -28,16 +28,18 @@
"@huggingface/transformers": "^3.1.1",
"@mlc-ai/web-tokenizers": "^0.1.2",
"@risuai/ccardlib": "^0.4.1",
+ "@rollup/rollup-win32-arm64-msvc": "^4.40.1",
"@smithy/protocol-http": "^3.0.12",
"@smithy/signature-v4": "^2.0.19",
"@tauri-apps/api": "2.0.0",
+ "@tauri-apps/cli-win32-arm64-msvc": "^2.5.0",
"@tauri-apps/plugin-deep-link": "~2",
"@tauri-apps/plugin-dialog": "~2",
"@tauri-apps/plugin-fs": "~2",
"@tauri-apps/plugin-http": "~2",
"@tauri-apps/plugin-os": "~2",
"@tauri-apps/plugin-process": "~2",
- "@tauri-apps/plugin-shell": "~2",
+ "@tauri-apps/plugin-shell": "2.2.1",
"@tauri-apps/plugin-updater": "~2",
"@types/markdown-it": "^14.1.1",
"blueimp-md5": "^2.19.0",
@@ -49,7 +51,7 @@
"cors": "^2.8.5",
"crc": "^4.3.2",
"diff": "^7.0.0",
- "dompurify": "^3.0.8",
+ "dompurify": "^3.2.5",
"eventsource-parser": "^1.1.2",
"exifr": "^7.1.3",
"express": "^4.18.2",
@@ -58,7 +60,6 @@
"gpt3-tokenizer": "^1.1.5",
"highlight.js": "^11.9.0",
"html-to-image": "^1.11.11",
- "isomorphic-dompurify": "^1.13.0",
"jszip": "^3.10.1",
"libsodium-wrappers-sumo": "^0.7.13",
"localforage": "^1.10.0",
@@ -69,7 +70,6 @@
"mnemonist": "^0.40.3",
"mobile-drag-drop": "3.0.0-rc.0",
"msgpackr": "1.10.1",
- "node-fetch": "2",
"node-html-parser": "^6.1.12",
"ollama": "^0.5.0",
"pdfjs-dist": "^4.0.379",
@@ -103,7 +103,6 @@
"@types/blueimp-md5": "^2.18.2",
"@types/codemirror": "^5.60.15",
"@types/diff": "^6.0.0",
- "@types/dompurify": "^3.0.5",
"@types/libsodium-wrappers-sumo": "^0.7.8",
"@types/lodash": "^4.14.202",
"@types/lodash.isequal": "^4.5.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c460c2c9..71ece55d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -44,6 +44,9 @@ importers:
'@risuai/ccardlib':
specifier: ^0.4.1
version: 0.4.1
+ '@rollup/rollup-win32-arm64-msvc':
+ specifier: ^4.40.1
+ version: 4.40.1
'@smithy/protocol-http':
specifier: ^3.0.12
version: 3.0.12
@@ -53,6 +56,9 @@ importers:
'@tauri-apps/api':
specifier: 2.0.0
version: 2.0.0
+ '@tauri-apps/cli-win32-arm64-msvc':
+ specifier: ^2.5.0
+ version: 2.5.0
'@tauri-apps/plugin-deep-link':
specifier: ~2
version: 2.0.0
@@ -72,8 +78,8 @@ importers:
specifier: ~2
version: 2.0.0
'@tauri-apps/plugin-shell':
- specifier: ~2
- version: 2.0.0
+ specifier: 2.2.1
+ version: 2.2.1
'@tauri-apps/plugin-updater':
specifier: ~2
version: 2.0.0
@@ -108,8 +114,8 @@ importers:
specifier: ^7.0.0
version: 7.0.0
dompurify:
- specifier: ^3.0.8
- version: 3.0.8
+ specifier: ^3.2.5
+ version: 3.2.5
eventsource-parser:
specifier: ^1.1.2
version: 1.1.2
@@ -134,9 +140,6 @@ importers:
html-to-image:
specifier: ^1.11.11
version: 1.11.11
- isomorphic-dompurify:
- specifier: ^1.13.0
- version: 1.13.0(canvas@2.11.2)
jszip:
specifier: ^3.10.1
version: 3.10.1
@@ -158,15 +161,15 @@ importers:
ml-distance:
specifier: ^4.0.1
version: 4.0.1
+ mnemonist:
+ specifier: ^0.40.3
+ version: 0.40.3
mobile-drag-drop:
specifier: 3.0.0-rc.0
version: 3.0.0-rc.0
msgpackr:
specifier: 1.10.1
version: 1.10.1
- node-fetch:
- specifier: '2'
- version: 2.7.0
node-html-parser:
specifier: ^6.1.12
version: 6.1.12
@@ -261,9 +264,6 @@ importers:
'@types/diff':
specifier: ^6.0.0
version: 6.0.0
- '@types/dompurify':
- specifier: ^3.0.5
- version: 3.0.5
'@types/libsodium-wrappers-sumo':
specifier: ^0.7.8
version: 0.7.8
@@ -344,9 +344,6 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@asamuzakjp/dom-selector@2.0.2':
- resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==}
-
'@aws-crypto/crc32@3.0.0':
resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
@@ -978,6 +975,10 @@ packages:
cpu: [arm64]
os: [win32]
+ '@rollup/rollup-win32-arm64-msvc@4.40.1':
+ resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==}
+ os: [win32]
+
'@rollup/rollup-win32-ia32-msvc@4.24.0':
resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
cpu: [ia32]
@@ -1173,6 +1174,11 @@ packages:
cpu: [arm64]
os: [win32]
+ '@tauri-apps/cli-win32-arm64-msvc@2.5.0':
+ resolution: {integrity: sha512-pFSHFK6b+o9y4Un8w0gGLwVyFTZaC3P0kQ7umRt/BLDkzD5RnQ4vBM7CF8BCU5nkwmEBUCZd7Wt3TWZxe41o6Q==}
+ engines: {node: '>= 10'}
+ os: [win32]
+
'@tauri-apps/cli-win32-ia32-msvc@2.0.2':
resolution: {integrity: sha512-axgICLunFi0To3EibdCBgbST5RocsSmtM4c04+CbcX8WQQosJ9ziWlCSrrOTRr+gJERAMSvEyVUS98f6bWMw9A==}
engines: {node: '>= 10'}
@@ -1208,8 +1214,8 @@ packages:
'@tauri-apps/plugin-process@2.0.0':
resolution: {integrity: sha512-OYzi0GnkrF4NAnsHZU7U3tjSoP0PbeAlO7T1Z+vJoBUH9sFQ1NSLqWYWQyf8hcb3gVWe7P1JggjiskO+LST1ug==}
- '@tauri-apps/plugin-shell@2.0.0':
- resolution: {integrity: sha512-OpW2+ycgJLrEoZityWeWYk+6ZWP9VyiAfbO+N/O8VfLkqyOym8kXh7odKDfINx9RAotkSGBtQM4abyKfJDkcUg==}
+ '@tauri-apps/plugin-shell@2.2.1':
+ resolution: {integrity: sha512-G1GFYyWe/KlCsymuLiNImUgC8zGY0tI0Y3p8JgBCWduR5IEXlIJS+JuG1qtveitwYXlfJrsExt3enhv5l2/yhA==}
'@tauri-apps/plugin-updater@2.0.0':
resolution: {integrity: sha512-N0cl71g7RPr7zK2Fe5aoIwzw14NcdLcz7XMGFWZVjprsqgDRWoxbnUkknyCQMZthjhGkppCd/wN2MIsUz+eAhQ==}
@@ -1247,9 +1253,6 @@ packages:
'@types/diff@6.0.0':
resolution: {integrity: sha512-dhVCYGv3ZSbzmQaBSagrv1WJ6rXCdkyTcDyoNu1MD8JohI7pR7k8wdZEm+mvdxRKXyHVwckFzWU1vJc+Z29MlA==}
- '@types/dompurify@3.0.5':
- resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==}
-
'@types/emscripten@1.39.10':
resolution: {integrity: sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==}
@@ -1368,10 +1371,6 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
- agent-base@7.1.0:
- resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
- engines: {node: '>= 14'}
-
aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
@@ -1444,9 +1443,6 @@ packages:
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
engines: {node: '>=8'}
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
at-least-node@1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
@@ -1471,9 +1467,6 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- bidi-js@1.0.3:
- resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
-
big-integer@1.6.52:
resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
engines: {node: '>=0.6'}
@@ -1640,10 +1633,6 @@ packages:
colord@2.9.3:
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
@@ -1788,10 +1777,6 @@ packages:
css-select@5.1.0:
resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
- css-tree@2.3.1:
- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
-
css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
@@ -1801,18 +1786,10 @@ packages:
engines: {node: '>=4'}
hasBin: true
- cssstyle@4.0.1:
- resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
- engines: {node: '>=18'}
-
dargs@7.0.0:
resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
engines: {node: '>=8'}
- data-urls@5.0.0:
- resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
- engines: {node: '>=18'}
-
dateformat@3.0.3:
resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
@@ -1858,9 +1835,6 @@ packages:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
- decimal.js@10.4.3:
- resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
-
decompress-response@4.2.1:
resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==}
engines: {node: '>=8'}
@@ -1893,10 +1867,6 @@ packages:
resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==}
engines: {node: '>=10'}
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
@@ -1955,8 +1925,8 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
- dompurify@3.0.8:
- resolution: {integrity: sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==}
+ dompurify@3.2.5:
+ resolution: {integrity: sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==}
domutils@2.8.0:
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
@@ -2116,10 +2086,6 @@ packages:
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
engines: {node: '>=14'}
- form-data@4.0.0:
- resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
- engines: {node: '>= 6'}
-
formidable@1.2.6:
resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==}
deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau'
@@ -2291,10 +2257,6 @@ packages:
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
engines: {node: '>=10'}
- html-encoding-sniffer@4.0.0:
- resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
- engines: {node: '>=18'}
-
html-to-image@1.11.11:
resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==}
@@ -2302,18 +2264,10 @@ packages:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
- http-proxy-agent@7.0.0:
- resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
- engines: {node: '>= 14'}
-
https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
- https-proxy-agent@7.0.2:
- resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
- engines: {node: '>= 14'}
-
human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
@@ -2322,10 +2276,6 @@ packages:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -2433,9 +2383,6 @@ packages:
resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
engines: {node: '>=0.10.0'}
- is-potential-custom-element-name@1.0.1:
- resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
-
is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
@@ -2457,10 +2404,6 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- isomorphic-dompurify@1.13.0:
- resolution: {integrity: sha512-9qOYGngy9ZR9JB/iLmr7SViPSZ7uWGvepdnLaXYznbTxvJOCuONneKajJ54f+IRQpvL8608ylUy9EK1iPtL3Ag==}
- engines: {node: '>=18'}
-
jackspeak@2.3.6:
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
engines: {node: '>=14'}
@@ -2472,15 +2415,6 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- jsdom@23.2.0:
- resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==}
- engines: {node: '>=18'}
- peerDependencies:
- canvas: ^2.11.2
- peerDependenciesMeta:
- canvas:
- optional: true
-
json-parse-better-errors@1.0.2:
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
@@ -2612,9 +2546,6 @@ packages:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
- mdn-data@2.0.30:
- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
@@ -2756,6 +2687,9 @@ packages:
ml-tree-similarity@1.0.0:
resolution: {integrity: sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg==}
+ mnemonist@0.40.3:
+ resolution: {integrity: sha512-Vjyr90sJ23CKKH/qPAgUKicw/v6pRoamxIEDFOF8uSgFME7DqPRpHgRTejWVjkdGg5dXj0/NyxZHZ9bcjH+2uQ==}
+
mobile-drag-drop@3.0.0-rc.0:
resolution: {integrity: sha512-f8wIDTbBYLBW/+5sei1cqUE+StyDpf/LP+FRZELlVX6tmOOmELk84r3wh1z3woxCB9G5octhF06K5COvFjGgqg==}
@@ -2900,6 +2834,9 @@ packages:
object-inspect@1.13.1:
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ obliterator@2.0.5:
+ resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==}
+
ollama@0.5.0:
resolution: {integrity: sha512-CRtRzsho210EGdK52GrUMohA2pU+7NbgEaBG3DcYeRmvQthDO7E2LHOkLlUUeaYUlNmEd8icbjC02ug9meSYnw==}
@@ -2979,9 +2916,6 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
- parse5@7.1.2:
- resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
-
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
@@ -3158,9 +3092,6 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
- psl@1.9.0:
- resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
-
pstree.remy@1.1.8:
resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
@@ -3171,10 +3102,6 @@ packages:
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
engines: {node: '>=6'}
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
q@1.5.1:
resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
@@ -3183,9 +3110,6 @@ packages:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
- querystringify@2.2.0:
- resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
-
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -3262,16 +3186,9 @@ packages:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
- require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
-
require-main-filename@2.0.0:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
- requires-port@1.0.0:
- resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
-
resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -3306,9 +3223,6 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
- rrweb-cssom@0.6.0:
- resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
-
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -3331,10 +3245,6 @@ packages:
sax@1.3.0:
resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
- saxes@6.0.0:
- resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
- engines: {node: '>=v12.22.7'}
-
sdp@3.2.0:
resolution: {integrity: sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==}
@@ -3609,9 +3519,6 @@ packages:
resolution: {integrity: sha512-nzq+PPKGS2PoEWDjAcXSrKSbXmmmOAxd6dAz1IhRusUpVkFS6DMELWPyBPGwu6TpO/gsgtFXwX0M4+pAR5gzKw==}
engines: {node: '>=18'}
- symbol-tree@3.2.4:
- resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
-
tailwindcss@3.4.1:
resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
engines: {node: '>=14.0.0'}
@@ -3688,17 +3595,9 @@ packages:
resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
hasBin: true
- tough-cookie@4.1.3:
- resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
- engines: {node: '>=6'}
-
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- tr46@5.0.0:
- resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
- engines: {node: '>=18'}
-
tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
hasBin: true
@@ -3776,10 +3675,6 @@ packages:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
engines: {node: '>=8'}
- universalify@0.2.0:
- resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
- engines: {node: '>= 4.0.0'}
-
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
@@ -3798,9 +3693,6 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
- url-parse@1.5.10:
- resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
-
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -3875,10 +3767,6 @@ packages:
vite:
optional: true
- w3c-xmlserializer@5.0.0:
- resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
- engines: {node: '>=18'}
-
wasmoon@1.16.0:
resolution: {integrity: sha512-FlRLb15WwAOz1A9OQDbf6oOKKSiefi5VK0ZRF2wgH9xk3o5SnU11tNPaOnQuAh1Ucr66cwwvVXaeVRaFdRBt5g==}
hasBin: true
@@ -3895,29 +3783,13 @@ packages:
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- webidl-conversions@7.0.0:
- resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
- engines: {node: '>=12'}
-
webrtc-adapter@8.2.3:
resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==}
engines: {node: '>=6.0.0', npm: '>=3.10.0'}
- whatwg-encoding@3.1.1:
- resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
- engines: {node: '>=18'}
-
whatwg-fetch@3.6.20:
resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
- whatwg-mimetype@4.0.0:
- resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
- engines: {node: '>=18'}
-
- whatwg-url@14.0.0:
- resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
- engines: {node: '>=18'}
-
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
@@ -3950,18 +3822,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- ws@8.16.0:
- resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
xcode@3.0.1:
resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
engines: {node: '>=10.0.0'}
@@ -3970,10 +3830,6 @@ packages:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
- xml-name-validator@5.0.0:
- resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
- engines: {node: '>=18'}
-
xml2js@0.5.0:
resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==}
engines: {node: '>=4.0.0'}
@@ -3986,9 +3842,6 @@ packages:
resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==}
engines: {node: '>=8.0'}
- xmlchars@2.2.0:
- resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
-
xpath@0.0.27:
resolution: {integrity: sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==}
engines: {node: '>=0.6.0'}
@@ -4065,12 +3918,6 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- '@asamuzakjp/dom-selector@2.0.2':
- dependencies:
- bidi-js: 1.0.3
- css-tree: 2.3.1
- is-potential-custom-element-name: 1.0.1
-
'@aws-crypto/crc32@3.0.0':
dependencies:
'@aws-crypto/util': 3.0.0
@@ -4650,6 +4497,8 @@ snapshots:
'@rollup/rollup-win32-arm64-msvc@4.24.0':
optional: true
+ '@rollup/rollup-win32-arm64-msvc@4.40.1': {}
+
'@rollup/rollup-win32-ia32-msvc@4.24.0':
optional: true
@@ -4818,6 +4667,8 @@ snapshots:
'@tauri-apps/cli-win32-arm64-msvc@2.0.2':
optional: true
+ '@tauri-apps/cli-win32-arm64-msvc@2.5.0': {}
+
'@tauri-apps/cli-win32-ia32-msvc@2.0.2':
optional: true
@@ -4861,7 +4712,7 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.0.0
- '@tauri-apps/plugin-shell@2.0.0':
+ '@tauri-apps/plugin-shell@2.2.1':
dependencies:
'@tauri-apps/api': 2.0.0
@@ -4928,10 +4779,6 @@ snapshots:
'@types/diff@6.0.0': {}
- '@types/dompurify@3.0.5':
- dependencies:
- '@types/trusted-types': 2.0.7
-
'@types/emscripten@1.39.10': {}
'@types/estree@1.0.5': {}
@@ -4994,7 +4841,8 @@ snapshots:
lil-gui: 0.17.0
meshoptimizer: 0.18.1
- '@types/trusted-types@2.0.7': {}
+ '@types/trusted-types@2.0.7':
+ optional: true
'@types/uuid@9.0.7': {}
@@ -5039,12 +4887,6 @@ snapshots:
- supports-color
optional: true
- agent-base@7.1.0:
- dependencies:
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
-
aggregate-error@3.1.0:
dependencies:
clean-stack: 2.2.0
@@ -5100,8 +4942,6 @@ snapshots:
astral-regex@2.0.0: {}
- asynckit@0.4.0: {}
-
at-least-node@1.0.0: {}
autoprefixer@10.4.16(postcss@8.4.33):
@@ -5122,10 +4962,6 @@ snapshots:
base64-js@1.5.1: {}
- bidi-js@1.0.3:
- dependencies:
- require-from-string: 2.0.2
-
big-integer@1.6.52: {}
binary-extensions@2.2.0: {}
@@ -5347,10 +5183,6 @@ snapshots:
colord@2.9.3: {}
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
commander@4.1.1: {}
commander@8.3.0: {}
@@ -5527,26 +5359,12 @@ snapshots:
domutils: 3.1.0
nth-check: 2.1.1
- css-tree@2.3.1:
- dependencies:
- mdn-data: 2.0.30
- source-map-js: 1.0.2
-
css-what@6.1.0: {}
cssesc@3.0.0: {}
- cssstyle@4.0.1:
- dependencies:
- rrweb-cssom: 0.6.0
-
dargs@7.0.0: {}
- data-urls@5.0.0:
- dependencies:
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.0.0
-
dateformat@3.0.3: {}
debug@2.6.9:
@@ -5574,8 +5392,6 @@ snapshots:
decamelize@1.2.0: {}
- decimal.js@10.4.3: {}
-
decompress-response@4.2.1:
dependencies:
mimic-response: 2.1.0
@@ -5612,8 +5428,6 @@ snapshots:
rimraf: 3.0.2
slash: 3.0.0
- delayed-stream@1.0.0: {}
-
delegates@1.0.0:
optional: true
@@ -5661,7 +5475,9 @@ snapshots:
dependencies:
domelementtype: 2.3.0
- dompurify@3.0.8: {}
+ dompurify@3.2.5:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
domutils@2.8.0:
dependencies:
@@ -5870,12 +5686,6 @@ snapshots:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- form-data@4.0.0:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.35
-
formidable@1.2.6: {}
forwarded@0.2.0: {}
@@ -6062,10 +5872,6 @@ snapshots:
dependencies:
lru-cache: 6.0.0
- html-encoding-sniffer@4.0.0:
- dependencies:
- whatwg-encoding: 3.1.1
-
html-to-image@1.11.11: {}
http-errors@2.0.0:
@@ -6076,13 +5882,6 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
- http-proxy-agent@7.0.0:
- dependencies:
- agent-base: 7.1.0
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
-
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
@@ -6091,23 +5890,12 @@ snapshots:
- supports-color
optional: true
- https-proxy-agent@7.0.2:
- dependencies:
- agent-base: 7.1.0
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
-
human-signals@2.1.0: {}
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
ieee754@1.2.1: {}
ignore-by-default@1.0.1: {}
@@ -6182,8 +5970,6 @@ snapshots:
is-plain-obj@1.1.0: {}
- is-potential-custom-element-name@1.0.1: {}
-
is-reference@3.0.2:
dependencies:
'@types/estree': 1.0.6
@@ -6202,17 +5988,6 @@ snapshots:
isexe@2.0.0: {}
- isomorphic-dompurify@1.13.0(canvas@2.11.2):
- dependencies:
- '@types/dompurify': 3.0.5
- dompurify: 3.0.8
- jsdom: 23.2.0(canvas@2.11.2)
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - utf-8-validate
-
jackspeak@2.3.6:
dependencies:
'@isaacs/cliui': 8.0.2
@@ -6223,36 +5998,6 @@ snapshots:
js-tokens@4.0.0: {}
- jsdom@23.2.0(canvas@2.11.2):
- dependencies:
- '@asamuzakjp/dom-selector': 2.0.2
- cssstyle: 4.0.1
- data-urls: 5.0.0
- decimal.js: 10.4.3
- form-data: 4.0.0
- html-encoding-sniffer: 4.0.0
- http-proxy-agent: 7.0.0
- https-proxy-agent: 7.0.2
- is-potential-custom-element-name: 1.0.1
- parse5: 7.1.2
- rrweb-cssom: 0.6.0
- saxes: 6.0.0
- symbol-tree: 3.2.4
- tough-cookie: 4.1.3
- w3c-xmlserializer: 5.0.0
- webidl-conversions: 7.0.0
- whatwg-encoding: 3.1.1
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.0.0
- ws: 8.16.0
- xml-name-validator: 5.0.0
- optionalDependencies:
- canvas: 2.11.2
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
json-parse-better-errors@1.0.2: {}
json-parse-even-better-errors@2.3.1: {}
@@ -6374,8 +6119,6 @@ snapshots:
punycode.js: 2.3.1
uc.micro: 2.1.0
- mdn-data@2.0.30: {}
-
mdurl@2.0.0: {}
media-typer@0.3.0: {}
@@ -6505,6 +6248,10 @@ snapshots:
binary-search: 1.3.6
num-sort: 2.1.0
+ mnemonist@0.40.3:
+ dependencies:
+ obliterator: 2.0.5
+
mobile-drag-drop@3.0.0-rc.0: {}
modify-values@1.0.1: {}
@@ -6665,6 +6412,8 @@ snapshots:
object-inspect@1.13.1: {}
+ obliterator@2.0.5: {}
+
ollama@0.5.0:
dependencies:
whatwg-fetch: 3.6.20
@@ -6751,10 +6500,6 @@ snapshots:
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
- parse5@7.1.2:
- dependencies:
- entities: 4.5.0
-
parseurl@1.3.3: {}
path-exists@3.0.0: {}
@@ -6931,8 +6676,6 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
- psl@1.9.0: {}
-
pstree.remy@1.1.8: {}
pump@3.0.0:
@@ -6942,16 +6685,12 @@ snapshots:
punycode.js@2.3.1: {}
- punycode@2.3.1: {}
-
q@1.5.1: {}
qs@6.11.0:
dependencies:
side-channel: 1.0.4
- querystringify@2.2.0: {}
-
queue-microtask@1.2.3: {}
queue-tick@1.0.1: {}
@@ -7046,12 +6785,8 @@ snapshots:
require-directory@2.1.1: {}
- require-from-string@2.0.2: {}
-
require-main-filename@2.0.0: {}
- requires-port@1.0.0: {}
-
resolve@1.22.8:
dependencies:
is-core-module: 2.13.1
@@ -7100,8 +6835,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.24.0
fsevents: 2.3.3
- rrweb-cssom@0.6.0: {}
-
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -7120,10 +6853,6 @@ snapshots:
sax@1.3.0: {}
- saxes@6.0.0:
- dependencies:
- xmlchars: 2.2.0
-
sdp@3.2.0: {}
semver@5.7.2: {}
@@ -7422,8 +7151,6 @@ snapshots:
magic-string: 0.30.12
zimmerframe: 1.1.2
- symbol-tree@3.2.4: {}
-
tailwindcss@3.4.1(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.7)(typescript@5.6.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -7547,19 +7274,8 @@ snapshots:
dependencies:
nopt: 1.0.10
- tough-cookie@4.1.3:
- dependencies:
- psl: 1.9.0
- punycode: 2.3.1
- universalify: 0.2.0
- url-parse: 1.5.10
-
tr46@0.0.3: {}
- tr46@5.0.0:
- dependencies:
- punycode: 2.3.1
-
tree-kill@1.2.2: {}
trim-newlines@3.0.1: {}
@@ -7622,8 +7338,6 @@ snapshots:
dependencies:
crypto-random-string: 2.0.0
- universalify@0.2.0: {}
-
universalify@2.0.1: {}
unpipe@1.0.0: {}
@@ -7636,11 +7350,6 @@ snapshots:
escalade: 3.1.1
picocolors: 1.0.0
- url-parse@1.5.10:
- dependencies:
- querystringify: 2.2.0
- requires-port: 1.0.0
-
util-deprecate@1.0.2: {}
utils-merge@1.0.1: {}
@@ -7685,10 +7394,6 @@ snapshots:
optionalDependencies:
vite: 5.4.9(@types/node@18.19.7)
- w3c-xmlserializer@5.0.0:
- dependencies:
- xml-name-validator: 5.0.0
-
wasmoon@1.16.0:
dependencies:
'@types/emscripten': 1.39.10
@@ -7699,25 +7404,12 @@ snapshots:
webidl-conversions@3.0.1: {}
- webidl-conversions@7.0.0: {}
-
webrtc-adapter@8.2.3:
dependencies:
sdp: 3.2.0
- whatwg-encoding@3.1.1:
- dependencies:
- iconv-lite: 0.6.3
-
whatwg-fetch@3.6.20: {}
- whatwg-mimetype@4.0.0: {}
-
- whatwg-url@14.0.0:
- dependencies:
- tr46: 5.0.0
- webidl-conversions: 7.0.0
-
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
@@ -7756,8 +7448,6 @@ snapshots:
wrappy@1.0.2: {}
- ws@8.16.0: {}
-
xcode@3.0.1:
dependencies:
simple-plist: 1.3.1
@@ -7767,8 +7457,6 @@ snapshots:
dependencies:
sax: 1.3.0
- xml-name-validator@5.0.0: {}
-
xml2js@0.5.0:
dependencies:
sax: 1.3.0
@@ -7778,8 +7466,6 @@ snapshots:
xmlbuilder@15.1.1: {}
- xmlchars@2.2.0: {}
-
xpath@0.0.27: {}
xpath@0.0.32: {}
diff --git a/server/node/server.cjs b/server/node/server.cjs
index b2871d9d..0828d9f7 100644
--- a/server/node/server.cjs
+++ b/server/node/server.cjs
@@ -11,8 +11,7 @@ app.use(express.raw({ type: 'application/octet-stream', limit: '50mb' }));
const {pipeline} = require('stream/promises')
const https = require('https');
const sslPath = path.join(process.cwd(), 'server/node/ssl/certificate');
-const EXTERNAL_HUB_URL = 'https://sv.risuai.xyz';
-const fetch = require('node-fetch');
+const hubURL = 'https://sv.risuai.xyz';
let password = ''
@@ -31,12 +30,17 @@ function isHex(str) {
}
app.get('/', async (req, res, next) => {
- console.log("[Server] Connected")
+
+ const clientIP = req.headers['x-forwarded-for'] || req.ip || req.socket.remoteAddress || 'Unknown IP';
+ const timestamp = new Date().toISOString();
+ console.log(`[Server] ${timestamp} | Connection from: ${clientIP}`);
+
try {
const mainIndex = await fs.readFile(path.join(process.cwd(), 'dist', 'index.html'))
const root = htmlparser.parse(mainIndex)
const head = root.querySelector('head')
head.innerHTML = `` + head.innerHTML
+
res.send(root.toString())
} catch (error) {
console.log(error)
@@ -139,116 +143,69 @@ const reverseProxyFunc_get = async (req, res, next) => {
}
}
-// Risu Realm Proxy
-async function hubProxyHandler(req, res, next) {
+async function hubProxyFunc(req, res) {
+
try {
- // Extract request path and query parameters
const pathAndQuery = req.originalUrl.replace(/^\/hub-proxy/, '');
- const externalURL = EXTERNAL_HUB_URL + pathAndQuery;
-
- console.log(`[Hub Proxy] Forwarding ${req.method} request to: ${externalURL}`);
-
- // Prepare headers to send to the realm server (including Accept-Encoding modification)
+ const externalURL = hubURL + pathAndQuery;
+
const headersToSend = { ...req.headers };
- delete headersToSend['host'];
- delete headersToSend['connection'];
- headersToSend['accept-encoding'] = 'gzip, deflate'; // Exclude zstd, etc.
- if (!headersToSend['x-forwarded-for']) {
- headersToSend['x-forwarded-for'] = req.ip;
- }
-
- // Execute the fetch request to the realm server
+ delete headersToSend.host;
+ delete headersToSend.connection;
+
const response = await fetch(externalURL, {
method: req.method,
headers: headersToSend,
- body: (req.method !== 'GET' && req.method !== 'HEAD') ? req.body : undefined,
+ body: req.method !== 'GET' && req.method !== 'HEAD' ? req : undefined,
+ redirect: 'manual',
+ duplex: 'half'
});
-
- console.log(`[Hub Proxy] Received status ${response.status} from external server`);
-
- // Handle the realm server response
- // Clean up response headers and extract Content-Type
- const responseHeaders = {};
- // Check the Content-Type of the realm server response (use default if missing)
- let contentType = response.headers.get('content-type') || 'application/octet-stream';
-
- response.headers.forEach((value, key) => {
- const lowerKey = key.toLowerCase();
- // List of headers not to be forwarded to the client
- const excludedHeaders = [
- 'transfer-encoding', 'connection', 'content-encoding',
- 'access-control-allow-origin', 'access-control-allow-methods',
- 'access-control-allow-headers', 'content-security-policy',
- 'content-security-policy-report-only', 'clear-site-data',
- 'strict-transport-security', 'expect-ct',
- 'cf-ray', 'cf-cache-status', 'report-to', 'nel', 'server', 'server-timing', 'alt-svc'
- ];
- if (!excludedHeaders.includes(lowerKey)) {
- responseHeaders[key] = value;
- }
- });
-
- // Set the status code and cleaned headers for the client
- res.status(response.status).set(responseHeaders);
-
- // Determine body processing method based on Content-Type
- try {
- if (contentType.startsWith('application/json')) {
- // JSON response: read as text and send
- const bodyText = await response.text();
- console.log(`[Hub Proxy] Processing JSON response (size: ${bodyText.length})`);
- res.setHeader('Content-Type', contentType); // Set the final Content-Type
- res.send(bodyText);
-
- } else if (contentType.startsWith('image/')) {
- // Image response: read as buffer and send
- const bodyBuffer = await response.buffer(); // Assuming 'fetch' response object has a .buffer() method or similar
- console.log(`[Hub Proxy] Processing Image response (type: ${contentType}, size: ${bodyBuffer.length} bytes)`);
- res.setHeader('Content-Type', contentType); // Set the final Content-Type
- res.send(bodyBuffer);
-
- } else {
- // Other responses (HTML, other text, unknown binary, etc.): read as buffer and send safely
- const bodyBuffer = await response.buffer(); // Assuming 'fetch' response object has a .buffer() method or similar
- console.log(`[Hub Proxy] Processing Other response as buffer (type: ${contentType}, size: ${bodyBuffer.length} bytes)`);
- // Use original Content-Type if available, otherwise use octet-stream (already handled by default assignment)
- res.setHeader('Content-Type', contentType);
- res.send(bodyBuffer);
- }
- } catch (bodyError) {
- // If an error occurs while reading/processing the response body
- console.error("[Hub Proxy] Error reading/processing response body:", bodyError);
- if (!res.headersSent) {
- res.status(500).send({ error: 'Failed to process response body from hub server.' });
- } else {
- console.error("[Hub Proxy] Headers already sent, cannot send body error to client.");
- res.end();
- }
- return; // End the handler
+
+ for (const [key, value] of response.headers.entries()) {
+ res.setHeader(key, value);
}
+ res.status(response.status);
+
+ if (response.status >= 300 && response.status < 400) {
+ // Redirect handling (due to ‘/redirect/docs/lua’)
+ const redirectUrl = response.headers.get('location');
+ if (redirectUrl) {
+
+ if (redirectUrl.startsWith('http')) {
+
+ if (redirectUrl.startsWith(hubURL)) {
+ const newPath = redirectUrl.replace(hubURL, '/hub-proxy');
+ res.setHeader('location', newPath);
+ }
+
+ } else if (redirectUrl.startsWith('/')) {
+
+ res.setHeader('location', `/hub-proxy${redirectUrl}`);
+ }
+ }
+ return res.end();
+ }
+
+ await pipeline(response.body, res);
+
} catch (error) {
- // Fetch request itself failed or other exceptions
- console.error("[Hub Proxy] Request failed:", error);
+ console.error("[Hub Proxy] Error:", error);
if (!res.headersSent) {
- res.status(502).send({ error: 'Proxy failed to connect to or get response from the hub server.' });
+ res.status(502).send({ error: 'Proxy request failed: ' + error.message });
} else {
- console.error("[Hub Proxy] Headers already sent, cannot send connection error to client.");
res.end();
}
}
}
-app.get('/hub-proxy/*', hubProxyHandler);
-app.post('/hub-proxy/*', hubProxyHandler);
-app.put('/hub-proxy/*', hubProxyHandler);
-
app.get('/proxy', reverseProxyFunc_get);
app.get('/proxy2', reverseProxyFunc_get);
+app.get('/hub-proxy/*', hubProxyFunc);
app.post('/proxy', reverseProxyFunc);
app.post('/proxy2', reverseProxyFunc);
-
+app.post('/hub-proxy/*', hubProxyFunc);
app.get('/api/password', async(req, res)=> {
if(password === ''){
@@ -408,9 +365,6 @@ async function getHttpsOptions() {
const keyPath = path.join(sslPath, 'server.key');
const certPath = path.join(sslPath, 'server.crt');
- console.log(keyPath)
- console.log(certPath)
-
try {
await fs.access(keyPath);
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index ab68959d..b29c38fd 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -29,7 +29,7 @@ tauri-plugin-fs = "2"
tauri-plugin-os = "2"
tauri-plugin-dialog = "2"
tauri-plugin-process = "2"
-tauri-plugin-shell = "2"
+tauri-plugin-shell = "2.2.1"
tauri-plugin-http = "2"
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\"))".dependencies]
tauri-plugin-deep-link = "2"
diff --git a/src/lang/cn.ts b/src/lang/cn.ts
index 644299f7..0dbfcb7c 100644
--- a/src/lang/cn.ts
+++ b/src/lang/cn.ts
@@ -817,6 +817,7 @@ export const languageChinese = {
"nextSummarizationLabel": "HypaV3 将总结 [{0}]",
"nextSummarizationNoMessagesFoundLabel": "警告:未找到消息",
"nextSummarizationLoadingError": "加载下一个总结目标时出错:{0}",
+ "summarizationConditionLabel": "提示:当输入标记超过最大上下文大小时,HypaV3 将开始进行摘要处理。",
"emptySelectedFirstMessageLabel": "警告:所选的第一条消息为空"
},
}
diff --git a/src/lang/de.ts b/src/lang/de.ts
index d3795ab7..126cb5cb 100644
--- a/src/lang/de.ts
+++ b/src/lang/de.ts
@@ -481,6 +481,7 @@ export const languageGerman = {
"nextSummarizationLabel": "HypaV3 wird [{0}] zusammenfassen",
"nextSummarizationNoMessagesFoundLabel": "WARNUNG: Keine Nachrichten gefunden",
"nextSummarizationLoadingError": "Fehler beim Laden des nächsten Zusammenfassungsziels: {0}",
+ "summarizationConditionLabel": "Hinweis: HypaV3 beginnt mit der Zusammenfassung, wenn die Eingabe-Tokens die maximale Kontextgröße überschreiten.",
"emptySelectedFirstMessageLabel": "WARNUNG: Ausgewählte erste Nachricht ist leer"
},
}
diff --git a/src/lang/en.ts b/src/lang/en.ts
index 22410fa7..ce9d06df 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -1053,6 +1053,7 @@ export const languageEnglish = {
nextSummarizationLabel: "HypaV3 will summarize [{0}]",
nextSummarizationNoMessagesFoundLabel: "WARN: No messages found",
nextSummarizationLoadingError: "Error loading next summarization target: {0}",
+ summarizationConditionLabel: "Tip: HypaV3 begins summarization when input tokens exceed the maximum context size.",
emptySelectedFirstMessageLabel: "WARN: Selected first message is empty",
},
bulkEnabling: "Lorebook Bulk Enabling",
@@ -1117,5 +1118,8 @@ export const languageEnglish = {
doNotChangeFallbackModels: "Do Not Change Fallback Models on Preset Change",
customModels: "Custom Models",
igpPrompt: "IGP Prompt",
- useTokenizerCaching: "Tokenizer Caching"
+ useTokenizerCaching: "Tokenizer Caching",
+ hypaMemoryV2Modal: "Hypa V2 Modal",
+ hypaMemoryV3Modal: "Hypa V3 Modal",
+ showMenuHypaMemoryModal: "Show Menu Hypa Modal",
}
diff --git a/src/lang/es.ts b/src/lang/es.ts
index 9a306399..1581a1d9 100644
--- a/src/lang/es.ts
+++ b/src/lang/es.ts
@@ -726,6 +726,7 @@ export const languageSpanish = {
"nextSummarizationLabel": "HypaV3 resumirá [{0}]",
"nextSummarizationNoMessagesFoundLabel": "ADVERTENCIA: No se encontraron mensajes",
"nextSummarizationLoadingError": "Error al cargar el siguiente objetivo de resumen: {0}",
+ "summarizationConditionLabel": "Consejo: HypaV3 comienza a resumir cuando los tokens de entrada superan el tamaño máximo de contexto.",
"emptySelectedFirstMessageLabel": "ADVERTENCIA: El primer mensaje seleccionado está vacío"
},
}
diff --git a/src/lang/ko.ts b/src/lang/ko.ts
index 53b8f04e..7382e505 100644
--- a/src/lang/ko.ts
+++ b/src/lang/ko.ts
@@ -972,7 +972,8 @@ export const languageKorean = {
"nextSummarizationLabel": "HypaV3가 [{0}]를 요약할 예정입니다",
"nextSummarizationNoMessagesFoundLabel": "경고: 메시지를 찾을 수 없습니다",
"nextSummarizationLoadingError": "다음 요약 대상을 불러오는 동안 오류 발생: {0}",
- "emptySelectedFirstMessageLabel": "경고: 선택된 첫 메시지가 비어있습니다"
+ "summarizationConditionLabel": "팁: HypaV3는 입력 토큰이 최대 컨텍스트 크기를 넘으면 요약을 시작합니다.",
+ "emptySelectedFirstMessageLabel": "경고: 선택된 첫 메시지가 비어있습니다",
},
"bulkEnabling": "한번에 로어북 활성화 버튼",
"showTranslationLoading": "번역 로딩 보이기",
@@ -985,4 +986,7 @@ export const languageKorean = {
"childLoreDesc": "이것은 캐릭터 로어의 복사본이며, 삭제하거나 원본 로어에서 직접 비활성화하기 전에는 '언제나 활성화' 상태로 유지됩니다.",
"cachePoint": "캐시 포인트",
"all": "모두",
+ "hypaMemoryV2Modal": "하이파 V2 모달",
+ "hypaMemoryV3Modal": "하이파 V3 모달",
+ "showMenuHypaMemoryModal": "메뉴에서 하이파 모달 보이기",
}
diff --git a/src/lang/vi.ts b/src/lang/vi.ts
index 7723075d..39df6332 100644
--- a/src/lang/vi.ts
+++ b/src/lang/vi.ts
@@ -455,6 +455,7 @@ export const LanguageVietnamese = {
"nextSummarizationLabel": "HypaV3 sẽ tóm tắt [{0}]",
"nextSummarizationNoMessagesFoundLabel": "CẢNH BÁO: Không tìm thấy tin nhắn",
"nextSummarizationLoadingError": "Lỗi khi tải mục tiêu tóm tắt tiếp theo: {0}",
+ "summarizationConditionLabel": "Mẹo: HypaV3 bắt đầu tóm tắt khi số lượng token đầu vào vượt quá kích thước ngữ cảnh tối đa.",
"emptySelectedFirstMessageLabel": "CẢNH BÁO: Tin nhắn đầu tiên được chọn trống"
},
}
diff --git a/src/lang/zh-Hant.ts b/src/lang/zh-Hant.ts
index 82722ec9..21d0ce15 100644
--- a/src/lang/zh-Hant.ts
+++ b/src/lang/zh-Hant.ts
@@ -850,6 +850,7 @@ export const languageChineseTraditional = {
"nextSummarizationLabel": "HypaV3 將摘要 [{0}]",
"nextSummarizationNoMessagesFoundLabel": "警告:找不到訊息",
"nextSummarizationLoadingError": "載入下一個摘要目標時出錯:{0}",
+ "summarizationConditionLabel": "提示:當輸入標記超過最大上下文大小時,HypaV3 將開始進行摘要處理。",
"emptySelectedFirstMessageLabel": "警告:選定的第一條訊息為空"
},
}
diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte
index 8449ee70..a90c2132 100644
--- a/src/lib/ChatScreens/DefaultChatScreen.svelte
+++ b/src/lib/ChatScreens/DefaultChatScreen.svelte
@@ -2,7 +2,7 @@
import Suggestion from './Suggestion.svelte';
import AdvancedChatEditor from './AdvancedChatEditor.svelte';
- import { CameraIcon, DatabaseIcon, DicesIcon, GlobeIcon, ImagePlusIcon, LanguagesIcon, Laugh, MenuIcon, MicOffIcon, PackageIcon, Plus, RefreshCcwIcon, ReplyIcon, Send, StepForwardIcon, XIcon } from "lucide-svelte";
+ import { CameraIcon, DatabaseIcon, DicesIcon, GlobeIcon, ImagePlusIcon, LanguagesIcon, Laugh, MenuIcon, MicOffIcon, PackageIcon, Plus, RefreshCcwIcon, ReplyIcon, Send, StepForwardIcon, XIcon, BrainIcon } from "lucide-svelte";
import { selectedCharID, PlaygroundStore, createSimpleCharacter } from "../../ts/stores.svelte";
import Chat from "./Chat.svelte";
import { type Message, type character, type groupChat } from "../../ts/storage/database.svelte";
@@ -12,7 +12,7 @@
import { findCharacterbyId, getUserIconProtrait, messageForm, sleep } from "../../ts/util";
import { language } from "../../lang";
import { isExpTranslator, translate } from "../../ts/translator/translator";
- import { alertError, alertNormal, alertWait } from "../../ts/alert";
+ import { alertError, alertNormal, alertWait, showHypaV2Alert, showHypaV3Alert } from "../../ts/alert";
import sendSound from '../../etc/send.mp3'
import { processScript } from "src/ts/process/scripts";
import CreatorQuote from "./CreatorQuote.svelte";
@@ -29,11 +29,11 @@
import PlaygroundMenu from '../Playground/PlaygroundMenu.svelte';
import { ConnectionOpenStore } from 'src/ts/sync/multiuser';
import { coldStorageHeader, preLoadChat } from 'src/ts/process/coldstorage.svelte';
+ import LazyPortal from '../UI/GUI/LazyPortal.svelte';
let messageInput:string = $state('')
let messageInputTranslate:string = $state('')
let openMenu = $state(false)
- let loadPages = $state(30)
let autoMode = $state(false)
let rerolls:Message[][] = []
let rerollid = -1
@@ -42,6 +42,23 @@
let currentCharacter:character|groupChat = $state(DBState.db.characters[$selectedCharID])
let toggleStickers:boolean = $state(false)
let fileInput:string[] = $state([])
+ let blocks = $state(new Uint8Array(500) )//hacky hacky
+ let blockEle:HTMLElement[] = []
+ let root: HTMLElement = $state(null)
+
+ for(let i=0;i<500;i++){
+ blockEle.push(null)
+ }
+
+ $effect(() => {
+ if(blocks.length-10 < DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length){
+ blocks = new Uint8Array(blocks.length + 500)
+ for(let i=0;i<500;i++){
+ blockEle.push(null)
+ }
+ }
+
+ })
async function send(){
return sendMain(false)
@@ -365,7 +382,6 @@
async function screenShot(){
try {
- loadPages = Infinity
const html2canvas = await import('html-to-image');
const chats = document.querySelectorAll('.default-chat-screen .risu-chat')
alertWait("Taking screenShot...")
@@ -412,7 +428,6 @@
mergedCanvas.remove();
}
alertNormal(language.screenshotSaved)
- loadPages = 10
} catch (error) {
console.error(error)
alertError("Error while taking screenshot")
@@ -435,13 +450,7 @@