- 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: 补充界面语言、版本机制与协议通告布局的说明
72 lines
2.4 KiB
TOML
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
|