diff --git a/AGENTS.md b/AGENTS.md index dab084f..04ffdc2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -56,7 +56,7 @@ RMIC::2026 包含 ESP32-S3 图传固件、ESP32-C3 装甲板固件和 Tauri 桌 ### 硬件、配置与源码保护 -- 不提交 Wi-Fi 凭据、密码哈希、个人 SDK 绝对路径或本机缓存;不要在日志和交付说明中输出 `.env` 内容。保留已有 `.env`,示例使用占位值。 +- 不提交个人 Wi-Fi 凭据、密码哈希、个人 SDK 绝对路径或本机缓存。现场统一热点的 SSID 与密码作为连接约定保留在安装器配置中,见[客户端说明](docs/desktop/client.md#windows-x64-构建);不要将其当作个人配置删除。不要在日志和交付说明中输出 `.env` 内容。保留已有 `.env`,示例使用占位值。 - 仅做软件、文档或文案任务时,不执行烧录、擦除、写分区表或修改设备安全配置。涉及硬件任务时,按用户授权核对芯片、端口、分区与备份。 - `components/esp32-camera/target/` 是驱动源码目录,不能按构建缓存删除或忽略。清理缓存时使用明确的构建目录,相关方法见[开发与验证](docs/development/firmware.md#清理构建缓存)。 - 第三方组件的 README、许可证和本地补丁记录保留原有位置。不要把参考工程的旧实现误写成当前功能。 diff --git a/desktop/src-tauri/installer/hooks.nsh b/desktop/src-tauri/installer/hooks.nsh index 5a6fc3a..042a6d3 100644 --- a/desktop/src-tauri/installer/hooks.nsh +++ b/desktop/src-tauri/installer/hooks.nsh @@ -14,15 +14,12 @@ !define MUI_DIRECTORYPAGE_TEXT_TOP "软件仅为当前 Windows 用户安装。请选择有写入权限的文件夹。" !define MUI_FINISHPAGE_TITLE "安装完成" ; MUI reserves 60 dialog units above the two checkboxes: keep six short lines. -; Optional local guidance is excluded from version control. -!if /FileExists "${__FILEDIR__}/network.local.nsh" - !include "${__FILEDIR__}/network.local.nsh" +; Local overrides are optional; shared event defaults are always available. +!if /FileExists "${__FILEDIR__}\network.local.nsh" + !include "${__FILEDIR__}\network.local.nsh" !endif -!ifdef RMIC_INSTALLER_WIFI_SSID & RMIC_INSTALLER_WIFI_PASS +!include "${__FILEDIR__}\network.nsh" !define MUI_FINISHPAGE_TEXT "裁判系统客户端已安装完成。$\r$\n首次启动请选择模式并绑定裁判系统。$\r$\n裁判系统会自动连接以下热点;请将$\r$\n本机也连接到同一网络。$\r$\n名称(SSID):${RMIC_INSTALLER_WIFI_SSID}$\r$\n密码:${RMIC_INSTALLER_WIFI_PASS}" -!else -!define MUI_FINISHPAGE_TEXT "裁判系统客户端已安装完成。$\r$\n首次启动请选择模式并绑定裁判系统。$\r$\n请让本机与裁判系统连接到同一网络。$\r$\n网络名称和密码请向现场工作人员确认。" -!endif !define MUI_FINISHPAGE_TEXT_LARGE !define MUI_FINISHPAGE_RUN_TEXT "启动裁判系统客户端" !define MUI_INSTFILESPAGE_COLORS "E7ECF5 080B13" diff --git a/desktop/src-tauri/installer/network.nsh b/desktop/src-tauri/installer/network.nsh new file mode 100644 index 0000000..923df1a --- /dev/null +++ b/desktop/src-tauri/installer/network.nsh @@ -0,0 +1,11 @@ +; Shared event hotspot contract, intentionally kept with the installer. +; The firmware must be built with matching WIFI_SSID / WIFI_PASS values. +!ifndef RMIC_INSTALLER_NETWORK +!define RMIC_INSTALLER_NETWORK +!ifndef RMIC_INSTALLER_WIFI_SSID +!define RMIC_INSTALLER_WIFI_SSID "SR-602-2G4" +!endif +!ifndef RMIC_INSTALLER_WIFI_PASS +!define RMIC_INSTALLER_WIFI_PASS "12345678" +!endif +!endif diff --git a/desktop/src/lib/version.ts b/desktop/src/lib/version.ts index f76d0fd..b7585a9 100644 --- a/desktop/src/lib/version.ts +++ b/desktop/src/lib/version.ts @@ -11,7 +11,7 @@ export const BUILD = { minor: 2, patch: 2, /** git 提交数,单调递增。 */ - build: 39, + build: 40, /** 线路协议版本。与固件自报的那个数直接比对。 */ protocol: 1, /** 生成时的提交日期(`YYYY-MM-DD`)。 */ diff --git a/docs/desktop/client.md b/docs/desktop/client.md index 9f032be..9ebe08f 100644 --- a/docs/desktop/client.md +++ b/docs/desktop/client.md @@ -169,7 +169,11 @@ icacls .\src-tauri\target\x86_64-pc-windows-msvc\release\bundle\nsis\*-setup.exe NSIS 安装流程使用简体中文,包括欢迎、安装位置、安装完成、覆盖安装、卸载与 WebView2 错误提示。`src-tauri/installer/hooks.nsh` 定义页面提示和安装日志,`SimpChinese.nsh` 定义 Tauri 安装器的补充翻译;`tauri.windows.conf.json` 引用这些脚本和主题图片。沿用 Tauri 默认安装模板和当前用户安装方式;首次启动的模式选择与裁判系统绑定仍在客户端内完成。 -默认完成页提示客户端与裁判系统连接同一网络,不内置 Wi-Fi 凭据。现场安装包如需显示热点信息,可将 `src-tauri/installer/network.example.nsh` 复制为同目录的 `network.local.nsh`,填写后重新打包。该本地文件已被 Git 忽略;不要提交它,分发安装包时也需确认其中的热点信息允许分享。 +现场裁判系统采用固定热点约定:SSID 为 `SR-602-2G4`,密码为 `12345678`。热点需提供 2.4 GHz Wi-Fi;运行客户端的电脑也应接入同一网络,并允许设备间互访。固定这组参数是为了便于现场连接和调试,安装完成页会直接显示它们。 + +裁判系统只会连接固件中配置的热点。`WIFI_SSID` 和 `WIFI_PASS` 在编译时写入固件,名称和密码必须匹配;设备不会自动改连其他热点。客户端中的模式选择和设备绑定不修改设备的 Wi-Fi 参数。更换热点时,需修改固件构建配置、重新编译并烧录。 + +共享现场热点信息保存在 `src-tauri/installer/network.nsh`,随项目维护,普通构建和 CI 构建都会显示。其他部署如需更换安装提示,可将 `network.example.nsh` 复制为同目录的 `network.local.nsh` 并填写;本地覆盖文件已被 Git 忽略。这个覆盖只改变安装提示,不会改变设备固件的连接参数,两边需要同步核对。 视频录制另需可从 `PATH` 找到的 `ffmpeg`,也可以在配置的 `[recording] ffmpeg` 中指定路径;基础图传显示不依赖它。 diff --git a/docs/releases/changelog.json b/docs/releases/changelog.json index 3a901a6..8412619 100644 --- a/docs/releases/changelog.json +++ b/docs/releases/changelog.json @@ -3,13 +3,23 @@ "major": 0, "minor": 2, "patch": 2, - "build": 39, + "build": 40, "protocol": 1, "date": "2026-10-21", "baseline": "v0.2.1", - "commits": 4, + "commits": 5, "groups": { "fix": [ + { + "scope": "installer", + "text": "保留现场固定热点约定并说明连接要求", + "breaking": false + }, + { + "scope": "installer", + "text": "使用共享热点默认值,并修正本地覆盖配置的包含路径", + "breaking": false + }, { "scope": "packaging", "text": "修复 Windows 安装与固件打包并完善客户端文案", @@ -42,6 +52,16 @@ } ], "docs": [ + { + "scope": "network", + "text": "明确设备按固件中的固定热点参数连接,客户端电脑需接入同一网络,更换热点后需重新编译烧录", + "breaking": false + }, + { + "scope": "agents", + "text": "区分现场统一热点约定与个人 Wi-Fi 配置,保留前者及对应安装说明", + "breaking": false + }, { "scope": null, "text": "润色项目说明并统一裁判系统术语", diff --git a/docs/releases/changelog.md b/docs/releases/changelog.md index f86d6fe..d7b0a12 100644 --- a/docs/releases/changelog.md +++ b/docs/releases/changelog.md @@ -6,10 +6,12 @@ ## v0.2.2 — 2026-10-21 -构建号 **39** · 线路协议 **1** · 4 个提交(v0.2.1 → v0.2.2) +构建号 **40** · 线路协议 **1** · 5 个提交(v0.2.1 → v0.2.2) ### 修复 +- **installer** · 保留现场固定热点约定并说明连接要求 +- **installer** · 使用共享热点默认值,并修正本地覆盖配置的包含路径 - **packaging** · 修复 Windows 安装与固件打包并完善客户端文案 - **installer** · 修复低完整性产物无法写入临时目录的问题,并在 CI 打包前后检查完整性标签 - **firmware** · 从本次 Cargo ELF 打包并同步配套镜像,修正短目录说明与 LLVM 搜索顺序 @@ -19,6 +21,8 @@ ### 文档 +- **network** · 明确设备按固件中的固定热点参数连接,客户端电脑需接入同一网络,更换热点后需重新编译烧录 +- **agents** · 区分现场统一热点约定与个人 Wi-Fi 配置,保留前者及对应安装说明 - 润色项目说明并统一裁判系统术语 - 整理项目文档并统一界面表述 - README 不写死构建号,改由 version.json 提供 diff --git a/docs/setup/firmware.md b/docs/setup/firmware.md index 317f294..b01a18e 100644 --- a/docs/setup/firmware.md +++ b/docs/setup/firmware.md @@ -141,6 +141,8 @@ WIFI_PASS='你的Wi-Fi密码' `.env` 使用简单的 `KEY=value`;值含空格、`#` 或 `$` 时用单引号包围,不使用变量展开或命令替换。脚本会加载 `.env`,直接 `cargo build` 不会自动读取它。上述参数在编译时写入固件,修改后需要重新编译和烧录。`.env` 已被 Git 忽略;固件也包含凭据,分享前应重新配置。 +现场使用的固定热点名称、密码和连接步骤见[客户端说明](../desktop/client.md#windows-x64-构建)。裁判系统只连接编译时配置的 SSID,并使用对应密码,不会在运行时改连任意热点;运行客户端的电脑也需接入同一网络。固定这组参数便于现场连接和调试。其他部署更换热点时,需同步修改固件构建参数和安装提示,再重新编译、烧录;仅修改安装提示或客户端绑定不会改变设备的连接目标。 + 运行时断线恢复不重置摄像头、曝光或增益。首次尝试立即发起,失败后按 1、2、4、8、16、30 秒退避;关联与 DHCP 分别有 15 秒期限。恢复 IP 后丢弃旧采集帧、重建 socket 并重新广播,由客户端自动续订。启动时首次联网仍使用扫描与认证模式探测流程。实现依据 [ESP-IDF 断线事件处理说明](https://docs.espressif.com/projects/esp-idf/en/v5.5.5/esp32s3/api-guides/wifi.html#wifi-event-sta-disconnected)。 ## 编译固件 diff --git a/version.json b/version.json index 47abc66..e52f5f3 100644 --- a/version.json +++ b/version.json @@ -3,7 +3,7 @@ "major": 0, "minor": 2, "patch": 2, - "build": 39, + "build": 40, "protocol": 1, "date": "2026-10-21", "baseline": "v0.2.1",