Compare commits

...

189 Commits

Author SHA1 Message Date
OrionMark
eb6cc79796 perf(AiChat): 优化输入框以及模型回答展示 2025-06-07 11:19:51 +08:00
OrionMark
68cf5bddca Merge branch 'master' into feat/AIChat 2025-06-07 11:13:13 +08:00
Dawn
c9cdcc0cc5 fix(hook): 🐛 修复pinia初始化报错问题 2025-06-07 05:30:23 +08:00
OrionMark
d8a24fc106 Merge branch 'master' into feat/AIChat 2025-06-06 21:45:13 +08:00
OrionMark
1a3868b2ea perf(AiChat): 对接新的AI接口、加载列表切换虚拟列表 2025-06-06 21:44:33 +08:00
OrionMark
d1e949aa87 fix(request): 🐛 修复DELETE请求传参问题 2025-06-06 21:41:53 +08:00
OrionMark
a24f3d0511 fix(router): 🐛 修复SSE请求断开问题 2025-06-06 21:40:30 +08:00
Dawn
d2ab29bfd5 perf(store): 优化刷新会话列表后,时间和最新消息简介没有更新的问题
更新微信群二维码和赞助榜
2025-06-04 05:22:06 +08:00
Dawn
18ffde1d49 perf(service): 优化webSocket重连机制 2025-06-03 04:38:40 +08:00
Dawn
54f32eec5f perf(component): 优化webSocket的重连性能和网络检测方法 2025-06-02 03:01:29 +08:00
Dawn
2d0d42e35d docs(doc): 📝 增加新的微信群二维码、更新赞助榜 2025-05-27 18:00:35 +08:00
Dawn
666d73aed1 chore: 发布 v2.6.12
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-05-26 01:06:10 +08:00
Dawn
f8602e56eb fix(input): 🐛 修复mac下输入框检查拼写和字母大小写问题 2025-05-26 01:02:37 +08:00
Dawn
f734dca910 perf(global): 增加ws健康检查兜底刷新最新消息内容、网络断线恢复重连 2025-05-26 00:48:04 +08:00
Dawn
1c0cd2e2a7 docs(doc): 📝 更新赞助榜名单 2025-05-25 00:37:06 +08:00
Dawn
7e762e8524 fix(hook): 🐛 修复mac系统右键会选中文本的问题 2025-05-25 00:10:48 +08:00
OrionMark
277d598a69 perf(AiChat): 优化聊天记录虚拟列表加载 2025-05-24 10:35:30 +08:00
OrionMark
09337131b5 Merge branch 'master' into feat/AIChat 2025-05-24 09:44:53 +08:00
Dawn
791b9cc694 feat(hook): 增强文本选择复制
优化右键复制粘贴图片功能

closed #279
2025-05-24 07:31:05 +08:00
Dawn
61618db93c fix(view): 🐛 修改邮箱输入框长度限制
修改代理设置为网络设置,以便理解

closed #278
2025-05-23 15:52:51 +08:00
Dawn
2a63046bbd fix(mac): 🐛 修复mac下点击关闭按钮无法关闭home窗口问题 2025-05-23 15:07:47 +08:00
Dawn
030fed7d60 fix(worker): 🐛 修复ws在重连后清空token导致无法对应获取消息问题
优化右键粘贴图片问题(需要tauri 兼容剪贴板识别更多类型)
2025-05-23 08:13:09 +08:00
Ethan Zhou
13c528a35e fix(agreement): 🐛 安装界面乱码 (#277)
#275
2025-05-22 19:32:23 +08:00
Dawn
e068a253e5 fix: 修复ws链接断开没有重试问题 (#276)
* fix: 修复ws链接断开没有重试问题

* perf(service):  使用web worker的计时器去处理堆积任务

---------

Co-authored-by: littleChen <n1987795215@163.com>
2025-05-22 17:41:27 +08:00
OrionMark
06384bb204 Merge branch 'master' into feat/AIChat 2025-05-22 11:48:36 +08:00
Dawn
4a1a05cf51 fix(hook): 🐛 暂时移除/唤起ai快捷键识别 2025-05-22 03:50:44 +08:00
Dawn
5e7c5dd3f3 build(ios): 📦 重新构建ios启动配置 2025-05-22 03:34:25 +08:00
Dawn
af172e4516 docs(doc): 📝 更新微信群二维码 2025-05-21 16:38:17 +08:00
Dawn
d2b6ab25d6 fix(hook): 🐛 修复除emoji类型和图片类型都可以另存为的bug 2025-05-20 19:07:28 +08:00
Dawn
0dfdfc1269 feat(component): 增加右键emoji可以另存为 2025-05-20 06:26:18 +08:00
Dawn
c927be4c3f fix(view): 🐛 修复托盘菜单内容不展示问题和托盘图标闪烁后不展示问题
修复收缩窗口后高度不一致问题

# 274
2025-05-20 03:40:53 +08:00
Dawn
f883cb3839 chore: 发布 v2.6.11
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-05-19 02:42:22 +08:00
Dawn
884a53e448 perf(service): 优化websocket可以在窗口隐藏后继续监听 2025-05-19 02:37:59 +08:00
OrionMark
86335c917d perf(AiChat): 优化模型切换选中、滚动加载逻辑 2025-05-18 21:16:45 +08:00
OrionMark
ea738270a8 Merge branch 'master' into feat/AIChat 2025-05-18 19:52:39 +08:00
Dawn
a8bf8e00ab perf(component): 优化群聊成员和公告展示、以及完成搜索会话功能 2025-05-18 05:10:00 +08:00
Dawn
92dba1218f fix(component): 🐛 优化windows上群聊的展示时机和样式 2025-05-17 06:02:06 +08:00
Dawn
f0aa0014a9 perf(component): 优化emoji的样式和展示 2025-05-16 20:32:11 +08:00
Dawn
02ef835855 fix(notify): 🐛 修复免打扰时还会触发托盘图标闪烁(windows) 2025-05-16 15:06:02 +08:00
Dawn
253a7b21b1 docs(doc): 📝 更新赞助者名单 2025-05-16 10:44:27 +08:00
Dawn
2c8b15cd3a fix(view): 🐛 修复系统托盘信息提示菜单内容展示问题和点击跳转问题 2025-05-16 01:57:23 +08:00
Dawn
8b9541b51e docs(doc): 📝 增加HelloGithub社区徽章 2025-05-15 11:46:10 +08:00
Dawn
78565bacc8 Merge branch 'master' into feat/AIChat 2025-05-14 11:10:37 +08:00
Dawn
6d512d0374 build(android): 📦 修改android启动所需的依赖 2025-05-13 23:36:32 +08:00
Ethan Zhou
eaa42885c3 fix(component): 🐛 点击头像弹出个人信息面板 (#273)
Co-authored-by: Dawn <2439646234@qq.com>
2025-05-13 22:19:00 +08:00
Dawn
b50c386432 Merge branch 'master' into feat/AIChat 2025-05-13 19:08:20 +08:00
Dawn
2b232f76aa docs(badge): 📝 增加deepwiki文档徽章 2025-05-13 17:59:46 +08:00
Dawn
baed923a64 build: 📦 更新acl配置 2025-05-13 17:20:08 +08:00
Dawn
3ef1666ef7 fix(ios): 🐛 修复ios init导致无法启动问题 2025-05-13 14:34:12 +08:00
OrionMark
43d85b10cc Merge branch 'master' into feat/AIChat 2025-05-13 10:17:43 +08:00
OrionMark
f17f07cc2b perf(AiChat): 优化左侧会话加载,删除会话,以及滚动逻辑 2025-05-13 10:02:25 +08:00
Dawn
4954b1cc24 fix(view): 🐛 修复系统托盘闪烁和提示菜单内容不显示问题
移除vite-plugin-vue-devtools依赖
2025-05-13 02:34:31 +08:00
Dawn
c078a0be1d Merge branch 'master' into feat/AIChat 2025-05-12 22:06:03 +08:00
Dawn
b2fe51fd2a docs(doc): 📝 更新微信群二维码、预览图
更新检查rust版本脚本
修复win上代码警告问题
2025-05-12 21:52:48 +08:00
Dawn
72740e7d2d Merge branch 'master' into feat/AIChat 2025-05-12 19:37:37 +08:00
Dawn
c76148687c fix(component): 🐛 修复mac下更新提示窗口可以调整大小、拖动、标题栏显示问题
优化计时器使用方式
调整系统托盘计时器为worker计时器

BREAKING CHANGE: webSocket的计时器调整为worker计时器
2025-05-12 18:36:28 +08:00
Dawn
0bc93f14da Merge remote-tracking branch 'origin/master' into feat/AIChat 2025-05-11 19:56:53 +08:00
Dawn
777951bb8c perf(view): 优化在登录框下未提示更新、右下角窗口可拖动问题
修复展开更新内容无法滚动问题
2025-05-11 19:25:43 +08:00
ZOL
833d09efe4 feat(view): 增加修订版本更新检测,修复每次版本变动都更新的bug (#271)
* feat(view):  增加修订版本更新检测,修复每次版本变动都更新的bug

* fix(view): 🐛 修改macos检查更新页面配置

* fix(view): 🐛 补充权限

* fix(view): 🐛 设置主界面最小高度

* fix(view): 🐛 更正扫码登录创建主界面参数

* fix(view): 🐛 修订版本更新页面允许关闭

* fix(view): 🐛 处理修订版本更新页面关闭按钮过小的问题

* fix(view): 🐛 修订版本更新逻辑优化

* fix(view): 🐛 代码规范调整

* fix(view): 🐛 修复主界面菜单带文字最小高度不适应的bug、登录和首页每30分钟检测一次是否有更新

* fix(view): 🐛 修复主界面打开修订版本更新未关闭的bug

* fix(view): 🐛 修复timer.worker文件导入bug

* fix(view): 🐛 修复timer.worker不能导出变量的bug

* fix(view): 🐛 去掉修订版本更新隐藏登录页、主页面

* perf(view):  检查更新的页面样式和窗口位置

修复登出后点击忘记密码和注册账号会闪退问题

---------

Co-authored-by: Dawn <2439646234@qq.com>
2025-05-11 04:05:58 +08:00
Dawn
f816314115 fix(component): 🐛 修复图片截图功能文件大小问题 2025-05-09 19:30:53 +08:00
OrionMark
9c33073f75 Merge branch 'master' into feat/AIChat 2025-05-09 15:18:48 +08:00
Dawn
63e28f9993 docs(readme): 📝 更新赞助名单 2025-05-09 10:21:42 +08:00
Dawn
f33f41d41f fix(component): 🐛 修复回复消息表情不展示问题 2025-05-09 01:50:09 +08:00
Dawn
bd825e0c32 fix(view): 🐛 修复win下忘记密码页面背景颜色问题
更新rust依赖
2025-05-09 01:13:54 +08:00
Dawn
b45cfd2212 feat(view): 新增重置密码功能
群聊展示hula号
更新unocss依赖
2025-05-09 00:54:59 +08:00
OrionMark
3c608a8875 perf(AiChat): 优化回答加载,以及滚动逻辑 2025-05-08 22:25:59 +08:00
OrionMark
5cfbac209d Merge branch 'master' into feat/AIChat 2025-05-08 22:20:15 +08:00
Dawn
2081e99d4a perf(component): 优化消息回复表情功能
支持单聊回复表情
2025-05-08 01:42:29 +08:00
OrionMark
706021871a feat(view): AI chat对接后端接口 2025-05-07 22:49:38 +08:00
OrionMark
026c3d35a0 feat(view): AI chat对接后端接口 2025-05-07 22:14:35 +08:00
Dawn
2753e89dd5 fix(component): 🐛 修复因公告宽度导致聊天框布局混乱问题 2025-05-06 02:59:19 +08:00
Dawn
31ba428f33 docs(readme): 📝 修改readme文档,更新微信群二维码 2025-05-06 02:32:19 +08:00
Dawn
d9db68c9bb chore: 发布 v2.6.10
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-05-06 01:58:01 +08:00
Dawn
6616a932c5 fix(component): 🐛 修复全选意外选中全部内容的问题
修复文本消息内容无法选取问题

修复检查更新报错问题

更新对应的前端依赖
2025-05-05 22:10:01 +08:00
Dawn
493b2e183f style(view): 💄 移除鼠标默认样式 2025-05-04 03:13:51 +08:00
renovate[bot]
5800c158aa chore(deps): update dependency vite to v6.3.4 [security] (#265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dawn <2439646234@qq.com>
2025-05-03 23:05:53 +08:00
Clover You
6fcb82bb90 style(component): 💄 更新样式以禁用全局用户选择并调整光标样式 (#264) 2025-05-01 06:11:00 +08:00
Dawn
0d5455c9c5 fix(component): 🐛 修改url文本解析样式 2025-04-30 18:39:57 +08:00
Dawn
e5e1725d42 fix(component): 🐛 修复表情包圆角样式
修改公告栏列表中公告内容的样式
2025-04-29 19:20:36 +08:00
Dawn
4d171273e9 perf(component): 优化消息点赞和不满功能 2025-04-29 01:10:47 +08:00
Dawn
8d21d2228a fix(component): 🐛 修复公告排序问题、公告加载更多重复数据问题 2025-04-28 18:41:21 +08:00
Dawn
d98f59cbb4 style(component): 💄 移除一些冗余代码 2025-04-28 17:01:01 +08:00
Dawn
f0b0656ddc feat(component): 增加公告类型消息
修复好友审批类型处理 | 修复聊天框内右键设置管理员bug
2025-04-28 02:57:08 +08:00
Dawn
62460fbfe0 fix(component): 🐛 修改群聊中群消息设置逻辑
修复异地同端登录没有重新登录提示问题
2025-04-27 02:54:25 +08:00
Dawn
802d224209 style(component): 💄 移除一些log 2025-04-26 21:22:30 +08:00
Dawn
7589059756 build(package): 📦 升级tauri至v2.5.1
更新vite依赖版本、vueuse版本
2025-04-25 17:31:54 +08:00
Dawn
6330aaf4ee docs(component): 📝 更新赞赏榜单🎉 2025-04-25 16:14:09 +08:00
Dawn
62ebfdf7f7 docs(component): 📝 更新微信群二维码 2025-04-25 12:55:34 +08:00
OrionMark
87fc30d170 feat(view): 新增发布群公告功能 (#259)
* feat(view):  新增发布群公告功能

* fix(config): 🐛 修复群公告打开闪屏,发布公告权限校验逻辑问题

* perf(component):  优化公告栏样式

修复home窗体的最小宽度

* fix(component): 🐛 修复公告列表中字母换行的问题

* fix(component): 🐛 修改公告拦样式和功能

* fix(component): 🐛 修复公告列表加载更多,未呈现数据问题

* fix(component): 🐛 修复公告列表重复请求问题

* fix(component): 🐛 修复加载公告列表时导致的重复请求群成员列表,放到加载公告接口前执行

* fix(component): 🐛 修复公告新增删除在聊天框内不更新的问题

增加公告置顶功能

---------

Co-authored-by: Dawn <2439646234@qq.com>
2025-04-25 03:32:48 +08:00
Dawn
296a944c9f fix(component): 🐛 修复链接卡片无法点击后默认浏览器打开的问题
优化rust中托盘mac系统下的包导入和使用的问题
2025-04-22 16:02:13 +08:00
Clover You
635f72996b fix(chat): 隔离聊天窗口内部数据 (#258) 2025-04-22 14:56:16 +08:00
Dawn
91feb14ff4 fix(readme): 🐛 修改readme中的描述 2025-04-21 15:30:29 +08:00
Dawn
4dbd35074c docs(readme): 📝 更新readme 2025-04-21 15:15:18 +08:00
Dawn
af0dec1345 chore: 发布 v2.6.9
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-04-21 01:47:29 +08:00
Dawn
74bf3702c7 perf(component): 优化链接的展示和解析
修改@提及的样式
2025-04-21 01:45:06 +08:00
Clover You
e46ee95bb8 fix: 修复回复框错位 BUG (#256)
* fix: 修复回复框错位BUG #253

* fix: 插入回复框后记录光标最新位置
2025-04-21 01:00:00 +08:00
ZOL
edbd3defcc feat(view): 新增中版本强制更新功能 (#252)
* feat(view):  新增中版本强制更新功能

* fix(view): 🐛 优化强制更新

#183

* fix(view): 🐛 修复更新后重启失败bug

#183

* fix(view): 🐛 设置更新界面文本不可选中

#183

* chore: 添加 seemly 处理颜色

* style: 更新窗口样式调整

* feat: 展示当前更新版本的 commit 列表

* feat: window 窗口配置

* style(view): 💄 修改代码格式、修改更新升级窗口字体颜色和大小

---------

Co-authored-by: Clover You <hi@clovu.me>
Co-authored-by: Dawn <2439646234@qq.com>
2025-04-20 22:50:02 +08:00
Dawn
f9a2b18473 fix(common): 🐛 修复回复表情包或者emoji的时候位置偏移 2025-04-20 06:59:25 +08:00
Clover You
418090604a feat: 回复可以回复表情包、图片 (#251)
* fix(hook): 修复回复图片时的DOM操作,避免innerHTML.replace导致图片地址被替换

* fix: 确保取到内容图片地址而不是回复消息头像

* fix: 回复文本时残留回复框内容
2025-04-20 00:20:49 +08:00
Dawn
6dbfa496b4 perf(rust): 修改mac系统托盘的右键菜单 2025-04-18 22:14:46 +08:00
Jaquan
82c3fd529c feat(hooks): 优化消息类型判断逻辑 (#249)
- 修改了 useCommon 钩子中的消息类型判断条件
- 增加了对文本和表情包同时存在时的处理
- 使消息类型判断更加准确和全面
2025-04-18 17:13:36 +08:00
Dawn
b793f71f26 fix(view): 🐛 修复会话中转义字符的问题 2025-04-18 15:52:21 +08:00
Dawn
b8c3c4eec2 fix(hook): 🐛 修复回复时出现空格符和回复替换等问题
增加ws类型|修复好友申请列表没有加载最新内容|修改readme文件
2025-04-18 13:51:35 +08:00
Dawn
2a5b9de68b perf(component): 优化屏蔽后的逻辑
修改mac系统网络设置选项
2025-04-17 22:30:06 +08:00
Dawn
2b9a7edaef fix(common): 🐛 修复FloatBlockList组件悬浮层bug 2025-04-17 03:41:02 +08:00
Dawn
c7fbdd7a02 fix(layout): 🐛 回退增加系统通知功能 2025-04-16 23:09:02 +08:00
OrionMark
9e4f31ea52 fix(Plugins): 🐛 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题(list布局) (#248) 2025-04-16 22:59:43 +08:00
OrionMark
3cee9498d7 fix(Plugins): 🐛 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题 (#247)
* fix(Notification): 🐛 暂时移除Notification,会导致程序闪退

* fix(Plugins): 🐛 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题

---------

Co-authored-by: Dawn <2439646234@qq.com>
2025-04-16 22:46:25 +08:00
Dawn
7f8795c36a fix(hook): 🐛 修改mac下子窗口创建逻辑
更新cargo中notify-rust和mac-notification-sys版本
2025-04-16 22:43:34 +08:00
Clover You
3441b8a282 fix(message): 将消息内容解析为文本而不当做 HTML 处理 #237 (#246) 2025-04-16 12:43:25 +08:00
Dawn
b2a15ca5e2 feat(view): 新增子窗口创建方式和邀请加群功能 2025-04-16 03:43:40 +08:00
Dawn
bcce4a01d4 fix(hooks): 🐛 修复一些xss的问题 2025-04-15 18:43:13 +08:00
dependabot[bot]
0b97e09ccc build(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 in /src-tauri (#245)
Bumps [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) from 0.5.14 to 0.5.15.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.14...crossbeam-channel-0.5.15)

---
updated-dependencies:
- dependency-name: crossbeam-channel
  dependency-version: 0.5.15
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dawn <2439646234@qq.com>
2025-04-15 14:15:25 +08:00
dependabot[bot]
9d287b8202 build(deps): bump openssl from 0.10.71 to 0.10.72 in /src-tauri (#244)
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.71 to 0.10.72.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.71...openssl-v0.10.72)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.72
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 14:14:58 +08:00
Dawn
3a50ccdf5c docs(doc): 📝 更新微信群二维码 2025-04-15 13:08:29 +08:00
ZOL
d4bf21d464 feat(worker): 代理实现 (#232)
* feat(worker):  代理实现

197 #197

* fix(worker): 🐛 修复localStorage未初始化访问异常

* fix(worker): 🐛 api代理和websocket代理设置分开

* fix(worker): 🐛 修复保存代理设置,重启异常bug

* style(view): 💄 美化n-tabs白色下划线

* ci(PR-Boot): 🎡 修改pr-boot的key配置

---------

Co-authored-by: Dawn <2439646234@qq.com>
2025-04-15 10:29:58 +08:00
renovate[bot]
430340c084 chore(deps): update dependency vite to v6.2.6 [security] (#243) 2025-04-12 03:28:11 +08:00
renovate[bot]
f9b93372d4 chore(deps): update dependency vite to v6.2.5 [security] (#242)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-05 21:14:20 +08:00
Dawn
41021548a2 chore(android): 🔨 更新Android配置文件 2025-04-04 21:48:11 +08:00
Dawn
6b02f3fc61 fix(config): 🐛 修复renovate配置问题 2025-04-04 01:35:42 +08:00
Dawn
fab231a916 perf(component): 优化群备注和群昵称(beta) 2025-04-04 01:27:24 +08:00
renovate[bot]
2c4841bb11 chore(deps): update dependency @tauri-apps/plugin-shell to v2.2.1 [security] (#239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dawn <2439646234@qq.com>
2025-04-03 18:40:13 +08:00
renovate[bot]
bd6cc99733 chore(deps): update rust crate tauri-plugin-shell to v2.2.1 [security] (#240)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-03 18:37:32 +08:00
renovate[bot]
50a74f3612 chore(deps): update dependency vite to v6.2.4 [security] (#238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 17:04:22 +08:00
Dawn
303669cd2c chore: 发布 v2.6.8
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-03-27 04:42:54 +08:00
Dawn
eca26a977d feat(component): 增加兼容七牛云上传功能
优化头像上传逻辑
修复一些已知问题
2025-03-27 04:29:56 +08:00
Dawn
4be6db7d31 feat(component): 增加邮箱登录、PIN输入框
移除account_code字段,修改为accountc
2025-03-26 22:14:04 +08:00
renovate[bot]
a55fc9b2c1 chore(deps): update dependency vite to v6.2.3 [security] (#233)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 21:48:05 +08:00
Viren Zhou
28fdc79e18 fix(component): 🐛 使用setShow手动触发Popover显示 (#230)
* fix(component): 🐛 修复InfoPopover点击popover内部会使其关闭

#210

* fix(component): 🐛 修复InfoPopover点击popover内部会使其关闭

#210

* fix(component): 🐛 使用setShow手动触发Popover显示

#210
2025-03-25 00:15:19 +08:00
Dawn
bb027cf921 build(cargo): 📦 更新Cargo.lock中的版本 2025-03-22 17:09:57 +08:00
Dawn
4f3061ed78 ci(chatbot): 🎡 修复pr-chatbot千问模型授权问题 (#228) 2025-03-22 16:53:16 +08:00
Clover You
9deefc0fa2 fix(hooks): replace focus call with focusOn function in useMsgInput (#227)
fix(hooks): replace focus call with focusOn function in useMsgInput #151
2025-03-22 16:31:56 +08:00
Dawn
bb7a94b7cc build(tauri): 📦 升级tauri v2.4.0版本 2025-03-22 11:12:43 +08:00
Clover You
9e867c672c fix: Implement placeholder by CSS (#226)
Co-authored-by: Dawn <2439646234@qq.com>
2025-03-21 17:52:00 +08:00
Dawn
7c1cf1335b [Snyk] Upgrade @tauri-apps/plugin-updater from 2.5.0 to 2.5.1 (#225)
fix: upgrade @tauri-apps/plugin-updater from 2.5.0 to 2.5.1

Snyk has created this PR to upgrade @tauri-apps/plugin-updater from 2.5.0 to 2.5.1.

See this package in npm:
@tauri-apps/plugin-updater

See this project in Snyk:
https://app.snyk.io/org/nongyehong/project/25d2c56d-1e8a-4e53-a4b2-4c5c5028c050?utm_source=github&utm_medium=referral&page=upgrade-pr

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-03-21 17:49:19 +08:00
Clover You
2cbf7273fb fix(chat): 修复回复消息导致光标偏移 #223 (#224) 2025-03-21 17:45:00 +08:00
Dawn
a917332e81 chore: 发布 v2.6.7
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-03-19 01:05:09 +08:00
Dawn
7e865c7cb0 perf(component): 优化头像上传功能(群头像) 2025-03-19 00:58:40 +08:00
Dawn
dcf4664a18 perf(component): 优化群聊操作(我的群昵称、群备注、群名称) 2025-03-18 19:47:12 +08:00
Clover You
6ad6c58691 fix(chat-editor): record cursor position correctly (#221) 2025-03-18 16:00:22 +08:00
Clover You
a8b548cb0b feat(vite): add vite-plugin-vue-devtools for enhanced debugging (#219)
Co-authored-by: Dawn <2439646234@qq.com>
2025-03-18 14:06:41 +08:00
Dawn
f0e9f27c5f feat(component): 增加表情包功能 2025-03-18 11:47:52 +08:00
dependabot[bot]
b019b479bd build(deps): bump zip from 2.2.2 to 2.4.1 in /src-tauri (#217)
Bumps [zip](https://github.com/zip-rs/zip2) from 2.2.2 to 2.4.1.
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v2.2.2...v2.4.1)

---
updated-dependencies:
- dependency-name: zip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 09:26:57 +08:00
Dawn
52f9047299 perf(component): 优化好友申请列表 2025-03-18 02:14:13 +08:00
Dawn
a39c054b62 fix(component): 🐛 修复win下聊天框滚动条隐藏坍塌问题和会话快速切换的异步竞态问题 2025-03-18 00:31:58 +08:00
Clover You
2ed72c74d4 chore(tauri): 确保 frontend_dist 存在避免出现 proc-macro panicked (#216)
* chore(tauri): 确保 frontend_dist 存在避免出现 proc-macro panicked

* chore: lint
2025-03-17 22:07:03 +08:00
Dawn
e62e7932ea build(release-it): 📦 降低release-it依赖版本 2025-03-17 17:47:33 +08:00
Dawn
d7216f70c6 docs(README): 📝 更新README 2025-03-17 16:27:07 +08:00
Dawn
15d16e567f perf(component): 优化好友申请列表和群详情
升级vite和unocss依赖|修改群聊成员角色样式
2025-03-17 15:04:04 +08:00
dependabot[bot]
9804a2ed67 build(deps): bump ring from 0.17.8 to 0.17.14 in /src-tauri (#215)
Bumps [ring](https://github.com/briansmith/ring) from 0.17.8 to 0.17.14.
- [Changelog](https://github.com/briansmith/ring/blob/main/RELEASES.md)
- [Commits](https://github.com/briansmith/ring/commits)

---
updated-dependencies:
- dependency-name: ring
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 09:36:15 +08:00
Dawn
696055585c perf(component): 优化群聊详情显示 2025-03-17 02:00:54 +08:00
Dawn
474a3886f4 fix(component): 🐛 修复用户上线推送的数据类型错误问题
优化搜索好友\群聊的列表样式和性能
2025-03-17 00:50:09 +08:00
Dawn
bc65a3bd5a feat(component): 增加动画表情处理
优化聊天框性能问题
2025-03-16 01:38:36 +08:00
ZOL
51baa1a907 fix(layout): 🐛 修复F5刷新会使窗口变大的bug (#214) 2025-03-15 20:42:15 +08:00
Dawn
e7144313a4 feat(component): 增加localStorage缓存消息列表(暂时) 2025-03-15 15:15:22 +08:00
Dawn
64eefbe7bd perf(view): 优化群主管理员标签样式 2025-03-15 00:59:26 +08:00
Dawn
0b97ccb767 fix(component): 🐛 修复右键二级菜单图标错误bug
增加消息框快速滚动到底部悬浮按钮
2025-03-15 00:22:40 +08:00
Dawn
0eed677805 fix(component): 🐛 完善消息免打扰功能和样式 2025-03-14 16:14:15 +08:00
Dawn
40e9786215 fix(store): 🐛 修复群聊列表获取不到问题(后续把stores中定义的reactive换为ref) 2025-03-13 18:13:27 +08:00
Dawn
29bec4f373 perf(component): 优化右键二级菜单点击事件不触发问题、拆分屏蔽消息和免打扰功能 2025-03-13 14:03:46 +08:00
Dawn
90d55bb4ba perf(component): 优化右键二级菜单弹出的问题 2025-03-12 11:03:56 +08:00
Dawn
6731c89c32 feat(component): 增加会话列表右键菜单功能(免打扰) 2025-03-11 23:48:54 +08:00
Dawn
530ce3e63d perf(component): 优化虚拟列表加载更多闪屏的问题和消息气泡动画问题 2025-03-11 03:16:58 +08:00
Dawn
3bea8d9f02 perf(component): 优化虚拟列表滚动掉帧问题
移除消息气泡动画
2025-03-09 02:37:13 +08:00
Dawn
19d699b19f perf(component): 优化虚拟列表 2025-03-08 04:02:14 +08:00
Dawn
65264b3dac fix(component): 🐛 修复新消息回复无法跳转问题
修复用户修改头像后没有更新问题
修复发消息无法打开会话问题(取消隐藏会话)
2025-03-08 00:51:58 +08:00
Dawn
1bc38ba4c1 perf(component): 优化消息列表 2025-03-07 02:08:59 +08:00
Dawn
51b7d621fa fix(component): 🐛 修复缓存存储问题、会话切换后聊天框内容混合问题
增加hula号展示
2025-03-05 18:25:18 +08:00
Dawn
c492c0d18e perf(view): 优化申请群聊功能
完善加好友/群聊样式|增加hula号
2025-03-04 22:46:42 +08:00
Dawn
a832dc1220 perf(view): 优化项目中类型的编写和定义方式 2025-03-04 13:34:59 +08:00
Dawn
34e663373b fix(util): 🐛 修复消息上报在未登录的时候触发问题 2025-03-04 02:36:05 +08:00
Dawn
1560cb4a0b fix(view): 🐛 修复重新启动应用后的登录逻辑 2025-03-04 00:30:31 +08:00
Dawn
20f52e471b perf(component): 优化好友页面和聊天页面切换需要重新加载问题
修改一些组件的类型|修改删除会话接口
2025-03-03 17:53:49 +08:00
Dawn
0dcddfc810 fix(component): 🐛 修复回复的内容宽度问题 2025-03-02 22:35:38 +08:00
Dawn
7984fe04ba chore: 发布 v2.6.6
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-03-02 02:48:46 +08:00
Dawn
5e2f6e454e fix(service): 🐛 修复oss接口配置问题 2025-03-02 02:44:46 +08:00
Dawn
31c1709f63 perf(component): 优化一些功能的操作体验和样式 2025-03-01 22:48:15 +08:00
Dawn
801ec4ee00 perf(service): 优化http模块
优化预加载页面组件加载顺序
2025-03-01 12:05:50 +08:00
Dawn
90f108a61f feat(component): 增加预加载页面样式 2025-02-28 23:14:25 +08:00
Dawn
2c163431c5 fix(global): 🐛 修复一些内容的类型问题 2025-02-28 11:41:09 +08:00
Dawn
611b4ebed3 chore: 发布 v2.6.5
Some checks failed
Release CI / publish-tauri (, ubuntu-22.04) (push) Has been cancelled
Release CI / publish-tauri (, windows-latest) (push) Has been cancelled
Release CI / publish-tauri (--target aarch64-apple-darwin, macos-latest) (push) Has been cancelled
Release CI / publish-tauri (--target x86_64-apple-darwin, macos-latest) (push) Has been cancelled
2025-02-27 22:33:03 +08:00
Dawn
3333aa0eb7 fix(global): 🐛 修改全局使用到的一些类型为string
closed #211
2025-02-27 22:29:45 +08:00
Dawn
5cb9bfc41e perf(component): 优化自动登录功能 2025-02-27 16:37:21 +08:00
Dawn
67cad46ee7 perf(view): 优化登录逻辑 2025-02-27 12:38:20 +08:00
Dawn
b08e7d8b60 fix(component): 🐛 修复加好友/群聊顶部栏不可操作问题和窗口通信响应式问题 2025-02-26 22:45:42 +08:00
Dawn
67169133e6 perf(component): 优化加好友/群聊窗体样式和功能 2025-02-26 21:58:14 +08:00
mint
90a89853ed feat(view): 添加好友或群,基本完成了查找添加好友相关的内容,可以查出来群聊信息暂时还没有写添加 (#209)
* feat(view):  添加好友或群,基本完成了查找添加好友相关的内容,可以查出来群聊信息暂时还没有写添加

查询用户已经完成,可以通过用户的name昵称或account账号来进行一个匹配,

BREAKING CHANGE: 一次性查出多条。添加好友用的是AddFriendsModal.vu页面进行一些修改,

closed https://gitee.com/HuLaSpark/HuLa/issues/IBJYSD

* fix(view): 🐛 修改创建窗体minH的问题

---------

Co-authored-by: Dawn <2439646234@qq.com>
2025-02-25 16:32:07 +08:00
Dawn
d1f831df73 perf(component): 优化侧边栏功能 2025-02-25 16:18:58 +08:00
Dawn
0e07e339b7 perf(service): 优化群聊功能 (#208)
完善一些代码和操作的提示
2025-02-22 18:36:28 +08:00
242 changed files with 34400 additions and 15079 deletions

View File

@@ -1,6 +1,6 @@
# 后端服务地址
VITE_SERVICE_URL="https://hulaspark.com/api"
# websocket服务地址
# # websocket服务地址
VITE_WEBSOCKET_URL="wss://hulaspark.com/websocket"
# 项目标题
VITE_APP_TITLE="HuLa—IM"

View File

@@ -51,6 +51,7 @@ module.exports = {
'vue/multi-word-component-names': 'off', //关闭组件命名规则
'@typescript-eslint/no-explicit-any': 'off', // 关闭any校验
'no-redeclare': 2, //禁止重复声明变量
'eol-last': 'off' // 关闭行尾符linebreak-style的校验
'eol-last': 'off', // 关闭行尾符linebreak-style的校验
'vue/use-v-on-exact': 'off', // 如果使用了键盘事件,这个规则必须添加 exact,例如 `@keydown.exact`。该事件对 chat-editor 存在影响
}
}

View File

@@ -1,45 +0,0 @@
name: Codecov
on:
pull_request:
branches: [ master ]
paths:
- 'src/**'
- 'test/**'
jobs:
codecov:
# 跳过 Renovate PR
if: |
github.actor != 'renovate[bot]' &&
github.actor != 'renovate-preview[bot]'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# 首先安装 pnpm
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
run_install: false
# 然后设置 Node.js
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Run tests with coverage
run: pnpm coverage
- name: Upload results to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: HuLaSpark/HuLa

View File

@@ -2,6 +2,10 @@ name: Greetings
on: [pull_request_target, issues]
# 顶层设置最小权限,推荐 contents: read
permissions:
contents: read
jobs:
greeting:
# 跳过 Renovate PR

View File

@@ -5,6 +5,10 @@ on:
tags:
- 'v*'
# 确保默认情况下所有 job 都只有只读权限,只有需要写权限的 job比如发布 release 的 job才会单独提升权限其他 job 依然保持最小权限,最大程度保护仓库安全
permissions:
contents: read
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true # 如果有新的发布任务,取消正在进行的任务

View File

@@ -9,7 +9,7 @@ export default {
'oxlint src',
createCommand('pnpm eslint --fix', ''),
createCommand('prettier --write', '--write'),
() => 'pnpm test:run',
// () => 'pnpm test:run',
() => 'vue-tsc --noEmit'
]
}

View File

@@ -3,4 +3,5 @@
".vscode/tailwindcss.json"
],
"java.configuration.updateBuildConfiguration": "disabled",
"typescript.tsdk": "node_modules/typescript/lib",
}

View File

@@ -1,5 +1,235 @@
## [2.6.12](https://github.com/HuLaSpark/HuLa/compare/v2.6.11...v2.6.12) (2025-05-25)
### ✨ Features | 新功能
* **component:** :sparkles: 增加右键emoji可以另存为 ([0dfdfc1](https://github.com/HuLaSpark/HuLa/commit/0dfdfc1269256baa59316b7936db94468b733b69))
* **hook:** :sparkles: 增强文本选择复制 ([791b9cc](https://github.com/HuLaSpark/HuLa/commit/791b9cc69485d9c8245396d72cca834ac9a61aa0)), closes [#279](https://github.com/HuLaSpark/HuLa/issues/279)
### 🐛 Bug Fixes | Bug 修复
* 修复ws链接断开没有重试问题 ([#276](https://github.com/HuLaSpark/HuLa/issues/276)) ([e068a25](https://github.com/HuLaSpark/HuLa/commit/e068a253e5215aacb606f852087e5e9e67010404))
* **agreement:** :bug: 安装界面乱码 ([#277](https://github.com/HuLaSpark/HuLa/issues/277)) ([13c528a](https://github.com/HuLaSpark/HuLa/commit/13c528a35e11ee5fa7325beb1fcef8d28f2550e3)), closes [#275](https://github.com/HuLaSpark/HuLa/issues/275)
* **hook:** :bug: 修复除emoji类型和图片类型都可以另存为的bug ([d2b6ab2](https://github.com/HuLaSpark/HuLa/commit/d2b6ab25d6fd7ea5a4e9df1d287fe3d3cc9a1b58))
* **hook:** :bug: 修复mac系统右键会选中文本的问题 ([7e762e8](https://github.com/HuLaSpark/HuLa/commit/7e762e8524df0d17f85ca71eedb95d01dea7c8d3))
* **hook:** :bug: 暂时移除/唤起ai快捷键识别 ([4a1a05c](https://github.com/HuLaSpark/HuLa/commit/4a1a05cf51b4bab670b2da5faac43bf33f902998))
* **input:** :bug: 修复mac下输入框检查拼写和字母大小写问题 ([f8602e5](https://github.com/HuLaSpark/HuLa/commit/f8602e56ebbf4ae90f5f5dc7e7cebee317bf4ab4))
* **mac:** :bug: 修复mac下点击关闭按钮无法关闭home窗口问题 ([2a63046](https://github.com/HuLaSpark/HuLa/commit/2a63046bbd2d7c4cd484d456c708ab47bdc8e792))
* **view:** :bug: 修复托盘菜单内容不展示问题和托盘图标闪烁后不展示问题 ([c927be4](https://github.com/HuLaSpark/HuLa/commit/c927be4c3fd00cdde9f93c15793ea56ce5b11d14))
* **view:** :bug: 修改邮箱输入框长度限制 ([61618db](https://github.com/HuLaSpark/HuLa/commit/61618db93cbe9512eceb66fbc50006a90f7d44f1)), closes [#278](https://github.com/HuLaSpark/HuLa/issues/278)
* **worker:** :bug: 修复ws在重连后清空token导致无法对应获取消息问题 ([030fed7](https://github.com/HuLaSpark/HuLa/commit/030fed7d60a6eb03dccb49e6f108b2b5d67161e4))
### ⚡️ Performance Improvements | 性能优化
* **global:** :zap: 增加ws健康检查兜底刷新最新消息内容、网络断线恢复重连 ([f734dca](https://github.com/HuLaSpark/HuLa/commit/f734dca910b17e3dd8a4d8e5e58cae3e7caaa333))
## [2.6.11](https://github.com/HuLaSpark/HuLa/compare/v2.6.10...v2.6.11) (2025-05-18)
### ⚠ BREAKING CHANGES
* **component:** webSocket的计时器调整为worker计时器
### ✨ Features | 新功能
* **view:** :sparkles: 新增重置密码功能 ([b45cfd2](https://github.com/HuLaSpark/HuLa/commit/b45cfd22120c9fe46fead1fcb9daf5cc7b25f423))
* **view:** :sparkles: 增加修订版本更新检测修复每次版本变动都更新的bug ([#271](https://github.com/HuLaSpark/HuLa/issues/271)) ([833d09e](https://github.com/HuLaSpark/HuLa/commit/833d09efe4e218d483c37a87cb1bdd39443f46c7))
### 🐛 Bug Fixes | Bug 修复
* **component:** :bug: 点击头像弹出个人信息面板 ([#273](https://github.com/HuLaSpark/HuLa/issues/273)) ([eaa4288](https://github.com/HuLaSpark/HuLa/commit/eaa42885c33a03d84cc2999c6a77a1eb4d5baf0a))
* **component:** :bug: 修复回复消息表情不展示问题 ([f33f41d](https://github.com/HuLaSpark/HuLa/commit/f33f41d41f0f60fb5ab9e0cff6305b0cef548eea))
* **component:** :bug: 修复图片截图功能文件大小问题 ([f816314](https://github.com/HuLaSpark/HuLa/commit/f816314115a02e10241f299536db9e54854a510f))
* **component:** :bug: 修复因公告宽度导致聊天框布局混乱问题 ([2753e89](https://github.com/HuLaSpark/HuLa/commit/2753e89dd52f7a4a66eca3ffe5e8189bdc266170))
* **component:** :bug: 修复mac下更新提示窗口可以调整大小、拖动、标题栏显示问题 ([c761486](https://github.com/HuLaSpark/HuLa/commit/c76148687cd86b2f56d34525bc3d56b859d74a13))
* **component:** :bug: 优化windows上群聊的展示时机和样式 ([92dba12](https://github.com/HuLaSpark/HuLa/commit/92dba1218ffc113e9ea492c1ead20732c40bce32))
* **ios:** :bug: 修复ios init导致无法启动问题 ([3ef1666](https://github.com/HuLaSpark/HuLa/commit/3ef1666ef7eadae9990fbeed357b5c1ccc085c12))
* **notify:** :bug: 修复免打扰时还会触发托盘图标闪烁(windows) ([02ef835](https://github.com/HuLaSpark/HuLa/commit/02ef83585549851836b11dc1e58e7f47e5a06754))
* **view:** :bug: 修复系统托盘闪烁和提示菜单内容不显示问题 ([4954b1c](https://github.com/HuLaSpark/HuLa/commit/4954b1cc241ed0275619d7c3b7db2b7ead7e680e))
* **view:** :bug: 修复系统托盘信息提示菜单内容展示问题和点击跳转问题 ([2c8b15c](https://github.com/HuLaSpark/HuLa/commit/2c8b15cd3a971de02c50c682b2f3b8902ba52479))
* **view:** :bug: 修复win下忘记密码页面背景颜色问题 ([bd825e0](https://github.com/HuLaSpark/HuLa/commit/bd825e0c32534be3cce4788de8b53d9c686c7464))
### ⚡️ Performance Improvements | 性能优化
* **component:** :zap: 优化群聊成员和公告展示、以及完成搜索会话功能 ([a8bf8e0](https://github.com/HuLaSpark/HuLa/commit/a8bf8e00aba0ea0df35cc165ae0fc71aa333e511))
* **component:** :zap: 优化消息回复表情功能 ([2081e99](https://github.com/HuLaSpark/HuLa/commit/2081e99d4ad45b8f13ebf57ae7f6b5cceb6f1dbc))
* **component:** :zap: 优化emoji的样式和展示 ([f0aa001](https://github.com/HuLaSpark/HuLa/commit/f0aa0014a9d6a5ff32a537f4900a61ce340db6de))
* **service:** :zap: 优化websocket可以在窗口隐藏后继续监听 ([884a53e](https://github.com/HuLaSpark/HuLa/commit/884a53e4484a1a0d0efbcb17f5761ddd80409461))
* **view:** :zap: 优化在登录框下未提示更新、右下角窗口可拖动问题 ([777951b](https://github.com/HuLaSpark/HuLa/commit/777951bb8cff2383611a81e9aaaa4fc2c2e7f6a6))
## [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)
### ✨ Features | 新功能
* 回复可以回复表情包、图片 ([#251](https://github.com/HuLaSpark/HuLa/issues/251)) ([4180906](https://github.com/HuLaSpark/HuLa/commit/418090604a08a189ae94d487f762406a3bc853ab))
* **hooks:** 优化消息类型判断逻辑 ([#249](https://github.com/HuLaSpark/HuLa/issues/249)) ([82c3fd5](https://github.com/HuLaSpark/HuLa/commit/82c3fd529c96153a198f1425d02751173761de0b))
* **view:** :sparkles: 新增中版本强制更新功能 ([#252](https://github.com/HuLaSpark/HuLa/issues/252)) ([edbd3de](https://github.com/HuLaSpark/HuLa/commit/edbd3defccdfe0d1b6163e82193316f3044217db)), closes [#183](https://github.com/HuLaSpark/HuLa/issues/183) [#183](https://github.com/HuLaSpark/HuLa/issues/183) [#183](https://github.com/HuLaSpark/HuLa/issues/183)
* **view:** :sparkles: 新增子窗口创建方式和邀请加群功能 ([b2a15ca](https://github.com/HuLaSpark/HuLa/commit/b2a15ca5e219b32115702d06f937a396ddaf57c5))
* **worker:** :sparkles: 代理实现 ([#232](https://github.com/HuLaSpark/HuLa/issues/232)) ([d4bf21d](https://github.com/HuLaSpark/HuLa/commit/d4bf21d464cc1faea22abcb5369daef6360cd1e0)), closes [#197](https://github.com/HuLaSpark/HuLa/issues/197)
### 🐛 Bug Fixes | Bug 修复
* 修复回复框错位 BUG ([#256](https://github.com/HuLaSpark/HuLa/issues/256)) ([e46ee95](https://github.com/HuLaSpark/HuLa/commit/e46ee95bb872812101fb0938a6ffdf161a28308f)), closes [#253](https://github.com/HuLaSpark/HuLa/issues/253)
* **common:** :bug: 修复回复表情包或者emoji的时候位置偏移 ([f9a2b18](https://github.com/HuLaSpark/HuLa/commit/f9a2b184735a718ea1063f0914837d0bef36367c))
* **common:** :bug: 修复FloatBlockList组件悬浮层bug ([2b9a7ed](https://github.com/HuLaSpark/HuLa/commit/2b9a7edaef876aeea2a9c4605e136c413675a4f2))
* **config:** :bug: 修复renovate配置问题 ([6b02f3f](https://github.com/HuLaSpark/HuLa/commit/6b02f3fc61f73bf65e594e9aa23aa610996be429))
* **hook:** :bug: 修复回复时出现空格符和回复替换等问题 ([b8c3c4e](https://github.com/HuLaSpark/HuLa/commit/b8c3c4eec26212a584f3e368c7b4782b2c5e8f07))
* **hook:** :bug: 修改mac下子窗口创建逻辑 ([7f8795c](https://github.com/HuLaSpark/HuLa/commit/7f8795c36a158359aaf82e491c927ddf5c80c8ee))
* **hooks:** :bug: 修复一些xss的问题 ([bcce4a0](https://github.com/HuLaSpark/HuLa/commit/bcce4a01d4a0955d82dcbb82ec570435fa69a343))
* **layout:** :bug: 回退增加系统通知功能 ([c7fbdd7](https://github.com/HuLaSpark/HuLa/commit/c7fbdd7a0290355a186732f2419ceddc20741e01))
* **message:** 将消息内容解析为文本而不当做 HTML 处理 [#237](https://github.com/HuLaSpark/HuLa/issues/237) ([#246](https://github.com/HuLaSpark/HuLa/issues/246)) ([3441b8a](https://github.com/HuLaSpark/HuLa/commit/3441b8a28286c9e69f27338a6974ebd26eeb69bf))
* **Plugins:** :bug: 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题 ([#247](https://github.com/HuLaSpark/HuLa/issues/247)) ([3cee949](https://github.com/HuLaSpark/HuLa/commit/3cee9498d79a0f2b00fd5ecbac87f3d260d4b449))
* **Plugins:** :bug: 修复插件卸载后重新打开插件列表状态依旧是安装状态问题list布局 ([#248](https://github.com/HuLaSpark/HuLa/issues/248)) ([9e4f31e](https://github.com/HuLaSpark/HuLa/commit/9e4f31ea526230a0ce0e1f8b48302c3dc5792eb8))
* **view:** :bug: 修复会话中转义字符的问题 ([b793f71](https://github.com/HuLaSpark/HuLa/commit/b793f71f26507a4e9b6402dd8a3dd3cfac75c5f8))
### ⚡️ Performance Improvements | 性能优化
* **component:** :zap: 优化链接的展示和解析 ([74bf370](https://github.com/HuLaSpark/HuLa/commit/74bf3702c73b751c0e3165c357064136896d548f))
* **component:** :zap: 优化屏蔽后的逻辑 ([2a5b9de](https://github.com/HuLaSpark/HuLa/commit/2a5b9de68b64ceacd535074aaf6284060d869918))
* **component:** :zap: 优化群备注和群昵称(beta) ([fab231a](https://github.com/HuLaSpark/HuLa/commit/fab231a9166acac97d50426109e2e37364a2d794))
* **rust:** :zap: 修改mac系统托盘的右键菜单 ([6dbfa49](https://github.com/HuLaSpark/HuLa/commit/6dbfa496b4c18581e5915890033c6ebdf65a6976))
## [2.6.8](https://github.com/HuLaSpark/HuLa/compare/v2.6.7...v2.6.8) (2025-03-26)
### ✨ Features | 新功能
* **component:** :sparkles: 增加兼容七牛云上传功能 ([eca26a9](https://github.com/HuLaSpark/HuLa/commit/eca26a977d315da23dec8c178b96b7db3b8a804f))
* **component:** :sparkles: 增加邮箱登录、PIN输入框 ([4be6db7](https://github.com/HuLaSpark/HuLa/commit/4be6db7d31e77efd93cef9c4108ae0a8cc7ef2e0))
### 🐛 Bug Fixes | Bug 修复
* **chat:** 修复回复消息导致光标偏移 [#223](https://github.com/HuLaSpark/HuLa/issues/223) ([#224](https://github.com/HuLaSpark/HuLa/issues/224)) ([2cbf727](https://github.com/HuLaSpark/HuLa/commit/2cbf7273fb107de1bf363958758aa0a61e1206b4))
* **component:** 🐛 使用setShow手动触发Popover显示 ([#230](https://github.com/HuLaSpark/HuLa/issues/230)) ([28fdc79](https://github.com/HuLaSpark/HuLa/commit/28fdc79e1891ca0f81cafe44d65c806bf2bda4f8)), closes [#210](https://github.com/HuLaSpark/HuLa/issues/210) [#210](https://github.com/HuLaSpark/HuLa/issues/210) [#210](https://github.com/HuLaSpark/HuLa/issues/210)
* **hooks:** replace focus call with focusOn function in useMsgInput ([#227](https://github.com/HuLaSpark/HuLa/issues/227)) ([9deefc0](https://github.com/HuLaSpark/HuLa/commit/9deefc0fa21df42def3aac8012d622e46a270ef4)), closes [#151](https://github.com/HuLaSpark/HuLa/issues/151)
* Implement placeholder by CSS ([#226](https://github.com/HuLaSpark/HuLa/issues/226)) ([9e867c6](https://github.com/HuLaSpark/HuLa/commit/9e867c672c482e3ca38b03033d80cd79df1c457d))
## [2.6.7](https://github.com/HuLaSpark/HuLa/compare/v2.6.6...v2.6.7) (2025-03-18)
### ✨ Features | 新功能
* **component:** :sparkles: 增加表情包功能 ([f0e9f27](https://github.com/HuLaSpark/HuLa/commit/f0e9f27c5fbf28759c5f6520ba49af5649714bb1))
* **component:** :sparkles: 增加动画表情处理 ([bc65a3b](https://github.com/HuLaSpark/HuLa/commit/bc65a3bd5a97255dbaade6fc4f5e63f29647fdcf))
* **component:** :sparkles: 增加会话列表右键菜单功能(免打扰) ([6731c89](https://github.com/HuLaSpark/HuLa/commit/6731c89c32ed32c38d1913876d3e9df3d168f969))
* **component:** :sparkles: 增加localStorage缓存消息列表(暂时) ([e714431](https://github.com/HuLaSpark/HuLa/commit/e7144313a4858bd5c918e9d9a4d377b0ce8cadbc))
* **vite:** add vite-plugin-vue-devtools for enhanced debugging ([#219](https://github.com/HuLaSpark/HuLa/issues/219)) ([a8b548c](https://github.com/HuLaSpark/HuLa/commit/a8b548cb0bca1eedcd5d16e4589eded8761d2455))
### 🐛 Bug Fixes | Bug 修复
* **chat-editor:** record cursor position correctly ([#221](https://github.com/HuLaSpark/HuLa/issues/221)) ([6ad6c58](https://github.com/HuLaSpark/HuLa/commit/6ad6c586912eeeb04a6ea49d9bbf0b5962fdfcc6))
* **component:** :bug: 完善消息免打扰功能和样式 ([0eed677](https://github.com/HuLaSpark/HuLa/commit/0eed67780521a28cb51a4272498add8f008f784f))
* **component:** :bug: 修复缓存存储问题、会话切换后聊天框内容混合问题 ([51b7d62](https://github.com/HuLaSpark/HuLa/commit/51b7d621fad80cee15aedf201068103c4e88a23d))
* **component:** :bug: 修复回复的内容宽度问题 ([0dcddfc](https://github.com/HuLaSpark/HuLa/commit/0dcddfc810b731e194c2a37f16d56473bbf0607a))
* **component:** :bug: 修复新消息回复无法跳转问题 ([65264b3](https://github.com/HuLaSpark/HuLa/commit/65264b3dacb8820a9938f107408ec31306a0738e))
* **component:** :bug: 修复用户上线推送的数据类型错误问题 ([474a388](https://github.com/HuLaSpark/HuLa/commit/474a3886f45476e2640a86f3fb8c991fc96399ee))
* **component:** :bug: 修复右键二级菜单图标错误bug ([0b97ccb](https://github.com/HuLaSpark/HuLa/commit/0b97ccb76785e5f8a13466ad93a8b32beb213572))
* **component:** :bug: 修复win下聊天框滚动条隐藏坍塌问题和会话快速切换的异步竞态问题 ([a39c054](https://github.com/HuLaSpark/HuLa/commit/a39c054b6264fb2cc0addfb2d1970b880ba53fd4))
* **layout:** :bug: 修复F5刷新会使窗口变大的bug ([#214](https://github.com/HuLaSpark/HuLa/issues/214)) ([51baa1a](https://github.com/HuLaSpark/HuLa/commit/51baa1a907a1339d354fbe3f131cdf87a9d9a49a))
* **store:** :bug: 修复群聊列表获取不到问题(后续把stores中定义的reactive换为ref) ([40e9786](https://github.com/HuLaSpark/HuLa/commit/40e97862153a084542bb263f2d5bd33f3dc39472))
* **util:** :bug: 修复消息上报在未登录的时候触发问题 ([34e6633](https://github.com/HuLaSpark/HuLa/commit/34e663373b1885fab34724b6ef2091a9bb9a9bc0))
* **view:** :bug: 修复重新启动应用后的登录逻辑 ([1560cb4](https://github.com/HuLaSpark/HuLa/commit/1560cb4a0bc8729f4b008ba8c96ee6918a8b6dfe))
### ⚡️ Performance Improvements | 性能优化
* **component:** :zap: 优化好友申请列表 ([52f9047](https://github.com/HuLaSpark/HuLa/commit/52f9047299282c1d5b2f67efbd6f2fc865fc476e))
* **component:** :zap: 优化好友申请列表和群详情 ([15d16e5](https://github.com/HuLaSpark/HuLa/commit/15d16e567f2082c0ee87939a9816e1c7c84ae362))
* **component:** :zap: 优化好友页面和聊天页面切换需要重新加载问题 ([20f52e4](https://github.com/HuLaSpark/HuLa/commit/20f52e471bd8684036b1ecfa8ecf6064ea75cc18))
* **component:** :zap: 优化群聊操作(我的群昵称、群备注、群名称) ([dcf4664](https://github.com/HuLaSpark/HuLa/commit/dcf4664a185b6ab83b324a9e40e191b99c6e09a9))
* **component:** :zap: 优化群聊详情显示 ([6960555](https://github.com/HuLaSpark/HuLa/commit/696055585c9d734d069b0d9d797aad7b62cd88ee))
* **component:** :zap: 优化头像上传功能(群头像) ([7e865c7](https://github.com/HuLaSpark/HuLa/commit/7e865c7cb0e6f1c6d4fb87c1a95a8aa2471304fa))
* **component:** :zap: 优化消息列表 ([1bc38ba](https://github.com/HuLaSpark/HuLa/commit/1bc38ba4c1dea8d0ca830166b9bbbc3e6f41c845))
* **component:** :zap: 优化虚拟列表 ([19d699b](https://github.com/HuLaSpark/HuLa/commit/19d699b19f7e324ca01c852400add6a98ed3ef5f))
* **component:** :zap: 优化虚拟列表滚动掉帧问题 ([3bea8d9](https://github.com/HuLaSpark/HuLa/commit/3bea8d9f02ae179528b8673eb3f9cc6894a58381))
* **component:** :zap: 优化虚拟列表加载更多闪屏的问题和消息气泡动画问题 ([530ce3e](https://github.com/HuLaSpark/HuLa/commit/530ce3e63d74d97a2fbc10ad862a7fe166365bb0))
* **component:** :zap: 优化右键二级菜单弹出的问题 ([90d55bb](https://github.com/HuLaSpark/HuLa/commit/90d55bb4baefa287fd458ed8f089786a9fb5d372))
* **component:** :zap: 优化右键二级菜单点击事件不触发问题、拆分屏蔽消息和免打扰功能 ([29bec4f](https://github.com/HuLaSpark/HuLa/commit/29bec4f373d2e8ce1dbcc5a88d02844b70a0b9e1))
* **view:** :zap: 优化群主管理员标签样式 ([64eefbe](https://github.com/HuLaSpark/HuLa/commit/64eefbe7bdaef03b4598776c64f01ecdbe90626d))
* **view:** :zap: 优化申请群聊功能 ([c492c0d](https://github.com/HuLaSpark/HuLa/commit/c492c0d18e9b0288ae45827b71bd29f4632bb636))
* **view:** :zap: 优化项目中类型的编写和定义方式 ([a832dc1](https://github.com/HuLaSpark/HuLa/commit/a832dc1220468de33f724c78256047a84ff62811))
# Changelog
## <small>2.6.6 (2025-03-01)</small>
* fix(global): :bug: 修复一些内容的类型问题 ([2c16343](https://github.com/HuLaSpark/HuLa/commit/2c16343))
* fix(service): :bug: 修复oss接口配置问题 ([5e2f6e4](https://github.com/HuLaSpark/HuLa/commit/5e2f6e4))
* perf(component): :zap: 优化一些功能的操作体验和样式 ([31c1709](https://github.com/HuLaSpark/HuLa/commit/31c1709))
* perf(service): :zap: 优化http模块 ([801ec4e](https://github.com/HuLaSpark/HuLa/commit/801ec4e))
* feat(component): :sparkles: 增加预加载页面样式 ([90f108a](https://github.com/HuLaSpark/HuLa/commit/90f108a))
## <small>2.6.5 (2025-02-27)</small>
* fix(common): :bug: 修复登出账号时没有清空系统托盘图标上的未读数(MacOS) ([383a776](https://github.com/HuLaSpark/HuLa/commit/383a776))
* fix(component): :bug: 修复加好友/群聊顶部栏不可操作问题和窗口通信响应式问题 ([b08e7d8](https://github.com/HuLaSpark/HuLa/commit/b08e7d8))
* fix(component): :bug: 修复跳转到会话选中回退第一个问题 ([029f3f9](https://github.com/HuLaSpark/HuLa/commit/029f3f9))
* fix(config): :bug: 修复检查更新问题(暂时先切换回github) ([d6d488b](https://github.com/HuLaSpark/HuLa/commit/d6d488b))
* fix(file): :bug: 修复git未监听文件名大小写修改 ([9a8659b](https://github.com/HuLaSpark/HuLa/commit/9a8659b))
* fix(git): :bug: 删除多余的文件,导致打包出错 ([df7fed3](https://github.com/HuLaSpark/HuLa/commit/df7fed3))
* fix(global): :bug: 修改全局使用到的一些类型为string ([3333aa0](https://github.com/HuLaSpark/HuLa/commit/3333aa0)), closes [#211](https://github.com/HuLaSpark/HuLa/issues/211)
* fix(worker): :bug: 修复ws连接问题和一些页面组件问题 ([eadea02](https://github.com/HuLaSpark/HuLa/commit/eadea02))
* perf(component): :zap: 优化侧边栏功能 ([d1f831d](https://github.com/HuLaSpark/HuLa/commit/d1f831d))
* perf(component): :zap: 优化加好友/群聊窗体样式和功能 ([6716913](https://github.com/HuLaSpark/HuLa/commit/6716913))
* perf(component): :zap: 优化自动登录功能 ([5cb9bfc](https://github.com/HuLaSpark/HuLa/commit/5cb9bfc))
* perf(service): :zap: 优化群聊功能 (#208) ([0e07e33](https://github.com/HuLaSpark/HuLa/commit/0e07e33)), closes [#208](https://github.com/HuLaSpark/HuLa/issues/208)
* perf(view): :zap: 优化登录逻辑 ([67cad46](https://github.com/HuLaSpark/HuLa/commit/67cad46))
* perf(view): :zap: 优化群聊侧边栏用户信息展示 ([4b03f57](https://github.com/HuLaSpark/HuLa/commit/4b03f57))
* perf(view): :zap: 优化群聊侧边栏状态展示和聊天框顶部栏状态展示 ([e15cf9b](https://github.com/HuLaSpark/HuLa/commit/e15cf9b))
* perf(view): :zap: 优化图片查看器 ([22f84f1](https://github.com/HuLaSpark/HuLa/commit/22f84f1))
* feat(component): :sparkles: 新增用户状态切换 ([5098733](https://github.com/HuLaSpark/HuLa/commit/5098733))
* feat(service): :sparkles: 增加双token校验 ([776b6ec](https://github.com/HuLaSpark/HuLa/commit/776b6ec)), closes [#IBNT91](https://github.com/HuLaSpark/HuLa/issues/IBNT91)
* feat(view): :sparkles: 添加好友或群,基本完成了查找添加好友相关的内容,可以查出来群聊信息暂时还没有写添加 (#209) ([90a8985](https://github.com/HuLaSpark/HuLa/commit/90a8985)), closes [#209](https://github.com/HuLaSpark/HuLa/issues/209)
* chore: 发布 v2.6.4 ([ac9d922](https://github.com/HuLaSpark/HuLa/commit/ac9d922))
* [Snyk] Upgrade @tauri-apps/plugin-clipboard-manager from 2.2.0 to 2.2.1 (#206) ([54354c6](https://github.com/HuLaSpark/HuLa/commit/54354c6)), closes [#206](https://github.com/HuLaSpark/HuLa/issues/206)
* [Snyk] Upgrade @tauri-apps/plugin-http from 2.2.0 to 2.3.0 (#207) ([cbf5f4d](https://github.com/HuLaSpark/HuLa/commit/cbf5f4d)), closes [#207](https://github.com/HuLaSpark/HuLa/issues/207)
* docs(readme): :memo: 更新赞助者名单 ([4d9aabe](https://github.com/HuLaSpark/HuLa/commit/4d9aabe))
### BREAKING CHANGE
* 一次性查出多条。添加好友用的是AddFriendsModal.vu页面进行一些修改,
closed https://gitee.com/HuLaSpark/HuLa/issues/IBJYSD
* fix(view): :bug: 修改创建窗体minH的问题
## <small>2.6.4 (2025-02-21)</small>
* fix(common): :bug: 修复登出账号时没有清空系统托盘图标上的未读数(MacOS) ([383a776](https://github.com/HuLaSpark/HuLa/commit/383a776))

View File

@@ -5,20 +5,21 @@
<p align="center">An Instant Messaging System Built with Tauri, Vite 6, Vue 3, and TypeScript</p>
<div align="center">
<a href="https://codecov.io/gh/HuLaSpark/HuLa" >
<img src="https://codecov.io/gh/HuLaSpark/HuLa/branch/fix%2Fglobal/graph/badge.svg?token=NM0Z13M8AZ"/>
</a>
<a href="https://hellogithub.com/repository/743b101346c54f6cb5c20eed2edbaa40" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=743b101346c54f6cb5c20eed2edbaa40&claim_uid=WsQaY6SlnL7qxG3&theme=neutral" alt="FeaturedHelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
</div>
<div align="center">
<a href="https://deepwiki.com/HuLaSpark/HuLa"><img src="https://deepwiki.com/badge.svg" alt=""></a>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_shield"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=shield" alt=""></a>
<a href="https://www.bestpractices.dev/zh-CN/projects/9692"><img src="https://bestpractices.coreinfrastructure.org/projects/9692/badge" alt="CI"></a>
<img src="https://img.shields.io/badge/TypeScript-blue?logo=Typescript&style=flat&logoColor=fff">
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
<img src="https://img.shields.io/badge/Tauri-24C8DB?logo=tauri&logoColor=FFC131">
<img src="https://img.shields.io/badge/Rust-c57c54?logo=rust&logoColor=E34F26">
<img src="https://img.shields.io/badge/Vite5-35495E?logo=vite&logoColor=41D1FF">
<img src="https://img.shields.io/badge/Vite6-35495E?logo=vite&logoColor=41D1FF">
<img src="https://img.shields.io/badge/UnoCss-efefef?logo=UnoCss&logoColor=606060">
<img src="https://img.shields.io/badge/pnpm-909090?logo=pnpm&logoColor=FFC131">
<img src="https://img.shields.io/badge/Sass-CC6699?logo=sass&logoColor=fff">
<img src="https://img.shields.io/badge/Design-Naive-059669">
</div>
<p align="center">
@@ -30,20 +31,38 @@
WeChat: <img src="https://img.shields.io/badge/cy2439646234-07C160?logo=wechat&logoColor=fff">
</p>
<p align="center">
💻 Official Website<a href="https://hulaspark.com">HuLaSpark</a>
</p>
<p align="center">
☕️ server<a href="https://github.com/HulaSpark/HuLa-Server">github HuLa-Server</a> | <a href="https://gitee.com/HulaSpark/HuLa-Server">gitee HuLa-Server</a>
</p>
<p align="center"><a href="README.zh-CN.md">中文</a> | English</p>
## Project Introduction
## 🌐 Support platform
| Platform | Supported version |
|------|---------|
| Windows | Windows 10, Windows 11 |
| macOS | macOS 10.5+ |
| Linux | Ubuntu 22.0+ |
| iOS/iPadOS | iOS 9.0+, iPadOS 9.0+ |
| Android | Android 8.0+ |
## 📝 Project Introduction
HuLa is an instant messaging system developed with Tauri, Vite 6, Vue 3, and TypeScript. It leverages the cross-platform capabilities of Tauri and the reactive design of Vue 3, combined with TypeScript's type safety features and the fast build system of Vite 6, to provide users with an efficient, secure, and easy-to-use communication solution.
## Technology Stack
## 🛠️ Technology Stack
- **Tauri**: Provides a lightweight, high-performance desktop application container, enabling the development of cross-platform desktop applications with a web technology stack. Tauri's design philosophy aims to minimize resource consumption while ensuring security.
- **Vite 6**: A modern front-end build tool that uses native ES module import to offer a fast development server. At the same time, it provides robust support for production builds. Vite 6 is its latest version, bringing more optimizations and features.
- **Vue 3**: A progressive JavaScript framework for building user interfaces. Its Composition API, improved TypeScript integration, and optimizations for mobile platforms make developing complex single-page applications simpler and more efficient.
- **TypeScript**: A superset of JavaScript that adds a type system to the language. It enables catching more errors during development and provides better support from editors.
## Project PreView
## 🖼️ Project PreView
![img.png](preview/img.png)
@@ -73,13 +92,56 @@ HuLa is an instant messaging system developed with Tauri, Vite 6, Vue 3, and Typ
<img src="preview/img_8.png" alt="img_8.png" style="border-radius: 8px; display: block;" />
</div>
## Thanks to the following contributors!
<div style="padding: 28px; display: inline-block;">
<img src="preview/img_9.png" alt="img_9.png" style="border-radius: 8px; display: block;" />
</div>
## ✨ Completed Features
| Feature Category | Feature Description | Status |
|-----------------|---------------------|--------|
| 🔐 **User Authentication** | Username/Password Login | ✅ Completed |
| | QR Code Scan Login | ✅ Completed |
| | Multi-device Login Management | ✅ Completed |
| 💬 **Messaging** | One-on-one Private Chat | ✅ Completed |
| | Group Chat | ✅ Completed |
| | Message Recall | ✅ Completed |
| | @Mention, Reply Function | ✅ Completed |
| | Message Read Status | ✅ Completed |
| | 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 |
| | Friend Online Status | ✅ Completed |
| | Friend Badges | ✅ Completed |
| | Block, Blacklist, Do Not Disturb | ✅ Completed |
| | Message by message merging and forwarding | 🚧 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 |
| 🛠️ **System Functions** | Multi-window Management | ✅ Completed |
| | System Tray, Tray Flash Notifications | ✅ Completed |
| | Message Notifications | ✅ Completed |
| | Image Viewer | ✅ Completed |
| | Screenshot Function | 🚧 In Progress |
| | Support automatic/forced updates | ✅ Completed |
| | Customize update page | ✅ Completed |
| 🌐 **Cross-platform Support** | Win10, Win11/macOS/Linux | ✅ Completed |
| | iOS/Android Adaptation | 🚧 In Progress |
| 🤖 **AI** | DeepSeek, ChatGPT, Claude, Qwen, Custom | 🚧 In Progress |
## 👏 Thanks to the following contributors!
<a href="https://github.com/HuLaSpark/HuLa/graphs/contributors">
<img src="https://opencollective.com/HuLaSpark/contributors.svg?width=890" />
</a>
## Installation and Running
## 📥 Installation and Running
```bash
# Clone the project
@@ -107,20 +169,25 @@ Downloading the installation package on the web page will indicate that the inst
#### 1. Open "System Settings" - "Security & Privacy", as shown in the figure, check the box: Allow apps downloaded from "Any Source" to run:
<div style="padding: 28px; display: inline-block;">
<img src="preview/img_9.png" alt="img_9.png" style="border-radius: 8px; display: block;" />
<img src="preview/img_10.png" alt="img_10.png" style="border-radius: 8px; display: block;" />
</div>
#### 2. If an error is reported, run the following command in the terminal to resolve the problem:
```bash
## Execute before installation
sudo xattr -rd com.apple.quarantine the Path To Install The Package/Download installation package name
```
```bash
## If it has already been installed, proceed as follows
sudo xattr -r -d com.apple.quarantine /Applications/apply name.app
```
## SubmissionSpecification
## 📋 SubmissionSpecification
use **pnpm run commit** to invoke the _git commit_ interaction and follow the prompts to complete the input and selection of information
## Disclaimer
## ⚖️ Disclaimer
1. This project is provided as an open source project, and the developer does not provide any express or implied warranty of any kind as to the functionality, security, or suitability of the software to the extent permitted by law
2. The User expressly understands and agrees that the use of the Software is entirely at the User's own risk and that the Software is provided on an "as is" and "as available" basis. The developer disclaims all warranties of any kind, whether express or implied, including, but not limited to, warranties of merchantability, fitness for a particular purpose, and non-infringement
@@ -130,7 +197,7 @@ use **pnpm run commit** to invoke the _git commit_ interaction and follow the pr
**The final interpretation of this disclaimer belongs to the developer**
## Sponsor HuLa
## 🎁 Sponsor HuLa
If you think HuLa is helpful to you, welcome to sponsor HuLa. Your support is our motivation to keep moving forward.
<div style="display: flex;">
@@ -140,24 +207,33 @@ If you think HuLa is helpful to you, welcome to sponsor HuLa. Your support is ou
</div>
## HuLa Community discussion groups
## 💬 HuLa Community discussion groups
<img src="preview/wx.png" width="260" height="300" alt="微信群二维码" style="border-radius: 12px;" />
## List of sponsors
## 🙏 List of sponsors
Thanks to the following sponsors for their support!
| Date | Sponsor | Sum | Platform |
|------|--------|------|------|
| 2025-04-25 | 上官俊斌 | ¥200 | 微信赞赏码 |
| 2025-05-27 | 临安居士 | ¥188 | 微信赞赏码 |
| 2025-04-20 | 姜兴(Simon) | ¥188 | 微信赞赏码 |
| 2025-02-17 | 禾硕 | ¥168 | 支付宝赞赏 |
| 2025-02-8 | Boom.... | ¥100 | 微信赞赏码 |
| 2025-05-09 | 犹豫,就会败北。| ¥88.00 | 微信红包 |
| 2025-04-01 | 墨 | ¥88.88 | 微信转账 |
| 2025-02-8 | 邓伟 | ¥88 | 微信赞赏码 |
| 2025-02-7 | dennis | ¥80 | gitee码云赞赏 |
| 2025-05-15 | 孤鸿影 | ¥56 | 微信红包 |
| 2025-02-6 | 小二 | ¥62 | 微信转账 |
| 2025-06-03 | 洪流 | ¥20 | 微信赞赏码 |
| 2025-05-27 | 刘启成 | ¥20 | 微信赞赏码 |
| 2025-05-20 | 没有留名的赞助者 | ¥20 | 微信赞赏码 |
> Note: This list is manually updated. If you have sponsored but are not displayed in the list, please contact us by:
1. Submit Issue on GitHub
2. Send an email to: 2439646234@qq.com
3. Contact via WeChat: cy2439646234
## License
## 📄 License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_large)

112
README.md
View File

@@ -5,20 +5,21 @@
<p align="center">一款基于Tauri、Vite 6、Vue 3 和 TypeScript 构建的即时通讯系统</p>
<div align="center">
<a href="https://codecov.io/gh/HuLaSpark/HuLa" >
<img src="https://codecov.io/gh/HuLaSpark/HuLa/branch/fix%2Fglobal/graph/badge.svg?token=NM0Z13M8AZ"/>
</a>
<a href="https://hellogithub.com/repository/743b101346c54f6cb5c20eed2edbaa40" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=743b101346c54f6cb5c20eed2edbaa40&claim_uid=WsQaY6SlnL7qxG3&theme=neutral" alt="FeaturedHelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
</div>
<div align="center">
<a href="https://deepwiki.com/HuLaSpark/HuLa"><img src="https://deepwiki.com/badge.svg" alt=""></a>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_shield"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=shield" alt=""></a>
<a href="https://www.bestpractices.dev/zh-CN/projects/9692"><img src="https://bestpractices.coreinfrastructure.org/projects/9692/badge" alt="CI"></a>
<img src="https://img.shields.io/badge/TypeScript-blue?logo=Typescript&style=flat&logoColor=fff">
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
<img src="https://img.shields.io/badge/Tauri-24C8DB?logo=tauri&logoColor=FFC131">
<img src="https://img.shields.io/badge/Rust-c57c54?logo=rust&logoColor=E34F26">
<img src="https://img.shields.io/badge/Vite5-35495E?logo=vite&logoColor=41D1FF">
<img src="https://img.shields.io/badge/Vite6-35495E?logo=vite&logoColor=41D1FF">
<img src="https://img.shields.io/badge/UnoCss-efefef?logo=UnoCss&logoColor=606060">
<img src="https://img.shields.io/badge/pnpm-909090?logo=pnpm&logoColor=FFC131">
<img src="https://img.shields.io/badge/Sass-CC6699?logo=sass&logoColor=fff">
<img src="https://img.shields.io/badge/UI组件库-Naive-059669">
</div>
<p align="center">
@@ -30,20 +31,38 @@
微信: <img src="https://img.shields.io/badge/cy2439646234-07C160?logo=wechat&logoColor=fff">
</p>
<p align="center">
💻 官网:<a href="https://hulaspark.com">HuLaSpark</a>
</p>
<p align="center">
☕️ 服务端:<a href="https://github.com/HulaSpark/HuLa-Server">github HuLa-Server</a> | <a href="https://gitee.com/HulaSpark/HuLa-Server">gitee HuLa-Server</a>
</p>
<p align="center"><a href="README.en.md">English</a> | 中文</p>
## 项目介绍
## 🌐 支持平台
| 平台 | 支持版本 |
|------|---------|
| Windows | Windows 10, Windows 11 |
| macOS | macOS 10.5+ |
| Linux | Ubuntu 22.0+ |
| iOS/iPadOS | iOS 9.0+, iPadOS 9.0+ |
| Android | Android 8.0+ |
## 📝 项目介绍
HuLa 是一款基于 Tauri、Vite 6、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite 6 的快速构建,为用户提供了一个高效、安全和易用的通讯解决方案。
## 技术栈
## 🛠️ 技术栈
- **Tauri**: 为本项目提供了一款轻量级的、高性能的桌面应用容器使得我们可以使用前端技术栈来开发跨平台的桌面应用。Tauri 的设计哲学是在保证安全性的前提下,尽可能减少资源占用。
- **Vite 6**: Vite 是一个现代化的前端构建工具,它利用原生 ES 模块导入的能力来提供一个快速的开发服务器与此同时它也为生产环境打包提供了强大的支持。Vite 6 是其最新的版本,带来了更多的优化和特性。
- **Vue 3**: Vue 3 是一个渐进式JavaScript框架用于构建用户界面。它的组合式API、更好的TypeScript集成和对移动端的优化使得开发复杂的单页应用变得更加简单和高效。
- **TypeScript**: TypeScript 是 JavaScript 的一个超集,它在 JavaScript 的基础上增加了类型系统。这让我们能够在开发过程中捕获更多的错误,并且提供更好的编辑器支持。
## 项目预览
## 🖼️ 项目预览
![img.png](preview/img.png)
@@ -73,13 +92,57 @@ HuLa 是一款基于 Tauri、Vite 6、Vue 3 和 TypeScript 构建的即时通讯
<img src="preview/img_8.png" alt="img_8.png" style="border-radius: 8px; display: block;" />
</div>
## 感谢以下贡献者们!
<div style="padding: 28px; display: inline-block;">
<img src="preview/img_9.png" alt="img_9.png" style="border-radius: 8px; display: block;" />
</div>
## ✨ 已完成功能
| 功能分类 | 功能描述 | 状态 |
|---------|---------|------|
| 🔐 **用户认证** | 账号密码登录 | ✅ 已完成 |
| | 二维码扫码登录 | ✅ 已完成 |
| | 多设备登录管理 | ✅ 已完成 |
| 💬 **消息功能** | 一对一私聊 | ✅ 已完成 |
| | 群组聊天 | ✅ 已完成 |
| | 消息撤回 | ✅ 已完成 |
| | @提醒、回复功能 | ✅ 已完成 |
| | 消息已读状态 | ✅ 已完成 |
| | 表情包功能 | ✅ 已完成 |
| | 根据消息类型右键菜单 | ✅ 已完成 |
| | 支持解析链接为预览卡片 | ✅ 已完成 |
| | 消息点赞和不满状态 | ✅ 已完成 |
| 👥 **联系人、群聊管理** | 好友添加与删除 | ✅ 已完成 |
| | 好友搜索 | ✅ 已完成 |
| | 群组创建与管理 | ✅ 已完成 |
| | 好友在线状态 | ✅ 已完成 |
| | 好友徽章 | ✅ 已完成 |
| | 屏蔽、拉黑、免打扰功能 | ✅ 已完成 |
| | 消息逐条\合并转发 | 🚧 进行中 |
| | 群公告 | ✅ 已完成 |
| | 群聊、单聊备注、昵称等 | ✅ 已完成 |
| 🎨 **UI界面** | 现代化界面设计 | ✅ 已完成 |
| | 深色/浅色主题支持 | ✅ 已完成 |
| | 皮肤主题切换 | ✅ 已完成 |
| 🛠️ **系统功能** | 多窗口管理 | ✅ 已完成 |
| | 系统托盘、托盘闪烁提醒支持 | ✅ 已完成 |
| | 消息通知 | ✅ 已完成 |
| | 图片查看器 | ✅ 已完成 |
| | 截图功能 | 🚧 进行中 |
| | 文件上传(支持七牛云存储) | ✅ 已完成 |
| | 支持自动、强制更新 | ✅ 已完成 |
| | 自定义更新页面 | ✅ 已完成 |
| 🌐 **跨平台支持** | win10、win11/macOS/linux | ✅ 已完成 |
| | iOS/Android适配 | 🚧 进行中 |
| 🤖 **AI** | deepseek、chatgpt、claude、qwen、自定义 | 🚧 进行中 |
## 👏 感谢以下贡献者们!
<a href="https://github.com/HuLaSpark/HuLa/graphs/contributors">
<img src="https://opencollective.com/HuLaSpark/contributors.svg?width=890" />
</a>
## 安装与运行
## 📥 安装与运行
```bash
# 克隆项目
@@ -107,20 +170,25 @@ pnpm run tauri:build
#### 1. 打开 "系统设置" - "安全性与隐私",如图勾选:允许 "任何来源" 下载的 App 运行:
<div style="padding: 28px; display: inline-block;">
<img src="preview/img_9.png" alt="img_9.png" style="border-radius: 8px; display: block;" />
<img src="preview/img_10.png" alt="img_10.png" style="border-radius: 8px; display: block;" />
</div>
#### 2. 如果还报错,请在终端执行以下命令解决:
```bash
## 安装前执行
sudo xattr -rd com.apple.quarantine 你的安装包路径/下载的安装包名称
```
```bash
## 如果已经安装,则执行下面
sudo xattr -r -d com.apple.quarantine /Applications/应用名称.app
```
## 提交规范
## 📋 提交规范
执行 **pnpm run commit** 唤起 _git commit_ 交互,根据提示完成信息的输入和选择
## 免责声明
## ⚖️ 免责声明
1. 本项目是作为一款开源项目提供的,开发者在法律允许的范围内不对软件的功能性、安全性或适用性提供任何形式的明示或暗示的保证
2. 用户明确理解并同意,使用本软件的风险完全由用户自己承担,软件以"现状"和"现有"基础提供。开发者不提供任何形式的担保,无论是明示还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权的担保
@@ -130,7 +198,7 @@ sudo xattr -rd com.apple.quarantine 你的安装包路径/下载的安装包名
**本免责声明的最终解释权归开发者所有**
## 赞助HuLa
## 🎁 赞助HuLa
如果您觉得HuLa对您有帮助欢迎赞助HuLa您的支持是我们不断前进的动力
<div style="display: flex;">
@@ -139,25 +207,33 @@ sudo xattr -rd com.apple.quarantine 你的安装包路径/下载的安装包名
<img src="preview/zfb.png" width="260" height="280" alt="赞助码" style="border-radius: 12px; margin-left: 40px" />
</div>
## HuLa社区讨论群
## 💬 HuLa社区讨论群
<img src="preview/wx.png" width="260" height="300" alt="微信群二维码" style="border-radius: 12px;" />
## 赞助者名单
## 🙏 赞助者名单
感谢以下赞助者的支持!
| 日期 | 赞助者 | 金额 | 平台 |
|------|--------|------|------|
| 2025-04-25 | 上官俊斌 | ¥200 | 微信赞赏码 |
| 2025-05-27 | 临安居士 | ¥188 | 微信赞赏码 |
| 2025-04-20 | 姜兴(Simon) | ¥188 | 微信赞赏码 |
| 2025-02-17 | 禾硕 | ¥168 | 支付宝赞赏 |
| 2025-02-8 | Boom.... | ¥100 | 微信赞赏码 |
| 2025-05-09 | 犹豫,就会败北。| ¥88.00 | 微信红包 |
| 2025-04-01 | 墨 | ¥88.88 | 微信转账 |
| 2025-02-8 | 邓伟 | ¥88 | 微信赞赏码 |
| 2025-02-7 | dennis | ¥80 | gitee码云赞赏 |
| 2025-05-15 | 孤鸿影 | ¥56 | 微信红包 |
| 2025-02-6 | 小二 | ¥62 | 微信转账 |
| 2025-06-03 | 洪流 | ¥20 | 微信赞赏码 |
| 2025-05-27 | 刘启成 | ¥20 | 微信赞赏码 |
| 2025-05-20 | 没有留名的赞助者 | ¥20 | 微信赞赏码 |
> 注:该名单为手动更新。如果您已赞助但未显示在列表中,请通过以下方式联系我们:
1. 在GitHub上提交Issue
2. 发送邮件至: 2439646234@qq.com
3. 通过微信联系: cy2439646234
## 许可证
## 📄 许可证
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_large)

241
docs/qiniu-upload.md Normal file
View File

@@ -0,0 +1,241 @@
# 七牛云上传功能使用指南
HuLa 现已支持使用七牛云存储服务来上传和存储文件,这为用户提供了更灵活的文件存储选择。本文档将介绍如何在 HuLa 中使用七牛云上传功能。
## 功能特点
- 支持在默认上传方式和七牛云之间切换
- 使用统一的上传接口,便于集成
- 支持大文件上传
- 自动生成唯一文件名,避免文件名冲突
- 支持进度显示(在浏览器环境中)
- 支持多区域上传(华东、华北、华南、北美、东南亚)
- 支持分片上传大文件
## 配置说明
### 七牛云区域设置
七牛云提供了多个存储区域HuLa 支持根据配置自动选择合适的上传域名:
| 区域代码 | 区域名称 | 上传域名 |
|---------|---------|---------|
| z0 | 华东 | https://upload.qiniup.com |
| z1 | 华北 | https://upload-z1.qiniup.com |
| z2 | 华南 | https://upload-z2.qiniup.com |
| na0 | 北美 | https://upload-na0.qiniup.com |
| as0 | 东南亚 | https://upload-as0.qiniup.com |
默认情况下如果未指定区域系统将使用华南区域z2
### 后端配置
后端需要提供以下配置信息:
```json
{
"token": "七牛云上传凭证",
"domain": "七牛云存储域名",
"storagePrefix": "存储前缀",
"region": "存储区域代码可选默认为z2"
}
```
## 使用方法
### 在代码中使用
```typescript
import { useUpload, UploadProviderEnum } from '@/hooks/useUpload'
import { UploadSceneEnum } from '@/enums'
// 创建上传hook实例
const uploadHook = useUpload()
// 使用七牛云上传
async function uploadToQiniu(filePath: string) {
try {
// 获取上传和下载URL
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
provider: UploadProviderEnum.QINIU,
scene: UploadSceneEnum.CHAT
})
// 执行上传
await uploadHook.doUpload(filePath, result.uploadUrl, result)
console.log('上传成功,下载地址:', result.downloadUrl)
return result.downloadUrl
} catch (error) {
console.error('上传失败:', error)
throw error
}
}
// 使用默认上传方式
async function uploadWithDefault(filePath: string) {
try {
// 获取上传和下载URL
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
provider: UploadProviderEnum.DEFAULT,
scene: UploadSceneEnum.CHAT
})
// 执行上传
await uploadHook.doUpload(filePath, result.uploadUrl, { downloadUrl: result.downloadUrl })
console.log('上传成功,下载地址:', result.downloadUrl)
return result.downloadUrl
} catch (error) {
console.error('上传失败:', error)
throw error
}
}
```
### 使用分片上传
对于大文件上传HuLa 现在支持使用七牛云的分片上传功能,可以提高上传成功率和性能:
```typescript
import { useUpload, UploadProviderEnum } from '@/hooks/useUpload'
import { UploadSceneEnum } from '@/enums'
// 创建上传hook实例
const uploadHook = useUpload()
// 使用七牛云分片上传
async function uploadLargeFileToQiniu(filePath: string) {
try {
// 获取上传和下载URL
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
provider: UploadProviderEnum.QINIU,
scene: UploadSceneEnum.CHAT
})
// 执行分片上传指定使用分片上传和分片大小可选默认4MB
await uploadHook.doUpload(filePath, result.uploadUrl, {
...result,
useChunks: true,
chunkSize: 4 * 1024 * 1024 // 4MB可根据需要调整
})
console.log('分片上传成功,下载地址:', result.downloadUrl)
return result.downloadUrl
} catch (error) {
console.error('分片上传失败:', error)
throw error
}
}
```
分片上传参数说明:
| 参数名 | 类型 | 说明 |
|-------|------|------|
| useChunks | boolean | 是否使用分片上传设置为true启用分片上传 |
| chunkSize | number | 分片大小单位为字节默认为4MB (4 * 1024 * 1024) |
当文件大小超过设定的分片大小时,系统会自动将文件分成多个块进行上传,并在上传完成后自动合并。
### 在消息策略中使用
HuLa 的消息策略已集成七牛云上传功能,可以通过传递 `provider` 选项来指定使用哪种上传方式:
```typescript
import { messageStrategyMap } from '@/strategy/MessageStrategy'
import { MsgEnum } from '@/enums'
import { UploadProviderEnum } from '@/hooks/useUpload'
// 获取图片消息策略
const imageStrategy = messageStrategyMap[MsgEnum.IMAGE]
// 使用七牛云上传
async function uploadImageWithQiniu(path: string) {
const result = await imageStrategy.uploadFile(path, {
provider: UploadProviderEnum.QINIU
})
// 执行上传
await imageStrategy.doUpload(path, result.uploadUrl, result)
return result.downloadUrl
}
// 使用七牛云分片上传大图片
async function uploadLargeImageWithQiniu(path: string) {
const result = await imageStrategy.uploadFile(path, {
provider: UploadProviderEnum.QINIU
})
// 执行分片上传
await imageStrategy.doUpload(path, result.uploadUrl, {
...result,
useChunks: true,
chunkSize: 2 * 1024 * 1024 // 2MB分片
})
return result.downloadUrl
}
```
## 分片上传原理与优势
七牛云分片上传功能基于七牛云的分块上传API实现主要流程如下
1. 将大文件分割成固定大小的数据块
2. 使用 `/mkblk/<blocksize>` 接口上传第一个数据块
3. 使用 `/bput/<ctx>/<offset>` 接口上传后续数据块
4. 所有分片上传完成后,使用 `/mkfile/<filesize>/key/<encodedKey>` 接口将所有数据块合并成完整文件
分片上传的主要优势:
- **支持断点续传**:上传中断后可以从已上传的部分继续
- **提高上传成功率**:大文件分成小块上传,减少单次传输失败的风险
- **优化网络利用率**:可以更好地利用网络带宽
- **提供上传进度反馈**:可以精确显示每个分片的上传进度
建议在以下情况使用分片上传:
- 上传大于10MB的文件
- 网络环境不稳定
- 需要显示精确上传进度的场景
## 配置七牛云
要使用七牛云上传功能,需要在后端配置七牛云的相关参数:
1. 在七牛云控制台创建存储空间Bucket
2. 获取 AccessKey 和 SecretKey
3. 配置后端服务,实现获取上传 Token 的接口
后端需要提供以下接口:
```
GET /api/qiniu/token
```
返回格式:
```json
{
"token": "七牛云上传Token",
"domain": "七牛云存储域名",
"storagePrefix": "存储前缀"
}
```
## 测试方法
1. 在七牛云控制台创建存储空间Bucket
2. 获取 AccessKey 和 SecretKey
3. 配置后端服务,实现获取上传 Token 的接口
4. 使用 HuLa 提供的上传接口进行测试
## 注意事项
1. 七牛云上传需要有效的 TokenToken 有时效性,过期后需要重新获取
2. 上传大文件时,请确保网络稳定
3. 在生产环境中,建议配置 HTTPS 域名,确保数据传输安全
4. 七牛云存储有容量和流量限制,请根据实际需求选择合适的套餐
5. 分片上传时建议根据网络环境和文件大小调整分片大小一般推荐1MB-4MB
6. 对于特别大的文件(如视频),强烈建议使用分片上传功能

View File

@@ -1,7 +1,7 @@
{
"name": "hula",
"type": "module",
"version": "2.6.4",
"version": "2.6.12",
"license": "Apache-2.0",
"engines": {
"node": ">=18.x",
@@ -35,7 +35,7 @@
"========= 初始化 android =========": "",
"tauri:android:init": "tauri android init",
"========= 生成icon =========": "",
"tauri:icon": "tauri icon hula.png",
"tauri:icon": "tauri icon public/logo.png",
"========= 安装依赖前执行 =========": "",
"preinstall": "npx only-allow pnpm && node scripts/check-all.js",
"========= 使用commit来进行代码提交 =========": "",
@@ -47,7 +47,7 @@
"========= 发版 =========": "",
"release": "release-it",
"========= commit后再次添加修改到上一次的commit =========": "",
"addition-commit": "git add . && vitest run && git commit --amend --no-edit",
"addition-commit": "git add . && git commit --amend --no-edit",
"========= 单元测试 =========": "",
"test:run": "vitest run",
"========= 使用 vitest UI =========": "",
@@ -57,32 +57,34 @@
},
"dependencies": {
"@actions/github": "^6.0.0",
"@codecov/vite-plugin": "^1.6.0",
"@fingerprintjs/fingerprintjs": "^4.6.0",
"@tauri-apps/api": "2.2.0",
"@tauri-apps/plugin-autostart": "2.2.0",
"@tauri-apps/plugin-clipboard-manager": "2.2.1",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-fs": "~2.2.0",
"@tauri-apps/plugin-http": "2.3.0",
"@tauri-apps/plugin-notification": "^2.2.0",
"@tauri-apps/plugin-os": "2.2.0",
"@tauri-apps/plugin-process": "2.2.0",
"@tauri-apps/plugin-shell": "^2.2.0",
"@microsoft/fetch-event-source": "^2.0.1",
"@tauri-apps/api": "2.5.0",
"@tauri-apps/plugin-autostart": "2.3.0",
"@tauri-apps/plugin-clipboard-manager": "2.2.2",
"@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.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.5.0",
"@tauri-apps/plugin-updater": "2.7.1",
"colorthief": "^2.6.0",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
"dompurify": "^3.2.4",
"event-source-polyfill": "^1.0.31",
"grapheme-splitter": "^1.0.4",
"hula-emojis": "^1.2.7",
"hula-emojis": "^1.2.11",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"naive-ui": "^2.41.0",
"pinia": "^3.0.1",
"pinia-plugin-persistedstate": "^4.2.0",
"pinia-shared-state": "^1.0.1",
"seemly": "^0.3.10",
"vue": "^3.5.13",
"vue-cropper": "1.1.4",
"vue-draggable-plus": "^0.6.0",
@@ -92,26 +94,27 @@
"@babel/eslint-parser": "^7.25.9",
"@commitlint/cli": "^19.6.0",
"@commitlint/config-conventional": "^19.6.0",
"@release-it/bumper": "^7.0.0",
"@release-it/conventional-changelog": "10.0.0",
"@release-it/bumper": "^6.0.1",
"@release-it/conventional-changelog": "8.0.2",
"@rollup/plugin-terser": "^0.4.4",
"@tauri-apps/cli": "2.0.4",
"@tauri-apps/cli": "2.5.0",
"@types/crypto-js": "^4.2.2",
"@types/event-source-polyfill": "^1.0.5",
"@types/lodash-es": "^4.17.12",
"@types/node": "^22.10.7",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "^7.15.0",
"@unocss/preset-uno": "^65.4.2",
"@unocss/reset": "^65.4.2",
"@unocss/transformer-directives": "^65.4.2",
"@unocss/transformer-variant-group": "^65.4.2",
"@unocss/vite": "^65.4.2",
"@unocss/preset-wind3": "^66.1.1",
"@unocss/reset": "^66.1.1",
"@unocss/transformer-directives": "^66.1.1",
"@unocss/transformer-variant-group": "^66.1.1",
"@unocss/vite": "^66.1.1",
"@vitejs/plugin-vue": "^5.2.1",
"@vitejs/plugin-vue-jsx": "^4.1.1",
"@vitest/coverage-v8": "^3.0.5",
"@vitest/ui": "^3.0.5",
"@vue/test-utils": "^2.4.6",
"@vueuse/core": "^12.0.0",
"@vueuse/core": "^13.2.0",
"chalk": "^5.3.0",
"commitizen": "^4.3.1",
"cz-git": "^1.11.0",
@@ -125,12 +128,13 @@
"lint-staged": "^15.2.7",
"oxlint": "^0.2.18",
"prettier": "^3.3.2",
"release-it": "^18.1.0",
"release-it": "^17.11.0",
"sass": "1.83.0",
"typescript": "^5.7.2",
"unplugin-auto-import": "^19.0.0",
"unplugin-vue-components": "^28.0.0",
"vite": "6.1.0",
"typescript": "^5.8.3",
"unplugin-auto-import": "^19.1.1",
"unplugin-vue-components": "^28.4.1",
"vite": "6.3.4",
"vite-plugin-vue-setup-extend": "^0.4.0",
"vitest": "^3.0.5",
"vue-tsc": "^2.2.0"
},

2681
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

BIN
preview/img_10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 615 KiB

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 KiB

After

Width:  |  Height:  |  Size: 633 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 KiB

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 KiB

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 210 KiB

File diff suppressed because one or more lines are too long

BIN
public/msgAction/bomb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
public/msgAction/like.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
public/msgAction/rose.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -15,6 +15,10 @@
"automerge": true
},
"rangeStrategy": "bump",
"lockFileMaintenance": {
"enabled": true,
"schedule": ["on sunday at 9:00am"]
},
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
@@ -25,13 +29,15 @@
"groupName": "Tauri dependencies",
"groupSlug": "tauri-deps",
"matchPackagePatterns": ["^@tauri-apps/"],
"matchManagers": ["npm"]
"matchManagers": ["npm"],
"rangeStrategy": "replace"
},
{
"groupName": "UnoCSS dependencies",
"groupSlug": "unocss-deps",
"matchPackagePatterns": ["^@unocss/"],
"matchManagers": ["npm"]
"matchManagers": ["npm"],
"rangeStrategy": "replace"
},
{
"description": "Rust crate updates",
@@ -39,7 +45,16 @@
"groupName": "Rust dependencies",
"groupSlug": "rust-deps",
"enabled": true,
"registryUrls": ["https://crates.io"]
"registryUrls": ["https://crates.io"],
"rangeStrategy": "replace"
},
{
"matchUpdateTypes": ["patch", "digest", "pin"],
"matchManagers": ["npm", "cargo"]
},
{
"matchManagers": ["npm", "cargo"],
"rangeStrategy": "replace"
}
],
"enabledManagers": ["npm", "cargo"],

View File

@@ -11,6 +11,11 @@ const INSTALL_GUIDES = {
'WebView2 Runtime': 'https://developer.microsoft.com/microsoft-edge/webview2/'
}
// 更新指南
const UPDATE_GUIDES = {
Rust: '请运行 `rustup update` 命令更新 Rust 版本'
}
// Windows 特定的检查路径
const WINDOWS_PATHS = {
'WebView2 Runtime': [
@@ -46,7 +51,7 @@ const checks = [
name: 'Rust',
command: 'rustc --version',
versionExtractor: (output) => output.split(' ')[1],
minVersion: '1.78.0',
minVersion: '1.86.0',
isRequired: true
}
]
@@ -119,6 +124,12 @@ function checkDependency(check) {
console.log(chalk.yellow(`⚠️ ${check.name} 版本过低`))
console.log(chalk.yellow(` 当前版本: ${output}`))
console.log(chalk.yellow(` 需要版本: >=${check.minVersion}`))
// 对 Rust 进行特殊处理,提示使用 rustup update
if (check.name === 'Rust') {
console.log(chalk.yellow(` ${UPDATE_GUIDES[check.name]}`))
}
console.log(chalk.gray(` 👉 升级指南: ${INSTALL_GUIDES[check.name]}`))
return false
}

2665
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,11 @@
[package]
name = "hula"
version = "2.6.3"
version = "2.6.10"
description = "hula"
authors = ["nongyehong"]
license = ""
repository = ""
edition = "2021"
edition = "2024"
[profile.release]
panic = "abort" # 去掉昂贵的恐慌清理逻辑
@@ -24,31 +24,38 @@ name = "hula_app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2.0.5", features = [] }
tauri-build = { version = "2.2.0", features = [] }
[dependencies]
tauri = { version = "2.2.5", features = [
tauri = { version = "2.5.1", features = [
"macos-private-api",
"tray-icon",
"image-png",
"rustls-tls",
] }
tauri-plugin-os = "2.2.0"
tauri-plugin-shell = "2.0.1"
tauri-plugin-os = "2.2.1"
tauri-plugin-shell = "2.2.1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tauri-plugin-http = { version = "2.2.0", features = ["unsafe-headers"] }
tauri-plugin-process = "2.2.0"
tauri-plugin-fs = "2.0.1"
tauri-plugin-dialog = "2.2.0"
tauri-plugin-http = { version = "2.4.3", features = [
"unsafe-headers",
"rustls-tls",
] }
tauri-plugin-process = "2.2.1"
tauri-plugin-fs = "2.2.1"
tauri-plugin-dialog = "2.2.1"
tauri-plugin-upload = "2.2.0"
tauri-plugin-global-shortcut = "2.2.0"
tauri-plugin-clipboard-manager = "2.2.0"
tauri-plugin-updater = "2.5.0"
tauri-plugin-sql = { version = "2", features = ["sqlite"] }
tauri-plugin-single-instance = "2.2.1"
tauri-plugin-notification = "2.2.1"
tauri-plugin-clipboard-manager = "2.2.2"
tauri-plugin-updater = "2.7.1"
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 = ["rustls-tls-webpki-roots"] }
tokio = { version = "1", features = ["full"] }
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
tauri-plugin-autostart = "2.2.0"
tauri-plugin-autostart = "2.3.0"
lazy_static = "1.4"
screenshots = "0.5.4"
base64 = "0.22.1"
@@ -56,9 +63,14 @@ rodio = "0.17.3"
reqwest = { version = "0.11", features = [
"json",
"socks",
"native-tls-vendored",
"rustls-tls",
"blocking",
] }
surge-ping = "0.8.0"
rand = "0.8.5"
[target."cfg(target_os =\"macos\")".dependencies]
cocoa = "0.26.0"
objc = "0.2.7"
[features]
# by default Tauri runs in production mode

View File

@@ -1,3 +1,25 @@
fn main() {
tauri_build::build()
use std::{env, fs, io};
fn main() -> Result<(), Box<dyn std::error::Error>> {
ensure_frontend_dist()?;
tauri_build::build();
Ok(())
}
fn ensure_frontend_dist() -> Result<(), Box<dyn std::error::Error>> {
let current_dir = env::current_dir()?;
let parent_dir = current_dir
.parent()
.ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "Cannot find parent directory!"))?;
let frontend_dist = parent_dir.join("dist");
// There should not be this directory.
let exists = frontend_dist.exists() && frontend_dist.is_dir();
if !exists {
fs::create_dir(&frontend_dist)?;
}
Ok(())
}

View File

@@ -29,6 +29,8 @@
"core:window:allow-set-min-size",
"core:window:allow-unmaximize",
"core:window:allow-set-fullscreen",
"core:window:allow-request-user-attention",
"core:window:allow-set-enabled",
"core:webview:allow-create-webview",
"core:webview:allow-create-webview-window",
"core:webview:allow-internal-toggle-devtools",
@@ -60,8 +62,12 @@
"autostart:allow-enable",
"autostart:allow-disable",
"autostart:allow-is-enabled",
"dialog:default",
"dialog:allow-open",
"dialog:allow-confirm",
"dialog:allow-save",
"dialog:allow-ask",
"dialog:allow-message",
"core:resources:allow-close",
"sql:allow-load",
"sql:allow-execute",

View File

@@ -1,6 +1,6 @@
{
"identifier": "desktop-capability",
"platforms": ["macOS", "windows", "linux"],
"windows": ["home"],
"windows": ["home", "login", "update", "checkupdate"],
"permissions": ["updater:default", "updater:allow-check", "updater:allow-download", "updater:allow-install"]
}

View File

@@ -0,0 +1,23 @@
{\rtf1\ansi\ansicpg1252\cocoartf2822
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww12720\viewh7800\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 \uc0\u29256 \u26435 \u25152 \u26377 (C) 2024 HuLaSpark\u24320 \u28304 \u32452 \u32455 \u20445 \u30041 \u25152 \u26377 \u26435 \u21033 \u12290 \
\
\uc0\u26412 \u36719 \u20214 \u24320 \u28304 \u21327 \u35758 \u20026 Apache License 2.0\u65292 \u35831 \u36981 \u23432 \u20197 \u19979 \u26465 \u27454 \u65306 \
\
1.\uc0\u20445 \u30041 \u29256 \u26435 \u21644 \u35768 \u21487 \u36890 \u30693 \u65306 \u20320 \u24517 \u39035 \u20445 \u30041 \u21407 \u22987 \u36719 \u20214 \u20013 \u30340 \u29256 \u26435 \u12289 \u35768 \u21487 \u21644 \u19987 \u21033 \u36890 \u30693 \u12290 \
\
2.\uc0\u26174 \u31034 \u20462 \u25913 \u65306 \u22914 \u26524 \u20320 \u20462 \u25913 \u20102 \u36719 \u20214 \u65292 \u20320 \u24517 \u39035 \u22312 \u20462 \u25913 \u36807 \u30340 \u25991 \u20214 \u20013 \u21253 \u21547 \u26174 \u30524 \u30340 \u36890 \u30693 \u65292 \u35828 \u26126 \u20320 \u36827 \u34892 \u20102 \u20462 \u25913 \u12290 \
\
3.\uc0\u20998 \u21457 \u35768 \u21487 \u21103 \u26412 \u65306 \u20320 \u24517 \u39035 \u38543 \u21516 \u36719 \u20214 \u20998 \u21457 \u19968 \u20221 Apache-2.0\u35768 \u21487 \u35777 \u30340 \u21103 \u26412 \u12290 \
\
4.\uc0\u19981 \u20462 \u25913 \u35768 \u21487 \u65306 \u20320 \u19981 \u33021 \u20197 \u20219 \u20309 \u26041 \u24335 \u20462 \u25913 Apache-2.0\u35768 \u21487 \u30340 \u26465 \u27454 \u12290 \
\
5.\uc0\u19981 \u28389 \u29992 \u21830 \u26631 \u65306 \u20320 \u19981 \u33021 \u20351 \u29992 Apache\u25110 \u36129 \u29486 \u32773 \u30340 \u21830 \u26631 \u26469 \u26263 \u31034 \u20182 \u20204 \u23545 \u20320 \u30340 \u20316 \u21697 \u30340 \u35748 \u21487 \u12290 \
\
\uc0\u26412 \u36719 \u20214 \u36981 \u24490 \u30456 \u20851 \u27861 \u24459 \u27861 \u35268 \u65292 \u22914 \u12298 \u20013 \u21326 \u20154 \u27665 \u20849 \u21644 \u22269 \u36719 \u20214 \u33879 \u20316 \u26435 \u27861 \u12299 \u31561 \u12290 \u22312 \u20351 \u29992 \u26412 \u36719 \u20214 \u26102 \u65292 \u35831 \u30830 \u20445 \u24744 \u30340 \u34892 \u20026 \u31526 \u21512 \u30456 \u20851 \u27861 \u24459 \u27861 \u35268 \u30340 \u35201 \u27714 \u12290 \
}

View File

@@ -1,15 +0,0 @@
版权所有 (C) 2024 HuLaSpark开源组织 保留所有权利。
本软件开源协议为 Apache License 2.0,请遵守以下条款:
1.保留版权和许可通知:你必须保留原始软件中的版权、许可和专利通知。
2.显示修改:如果你修改了软件,你必须在修改过的文件中包含显眼的通知,说明你进行了修改。
3.分发许可副本你必须随同软件分发一份Apache-2.0许可证的副本。
4.不修改许可你不能以任何方式修改Apache-2.0许可的条款。
5.不滥用商标你不能使用Apache或贡献者的商标来暗示他们对你的作品的认可。
本软件遵循相关法律法规,如《中华人民共和国软件著作权法》等。在使用本软件时,请确保您的行为符合相关法律法规的要求。

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17150" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Y6W-OH-hqX">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17122"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
@@ -13,15 +12,19 @@
<objects>
<viewController id="Y6W-OH-hqX" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/>
<color key="backgroundColor" red="0.86274516580000005" green="0.92941176889999999" blue="0.89019608500000003" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="55" y="-34"/>
</scene>
</scenes>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 56;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -15,6 +15,7 @@
5FA07CA316D84B7C6157AD98 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5561AC4EF6A7D22351F4123 /* Metal.framework */; };
66C0485D21D30EE3FC68535D /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43A3F90CF52FE87749F6AF66 /* WebKit.framework */; };
725ABB36A3E4DBADE9B85F1A /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = BEB6A0287B0C05B54BB18D76 /* main.mm */; };
7D80EF45A161A8ABCDF65B0F /* libapp.a in Resources */ = {isa = PBXBuildFile; fileRef = 2D7169E7E23000C0AB794413 /* libapp.a */; };
C6E3EE1EC5041769CD8C63BC /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F03346AEBB6EB6B6949B1F /* MetalKit.framework */; };
DFD77F9BDCD981184134D70B /* assets in Resources */ = {isa = PBXBuildFile; fileRef = E0D58092E5EAD80CE1062F64 /* assets */; };
E4594A304B63C1F809276D32 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0B6EF43A950A8BAEED368AF5 /* Assets.xcassets */; };
@@ -23,26 +24,31 @@
/* Begin PBXFileReference section */
0B6EF43A950A8BAEED368AF5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
110DEFD8FF5FFC1135313A3B /* proxy.rs */ = {isa = PBXFileReference; path = proxy.rs; sourceTree = "<group>"; };
16A9640EAB3DEA1B09E9250C /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
317000BD66F90B330ADFBA7A /* tray.rs */ = {isa = PBXFileReference; lastKnownFileType = file; path = tray.rs; sourceTree = "<group>"; };
2D7169E7E23000C0AB794413 /* libapp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapp.a; sourceTree = "<group>"; };
3D76EB521B227E9303B16047 /* init.rs */ = {isa = PBXFileReference; path = init.rs; sourceTree = "<group>"; };
41E146C31A7CB2949CC9D6E1 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
43A3F90CF52FE87749F6AF66 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
446C901E80ED5F4820629A70 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
51F03346AEBB6EB6B6949B1F /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
533842E2E36421DDF8C72972 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
5822DACEC671151891D1FD54 /* init.rs */ = {isa = PBXFileReference; path = init.rs; sourceTree = "<group>"; };
582937AEB5D7F35B81C5A220 /* libapp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapp.a; sourceTree = "<group>"; };
5E348B57006C5877940CA019 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
90272EF944FF306A026ACA41 /* lib.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = lib.rs; sourceTree = "<group>"; };
658A253702F290FC4BBF60D5 /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
76DB59D3790398E1FDB32D5A /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
8EA08F12BCB04981BCB86BEF /* common_cmd.rs */ = {isa = PBXFileReference; path = common_cmd.rs; sourceTree = "<group>"; };
90272EF944FF306A026ACA41 /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = "<group>"; };
97A1062DE54C9659156E97DC /* tray.rs */ = {isa = PBXFileReference; path = tray.rs; sourceTree = "<group>"; };
B95348A7F1567588F739A120 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; };
BEB6A0287B0C05B54BB18D76 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
C06894DAF450154EAA9FAA93 /* HuLa.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HuLa.app; sourceTree = BUILT_PRODUCTS_DIR; };
C06894DAF450154EAA9FAA93 /* hula_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = hula_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
C5561AC4EF6A7D22351F4123 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
CC42F5A4756761349699C7D3 /* main.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.rs; sourceTree = "<group>"; };
CE695D0D6BBE86069F83CD25 /* common_cmd.rs */ = {isa = PBXFileReference; lastKnownFileType = file; path = common_cmd.rs; sourceTree = "<group>"; };
CC42F5A4756761349699C7D3 /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = "<group>"; };
CFA870C7B772C580417E0CB8 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
E0470560901F8DD6C9D04C90 /* hula_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = hula_iOS.entitlements; sourceTree = "<group>"; };
E0D58092E5EAD80CE1062F64 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; };
E878C5EA50634C92A1E3DB69 /* init.rs */ = {isa = PBXFileReference; lastKnownFileType = file; path = init.rs; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -79,19 +85,36 @@
);
sourceTree = "<group>";
};
224882C33A19C97EE2AA557B /* arm64 */ = {
isa = PBXGroup;
children = (
594433D89B9A33FD150BDE63 /* debug */,
);
path = arm64;
sourceTree = "<group>";
};
3B17F5DA74559A9153C5BDAC /* src */ = {
isa = PBXGroup;
children = (
CE695D0D6BBE86069F83CD25 /* common_cmd.rs */,
E878C5EA50634C92A1E3DB69 /* init.rs */,
90272EF944FF306A026ACA41 /* lib.rs */,
CC42F5A4756761349699C7D3 /* main.rs */,
317000BD66F90B330ADFBA7A /* tray.rs */,
110DEFD8FF5FFC1135313A3B /* proxy.rs */,
83FB2DDC9D37A39E6B9D0420 /* desktops */,
43D8AC0F02D5CCB0C7644274 /* mobiles */,
);
name = src;
path = ../../src;
sourceTree = "<group>";
};
43D8AC0F02D5CCB0C7644274 /* mobiles */ = {
isa = PBXGroup;
children = (
5822DACEC671151891D1FD54 /* init.rs */,
658A253702F290FC4BBF60D5 /* mod.rs */,
);
path = mobiles;
sourceTree = "<group>";
};
4927FA144B0F8AA1B601E34F /* bindings */ = {
isa = PBXGroup;
children = (
@@ -108,6 +131,25 @@
path = Sources;
sourceTree = "<group>";
};
594433D89B9A33FD150BDE63 /* debug */ = {
isa = PBXGroup;
children = (
2D7169E7E23000C0AB794413 /* libapp.a */,
);
path = debug;
sourceTree = "<group>";
};
83FB2DDC9D37A39E6B9D0420 /* desktops */ = {
isa = PBXGroup;
children = (
8EA08F12BCB04981BCB86BEF /* common_cmd.rs */,
3D76EB521B227E9303B16047 /* init.rs */,
76DB59D3790398E1FDB32D5A /* mod.rs */,
97A1062DE54C9659156E97DC /* tray.rs */,
);
path = desktops;
sourceTree = "<group>";
};
9C5737242B5910584AEC182A /* hula_iOS */ = {
isa = PBXGroup;
children = (
@@ -135,6 +177,7 @@
DE510D2C172B684A951787F8 /* Externals */ = {
isa = PBXGroup;
children = (
224882C33A19C97EE2AA557B /* arm64 */,
);
path = Externals;
sourceTree = "<group>";
@@ -142,7 +185,7 @@
EBB8EABBB9D585A2001DACE6 /* Products */ = {
isa = PBXGroup;
children = (
C06894DAF450154EAA9FAA93 /* HuLa.app */,
C06894DAF450154EAA9FAA93 /* hula_iOS.app */,
);
name = Products;
sourceTree = "<group>";
@@ -156,6 +199,13 @@
path = hula;
sourceTree = "<group>";
};
"TEMP_18387214-B965-463B-86FD-5F350218C577" /* x86_64 */ = {
isa = PBXGroup;
children = (
);
path = x86_64;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -173,8 +223,10 @@
dependencies = (
);
name = hula_iOS;
packageProductDependencies = (
);
productName = hula_iOS;
productReference = C06894DAF450154EAA9FAA93 /* HuLa.app */;
productReference = C06894DAF450154EAA9FAA93 /* hula_iOS.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -185,6 +237,8 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 06E19C25CF276AFE18C2087A /* Build configuration list for PBXProject "hula" */;
compatibilityVersion = "Xcode 14.0";
@@ -195,6 +249,8 @@
en,
);
mainGroup = 19DDB0BC6EF26FCF935BDC63;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -211,6 +267,7 @@
E4594A304B63C1F809276D32 /* Assets.xcassets in Resources */,
575F491C7AFF552732B6BE45 /* LaunchScreen.storyboard in Resources */,
DFD77F9BDCD981184134D70B /* assets in Resources */,
7D80EF45A161A8ABCDF65B0F /* libapp.a in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -233,7 +290,6 @@
outputPaths = (
"$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
"$(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -259,15 +315,12 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
"arm64-sim",
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = hula_iOS/hula_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = A9KV47CC3V;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
@@ -277,32 +330,13 @@
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.hula-app.app;
PRODUCT_NAME = HuLa;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "arm64 arm64-sim";
VALID_ARCHS = arm64;
};
name = debug;
};
@@ -312,15 +346,12 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
"arm64-sim",
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = hula_iOS/hula_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = A9KV47CC3V;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
@@ -330,32 +361,13 @@
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.hula-app.app;
PRODUCT_NAME = HuLa;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "arm64 arm64-sim";
VALID_ARCHS = arm64;
};
name = release;
};

View File

@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.6.0</string>
<string>2.6.10</string>
<key>CFBundleVersion</key>
<string>2.6.0</string>
<string>2.6.10</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>

View File

@@ -1,6 +1,6 @@
name: hula
options:
bundleIdPrefix: com.hula.app
bundleIdPrefix: com.hula-app.app
deploymentTarget:
iOS: 13.0
fileGroups: [../../src]
@@ -11,7 +11,7 @@ settingGroups:
app:
base:
PRODUCT_NAME: HuLa
PRODUCT_BUNDLE_IDENTIFIER: com.hula.app
PRODUCT_BUNDLE_IDENTIFIER: com.hula-app.app
targetTemplates:
app:
type: application
@@ -51,8 +51,8 @@ targets:
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
CFBundleShortVersionString: 2.6.0
CFBundleVersion: 2.6.0
CFBundleShortVersionString: 2.6.10
CFBundleVersion: 2.6.10
entitlements:
path: hula_iOS/hula_iOS.entitlements
scheme:
@@ -62,14 +62,12 @@ targets:
settings:
base:
ENABLE_BITCODE: false
ARCHS: [arm64, arm64-sim]
VALID_ARCHS: arm64 arm64-sim
ARCHS: [arm64]
VALID_ARCHS: arm64
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
EXCLUDED_ARCHS[sdk=iphonesimulator*]: arm64
EXCLUDED_ARCHS[sdk=iphoneos*]: arm64-sim x86_64
EXCLUDED_ARCHS[sdk=iphoneos*]: x86_64
groups: [app]
dependencies:
- framework: libapp.a
@@ -87,5 +85,4 @@ targets:
basedOnDependencyAnalysis: false
outputFiles:
- $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
- $(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
use base64::{engine::general_purpose, Engine as _};
#![allow(unexpected_cfgs)]
use base64::{Engine as _, engine::general_purpose};
use lazy_static::lazy_static;
use screenshots::Screen;
use serde::Serialize;
@@ -9,6 +10,11 @@ use std::time::Duration;
use tauri::path::BaseDirectory;
use tauri::{AppHandle, LogicalSize, Manager, ResourceId, Runtime, Webview};
#[cfg(target_os = "macos")]
use cocoa::appkit::{NSWindow, NSWindowButton};
#[cfg(target_os = "macos")]
use objc::runtime::Object;
// 定义用户信息结构体
#[derive(Debug, Clone, Serialize)]
pub struct UserInfo {
@@ -39,9 +45,6 @@ impl UserInfo {
// pub fn get_username(&self) -> Result<&str, ()> { Ok(self.username.as_str())}
// pub fn get_token(&self) -> Result<&str, ()> { Ok(self.token.as_str())}
// pub fn get_portrait(&self) -> Result<&str, ()> { Ok(self.portrait.as_str())}
pub fn get_is_sign(&self) -> Result<bool, ()> {
Ok(self.is_sign)
}
}
// 全局变量
@@ -55,31 +58,6 @@ lazy_static! {
)));
}
// 保存用户信息的方法
#[tauri::command]
pub fn save_user_info(
user_id: i64,
username: &str,
token: &str,
portrait: &str,
is_sign: bool,
) -> i32 {
let mut user_info = USER_INFO.write().unwrap();
user_info.user_id = user_id;
user_info.username = username.to_string();
user_info.token = token.to_string();
user_info.portrait = portrait.to_string();
user_info.is_sign = is_sign;
0
}
// 获取用户信息的方法
#[tauri::command]
pub fn get_user_info() -> UserInfo {
let user_info = USER_INFO.read().unwrap();
user_info.clone()
}
#[tauri::command]
pub fn default_window_icon<R: Runtime>(
webview: Webview<R>,
@@ -131,7 +109,7 @@ pub fn audio(filename: &str, handle: AppHandle) {
pub fn set_height(height: u32, handle: AppHandle) {
let home_window = handle.get_webview_window("home").unwrap();
let sf = home_window.scale_factor().unwrap();
let out_size = home_window.outer_size().unwrap();
let out_size = home_window.inner_size().unwrap();
home_window
.set_size(LogicalSize::new(
out_size.to_logical(sf).width,
@@ -147,6 +125,59 @@ pub fn set_badge_count(count: Option<i64>, handle: AppHandle) -> Result<(), Stri
window.set_badge_count(count).map_err(|e| e.to_string())?;
Ok(())
}
None => Err("No webview window found".to_string()),
None => {
// 如果找不到 home 窗口,直接返回成功,不抛出错误
Ok(())
}
}
}
#[cfg(target_os = "macos")]
unsafe fn hidden_standard_window_button(window: *mut Object, window_button_kind: NSWindowButton) {
use cocoa::base::YES;
use objc::{msg_send, sel, sel_impl};
let btn = unsafe { window.standardWindowButton_(window_button_kind) };
if !btn.is_null() {
let _: () = msg_send![btn, setHidden: YES];
}
}
/// 隐藏Mac窗口的标题栏按钮红绿灯按钮和标题
///
/// # 参数
/// * `window_label` - 窗口的标签名称
/// * `handle` - Tauri应用句柄
///
/// # 返回
/// * `Result<(), String>` - 成功返回Ok(()), 失败返回错误信息
#[tauri::command]
#[cfg(target_os = "macos")]
pub fn hide_title_bar_buttons(window_label: &str, handle: AppHandle) -> Result<(), String> {
#[cfg(target_os = "macos")]
{
use cocoa::appkit::NSWindowButton;
use cocoa::base::NO;
use cocoa::base::id;
use objc::{msg_send, sel, sel_impl};
let ns_window = handle
.get_webview_window(window_label)
.unwrap()
.ns_window()
.unwrap() as id;
unsafe {
// 隐藏标题栏按钮
// hidden_standard_window_button(ns_window, NSWindowButton::NSWindowCloseButton);
hidden_standard_window_button(ns_window, NSWindowButton::NSWindowFullScreenButton);
hidden_standard_window_button(ns_window, NSWindowButton::NSWindowFullScreenButton);
hidden_standard_window_button(ns_window, NSWindowButton::NSWindowMiniaturizeButton);
hidden_standard_window_button(ns_window, NSWindowButton::NSWindowZoomButton);
// 设置窗口不可拖动
let _: () = msg_send![ns_window, setMovable: NO];
}
}
Ok(())
}

View File

@@ -1,5 +1,4 @@
use crate::common_cmd::get_user_info;
use tauri::{Emitter, LogicalSize, Manager, Runtime, WindowEvent};
use tauri::{Manager, Runtime, WindowEvent};
use tauri_plugin_autostart::MacosLauncher;
pub trait CustomInit {
fn init_plugin(self) -> Self;
@@ -53,6 +52,7 @@ impl<R: Runtime> CustomInit for tauri::Builder<R> {
self.on_window_event(|window, event: &WindowEvent| match event {
WindowEvent::Focused(flag) => {
// 自定义系统托盘-实现托盘菜单失去焦点时隐藏
#[cfg(not(target_os = "macos"))]
if !window.label().eq("tray") && *flag {
window
.app_handle()
@@ -78,30 +78,7 @@ impl<R: Runtime> CustomInit for tauri::Builder<R> {
window.hide().unwrap();
}
}
WindowEvent::Resized(ps) => {
if window.label().eq("home") {
let ls = ps.to_logical(window.scale_factor().unwrap());
// TODO 根据显示菜单模式不同,设定不同高度
let h = 505;
if ls.height < h {
window.set_size(LogicalSize::new(ls.width, h)).unwrap();
}
}
}
WindowEvent::CloseRequested { api, .. } => {
if window.label().eq("home") {
let result = get_user_info().get_is_sign();
match result {
// 处理非正常关闭的情况, 并且还是在登录状态时才发送下线通知
Ok(is_sign) if is_sign => {
window.app_handle().emit("offline", ()).unwrap();
// 由前端退出程序,因为要发下线通知
api.prevent_close();
}
_ => {}
}
}
}
WindowEvent::Resized(_ps) => {}
_ => (),
})
}

View File

@@ -1,3 +1,3 @@
pub mod common_cmd;
pub mod init;
pub mod tray;
pub mod common_cmd;

View File

@@ -1,66 +1,131 @@
#[cfg(target_os = "windows")]
use tauri::{tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, Manager, Emitter, PhysicalPosition, Runtime};
use tauri::{
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
Emitter, Manager, PhysicalPosition, Runtime,
};
#[cfg(not(target_os = "windows"))]
use tauri::{tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, Manager, PhysicalPosition, Runtime};
#[cfg(target_os = "macos")]
use tauri::{
menu::{MenuBuilder, MenuId, MenuItem, PredefinedMenuItem},
tray::TrayIconBuilder,
Manager, Runtime,
};
#[cfg(not(any(target_os = "windows", target_os = "macos")))]
use tauri::{
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
Manager, PhysicalPosition, Runtime,
};
pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
let _ = TrayIconBuilder::with_id("tray")
.tooltip("HuLa")
.icon(app.default_window_icon().unwrap().clone())
.on_tray_icon_event(|tray, event| match event {
TrayIconEvent::Click {
id: _,
position,
rect: _,
button,
button_state,
} => match button {
MouseButton::Left => {
let windows = tray.app_handle().webview_windows();
#[cfg(target_os = "macos")]
{
// 为 macOS 创建原生菜单
let open_id = MenuId::new("open_home");
let exit_id = MenuId::new("exit_app");
// 创建分隔符和菜单项
let separator1 = PredefinedMenuItem::separator(app)?;
let open_menu_item =
MenuItem::with_id(app, open_id.clone(), "打开主面板", true, None::<&str>)?;
let separator2 = PredefinedMenuItem::separator(app)?;
let exit_menu_item = MenuItem::with_id(app, exit_id.clone(), "退出", true, None::<&str>)?;
// 构建菜单
let tray_menu = MenuBuilder::new(app)
.items(&[&separator1, &open_menu_item, &separator2, &exit_menu_item])
.build()?;
let tray_handler = app.clone();
let _ = TrayIconBuilder::with_id("tray")
.tooltip("HuLa")
.icon(app.default_window_icon().unwrap().clone())
.menu(&tray_menu)
.on_menu_event(move |app, event| {
let id = event.id();
if id == &open_id {
// 打开主面板
let windows = app.webview_windows();
for (name, window) in windows {
if name == "login" || name == "home" {
window.show().unwrap();
window.unminimize().unwrap();
window.set_focus().unwrap();
let _ = window.show();
let _ = window.unminimize();
let _ = window.set_focus();
break;
}
}
} else if id == &exit_id {
// 退出应用
let _ = tray_handler.exit(0);
}
MouseButton::Right if MouseButtonState::Down == button_state => {
// 状态栏图标按下右键时显示状态栏菜单
let tray_window = tray.app_handle().get_webview_window("tray").unwrap();
if let Ok(outer_size) = tray_window.outer_size() {
tray_window
.set_position(PhysicalPosition::new(
position.x,
position.y - outer_size.height as f64,
))
.unwrap();
tray_window.set_always_on_top(true).unwrap();
tray_window.show().unwrap();
tray_window.set_focus().unwrap();
})
.build(app)?;
}
#[cfg(not(target_os = "macos"))]
{
// 为其他系统(非 macOS创建托盘图标
let _ = TrayIconBuilder::with_id("tray")
.tooltip("HuLa")
.icon(app.default_window_icon().unwrap().clone())
.on_tray_icon_event(|tray, event| match event {
TrayIconEvent::Click {
id: _,
position,
rect: _,
button,
button_state,
} => match button {
MouseButton::Left => {
let windows = tray.app_handle().webview_windows();
for (name, window) in windows {
if name == "login" || name == "home" {
window.show().unwrap();
window.unminimize().unwrap();
window.set_focus().unwrap();
break;
}
}
}
}
MouseButton::Right if MouseButtonState::Down == button_state => {
// 状态栏图标按下右键时显示状态栏菜单
let tray_window = tray.app_handle().get_webview_window("tray").unwrap();
if let Ok(outer_size) = tray_window.outer_size() {
tray_window
.set_position(PhysicalPosition::new(
position.x,
position.y - outer_size.height as f64,
))
.unwrap();
tray_window.set_always_on_top(true).unwrap();
tray_window.show().unwrap();
tray_window.set_focus().unwrap();
}
}
_ => {}
},
#[cfg(target_os = "windows")]
TrayIconEvent::Enter {
id: _,
position: _,
rect: _,
} => {
tray.app_handle()
.emit_to("notify", "notify_enter", &tray.rect().unwrap())
.unwrap();
},
#[cfg(target_os = "windows")]
TrayIconEvent::Leave {
id: _,
position: _,
rect: _,
} => {
tray.app_handle()
.emit_to("notify", "notify_leave", ())
.unwrap();
},
_ => {}
}
#[cfg(target_os = "windows")]
TrayIconEvent::Enter {
id: _,
position: _,
rect: _} => {
tray.app_handle().emit_to("notify", "notify_enter", &tray.rect().unwrap()).unwrap();
}
#[cfg(target_os = "windows")]
TrayIconEvent::Leave {
id: _,
position: _,
rect: _} => {
tray.app_handle().emit_to("notify", "notify_leave", ()).unwrap();
}
_ => {}
})
.build(app);
})
.build(app);
}
Ok(())
}

View File

@@ -1,11 +1,10 @@
// 桌面端依赖
#[cfg(desktop)]
mod desktops;
#[cfg(target_os = "macos")]
use common_cmd::hide_title_bar_buttons;
#[cfg(desktop)]
use common_cmd::{
audio, default_window_icon, get_user_info, save_user_info, screenshot, set_badge_count,
set_height,
};
use common_cmd::{audio, default_window_icon, screenshot, set_badge_count, set_height};
#[cfg(desktop)]
mod proxy;
#[cfg(desktop)]
@@ -17,7 +16,9 @@ use desktops::tray;
#[cfg(desktop)]
use init::CustomInit;
#[cfg(desktop)]
use proxy::test_proxy;
use proxy::test_api_proxy;
#[cfg(desktop)]
use proxy::test_ws_proxy;
// 移动端依赖
#[cfg(mobile)]
@@ -49,14 +50,15 @@ fn setup_desktop() {
Ok(())
})
.invoke_handler(tauri::generate_handler![
get_user_info,
save_user_info,
default_window_icon,
screenshot,
audio,
set_height,
set_badge_count,
test_proxy
test_api_proxy,
test_ws_proxy,
#[cfg(target_os = "macos")]
hide_title_bar_buttons
])
.run(tauri::generate_context!())
.expect("error while running tauri application");

View File

@@ -1,21 +1,49 @@
use reqwest::{Client, Proxy};
use std::time::Duration;
use tungstenite::client::connect_with_config;
use tungstenite::http::Uri;
use tungstenite::protocol::WebSocketConfig;
// 定义测试用的URL列表
const TEST_URLS: [&str; 3] = [
"https://www.baidu.com",
"https://www.bing.com",
"https://www.qq.com",
const TEST_API_URLS: [&str; 1] = [
"/system/config/init",
];
#[tauri::command]
pub async fn test_proxy(proxy_type: String, proxy_host: String, proxy_port: u16) -> Result<bool, String> {
pub async fn test_ws_proxy(proxy_type: String, proxy_host: String, proxy_port: u16, proxy_suffix: String) -> Result<bool, String> {
if proxy_type.is_empty() {
return Ok(true); // 不使用代理时直接返回成功
}
let proxy_url = match proxy_type.as_str() {
"ws" => format!("ws://{}:{}/{}", proxy_host, proxy_port, proxy_suffix),
"wss" => format!("wss://{}:{}/{}", proxy_host, proxy_port, proxy_suffix),
_ => return Err("不支持的代理类型".to_string()),
};
let uri = Uri::from_maybe_shared(format!("{}?clientId=test", proxy_url)).unwrap();
let config = if proxy_type == "wss" { Some(WebSocketConfig::default()) } else { None };
let mut result = match connect_with_config(uri, config, 3) {
Ok(ws) => {
ws
}
Err(e) => {
println!("{:?}", e);
return Err("代理无法连接,请检查代理设置".to_string())
}
};
let _ = result.0.close(None).map_err(|_| {});
Ok(true)
}
#[tauri::command]
pub async fn test_api_proxy(proxy_type: String, proxy_host: String, proxy_port: u16, proxy_suffix: String) -> Result<bool, String> {
if proxy_type.is_empty() {
return Ok(true); // 不使用代理时直接返回成功
}
let proxy_url = match proxy_type.as_str() {
"http" => format!("http://{}:{}", proxy_host, proxy_port),
"https" => format!("https://{}:{}", proxy_host, proxy_port),
"socks5" => format!("socks5://{}:{}", proxy_host, proxy_port),
_ => return Err("不支持的代理类型".to_string()),
};
@@ -28,8 +56,8 @@ pub async fn test_proxy(proxy_type: String, proxy_host: String, proxy_port: u16)
.map_err(|e| format!("创建客户端失败: {}", e))?;
// 依次测试多个URL直到有一个成功
for url in TEST_URLS.iter() {
match test_url(&client, url).await {
for url in TEST_API_URLS.iter() {
match test_url(&client, format!("{}/{}{}",proxy_url.as_str(), proxy_suffix.as_str(), url).as_str()).await {
Ok(_) => return Ok(true),
Err(e) => {
println!("测试 {} 失败: {}", url, e);

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.4",
"version": "2.6.12",
"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.4",
"version": "2.6.12",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",
@@ -12,7 +12,7 @@
"bundle": {
"category": "SocialNetworking",
"copyright": "HuLaSpark",
"licenseFile": "./copyright/License.txt",
"licenseFile": "./copyright/License.rtf",
"resources": [
"tray"
],

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.4",
"version": "2.6.12",
"identifier": "com.hula-app.app",
"build": {
"beforeDevCommand": "pnpm dev",
@@ -11,28 +11,7 @@
},
"bundle": {
"active": true,
"resources": [
"tray"
],
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico",
"icons/icon.png",
"icons/Square30x30Logo.png",
"icons/Square44x44Logo.png",
"icons/Square71x71Logo.png",
"icons/Square89x89Logo.png",
"icons/Square107x107Logo.png",
"icons/Square142x142Logo.png",
"icons/Square150x150Logo.png",
"icons/Square284x284Logo.png",
"icons/Square310x310Logo.png",
"icons/StoreLogo.png"
],
"iOS": {
"minimumSystemVersion": "13.0"
}
@@ -43,8 +22,6 @@
"title": "登录",
"label": "login",
"url": "/mobile/login",
"width": 800,
"height": 600,
"resizable": false,
"fullscreen": true
}

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.4",
"version": "2.6.12",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",
@@ -79,6 +79,18 @@
"alwaysOnTop": true,
"skipTaskbar": true,
"decorations": false
},
{
"label": "checkupdate",
"url": "/checkupdate",
"resizable": false,
"center": true,
"closable": false,
"width": 500,
"height": 600,
"visible": false,
"decorations": false,
"hiddenTitle": true
}
],
"security": {

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.4",
"version": "2.6.12",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",
@@ -74,18 +74,6 @@
"titleBarStyle": "Overlay",
"hiddenTitle": true
},
{
"label": "tray",
"url": "/tray",
"resizable": false,
"center": false,
"visible": false,
"width": 130,
"height": 44,
"alwaysOnTop": true,
"skipTaskbar": true,
"decorations": false
},
{
"label": "capture",
"url": "/capture",
@@ -95,6 +83,19 @@
"skipTaskbar": false,
"decorations": false,
"visible": false
},
{
"label": "checkupdate",
"url": "/checkupdate",
"resizable": false,
"width": 500,
"height": 150,
"alwaysOnTop": true,
"focus": true,
"skipTaskbar": true,
"visible": false,
"titleBarStyle": "Overlay",
"hiddenTitle": true
}
],
"security": {

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HuLa",
"version": "2.6.4",
"version": "2.6.12",
"identifier": "com.hula.pc",
"build": {
"beforeDevCommand": "pnpm dev",
@@ -101,6 +101,19 @@
"skipTaskbar": false,
"decorations": false,
"visible": false
},
{
"label": "checkupdate",
"url": "/checkupdate",
"resizable": false,
"width": 500,
"height": 150,
"alwaysOnTop": true,
"focus": true,
"skipTaskbar": true,
"visible": false,
"decorations": false,
"hiddenTitle": true
}
],
"security": {

Some files were not shown because too many files have changed in this diff Show More