toona introduction
toona introduction
Toona 是一个基于 Matrix 协议和 Makepad UI 框架构建的任务协作管理平台,灵感来源于 Trello 的看板模式。作为 Robrix 项目基础上的延伸,Toona 将即时通讯与任务管理完美融合,让团队协作更加高效。
核心特性
- 看板视图: 类似 Trello 的拖拽式看板界面,轻松管理任务状态
- Matrix 集成: 基于 Matrix 协议,支持端到端加密的团队沟通
- 实时协作: 多端同步,团队成员可以实时查看和更新任务
- 跨平台支持: 支持 macOS、Windows、Linux、Android、iOS
- 纯 Rust 实现: 利用 Makepad 和 Robius 框架,确保高性能和安全性
技术栈
平台支持
| 目标平台 | 主机系统 | 编译 | 运行 |
|---|---|---|---|
| macOS | macOS | ✅ | ✅ |
| Linux | Linux | ✅ | ✅ |
| Windows | Windows | ✅ | ✅ |
| Android | 任意 | ✅ | ✅ |
| iOS | macOS | ✅ | ✅ |
快速开始
环境准备
Linux/WSL 系统额外依赖:
1 2
sudo apt-get update sudo apt-get install libssl-dev libsqlite3-dev pkg-config binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev libwayland-dev libxkbcommon-dev
构建与运行
1
2
3
4
5
6
7
8
# Debug 构建并运行
cargo run
# Release 构建
cargo run --release
# TSP 功能支持
cargo run --features tsp
移动端构建
需要安装 cargo-makepad 工具:
1
cargo install --force --git https://github.com/makepad/makepad.git --branch dev cargo-makepad
Android:
1
2
cargo makepad android install-toolchain
cargo makepad android run -p toona --release
iOS:
1
2
3
rustup toolchain install nightly
cargo makepad apple ios install-toolchain
cargo makepad apple ios --org=<你的组织标识> --app=toona run-sim -p toona --release
功能特性
任务管理
- 看板视图与列表切换
- 拖拽式任务卡片
- 任务详情查看与编辑
- 任务状态管理(待办/进行中/完成)
- 看板列表视图
即时通讯
- Matrix 聊天室接入
- 消息收发(文本、图片)
- 消息回复与引用
- 消息reaction
- 消息编辑
- 端到端加密验证
- 链接预览
辅助功能
- 用户登录认证
- 会话持久化
- 头像缓存
- 媒体文件缓存
- 空间(Space)视图
- 房间邀请处理
- 离线模式支持
项目结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
src/
├── lib.rs # 库入口
├── main.rs # 程序入口
├── app.rs # 应用状态管理
├── utils.rs # 工具函数
├── sliding_sync.rs # Matrix Sliding Sync
├── space_service_sync.rs # Space 服务同步
├── avatar_cache.rs # 头像缓存
├── media_cache.rs # 媒体缓存
├── location.rs # 位置功能
├── event_preview.rs # 事件预览
├── temp_storage.rs # 临时存储
├── verification.rs # E2EE 验证
├── verification_modal.rs # 验证弹窗
├── join_leave_room_modal.rs # 加入/离开房间弹窗
│
├── home/ # 主界面模块
│ ├── home_screen.rs # 主屏幕
│ ├── kanban_list_view.rs # 看板列表
│ ├── kanban_card.rs # 任务卡片
│ ├── kanban_card_detail.rs # 卡片详情
│ ├── room_screen.rs # 聊天室
│ ├── rooms_list.rs # 房间列表
│ ├── rooms_sidebar.rs # 侧边栏
│ ├── spaces_bar.rs # Space 导航
│ ├── ... # 其他 UI 组件
│
├── kanban/ # 看板功能模块
│ ├── api/ # API 集成
│ ├── data/ # 数据模型
│ ├── drag_drop/ # 拖拽逻辑
│ └── state/ # 状态管理
│
├── room/ # 房间模块
├── login/ # 登录模块
├── settings/ # 设置模块
├── profile/ # 用户资料
├── shared/ # 共享组件
├── persistence/ # 持久化存储
│
├── tsp/ # TSP 钱包集成
└── tsp_dummy/ # TSP 占位模块
技术亮点
- 原生 Sliding Sync: 与 Element X 等现代客户端保持一致
- Makepad UI: 声明式 DSL 构建现代化界面
- Robius 框架: 跨平台应用开发的最佳实践
- Tokio 异步: 高性能异步处理
- Matrix SDK: 完整的 Matrix 协议支持
已知问题
- Matrix 链接 (
https://matrix.to/...) 在应用内尚未完全处理 - 忽略/取消忽略用户会清空所有时间线
- Linux 平台的拖拽功能受限于 Makepad 实现
打包分发
1
2
3
4
5
6
7
8
# 安装 cargo-packager (需要 Rust 1.79+)
cargo +stable install --force cargo-packager
# 打包
cargo packager --release
# Windows 控制台隐藏
RUSTFLAGS="--cfg hide_windows_console" cargo packager --release
致谢
许可证
MIT License
本文由作者按照 CC BY 4.0 进行授权