Files
ESP32S3_vt/desktop/src-tauri/Cargo.toml
T
sloray 896b21fe44
构建客户端 / 检查(类型 + 单元测试) (push) Canceled after 0s
构建客户端 / Linux x64(deb + AppImage) (push) Canceled after 0s
构建客户端 / Windows x64(NSIS 安装包) (push) Canceled after 0s
构建客户端 / macOS 通用(.app + .dmg) (push) Canceled after 0s
feat(client): RMIC::2026 界面重做、可计算的版本机制与固件版本联动
- feat(client): 界面换成墨黑蓝底 + 单支红的矩形语言,切角全部去掉,仅装甲条保留平行四边形
- feat(client): 自托管 HarmonyOS Sans SC 与 JetBrains Mono,中文与拉丁数字逐字回退
- feat(client): 新增启动序列、首启门、用户端 HUD、裁判端控制台、设置抽屉与固件维护页
- feat(client): 裁判端中缝与下方控制台可拖,鼠标落在哪一路下方就看哪一路
- feat(client): 设置抽屉常驻实时预览,与画面共用同一份准星绘制代码
- feat(client): 动效改用 Material 3 的缓动曲线与时长,逐条替换掉自造的贝塞尔
- feat(version): 版本号与 CHANGELOG 由 scripts/version.mjs 从 git 历史算出,不再手写
- feat(firmware): Hello 报文携带语义化版本、构建号与自报协议号,负载向后兼容
- feat(client): 固件版本显示在绑定列表与裁判端每一格;协议不匹配时给出具体原因
- feat(firmware): 固件包版本与客户端同源,都从 version.json 读
- fix(client): getCurrentWindow() 在没有 Tauri 注入时同步抛异常,浏览器预览整棵树被卸载
- fix(client): 启动序列的淡出 effect 清掉了自己刚设的 setTimeout,界面永远停在启动页
- fix(client): 设置抽屉左侧导航的锚点没挂到 section 上,且用错了坐标系
- fix(protocol): Hello 改用宽松帧头解析,让协议不匹配的板子能被解释而不是静默消失
- fix(build): Windows 上 bindgen 加载不了 libclang 的同目录依赖,构建脚本补上搜索路径
- fix(build): esp-idf-sys 在长路径下拒绝构建,固件构建改用短的目标目录
- build(client): 队标图标,含光学尺寸分级与手工拼的多尺寸 ICO
- build(ci): 守门 job 增加版本一致性检查,产物名改为 rmic-2026-*
- docs: 补充界面语言、版本机制与协议通告布局的说明
2026-10-19 02:40:08 +08:00

72 lines
2.4 KiB
TOML

[package]
name = "cam-desktop"
version = "0.1.0"
edition = "2021"
description = "ESP32 图传与装甲板系统的桌面端"
rust-version = "1.77"
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
# `protocol-asset` 打开自定义资源协议,录制出来的 mp4 才能在界面里直接回放
# (前端用 convertFileSrc 把它变成一个 <video> 能播的 URL)。
tauri = { version = "2", features = ["protocol-asset"] }
# 只用来"在访达里显示"与"用系统播放器打开"。所有调用都走我们自己的 Rust 命令,
# 所以前端不需要装 @tauri-apps/plugin-opener,也不需要给它开权限。
tauri-plugin-opener = "2"
# 非界面部分:UDP 接收/重组、装甲板、配置、密码、槽位分配。它自己带 64 个测试。
cam-core = { path = "../core" }
# 线路格式与固件共享。
protocol = { path = "../../protocol" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
log = "0.4"
env_logger = "0.11"
anyhow = "1"
# 回环通道的随机 token。
rand = "0.9"
# 本地 WebSocket 视频通道。用 tokio-tungstenite 而不是 Tauri 的自定义协议:
# 二进制消息不经 JSON/IPC 序列化,前端拿到的就是原始 JPEG 字节,可以直接交给
# 浏览器的原生 JPEG 解码器(createImageBitmap)。
tokio = { version = "1", features = [
"rt-multi-thread",
"net",
"sync",
"io-util",
"macros",
"time",
] }
tokio-tungstenite = "0.30"
futures-util = "0.3"
# 截图要 PNG(相机出的 JPEG 不带 alpha、也可能被播放器当照片处理),所以要解码再编码。
# demo 模式也用它合成假画面。
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
# 文件名里的时间戳:现场看目录时要能一眼看出是哪一局录的。
chrono = "0.4"
# 固件维护页:串口枚举、ESP32 ROM 下载协议、分区表与读写校验。
# espflash 只开库所需的 serialport feature,不把它的 CLI 依赖拖进来。
espflash = { version = "4.6", default-features = false, features = ["serialport"] }
serialport = { version = "4.7", default-features = false }
sha2 = "0.10"
md-5 = "0.10"
hex = "0.4"
# 官方固件包:客户端可直接读 .zip,不必先解压。
zip = { version = "2", default-features = false, features = ["deflate"] }
# 原生目录选择框(选择官方固件包)。
tauri-plugin-dialog = "2"
[profile.release]
opt-level = 2