Dawn ac3dac35a3 feat(system): 增加分布式兼容和语音视频通话、移动端部分兼容 (#311)
* fix(config): 🐛 修复ios因Cargo.toml中系统限制条件排序问题导致无法启动

* feat(common):  tauri 登录命令 存储 token

* feat(common):  tauri 存储 room 信息

* feat(common):  sqlite 存储房间信息,群成员信息

* feat(common):  修改我的群的信息

* feat(common):  游标分页查询群组成员

* style(login): 💄 完善登录页面和图标

* feat(common):  查询全部群成员;优化前端显示逻辑

* feat(common):  更新 gitignore

* feat(common):  使用缓存检测是否强制更新本地数据,或采取静默更新

* fix(hook): 🐛 枚举使用错误修复

* fix(Android): 🐛 修改Android中的安全距离和启动页面

* fix(style): 🐛 修改pc登录按钮的样式

修复计时器worker计时问题
修改一些样式
移除修改ip地址的测试功能
修复刷新接口时候判断的群聊问题

* feat(system):  增加获取系统盘的信息和文件磁盘占用情况功能

优化一些重要提示的样式

* feat(common):  sqlite 存储会话

* feat(common):  sqlite 存储聊天信息

* fix(common): 🐛 sqlite需要根据登录的用户 id 进行数据隔离

* fix(mac): 🐛 修复mac上点击系统托盘图标和程序坞图标不展示主窗口的问题

* fix(windows): 🐛 修复win上右键任务栏图标关闭应用后无法再打开主窗口的问题

closed #IBQB1H

* fix(common): 🐛 添加 sqlite数据库迁移代码

* fix(view): 🐛 会话接口新增detailId;sqlite 数据结构变更;登录保存用户 id bug 修复;

* feat(util):  增强录音音频响度

* feat(common):  sqlite 存储消息

* fix(common): 🐛 sqlite 存储消息体异常

* feat(setting):  增加应用占用磁盘空间计算功能和可视化

* fix(hook): 🐛 修复音频文件命名不一致问题

* feat(common):  添加 tauri 日志插件

* feat(common):  rust 层发送消息

* feat(view):  新增自动下载音频功能,优先播放本地音频,修复音频频谱波形异常问题

* fix(component): 🐛 群成员监听显示问题;tauri 事件监听响应多次问题;消息列表显示顺序问题;

* fix(view): 🐛 修复发送语音后无法播放本地音频问题

* fix(common): 🐛 im_message 表关闭 nickname 非空限制

* fix(common): 🐛 设置账号第一次在客户端登录,设置is_init 为 true,进行初始化获取近期所有消息

* fix(common): 🐛 配置 tauri 的环境变量,用于 migration 启动

* fix(common): 🐛 登录之后,聊天页面初始化,未显示聊天记录 bug

* feat(system):  合并master

* style(common): 💄 引入 tauri websocket; 格式化 rust 代码;

* fix(mac): 🐛 修复mac语音播放问题

增加机器人样式和类型

* fix(common): 🐛 ws 接收消息存储本地

* fix(common): 🐛 rust 报错没有在前端提示问题修复

* fix(common): 🐛 修复登录页面请求接口 bug,以及首屏骨架屏问题;

* build(system): 📦 移除一些依赖,更新图标

* fix(view): 🐛 修复系统托盘在自动登录时不显示退出问题

优化在其他不需要显示window.$message提示的窗口可禁用

* perf(voice):  优化录音组件的样式

* fix(store): 🐛 修复安卓无法获取安全区域问题

* fix(common): 🐛 token 更新bug修复

* feat(mobile):  新增和优化消息页面布局

* feat(common):  离线消息同步

* build(system): 📦 修改项目一些样式和图标

修复判断安卓的方法异步问题导致mac release版本页面不加载问题

* build(icon): 📦 更新除了mac系统的图标

* fix(common): 🐛 将数据库迁移 crate 集成到主进程中

* style(common): 💄 修改 tauri 日志配置,输出日志到 logs 目录下;并对日志级别添加颜色;

* feat(mobile):  新增联系人页面

* feat(common):  引入 tauri-devtools

* feat(mobile):  新增点击加号图标的小弹窗页面

* docs(common): 📝 env文件修改

* fix(router): 🐛 补充提交路由文件,前一次提交缺少更新的路由文件

* fix(common): 🐛 rust 依赖调整;配置调整;

* build(config): 📦 修改配置

* fix(common): 🐛 rust .env 文件读取问题修复

* fix(layout): 🐛 修复主页布局漏洞

* build(system): 📦 拉取master的内容

* refactor(view): ♻️ 对接登录参数

* fix(common): 🐛 在线消息保存修复;

* fix(common): 🐛 sqlite 保存消息 mark

* fix(common): 🐛 消息标记同步问题

* feat(mobile):  新增通讯录页面内容

* fix(common): 🐛 项目启动之后,还在登录页面时,还会请求房间消息数据等

* fix(common): 🐛 windows启动造成 panic: 去掉 main 的运行时

* fix(common): 🐛 清除缓存,程序卡死

* fix(config): 🐛 更改sqlite configuration配置

修复windows启动控制台打印报错问题

* fix(common): 🐛 修复清除缓存,系统崩溃问题;

* fix(common): 🐛 群成员角色判定 bug 修复

* fix(common): 🐛 修复群成员搜索 bug

* fix(rust): 🐛 修复字段类型的字节数量

* feat(mobile):  联系人页面中移植客户端的好友组件

* fix(common): 🐛 修复动态窗口,邮件窗口,AI 插件窗口关闭 bug

* fix(common): 🐛 修复会话列表最新消息显示问题

* fix(common): 🐛 左侧功能窗口打开之后,鼠标划上显示问题

* perf(system):  适配cloud

* perf(centext):  优化切换会话时候卡顿问题

修复data.list[0]报错问题

* fix(common): 🐛 重构 Tauri事件的监听器释放逻辑;

* refactor(common): ♻️ 重构 Tauri 的事件监听相关代码;增加日志记录;

* feat(util):  新增DOM计算函数,完善社区页面和功能

* refactor(common): ♻️ 重构 useTauriListener

* fix(common): 🐛 监听 home 窗口关闭的时候,把 home 窗口隐藏

* perf(ws):  移除ws重连次数限制

* fix(common): 🐛 ios 窗口关闭弹窗 bug;修改群屏蔽状态导致消息错乱 bug;

* feat(util):  新增小屏安全区域页面适配,优化多次监听resize导致的性能问题

* fix(common): 🐛 初始化消息发送时的消息状态为发送中

* fix(ios): 🐛 修复rust依赖问题导致ios启动失败

* chore(format): 🔨 使用biome替换eslint

* perf(rust):  添加超时机制和错误处理优化

优化数据库连接池配置,调整连接参数和日志级别
新增全局超时配置模块
改进 IM 客户端锁机制,避免跨 await 持有锁
增强命令函数错误处理,返回 Result 类型
优化托盘图标创建逻辑,添加默认图标检查
重构应用初始化流程,使用异步任务避免阻塞

* fix(scanner): 🐛 修复存储扫描导致程序崩溃(扫描中关闭未解决)

* fix(configuration): 🐛 修复release打包后初始化应用数据失败问题

* perf(rust):  优化未处理的unwrap()

* fix(hide_notify): 🐛 修复hide_notify事件无限循环导致程序崩溃问题

* fix(voice): 🐛 修复输入框切换录音组件后选择表情包导致错位问题

* fix(view): 🐛 windwos notify和tray导致系统卡死

* fix(style): 🐛 修复样式错乱问题

* fix(common): 🐛 windows 接收消息 打开主窗口卡死

* fix(style): 🐛 修改图标样式

* fix(common): 🐛 windows接收群消息卡死

* build(sqlite): 📦 合并sqlite分支代码

* fix(common): 🐛 mac docker 计数

* fix(common): 🐛 添加macos编译;解决rust警告

* fix(common): 🐛 mac badge 计数

* fix(common): 🐛 修复自动登录问题;修复watch 的异步问题导致的数据竞态问题

* fix(common): 🐛 删除会话功能;

* build(ios): 📦 增加移动端所需的配置

* fix(common): 🐛 ios 启动 tauri 插件和命令适配

* fix(common): 🐛 查询消息根据 id 排序时,将 id 转为数值进行排序

* refactor(common): ♻️ 使用 tracing 作为日志框架

* fix(unreadCount): 🐛 修复标记重复问题

* style(lint): 💄 优化了biome的配置

按照新的biome配置格式化代码

* style(biome): 💄 完善biome规则配置

* style(biome): 💄 增加自动移除未使用的导入

* feat(mobile):  新增“我的”页面内容及动画,修复安全边距问题

* fix(common): 🐛 修改AnnouncementBody类型

* fix(common): 🐛 修改 ApiResult 类型

* feat(mobile):  新增聊天室页面

* fix(ios): 🐛 添加log依赖

* fix(common): 🐛 去掉 home 窗口的重复监听

* fix(common): 🐛 发送消息接口,用channel 代替 event,解决系统卡死;

* fix(common): 🐛 android启动问题

* fix(rust): 🐛 修复ios签名问题

修复ios底部栏不显示问题|移除冗余的权限配置

* refactor(common): ♻️ 将 db.sqlite 设置为resource,通过 tauri api 进行读取

* test(common):  新增视频通话局部代码

* fix(rust): 🐛 修复移动端无法启动并且无法创建对应文件的问题

* test(common):  优化通话逻辑

* feat(mobile):  新增客户端对象,修复加载页载入问题

* chore(common): 🔨 修改 tauri 配置文件

* ci(log): 🎡 修改日志打印的级别和语言都为英文

* fix(common): 🐛 notify_cotent事件修改

* feat(common):  初步实现 webrtc

* fix(common): 🐛 发送视频通话请求

* fix(common): 🐛 webrtc实现-待测试

* fix(common): 🐛 webrtc-测试

* style(common): 💄 webrtc 页面 ui调整

* fix(common): 🐛 rtc 页面头像显示

* fix(common): 🐛 rtc 第一次切换摄像头未显示远程

* fix(common): 🐛 webrtc 挂断

* fix(common): 🐛 rtc 通话结束

* fix(common): 🐛 ws监听挂断消息

* fix(common): 🐛 rtc 设备检查

* fix(common): 🐛 检查audiooutput

* fix(common): 🐛 检查音量来判断用户是否开启 audio

* fix(common): 🐛 检查音量判断声音设备

* fix(agreement): 🐛 前端对接cloud的刷新token

* fix(common): 🐛 重构 webrtc

* fix(common): 🐛 webrtc 异常

* fix(common): 🐛 rtc 异常

* fix(common): 🐛 rtc candidate

* fix(common): 🐛 通知窗口

* fix(common): 🐛 rtc 通话时间显示

* fix(common): 🐛 关闭扬声器功能

* fix(common): 🐛 关闭麦克风

* fix(common): 🐛 win 通知窗口显示问题

* fix(common): 🐛 rtc调整设置通知通知栏的高度

* feat(common):  新增处理进群审核接口、音视频处理约定逻辑

* fix(common): 🐛 前端刷新 token 之后调用 command 更新 rust 部分的 token

* fix(common): 🐛 显示视频通话消息

* fix(common): 🐛 webrtc 语音通话调用

* fix(common): 🐛 查询所有会话 bug

* build(build): 📦 升级一些依赖版本

* refactor(common): ♻️ rust 重构ws

* style(avatar): 💄 优化头像加载失败时候展示的图片

* fix(common): 🐛 rust ws

* fix(common): 🐛 修复群聊状态显示、同步后端打电话逻辑

* fix(common): 🐛 查询群成员报错 异步问题

* fix(common): 🐛 群成员 异步问题

* refactor(common): ♻️ rust 异常处理

* fix(common): 🐛 消息 骨架屏 异常

* fix(common): 🐛 删除无用代码

* fix(common): 🐛 win 图标闪烁问题

* fix(common): 🐛 ws 保活

* feat(ChatFooter):  增加输入框和ChatFooter组件的拖拽效果

优化私聊在线状态

* fix(common): 🐛 webrtc 切换视频关闭远程视频流

* fix(common): 🐛 message mark issue resolve

* fix(common): 🐛 message mark issue resolve

* refactor(common): ♻️ delete useless code

* fix(common): 🐛 save_room_member_batch cause database lock

* fix(common): 🐛 show the system messgage of join group

* fix(common): 🐛 message sound

* build(img): 📦 压缩一些图片为webp

修改一下代码的逻辑

* perf(global):  优化群成员排序、输入框发送事件为form表单的提交事件

优化chatfooter输入框高度拖拽和home窗口拖拽时性能问题
优化home窗口拖拽会持续触发当前会话选中后对应房间已读触发问题

* chore(lint): 🔨 优化lint的配置

* perf(rtcCall):  优化通话窗口的样式和关闭窗口会挂断的功能

* fix(common): 🐛 ws reconnect in backend reboot

* fix(common): 🐛 webrtc relate message show

* fix(common): 🐛 ws delete useless code

* fix(common): 🐛 resolve ws multi connection

* docs(config): 📝 更新群二维码和赞助榜

* fix(common): 🐛 ws setAppBackGroundState

* fix(common): 🐛 env config modify

* fix(common): 🐛 webrtc on CANCEL

* fix(common): 🐛 group announcement update

* fix(common): 🐛 announcement issuce

* fix(common): 🐛 webrtc windows dragable

* fix(system): 🐛 fix location of call component and some page styles

* fix(common): 🐛 webrtc issue

* ci(common): 🎡 .env.dev modify

* fix(common): 🐛 gET_ROOM_MEMBERS command issue

* fix(common): 🐛 update my group info

* fix(common): 🐛 webrtc audio call issue

* fix(common): 🐛 webrtc video or audio status switch issue

* fix(group): 🐛 fixed some logic and restrictions on inviting members into groups

Optimize Create Script

* style(style): 💄 remove some styles and comments

* fix(common): 🐛 fix WebRTC audio cannot be heard

* fix(common): 🐛 info import error

* fix(common): 🐛 fix #ICT1BO group info update

* fix(common): 🐛 fix "不是好友关系" issue

* fix(common): 🐛 add group apply list

* fix(common): 🐛 webrtc if can't acquire device then hang up

* fix(common): 🐛 mute local video ele

* fix(common): 🐛 同步最新申请接口

* fix(common): 🐛 change isSpeakerOn and mute the bell

* fix(common): 🐛 group apply invite dom

* style(style): 💄 change the style of language statistics and incoming call notifications

---------

Co-authored-by: ql <254693270@qq.com>
Co-authored-by: 卡仔 <1271013637@qq.com>
Co-authored-by: 乾乾 <1046762075@qq.com>
2025-08-15 19:23:55 +08:00
2025-07-22 21:06:07 +08:00
2024-12-16 02:54:15 +08:00
2025-07-22 21:06:07 +08:00
2025-06-18 16:03:54 +08:00
2025-07-22 21:06:07 +08:00
2023-12-16 03:56:10 +08:00

An instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScript


📊 Project Statistics

Gitee Stars GitHub Stars GitCode Stars

🔖 Project Certification

DeepWiki FOSSA Status CII Best Practices


🛠️ Tech Stack


💻 Website:HuLaSpark | Server:GitHub / Gitee | 💬 WeChat:cy2439646234

中文 | English | Deutsch | Español | français | 日本語 | 한국어 | Português | Русский

🌐 Supported Platforms

Platform Supported Versions
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 built with Tauri, Vite 7, Vue 3, and TypeScript. It leverages Tauri's cross-platform capabilities and Vue 3's reactive design, combined with TypeScript's type safety features and Vite 7's fast build process, providing users with an efficient, secure, and user-friendly communication solution.

🛠️ Tech Stack

  • Tauri: Provides a lightweight, high-performance desktop application container for this project, enabling us to develop cross-platform desktop applications using frontend technology stack. Tauri's design philosophy is to minimize resource consumption while ensuring security.
  • Vite 7: Vite is a modern frontend build tool that leverages native ES module imports to provide a fast development server, while also offering powerful support for production environment packaging. Vite 7 is its latest version, bringing more optimizations and features.
  • Vue 3: Vue 3 is a progressive JavaScript framework for building user interfaces. Its Composition API, better TypeScript integration, and mobile optimization make developing complex single-page applications simpler and more efficient.
  • TypeScript: TypeScript is a superset of JavaScript that adds a type system on top of JavaScript. This allows us to catch more errors during development and provides better editor support.

🖼️ Project Preview

🎨 Interface Showcase

Main Interface
💬 Main Chat Interface
Chat Interface
🗨️ Chat Conversation Interface
Contact Interface
😊 Emoji Selection
Settings Interface
⚙️ System Settings

🌟 Feature Highlights

Message Features
📱 Diverse Messaging
Theme Switching
🎨 Status Toggle
Emojis
📷 Image Viewer
Group Management
👥 Group Management
Personal Settings
🤖 ChatBot Plugin Features
File Transfer
🤖 ChatBot Settings Page

Features

🎯 Development Progress Overview

🔐 User Authentication System

Feature Description Status
🔑 Username/Password Login Completed
📱 QR Code Scan Login Completed
💻 Multi-device Login Management Completed

💬 Message Communication

Feature Description Status
👤 One-on-one Private Chat Completed
👥 Group Chat Completed
↩️ Message Recall Completed
📢 @Mention & Reply Features Completed
👁️ Message Read Status Completed
😊 Emoji Features Completed
🖱️ Message Right-click Menu Completed
🔗 Link Preview Cards Completed
👍 Message Like Interaction Completed

🤝 Social Management

Feature Description Status
Add & Remove Friends Completed
🔍 Friend Search Completed
🏢 Group Creation & Management Completed
🟢 Friend Online Status Completed
🎖️ Friend Badge System Completed
🚫 Block & Do Not Disturb Completed
📤 Message Forwarding In Progress
📋 Group Announcements Completed
🏷️ Nickname & Remark Management Completed

🎨 User Experience

Feature Description Status
🖼️ Modern UI Design Completed
🌙 Dark & Light Theme Completed
🎭 Skin Theme Switching Completed

🛠️ System Features

Feature Description Status
🪟 Multi-window Management Completed
🔔 System Tray Notifications Completed
📷 Image Viewer Completed
✂️ Screenshot Feature In Progress
📁 File Upload (Qiniu Cloud) Completed
🔄 Auto-update System Completed

🌐 Cross-platform Support

Feature Description Status
💻 Windows/macOS/Linux Completed
📱 iOS/Android Adaptation In Progress

🤖 AI Integration

Feature Description Status
🧠 AI Chat Assistant In Progress
🔌 Multi-platform AI Support In Progress

👏 Thanks to all Contributors!

📥 Installation & Running

# Clone the project
git clone https://gitee.com/HulaSpark/HuLa.git
# or
git clone https://github.com/HulaSpark/HuLa.git

# Enter project directory
cd HuLa

# Install dependencies
pnpm install

# Run development server
pnpm run tauri:dev

# Build for production
pnpm run tauri:build

⚠️ Important Notes (macOS Users)

Downloading installation packages from the web may show a damaged package prompt, possibly encountering certificate issues due to macOS security mechanisms. Please follow these steps to resolve:

1. Open "System Settings" - "Security & Privacy", check as shown: Allow apps downloaded from "Anywhere" to run:

img_10.png

2. If errors persist, execute the following commands in Terminal:

## Execute before installation
sudo xattr -rd com.apple.quarantine path/to/your/downloaded/package
## If already installed, execute the following
sudo xattr -r -d com.apple.quarantine /Applications/ApplicationName.app

📋 Commit Guidelines

Execute pnpm run commit to invoke git commit interaction, complete information input and selection according to prompts.

⚖️ Disclaimer

  1. This project is provided as an open-source project. Developers do not provide any form of explicit or implicit warranties for the functionality, security, or applicability of the software within the scope permitted by law.
  2. Users clearly understand and agree that the risk of using this software is entirely borne by the user. The software is provided on an "as is" and "as available" basis. Developers do not provide any form of warranty, whether explicit or implicit, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement.
  3. Under no circumstances shall developers or their suppliers be liable for any direct, indirect, incidental, special, punitive, or consequential damages, including but not limited to profit loss, business interruption, personal information leakage, or other commercial damages or losses arising from the use of this software.
  4. All users conducting secondary development on this project must commit to using this software for legal purposes and are responsible for complying with local laws and regulations.
  5. Developers have the right to modify the software's functions or features at any time, as well as any part of this disclaimer, and these modifications may be reflected in the form of software updates.

The final interpretation of this disclaimer belongs to the developers

🎁 Support the Project

💝 Sponsor Support

If you find HuLa helpful, welcome to sponsor and support us. Your support is our motivation to keep moving forward!

WeChat Code Alipay Code


💬 Join Community

🤝 HuLa Community Discussion Group

Join developers and users for discussions, get the latest news and technical support

WeChat Group QR Code

📱 Scan to Join WeChat Discussion Group

🙏 Thanks to Sponsors

💎 Contributors Hall of Fame

Thanks to the following friends for their generous support of the HuLa project!

🏆 Gold Sponsors ($15+)

💝 Date 👤 Sponsor 💰 Amount 🏷️ Platform
2025-04-25 上官俊斌 ¥200 WeChat
2025-05-27 临安居士 ¥188 WeChat
2025-04-20 姜兴(Simon) ¥188 WeChat
2025-02-17 禾硕 ¥168 Alipay
2025-08-13 zhongjing ¥100 WeChat
2025-07-15 粉兔 ¥100 WeChat
2025-02-8 Boom.... ¥100 WeChat

🥈 Silver Sponsors ($8-14)

💝 Date 👤 Sponsor 💰 Amount 🏷️ Platform
2025-06-26 m udDy🐖 ¥88 WeChat
2025-05-09 犹豫,就会败北。 ¥88 WeChat
2025-04-01 ¥88.88 WeChat
2025-02-8 邓伟 ¥88 WeChat
2025-02-7 dennis ¥80 Gitee
2025-02-6 小二 ¥62 WeChat
2025-05-15 孤鸿影 ¥56 WeChat

🥉 Bronze Sponsors ($3-7)

💝 Date 👤 Sponsor 💰 Amount 🏷️ Platform
2025-08-12 * ¥20 Alipay
2025-06-03 洪流 ¥20 WeChat
2025-05-27 刘启成 ¥20 WeChat
2025-05-20 匿名赞助者 ¥20 WeChat

📝 Friendly Reminder This list is manually updated. If you have sponsored but are not listed, please contact us: 🐛 GitHub Issue | 📧 Email: 2439646234@qq.com | 💬 WeChat: cy2439646234



📄 Open Source License

⚖️ License Information

FOSSA Status

This project follows open source license agreements. For detailed information, please check the license report above


🌟 Thank You for Your Attention

If you find HuLa valuable, please give us a Star, which is the greatest encouragement for us!

Let's build a better instant messaging experience together 🚀

S
Description
🍀 A cross-platform instant messaging desktop application with exceptional performance built on Rust + Vue3, compatible with Windows, macOS, Linux, Android, and iOS(一款基于Rust+Vue3极致性能的跨平台即时通讯桌面应用,兼容Windows、MacOS、Linux、Android、IOS)
Readme Apache-2.0 105 MiB
Languages
Vue 55.1%
TypeScript 30.6%
Rust 14.3%