feat(view): AI chat对接后端接口

This commit is contained in:
OrionMark
2025-05-07 22:49:38 +08:00
parent 026c3d35a0
commit 706021871a
22 changed files with 182 additions and 166 deletions

View File

@@ -1,5 +1,30 @@
## [2.6.10](https://github.com/HuLaSpark/HuLa/compare/v2.6.9...v2.6.10) (2025-05-05)
### ✨ Features | 新功能
* **component:** :sparkles: 增加公告类型消息 ([f0b0656](https://github.com/HuLaSpark/HuLa/commit/f0b0656ddc874a597a49de2e4f8666913730e759))
* **view:** :sparkles: 新增发布群公告功能 ([#259](https://github.com/HuLaSpark/HuLa/issues/259)) ([87fc30d](https://github.com/HuLaSpark/HuLa/commit/87fc30d170996022379b45d9b94110edbe1c5c74))
### 🐛 Bug Fixes | Bug 修复
* **chat:** 隔离聊天窗口内部数据 ([#258](https://github.com/HuLaSpark/HuLa/issues/258)) ([635f729](https://github.com/HuLaSpark/HuLa/commit/635f72996b8e03e1c00bc20fe9ad870ae8d303f4))
* **component:** :bug: 修复表情包圆角样式 ([e5e1725](https://github.com/HuLaSpark/HuLa/commit/e5e1725d42b41c2bc518e5f4c91cbdbb5f2a3421))
* **component:** :bug: 修复公告排序问题、公告加载更多重复数据问题 ([8d21d22](https://github.com/HuLaSpark/HuLa/commit/8d21d2228a6f743faa1aa4bf635d9fe8d41efd1f))
* **component:** :bug: 修复链接卡片无法点击后默认浏览器打开的问题 ([296a944](https://github.com/HuLaSpark/HuLa/commit/296a944c9f0312548e668ae1a6b831d821b502d2))
* **component:** :bug: 修复全选意外选中全部内容的问题 ([6616a93](https://github.com/HuLaSpark/HuLa/commit/6616a932c57a7189d1540575332471d03684f49b))
* **component:** :bug: 修改群聊中群消息设置逻辑 ([62460fb](https://github.com/HuLaSpark/HuLa/commit/62460fbfe04802764d5a4d60430d587ecbee528d))
* **component:** :bug: 修改url文本解析样式 ([0d5455c](https://github.com/HuLaSpark/HuLa/commit/0d5455c9c590406878c572b667dbf8d21ae7a5b1))
* **readme:** :bug: 修改readme中的描述 ([91feb14](https://github.com/HuLaSpark/HuLa/commit/91feb14ff4fa77c6bb11aeddd90863cd197fec78))
### ⚡️ Performance Improvements | 性能优化
* **component:** :zap: 优化消息点赞和不满功能 ([4d17127](https://github.com/HuLaSpark/HuLa/commit/4d171273e9ba4f6e584206720eeae636d72626e6))
## [2.6.9](https://github.com/HuLaSpark/HuLa/compare/v2.6.8...v2.6.9) (2025-04-20)

View File

@@ -103,6 +103,7 @@ HuLa is an instant messaging system developed with Tauri, Vite 6, Vue 3, and Typ
| | Emoji Function | ✅ Completed |
| | Context Menu Based on Message Type | ✅ Completed |
| | Support parsing links as preview cards | ✅ Completed |
| | Message likes and dissatisfaction status | ✅ Completed |
| 👥 **Contact & Group Management** | Friend Add/Remove | ✅ Completed |
| | Friend Search | ✅ Completed |
| | Group Creation and Management | ✅ Completed |
@@ -110,8 +111,8 @@ HuLa is an instant messaging system developed with Tauri, Vite 6, Vue 3, and Typ
| | Friend Badges | ✅ Completed |
| | Block, Blacklist, Do Not Disturb | ✅ Completed |
| | Message by message merging and forwarding | 🚧 In Progress |
| | Group Announcement | 🚧 In Progress |
| | Group chat、individual chat notes, nicknames, etc | 🚧 In Progress |
| | Group Announcement | ✅ 已完成 |
| | Group chat、individual chat notes, nicknames, etc | ✅ 已完成 |
| 🎨 **UI Interface** | Modern Interface Design | ✅ Completed |
| | Dark/Light Theme Support | ✅ Completed |
| | Skin Theme Switching | ✅ Completed |

View File

@@ -103,6 +103,7 @@ HuLa 是一款基于 Tauri、Vite 6、Vue 3 和 TypeScript 构建的即时通讯
| | 表情包功能 | ✅ 已完成 |
| | 根据消息类型右键菜单 | ✅ 已完成 |
| | 支持解析链接为预览卡片 | ✅ 已完成 |
| | 消息点赞和不满状态 | ✅ 已完成 |
| 👥 **联系人、群聊管理** | 好友添加与删除 | ✅ 已完成 |
| | 好友搜索 | ✅ 已完成 |
| | 群组创建与管理 | ✅ 已完成 |
@@ -110,8 +111,8 @@ HuLa 是一款基于 Tauri、Vite 6、Vue 3 和 TypeScript 构建的即时通讯
| | 好友徽章 | ✅ 已完成 |
| | 屏蔽、拉黑、免打扰功能 | ✅ 已完成 |
| | 消息逐条\合并转发 | 🚧 进行中 |
| | 群公告 | 🚧 进行中 |
| | 群聊、单聊备注、昵称等 | 🚧 进行中 |
| | 群公告 | ✅ 已完成 |
| | 群聊、单聊备注、昵称等 | ✅ 已完成 |
| 🎨 **UI界面** | 现代化界面设计 | ✅ 已完成 |
| | 深色/浅色主题支持 | ✅ 已完成 |
| | 皮肤主题切换 | ✅ 已完成 |

View File

@@ -1,7 +1,7 @@
{
"name": "hula",
"type": "module",
"version": "2.6.9",
"version": "2.6.10",
"license": "Apache-2.0",
"engines": {
"node": ">=18.x",
@@ -59,17 +59,17 @@
"@actions/github": "^6.0.0",
"@fingerprintjs/fingerprintjs": "^4.6.0",
"@tauri-apps/api": "2.5.0",
"@tauri-apps/plugin-autostart": "2.2.0",
"@tauri-apps/plugin-autostart": "2.3.0",
"@tauri-apps/plugin-clipboard-manager": "2.2.2",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-fs": "~2.2.0",
"@tauri-apps/plugin-dialog": "^2.2.1",
"@tauri-apps/plugin-fs": "^2.2.1",
"@tauri-apps/plugin-http": "2.4.3",
"@tauri-apps/plugin-notification": "^2.2.2",
"@tauri-apps/plugin-os": "2.2.0",
"@tauri-apps/plugin-process": "2.2.0",
"@tauri-apps/plugin-os": "2.2.1",
"@tauri-apps/plugin-process": "2.2.1",
"@tauri-apps/plugin-shell": "^2.2.1",
"@tauri-apps/plugin-sql": "^2.2.0",
"@tauri-apps/plugin-updater": "2.6.1",
"@tauri-apps/plugin-updater": "2.7.1",
"colorthief": "^2.6.0",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",

60
pnpm-lock.yaml generated
View File

@@ -18,17 +18,17 @@ importers:
specifier: 2.5.0
version: 2.5.0
'@tauri-apps/plugin-autostart':
specifier: 2.2.0
version: 2.2.0
specifier: 2.3.0
version: 2.3.0
'@tauri-apps/plugin-clipboard-manager':
specifier: 2.2.2
version: 2.2.2
'@tauri-apps/plugin-dialog':
specifier: ^2.2.0
version: 2.2.0
specifier: ^2.2.1
version: 2.2.1
'@tauri-apps/plugin-fs':
specifier: ~2.2.0
version: 2.2.0
specifier: ^2.2.1
version: 2.2.1
'@tauri-apps/plugin-http':
specifier: 2.4.3
version: 2.4.3
@@ -36,11 +36,11 @@ importers:
specifier: ^2.2.2
version: 2.2.2
'@tauri-apps/plugin-os':
specifier: 2.2.0
version: 2.2.0
specifier: 2.2.1
version: 2.2.1
'@tauri-apps/plugin-process':
specifier: 2.2.0
version: 2.2.0
specifier: 2.2.1
version: 2.2.1
'@tauri-apps/plugin-shell':
specifier: ^2.2.1
version: 2.2.1
@@ -48,8 +48,8 @@ importers:
specifier: ^2.2.0
version: 2.2.0
'@tauri-apps/plugin-updater':
specifier: 2.6.1
version: 2.6.1
specifier: 2.7.1
version: 2.7.1
colorthief:
specifier: ^2.6.0
version: 2.6.0
@@ -1545,17 +1545,17 @@ packages:
engines: {node: '>= 10'}
hasBin: true
'@tauri-apps/plugin-autostart@2.2.0':
resolution: {integrity: sha512-TzVcDZdOvdot0avkpstUWJKKEl4cyxLpFB9DZZRW5zH8k+Bv8IVJmO0zyYuw+7oKlGdHOINbD/7Je7GHMViw5w==}
'@tauri-apps/plugin-autostart@2.3.0':
resolution: {integrity: sha512-yxQTpc4NolT1r317yjKVhrG+YwCWPBOj7p+70m/q0w1JHc53pGcHmTboAbA3kGY6PQ+9y9oE7cdmHq7PH9z/SQ==}
'@tauri-apps/plugin-clipboard-manager@2.2.2':
resolution: {integrity: sha512-bZvDLMqfcNmsw7Ag8I49jlaCjdpDvvlJHnpp6P+Gg/3xtpSERdwlDxm7cKGbs2mj46dsw4AuG3RoAgcpwgioUA==}
'@tauri-apps/plugin-dialog@2.2.0':
resolution: {integrity: sha512-6bLkYK68zyK31418AK5fNccCdVuRnNpbxquCl8IqgFByOgWFivbiIlvb79wpSXi0O+8k8RCSsIpOquebusRVSg==}
'@tauri-apps/plugin-dialog@2.2.1':
resolution: {integrity: sha512-wZmCouo4PgTosh/UoejPw9DPs6RllS5Pp3fuOV2JobCu36mR5AXU2MzU9NZiVaFi/5Zfc8RN0IhcZHnksJ1o8A==}
'@tauri-apps/plugin-fs@2.2.0':
resolution: {integrity: sha512-+08mApuONKI8/sCNEZ6AR8vf5vI9DXD4YfrQ9NQmhRxYKMLVhRW164vdW5BSLmMpuevftpQ2FVoL9EFkfG9Z+g==}
'@tauri-apps/plugin-fs@2.2.1':
resolution: {integrity: sha512-KdGzvvA4Eg0Dhw55MwczFbjxLxsTx0FvwwC/0StXlr6IxwPUxh5ziZQoaugkBFs8t+wfebdQrjBEzd8NmmDXNw==}
'@tauri-apps/plugin-http@2.4.3':
resolution: {integrity: sha512-Us8X+FikzpaZRNr4kH4HLwyXascHbM42p6LxAqRTQnHPrrqp1usaH4vxWAZalPvTbHJ3gBEMJPHusFJgtjGJjA==}
@@ -1563,11 +1563,11 @@ packages:
'@tauri-apps/plugin-notification@2.2.2':
resolution: {integrity: sha512-d71rJdtkFUTcG4dqydnv6d7ZwlNZVcdjrVOPwc9GsF6y9DgVN1WCZ9T/vbfD2qrJslf7ai+rnNJc62TLLC2IdA==}
'@tauri-apps/plugin-os@2.2.0':
resolution: {integrity: sha512-HszbCdbisMlu5QhCNAN8YIWyz2v33abAWha6+uvV2CKX8P5VSct/y+kEe22JeyqrxCnWlQ3DRx7s49Byg7/0EA==}
'@tauri-apps/plugin-os@2.2.1':
resolution: {integrity: sha512-cNYpNri2CCc6BaNeB6G/mOtLvg8dFyFQyCUdf2y0K8PIAKGEWdEcu8DECkydU2B+oj4OJihDPD2de5K6cbVl9A==}
'@tauri-apps/plugin-process@2.2.0':
resolution: {integrity: sha512-uypN2Crmyop9z+KRJr3zl71OyVFgTuvHFjsJ0UxxQ/J5212jVa5w4nPEYjIewcn8bUEXacRebwE6F7owgrbhSw==}
'@tauri-apps/plugin-process@2.2.1':
resolution: {integrity: sha512-cF/k8J+YjjuowhNG1AboHNTlrGiOwgX5j6NzsX6WFf9FMzyZUchkCgZMxCdSE5NIgFX0vvOgLQhODFJgbMenLg==}
'@tauri-apps/plugin-shell@2.2.1':
resolution: {integrity: sha512-G1GFYyWe/KlCsymuLiNImUgC8zGY0tI0Y3p8JgBCWduR5IEXlIJS+JuG1qtveitwYXlfJrsExt3enhv5l2/yhA==}
@@ -1575,8 +1575,8 @@ packages:
'@tauri-apps/plugin-sql@2.2.0':
resolution: {integrity: sha512-yGdybpaMENe/p6lTXslvDHYNNvD9qB7palaBBF5fJHdYSkwd3vrLiYU9dFfLwUAwnsBylND55EiivWsjhazejA==}
'@tauri-apps/plugin-updater@2.6.1':
resolution: {integrity: sha512-iiOevw4kc12Ok99J9KthXwUqwPv1sYjG+tNEDZqPmwvOmIq7s58nKMRz6NJPKXT4U16NzMPffFcP/LUOsz6c4A==}
'@tauri-apps/plugin-updater@2.7.1':
resolution: {integrity: sha512-1OPqEY/z7NDVSeTEMIhD2ss/vXWdpfZ5Th2Mk0KtPR/RA6FKuOTDGZQhxoyYBk0pcZJ+nNZUbl/IujDCLBApjA==}
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
@@ -6424,7 +6424,7 @@ snapshots:
'@tauri-apps/cli-win32-ia32-msvc': 2.5.0
'@tauri-apps/cli-win32-x64-msvc': 2.5.0
'@tauri-apps/plugin-autostart@2.2.0':
'@tauri-apps/plugin-autostart@2.3.0':
dependencies:
'@tauri-apps/api': 2.5.0
@@ -6432,11 +6432,11 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.5.0
'@tauri-apps/plugin-dialog@2.2.0':
'@tauri-apps/plugin-dialog@2.2.1':
dependencies:
'@tauri-apps/api': 2.5.0
'@tauri-apps/plugin-fs@2.2.0':
'@tauri-apps/plugin-fs@2.2.1':
dependencies:
'@tauri-apps/api': 2.5.0
@@ -6448,11 +6448,11 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.5.0
'@tauri-apps/plugin-os@2.2.0':
'@tauri-apps/plugin-os@2.2.1':
dependencies:
'@tauri-apps/api': 2.5.0
'@tauri-apps/plugin-process@2.2.0':
'@tauri-apps/plugin-process@2.2.1':
dependencies:
'@tauri-apps/api': 2.5.0
@@ -6464,7 +6464,7 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.5.0
'@tauri-apps/plugin-updater@2.6.1':
'@tauri-apps/plugin-updater@2.7.1':
dependencies:
'@tauri-apps/api': 2.5.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

184
src-tauri/Cargo.lock generated
View File

@@ -170,28 +170,18 @@ dependencies = [
[[package]]
name = "async-executor"
version = "1.13.1"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa"
dependencies = [
"async-task",
"concurrent-queue",
"fastrand",
"futures-lite",
"pin-project-lite",
"slab",
]
[[package]]
name = "async-fs"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
dependencies = [
"async-lock",
"blocking",
"futures-lite",
]
[[package]]
name = "async-io"
version = "2.4.0"
@@ -477,9 +467,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
[[package]]
name = "bytemuck"
version = "1.22.0"
version = "1.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c"
[[package]]
name = "byteorder"
@@ -571,9 +561,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.20"
version = "1.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a"
checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0"
dependencies = [
"jobserver",
"libc",
@@ -630,9 +620,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chrono"
version = "0.4.40"
version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
dependencies = [
"android-tzdata",
"iana-time-zone",
@@ -1222,9 +1212,9 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]]
name = "dpi"
version = "0.1.1"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
dependencies = [
"serde",
]
@@ -1765,11 +1755,11 @@ dependencies = [
[[package]]
name = "gethostname"
version = "1.0.1"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed7131e57abbde63513e0e6636f76668a1ca9798dcae2df4e283cae9ee83859e"
checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55"
dependencies = [
"rustix 1.0.5",
"rustix 1.0.7",
"windows-targets 0.52.6",
]
@@ -2003,9 +1993,9 @@ dependencies = [
[[package]]
name = "h2"
version = "0.4.9"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633"
checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5"
dependencies = [
"atomic-waker",
"bytes",
@@ -2028,9 +2018,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.15.2"
version = "0.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
dependencies = [
"allocator-api2",
"equivalent",
@@ -2043,7 +2033,7 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
dependencies = [
"hashbrown 0.15.2",
"hashbrown 0.15.3",
]
[[package]]
@@ -2187,7 +2177,7 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hula"
version = "2.6.8"
version = "2.6.9"
dependencies = [
"base64 0.22.1",
"lazy_static",
@@ -2248,7 +2238,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"h2 0.4.9",
"h2 0.4.10",
"http 1.3.1",
"http-body 1.0.1",
"httparse",
@@ -2520,7 +2510,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
"hashbrown 0.15.3",
"serde",
]
@@ -2778,9 +2768,9 @@ dependencies = [
[[package]]
name = "libm"
version = "0.2.13"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72"
checksum = "a25169bd5913a4b437588a7e3d127cd6e90127b60e0ffbd834a38f1599e016b8"
[[package]]
name = "libredox"
@@ -3508,9 +3498,9 @@ dependencies = [
[[package]]
name = "openssl-sys"
version = "0.9.107"
version = "0.9.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847"
dependencies = [
"cc",
"libc",
@@ -3926,7 +3916,7 @@ version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
dependencies = [
"toml_edit 0.22.25",
"toml_edit 0.22.26",
]
[[package]]
@@ -4004,9 +3994,9 @@ dependencies = [
[[package]]
name = "quick-xml"
version = "0.37.4"
version = "0.37.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4ce8c88de324ff838700f36fb6ab86c96df0e3c4ab6ef3a9b2044465cce1369"
checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
dependencies = [
"memchr",
]
@@ -4053,9 +4043,9 @@ dependencies = [
[[package]]
name = "quinn-udp"
version = "0.5.11"
version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5"
checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842"
dependencies = [
"cfg_aliases",
"libc",
@@ -4209,9 +4199,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
version = "0.5.11"
version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
dependencies = [
"bitflags 2.9.0",
]
@@ -4321,7 +4311,7 @@ dependencies = [
"encoding_rs",
"futures-core",
"futures-util",
"h2 0.4.9",
"h2 0.4.10",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
@@ -4472,9 +4462,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "1.0.5"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [
"bitflags 2.9.0",
"errno",
@@ -4828,9 +4818,9 @@ dependencies = [
[[package]]
name = "sha2"
version = "0.10.8"
version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -4839,9 +4829,9 @@ dependencies = [
[[package]]
name = "shared_child"
version = "1.0.1"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c"
checksum = "7e297bd52991bbe0686c086957bee142f13df85d1e79b0b21630a99d374ae9dc"
dependencies = [
"libc",
"windows-sys 0.59.0",
@@ -5014,7 +5004,7 @@ dependencies = [
"futures-intrusive",
"futures-io",
"futures-util",
"hashbrown 0.15.2",
"hashbrown 0.15.3",
"hashlink",
"indexmap 2.9.0",
"log",
@@ -5337,9 +5327,9 @@ dependencies = [
[[package]]
name = "synstructure"
version = "0.13.1"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
@@ -5743,7 +5733,7 @@ version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "424f19432397850c2ddd42aa58078630c15287bbce3866eb1d90e7dbee680637"
dependencies = [
"gethostname 1.0.1",
"gethostname 1.0.2",
"log",
"os_info",
"serde",
@@ -5975,7 +5965,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9"
dependencies = [
"quick-xml 0.37.4",
"quick-xml 0.37.5",
"thiserror 2.0.12",
"windows 0.61.1",
"windows-version",
@@ -5990,7 +5980,7 @@ dependencies = [
"fastrand",
"getrandom 0.3.2",
"once_cell",
"rustix 1.0.5",
"rustix 1.0.7",
"windows-sys 0.59.0",
]
@@ -6205,14 +6195,14 @@ dependencies = [
[[package]]
name = "toml"
version = "0.8.21"
version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900f6c86a685850b1bc9f6223b20125115ee3f31e01207d81655bbcc0aea9231"
checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
"toml_edit 0.22.25",
"toml_edit 0.22.26",
]
[[package]]
@@ -6248,23 +6238,23 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.22.25"
version = "0.22.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10558ed0bd2a1562e630926a2d1f0b98c827da99fabd3fe20920a59642504485"
checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
dependencies = [
"indexmap 2.9.0",
"serde",
"serde_spanned",
"toml_datetime",
"toml_write",
"winnow 0.7.7",
"winnow 0.7.9",
]
[[package]]
name = "toml_write"
version = "0.1.0"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28391a4201ba7eb1984cfeb6862c0b3ea2cfe23332298967c749dddc0d6cd976"
checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
[[package]]
name = "tower"
@@ -6709,9 +6699,9 @@ dependencies = [
[[package]]
name = "wayland-backend"
version = "0.3.8"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf"
checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121"
dependencies = [
"cc",
"downcast-rs",
@@ -6722,9 +6712,9 @@ dependencies = [
[[package]]
name = "wayland-client"
version = "0.31.8"
version = "0.31.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f"
checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61"
dependencies = [
"bitflags 2.9.0",
"rustix 0.38.44",
@@ -6734,9 +6724,9 @@ dependencies = [
[[package]]
name = "wayland-protocols"
version = "0.32.6"
version = "0.32.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc"
checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a"
dependencies = [
"bitflags 2.9.0",
"wayland-backend",
@@ -6746,9 +6736,9 @@ dependencies = [
[[package]]
name = "wayland-protocols-wlr"
version = "0.3.6"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248a02e6f595aad796561fa82d25601bd2c8c3b145b1c7453fc8f94c1a58f8b2"
checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf"
dependencies = [
"bitflags 2.9.0",
"wayland-backend",
@@ -6764,7 +6754,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484"
dependencies = [
"proc-macro2",
"quick-xml 0.37.4",
"quick-xml 0.37.5",
"quote",
]
@@ -6843,9 +6833,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
version = "0.26.8"
version = "0.26.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9"
checksum = "37493cadf42a2a939ed404698ded7fb378bf301b5011f973361779a3a74f8c93"
dependencies = [
"rustls-pki-types",
]
@@ -7430,9 +7420,9 @@ dependencies = [
[[package]]
name = "winnow"
version = "0.7.7"
version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5"
checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3"
dependencies = [
"memchr",
]
@@ -7595,7 +7585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e"
dependencies = [
"libc",
"rustix 1.0.5",
"rustix 1.0.7",
]
[[package]]
@@ -7609,16 +7599,6 @@ dependencies = [
"quick-xml 0.30.0",
]
[[package]]
name = "xdg-home"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
dependencies = [
"libc",
"windows-sys 0.59.0",
]
[[package]]
name = "yoke"
version = "0.7.5"
@@ -7645,13 +7625,12 @@ dependencies = [
[[package]]
name = "zbus"
version = "5.5.0"
version = "5.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236"
checksum = "2522b82023923eecb0b366da727ec883ace092e7887b61d3da5139f26b44da58"
dependencies = [
"async-broadcast",
"async-executor",
"async-fs",
"async-io",
"async-lock",
"async-process",
@@ -7668,13 +7647,11 @@ dependencies = [
"ordered-stream",
"serde",
"serde_repr",
"static_assertions",
"tokio",
"tracing",
"uds_windows",
"windows-sys 0.59.0",
"winnow 0.7.7",
"xdg-home",
"winnow 0.7.9",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -7682,9 +7659,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
version = "5.5.0"
version = "5.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0"
checksum = "05d2e12843c75108c00c618c2e8ef9675b50b6ec095b36dc965f2e5aed463c15"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -7703,7 +7680,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
dependencies = [
"serde",
"static_assertions",
"winnow 0.7.7",
"winnow 0.7.9",
"zvariant",
]
@@ -7791,25 +7768,24 @@ dependencies = [
[[package]]
name = "zvariant"
version = "5.4.0"
version = "5.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac"
checksum = "557e89d54880377a507c94cd5452f20e35d14325faf9d2958ebeadce0966c1b2"
dependencies = [
"endi",
"enumflags2",
"serde",
"static_assertions",
"url",
"winnow 0.7.7",
"winnow 0.7.9",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
name = "zvariant_derive"
version = "5.4.0"
version = "5.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f"
checksum = "757779842a0d242061d24c28be589ce392e45350dfb9186dfd7a042a2e19870c"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -7829,5 +7805,5 @@ dependencies = [
"serde",
"static_assertions",
"syn 2.0.101",
"winnow 0.7.7",
"winnow 0.7.9",
]

View File

@@ -1,11 +1,11 @@
[package]
name = "hula"
version = "2.6.8"
version = "2.6.9"
description = "hula"
authors = ["nongyehong"]
license = ""
repository = ""
edition = "2021"
edition = "2024"
[profile.release]
panic = "abort" # 去掉昂贵的恐慌清理逻辑
@@ -44,7 +44,7 @@ tauri-plugin-upload = "2.2.0"
tauri-plugin-global-shortcut = "2.2.0"
tauri-plugin-clipboard-manager = "2.2.2"
tauri-plugin-updater = "2.7.1"
tauri-plugin-sql = { version = "2", features = ["sqlite"] }
tauri-plugin-sql = { version = "2.2.0", features = ["sqlite"] }
tauri-plugin-single-instance = "2.2.3"
tauri-plugin-notification = "2.2.2"
tungstenite = { version = "0.26.2", features = ["native-tls"] }

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula-app.app",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula-app.app",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.9",
"version": "2.6.10",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",

View File

@@ -204,11 +204,6 @@ onUnmounted(() => {
font-size: 12px;
}
* {
user-select: none;
-webkit-user-select: none;
}
input,
button,
a {

View File

@@ -256,6 +256,21 @@ const closeMenu = (event: any) => {
}
}
/** 禁用浏览器默认的全选快捷键,当输入框有内容或者聚焦时不禁用 */
const disableSelectAll = (e: KeyboardEvent) => {
if (e.ctrlKey && e.key === 'a') {
const inputDiv = document.getElementById('message-input')
// 检查输入框是否存在、是否有内容、是否聚焦
const hasFocus = document.activeElement === inputDiv
const hasContent = inputDiv && inputDiv.textContent && inputDiv.textContent.trim().length > 0
// 只有当输入框没有聚焦或没有内容时才阻止默认行为
if (!hasFocus || !hasContent) {
e.preventDefault()
}
}
}
onMounted(async () => {
activeItem.value = inject('activeItem') as SessionItem
onKeyStroke('Enter', () => {
@@ -305,10 +320,12 @@ onMounted(async () => {
})
)
window.addEventListener('click', closeMenu, true)
window.addEventListener('keydown', disableSelectAll)
})
onUnmounted(() => {
window.removeEventListener('click', closeMenu, true)
window.removeEventListener('keydown', disableSelectAll)
})
/**

View File

@@ -21,7 +21,7 @@
<n-flex :wrap="false" class="w-full" align="center" justify="space-between">
<n-flex :wrap="false" align="center" class="pl-12px select-none" :size="6">
<svg class="size-16px flex-shrink-0"><use href="#Loudspeaker"></use></svg>
<div style="max-width: calc(100vw - 630px)" class="line-clamp-1 text-(12px [--chat-text-color])">
<div style="max-width: calc(100vw - 70vw)" class="line-clamp-1 text-(12px [--chat-text-color])">
{{ topAnnouncement.content }}
</div>
</n-flex>

View File

@@ -74,7 +74,7 @@
v-for="(item, index) in emojiStore.emojiList"
:key="index"
@click.stop="chooseEmoji(item.expressionUrl, 'url')">
<n-popover trigger="hover" :delay="300" :duration="300" :show-arrow="false" placement="top">
<n-popover trigger="hover" :delay="600" :duration="0" :show-arrow="false" placement="top">
<template #trigger>
<n-image
width="60"

View File

@@ -10,7 +10,7 @@
}"
show-toolbar-tooltip
preview-disabled
style="border-radius: 8px"
style="border-radius: 8px; cursor: pointer !important"
:src="body?.url"
@dblclick="handleOpenImageViewer"
@error="handleImageError">

View File

@@ -10,7 +10,7 @@
object-fit="cover"
show-toolbar-tooltip
preview-disabled
style="border-radius: 8px"
style="border-radius: 8px; cursor: pointer !important"
:src="body?.url"
@dblclick="handleOpenImageViewer"
@error="handleImageError">

View File

@@ -4,6 +4,7 @@
<span
v-if="item.startsWith('@') && item.trim() !== '' && item.trim() !== '@'"
:key="item"
style="-webkit-user-select: text !important; user-select: text !important"
class="text-#fbb990 cursor-pointer">
{{ item }}
</span>

View File

@@ -23,9 +23,9 @@
}
}
.bubble {
&::selection {
background: transparent; /* 设置选中背景为透明 */
}
// &::selection {
// background: transparent; /* 设置选中背景为透明 */
// }
@include bubble;
}
.bubble-oneself {