========================================================================== RetroSaveBackup 界面与功能说明(用户手册) ========================================================================== 适用版本 : v0.3.0(M1-M5、M7 已实现;M6 真机回归测试进行中) 发布形态 : 本文档随应用发布(各平台发布目录中的 README.txt), 源文件见仓库 docs/usage.txt(Markdown 版:docs/user-guide.md) 适用设备 : TrimUI Brick Hammer(原厂 TRIMUI UI,Apps 方式安装; 或 NextUI,Pak 方式安装) Anbernic 35XXH(muOS,muxapp 方式安装) 开发期亦可在 PC 窗口模式运行 本手册第 0 节说明安装、配置与卸载;第 1 节起描述软件实际已实现的全部 界面、每个界面上的可用功能点,以及各操作的使用效果(成功表现与失败 表现),供使用者与测试者对照验证。 -------------------------------------------------------------------------- 0. 安装、配置与卸载 -------------------------------------------------------------------------- 获取制品:发布目录(即本 README.txt 所在目录)按平台提供安装包, 按设备选择对应平台子目录: 平台目录 设备 安装包 nextui/ TrimUI Brick Hammer retro-game-save-backup-tool-nextui-<版本>.pak.zip (NextUI/Pak 生态) trimuistockos/ TrimUI Brick Hammer retro-game-save-backup-tool-trimuistockos-<版本>.zip (原厂 TRIMUI UI) muos/ Anbernic 35XXH retro-game-save-backup-tool-muos-<版本>.muxapp (muOS) 带 -<版本> 后缀的为更新/安装包(应用内自更新即下载该包);不带后缀的 固定名副本内容相同,供固定地址手动下载。 安装步骤: 原厂 :解压 .zip 得到 RetroSaveBackup/ 文件夹,复制到 SD 卡 Apps/ 目录,重启后在「应用」菜单启动。 NextUI:解压 .pak.zip 得到 RetroSaveBackup.pak/ 文件夹,侧载到 SD 卡 /Tools/tg5040/ 目录。 muOS :.muxapp 本质为 ZIP 安装包,经 muOS 的 Archive Manager 安装。 首次启动配置:应用自动在安装目录同级生成数据目录 RetroSaveBackup.data/ 并附带配置模板;配置编辑需在 PC 或读卡器上完成(详见第 11 节): auth Gitee 信息(仓库地址、Token,key=value 格式,两项均必填) sources.json 备份源(存档目录对象数组、每目录筛选模式、设备名称) config.json 应用配置(update_base_url:更新源发布基址,选填, 不填则备份/恢复可用、检查更新置灰) auth 编辑方法:首次启动已自动生成空白 auth,直接编辑填入真实值即可; 也可复制 auth.example 为 auth 后编辑——但必须把示例值改为真实值(保留 示例值的应用会视为未完成配置,拒绝备份/恢复并提示编辑 auth)。auth 仅 支持 repo_url 与 token 两个属性,出现其他属性会被拒绝并提示。 sources.json 编辑方法:save_dir 为对象数组,每项 path 必填、patterns 选填。 示例: { "save_dir": [ { "path": "/mnt/SDCARD/Saves", "patterns": ["*.srm", "*.rtc"] }, { "path": "/mnt/SDCARD/Roms", "patterns": ["*.srm"] } ], "device_name": "BrickHammer" } - patterns 缺省或空数组时备份该目录全部文件;*.srm 可匹配任意子目录下 的 .srm 文件(大小写不敏感),含 / 的模式按相对路径匹配; - 未匹配筛选规则的文件不会被备份、覆盖或删除; - 旧版字符串形式 "save_dir": "/path" 不再支持,需改为上述对象数组; 升级后首次备份会产生一次镜像重排(旧 saves/… → saves/0/…)。 卸载:删除设备上的应用安装目录(RetroSaveBackup.pak/、原厂系统为 Apps/RetroSaveBackup/,或 .muxapp 解压所得目录)与数据目录 RetroSaveBackup.data/ 即完全清除(存档目录不受影响)。 更新须知:v0.1.0 起制品与托管结构统一为 {更新源基址}/retro-game-save-backup-tool/<平台>/ 目录布局;从更早发布 形态升级的设备无法自动更新,需按本节手动重装一次,并同步将 config.json 的更新源字段改为 update_base_url(旧字段名 base_url 不再读取)。 v0.2.1 起应用随包携带 HTTPS 根证书,修复设备端证书校验失败导致的 Gitee 检查失败与更新不可用。v0.2.0 及更早版本无法通过应用内更新获取 本修复(其 HTTPS 校验本身不可用),请手动安装一次 v0.2.1;安装后可 正常使用应用内更新。 -------------------------------------------------------------------------- 1. 界面总览 -------------------------------------------------------------------------- 界面 | 进入方式 | 作用 -----------+--------------------------+-------------------------------- 主菜单 | 应用启动后的默认界面 | 备份、恢复、删除远端存档、进入设置、 | | 退出 设置页 | 主菜单 → 设置 | 五个只读检查项:Gitee 信息检查、 | | 备份源配置检查、应用配置检查、 | | 检查更新、关于本应用 恢复页面 | 主菜单 → 恢复存档 | 选择恢复版本、查看变更汇总、恢复进度与 | | 结果均在页面内展示,不使用弹窗 删除页面 | 主菜单 → 删除远端存档 | 多选要删除的远端备份版本,二次确认后重写 | | 远端历史并强推,状态与进度在页面内展示 通用弹窗 | 备份/设置/更新等结果提示 | 展示信息、结果,或"确认/取消"选择 进度弹窗 | 备份/更新执行期间 | 展示阶段与进度百分比,期间屏蔽输入 界面统一使用 640x480 逻辑分辨率,按物理屏幕(1024x768 / 640x480)等比 缩放,两台目标设备布局一致。各界面与窗口的布局、颜色与字号绘制说明见 第 13 节(附录)。 -------------------------------------------------------------------------- 2. 按键映射 -------------------------------------------------------------------------- 按键(掌机) | 键盘(PC 调试) | 作用 ------------------------+-----------------+-------------------------------- 方向键 ↑↓ / 左摇杆↑↓ | ↑↓ / W S | 菜单与列表导航(长按连续滚动) A | 回车 / 空格 | 确认、执行 B | Esc / 退格 | 返回上一级、取消 X | X | 恢复页面「恢复」按钮快捷键 Start | M | 菜单键(预留) 所有功能均可仅通过物理按键完成,不依赖触摸屏(需求 FR-3)。 应用内无任何文字输入:配置通过数据目录配置文件管理(见第 0 节与第 11 节)。 -------------------------------------------------------------------------- 3. 主菜单 -------------------------------------------------------------------------- 界面布局与样式绘制见 13.2。 +-----------------------------+ | Retro Game Save Backup | +-----------------------------+ | > 备份存档 | | 恢复存档 | | 删除远端存档 | | 设置 | | 退出 | +-----------------------------+ A 确认 B 返回 v0.3.0 - ">" 光标指示当前项,焦点行有底色;右下角显示当前版本号。 - 退出:立即结束应用(后台无驻留进程)。 -------------------------------------------------------------------------- 4. 备份存档 -------------------------------------------------------------------------- 在主菜单选择"备份存档"后自动依次执行,全程显示进度弹窗: 1) 初始化(仅首次) - 远端已有备份 → 自动克隆到本地工作区 - 远端为空仓库 → 创建工作区并推送首次全量备份 - 网络不可达 → 仅完成本地初始化(跳过远端,之后可重试推送) 2) 扫描变更:将各存档目录按筛选规则镜像到工作区,列出与上次备份的差异。 3) 变更确认:弹窗列出变更明细([新增] / [修改] / [删除] 标注,超过 10 项 显示总数),按 A 确认提交、B 取消。删除项不会静默进入历史。 4) 提交并推送:提交信息自动生成(backup: <设备名称> <日期 时间>)。 使用效果: 场景 | 表现 -------------------------+------------------------------------------------ 成功 | "备份已提交并推送到远端。" 网络断开 | "已本地备份,推送失败:网络不可用,请检查 Wi-Fi | 后重试"(本地提交保留,下次备份自动补推) Token 无效 | "已本地备份,推送失败:Token 无效或权限不足 | (认证失败)" 远端有其他设备的新备份 | "已本地备份,推送失败:远端有其他设备的备份, | 请先执行恢复" 未完成配置 | 弹窗引导先填写配置文件或检查配置 存档目录不存在 | 弹窗提示目录无效,不使用任何内置路径替代 备份为只读扫描,不修改、不锁定存档文件,不影响游戏读写。 -------------------------------------------------------------------------- 5. 恢复存档 -------------------------------------------------------------------------- 在主菜单选择"恢复存档"后进入独立的「恢复存档」页面(不使用弹窗),页面自上 而下为按钮行、版本列表、状态行(布局与样式绘制见 13.4): 1) 加载版本(状态行显示"正在获取版本列表…"与阶段进度,期间屏蔽输入):连接 远端并列出备份分支的全部历史版本,最新版本在最上方并标注"(最新)"。 2) 按钮行(首行):从左到右排列按钮,当前为「恢复」按钮,快捷键为 X。 页面打开时焦点在按钮行;按方向键 ↓ 进入版本列表。 3) 版本列表(中间):按 ↑↓ 选择版本,按 A 确认。每个版本显示提交说明 ("backup: 设备名 日期 时间")与短提交号;列表可滚动,右侧显示滚动条。 4) 变更汇总(状态行):确认版本后生成该版本的恢复计划,状态行显示"将新增 N 项, 覆盖 N 项,删除 N 项";若本地存在未推送到远端的备份,会以醒目颜色警告 "本地有未推送的备份,恢复将被丢弃!"。 5) 执行恢复:按 X(或按钮行聚焦时按 A)执行所选版本;恢复期间状态行展示 进度条、阶段与百分比,期间屏蔽输入。 6) 完成/失败:结果在状态行展示;成功请重新进入游戏读取存档。按 B 返回主菜单。 失败表现:版本列表加载失败(网络不可用、远端尚无备份、认证失败等)在状态行 给出原因;恢复计划失败会保留版本列表并提示原因,可重新确认版本;恢复过程不会 静默覆盖任何文件。整个恢复流程不出现弹窗。 -------------------------------------------------------------------------- 6. 删除远端存档 -------------------------------------------------------------------------- 主菜单选择"删除远端存档"进入独立页面(不使用弹窗),页面自上而下为按钮行、 版本列表、状态行(布局与样式绘制见 13.5): 1) 加载版本(状态行显示"正在获取版本列表…"与阶段进度,期间屏蔽输入):连接 远端并列出备份分支的全部历史版本,最新版本在最上方并标注"(最新)"。 2) 按钮行(首行):当前为「删除」按钮,快捷键为 X;页面打开时焦点在按钮行, 按方向键 ↓ 进入版本列表。 3) 版本列表(中间):按 ↑↓ 移动,按 A 勾选/取消当前版本(可多选,[x] 表示 已选);状态行显示"已选择 x 个备份";列表可滚动,右侧显示滚动条。 4) 二次确认:按 X(或按钮行聚焦时按 A)弹出确认弹窗: - "删除后远端不会留下任何文件记录,是否确认删除?"; - 列出将删除的版本;本地有未推送备份时额外警告; - A 确认删除,B 取消;取消后返回删除页面并保留已选版本。 5) 删除中:状态行展示进度条与阶段,期间屏蔽输入。 6) 完成/失败:状态行显示"删除完成"或明确失败原因;按 B 返回主菜单。 删除通过重写远端备份分支历史并强制推送实现,被删除版本不会出现在远端历史中 (后续版本仍保留其自身快照内容)。全部版本删除后远端保留不含文件的分支,后续备份 可继续;Gitee 侧不可达对象可能短期保留至服务端垃圾回收。删除操作不可撤销,其他 克隆需重新克隆后同步。 -------------------------------------------------------------------------- 7. 设置页(只读检查) -------------------------------------------------------------------------- 主菜单 → 设置进入。标题栏右侧显示当前版本号(布局与样式绘制见 13.3)。设置页 不提供任何配置编辑(掌机无实体键盘,屏幕键盘输入几乎不可用;配置的修改/清除 统一在 PC 或读卡器上编辑数据目录配置文件完成)。固定五个检查项: 检查项 | 使用效果 -----------------+-------------------------------------------------------- 检查 Gitee 信息 | 校验 auth:仅含 repo_url/token、仓库地址与 Token 已填写 | 且非模板示例值,并实时探测远端:可达且分支存在 → | "Gitee 信息可用";空仓库 → 提示"首次备份将自动创建"; | 网络不通 → 提示检查 Wi-Fi;Token 错误 → 提示认证失败; | 未配置/仍为模板/含未知属性 → 引导编辑 auth 文件 检查备份源配置 | 校验 sources.json:可解析、save_dir 为对象数组、 | 每个目录存在且可读、patterns 合法;通过时展示各目录、 | 筛选模式与设备名称,失败时给出具体修正引导 检查应用配置 | 校验 config.json:可解析 + update_base_url 配置状态 |(未配置时说明"检查更新不可用,备份/恢复不受影响") 检查更新 | 见第 8 节;未配置更新源时此项置灰 关于本应用 | 弹窗展示应用名称、版本号、功能定位与数据目录位置 底部提示:A 执行 B 返回。按 B 返回主菜单。 注(v0.5 起移除应用内清除/重置入口):需要时在 PC 上删除数据目录中的 对应文件(清空 auth 即等效清除 Gitee 信息/Token;删除 workspace/ 目录 即等效重置工作区);删除整个数据目录即完全重置。 -------------------------------------------------------------------------- 8. 检查更新与应用自更新 -------------------------------------------------------------------------- 前提:数据目录 config.json 中已填写 update_base_url(任意可匿名访问的 HTTP/HTTPS 静态托管发布基址,直接填到平台目录上一级即可);应用按约定 拼接完整清单地址 https:///retro-game-save-backup-tool/<平台>/update-manifest.json (目录结构与发布目录完全一致:<项目名>/<平台>/)。 在设置页选择"检查更新": 1) 检查:获取更新清单并与当前版本比较。 - 已是最新 → 弹窗"已是最新版本(v0.3.0)。" - 有新版本 → 弹窗展示新版本号与更新说明,按 A 确认安装 - 不可达 → 弹窗明确报错 2) 下载与校验:下载对应平台的更新包并做 SHA256 完整性校验;不匹配即中止 并清理临时文件,现有安装不受影响。 3) 安装:解包核对安装清单 → 逐文件原子替换安装目录文件 → 自动清理"旧 版本有、新版本没有"的废弃文件 → 写入新清单 → 清理临时目录。 4) 未识别文件处理:若安装目录中存在不属于任何版本清单的文件,会列出并 询问"是否删除这些文件?",由用户决定(不会擅自删除或保留)。 5) 完成后弹窗"更新完成,请重启应用。"——重启后即运行新版本。 任何一步失败:旧版本始终仍可正常启动使用;下载/校验失败自动清理临时 文件;安装中途失败保留临时文件,可再次执行"检查更新"重试。 HTTPS 根证书:应用随包携带 Mozilla CA bundle(resources/ssl/ ca-certificates.crt),启动时同时提供给 Gitee 备份与更新下载使用,不依赖 设备系统证书库。若提示"HTTPS 证书校验失败",请先校准设备系统时间(无 RTC 的设备联网后可能仍停在很早的日期);时间正常仍失败时,请重新安装 包含 CA 证书的新版本。检查更新返回 HTTP 404 时表示更新源地址或发布目录 结构不正确,不是网络或证书问题。 -------------------------------------------------------------------------- 9. 弹窗与进度提示 -------------------------------------------------------------------------- 弹窗与进度弹窗的布局与样式绘制见 13.6、13.7。 - 信息弹窗(标题 + 自动换行正文 + A/B 返回):用于操作结果、错误与引导 提示。 - 正文内容超出弹窗高度时,可用方向键 ↑↓ 按行滚动,右侧显示滚动条;底部 提示会追加"↑↓ 滚动"。内容未超出时布局与提示保持原样。 - 确认弹窗(底部 A 确认 B 取消):用于备份变更确认、删除远端版本二次确认、 更新安装确认、未识别文件处理。 - 进度弹窗:显示"处理中 N%"、当前阶段(初始化/扫描存档变更/提交/推送/ 下载/校验/解包/安装)与进度条;期间屏蔽输入以保证数据一致性。 - 恢复存档不使用弹窗:版本列表、变更汇总、进度与结果全部在独立「恢复存档」 页面内展示(见第 5 节)。 - 删除远端存档除二次确认弹窗外不使用弹窗:版本列表、选择、进度与结果均在 独立「删除远端存档」页面内展示(见第 6 节)。 -------------------------------------------------------------------------- 10. 错误提示对照表 -------------------------------------------------------------------------- 错误场景 | 用户看到 -----------------------------+------------------------------------------ 网络不可用(推送/拉取/检查 | "网络不可用,请检查 Wi-Fi 后重试" 更新) | (备份场景附"已本地备份") HTTPS 证书校验失败 | "HTTPS 证书校验失败:请检查设备时间 | 或 CA 证书"(更新场景提示重新安装包含 | CA 证书的版本) 更新源返回 HTTP 错误 | "获取更新清单失败:HTTP 404"(请检查 | update_base_url 与发布目录结构) Token 无效或权限不足 | "Token 无效或权限不足(认证失败)" 推送非快进(远端有新备份) | "远端有其他设备的备份,请先执行恢复" 更新包 SHA256 不匹配 | "更新包校验失败(SHA256 不匹配)" 更新清单不可读/缺下载信息 | "更新清单解析失败 / 缺少 xx 平台的下载信息" 安装清单与包内容不一致 | "更新包缺少清单文件: <文件名>" 存档目录无效 | 目录路径 + "请检查 sources.json" Gitee 信息未填写/仍为模板 | "Gitee 信息不可用:auth 文件缺失或未填写 | 仓库地址 / auth 仍为模板示例值 / 未填写 | Token——按提示在 PC 上编辑数据目录 auth 文件" auth 含未知属性 | "auth 含未知属性 "xx":仅支持 repo_url 与 | token,请在 PC 上编辑 auth 文件后重试" 备份源未填写/格式错误 | "备份源不可用:请在数据目录 sources.json 的 | save_dir 中至少配置一个目录(对象数组,每项 | 含 path,可选 patterns)" / 具体字段错误提示 Token 全程不会出现在日志或错误信息中(自动脱敏)。 -------------------------------------------------------------------------- 11. 用户可见的数据目录结构 -------------------------------------------------------------------------- 应用数据目录位于安装目录同级的 RetroSaveBackup.data/ 目录(可用环境变量 RSB_DATA_DIR 重定向): RetroSaveBackup.data/ ├── auth # Gitee 信息(key=value 格式:仓库地址、Token) ├── sources.json # 备份源(存档目录对象数组、筛选模式、设备名称) ├── config.json # 应用配置(更新源发布基址 update_base_url) ├── *.example / *.example.json # 首次启动附带的配置模板 ├── workspace/ # Git 工作区与存档镜像 └── logs/ ├── app.log # 运行日志(Token 已脱敏) └── launch.log # 原厂系统启动日志(launch.sh 的 stdout/stderr) 删除整个数据目录即完全重置(配置、工作区、日志全部清除,存档目录不受 影响)。 启动失败排查(原厂系统):若按 A 启动后没有出现界面并直接回到「应用」菜单, 请把 SD 卡接入 PC 查看 RetroSaveBackup.data/logs/launch.log:其中记录二进制 加载错误(如运行库版本不匹配)或显示后端错误(如打不开 /dev/fb0)。 原厂制品的显示依赖系统自带 SDL2(原厂库带显示后端),不随包附带 libSDL2。 -------------------------------------------------------------------------- 12. 已知限制(当前版本) -------------------------------------------------------------------------- - 推送/拉取需要设备已连接 Wi-Fi;离线时仅支持本地备份(提交保留,待网络 恢复后随下次备份推送)。 - 配置编辑需在 PC 或读卡器上编辑数据目录配置文件(auth / sources.json / config.json)完成,应用内不提供编辑能力。 - 不提供冲突合并界面;多设备并发备份依赖"先恢复再备份"的使用顺序;历史版本 可在恢复页面选择并恢复。 - 更新包校验为 SHA256 完整性校验,暂无数字签名;建议更新源使用 HTTPS。 - HTTPS 根证书随包提供,需随发布定期刷新;设备系统时间不正确时证书校验 仍会失败,请先校准时间。 - 真机(Gitee 真实推送、断网、错误 Token、真机自更新)回归测试进行中 (M6)。 -------------------------------------------------------------------------- 13. 界面与窗口样式(附录) -------------------------------------------------------------------------- 本附录绘制各界面与窗口的布局、颜色与字号。所有界面使用 640x480 逻辑分辨率, 按物理屏幕(1024x768 / 640x480)等比缩放;图中 y 坐标为逻辑像素,仅示意 布局比例。 13.1 颜色与字号 元素 | 颜色(RGB) | 说明 ------------------+----------------+-------------------------------- 背景 | 16,18,24 | 全屏底色 标题栏/底部提示栏 | 44,48,64 | 顶部与底部横条 面板/焦点行 | 30,34,44 | 弹窗面板、菜单/列表焦点行 正文 | 200,205,215 | 普通文字 高亮文字 | 255,255,255 | 焦点文字 强调/滚动条 | 90,160,255 | 光标、按钮快捷键、进度条 警告 | 255,176,96 | 未推送警告、失败提示 次要文字 | 120,126,140 | 底部提示、短哈希、阶段文案 遮罩 | 0,0,0,160 | 弹窗背后的半透明黑色遮罩 字号(逻辑像素):页面标题 34;菜单项 30;弹窗正文/按钮文字 24; 列表项 19(短哈希 16);状态行标题 20、说明 18;底部提示 18。 13.2 主菜单 +----------------------------------------------------------+ y=0 | Retro Game Save Backup | 标题栏 64 +----------------------------------------------------------+ y=64 | | | +------------------------------------------+ | y=104 | | > 备份存档 | | 焦点行 | +------------------------------------------+ | 56px | 恢复存档 | | 删除远端存档 | | 设置 | | 退出 | | | +----------------------------------------------------------+ y=444 | A 确认 B 返回 v0.3.0 | 底部 36 +----------------------------------------------------------+ y=480 - 菜单项自上而下排列、水平居中,行高 56、间距 6;焦点行宽 440,底色为 面板色,左侧 14px 高亮三角光标;非焦点文字为正文色。 - 右下角显示当前版本号。 13.3 设置页 +----------------------------------------------------------+ | 设置 v0.3.0 | 标题栏 64 +----------------------------------------------------------+ | +----------------------------------------------------+ | y=96 | | ▌ 检查 Gitee 信息 | | 焦点行 | +----------------------------------------------------+ | 56px | 检查备份源配置 | | 检查应用配置 | | 检查更新(未配置更新源时置灰) | | 关于本应用 | | | +----------------------------------------------------------+ | A 执行 B 返回 | 底部 36 +----------------------------------------------------------+ - 5 个只读检查项,行高 56;焦点行左右各留 24,底色为面板色,左侧 4px 强调色竖条;文字居中,非焦点为正文色。 - 版本号位于标题栏右侧;底部只显示操作提示。 13.4 恢复存档页面 +----------------------------------------------------------+ | 恢复存档 | 标题栏 64 +----------------------------------------------------------+ | +------------------+ | y=72 | | ▌ 恢复 [X] | 按钮行 44px | | +------------------+ | | | | +----------------------------------------------------+ | y=128 | | backup: 设备 2026-11-02 12:00(最新) abc0001 | | | | backup: 设备 2026-11-02 11:00 abc0000 | | 行高 33 | | ... | | 可视 7 行 | | |▐ | 滚动条 | +----------------------------------------------------+ | y=364 | +----------------------------------------------------+ | y=372 | | 选择恢复版本 / 已选择版本… / 进度条 / 恢复完成 | | 状态行 64 | +----------------------------------------------------+ | +----------------------------------------------------------+ y=444 | X 恢复 ↓ 选择版本 B 返回 v0.3.0 | +----------------------------------------------------------+ y=480 - 按钮行(首行):按钮宽 160、高 44,焦点时面板色底 + 左侧 4px 竖条; 右侧 28x24 快捷键标记 X。 - 版本列表:每行左侧提交说明(超宽截断加…),右侧短提交号;当前高亮行 为面板色底,已确认版本左侧 4px 强调色竖条;溢出时右侧显示滚动条。 - 状态行:面板色底;待选择/已确认/恢复中/完成/失败均在此显示,恢复中 显示 560x6 进度条。 - 底部提示随焦点/阶段变化;右下角显示版本号。 13.5 删除远端存档页面 +----------------------------------------------------------+ | 删除远端存档 | 标题栏 64 +----------------------------------------------------------+ | +------------------+ | y=72 | | ▌ 删除 [X] | | | +------------------+ | | | | +----------------------------------------------------+ | y=128 | | [x] backup: 设备 2026-11-02 12:00(最新) def0001 | | | | [ ] backup: 设备 2026-11-02 11:00 def0000 | | | | ... |▐ | | +----------------------------------------------------+ | y=364 | +----------------------------------------------------+ | y=372 | | 已选择 2 个备份 | | 状态行 64 | | 注意:本地有未推送的备份,删除后将一并丢弃! | | | +----------------------------------------------------+ | +----------------------------------------------------------+ y=444 | X 删除 ↓ 版本列表 B 返回 v0.3.0 | +----------------------------------------------------------+ y=480 - 与恢复页面结构一致;版本行前增加 [x]/[ ] 多选框,已选为强调色。 - 状态行显示「选择要删除的远端备份」「已选择 x 个备份」「删除完成」等; 未推送警告使用警告色。 - 二次确认使用 13.6 的确认弹窗,叠加在本页面之上。 13.6 通用弹窗(信息 / 确认) +----------------------------------------------------------+ | 半透明遮罩:全屏,颜色 0,0,0,160 | | +--------------------------------------+ | | | 弹窗标题 | 标题栏44 | +--------------------------------------+ | | | 正文:自动换行,左右内边距 24 | | | | | | | | 内容超出面板时,右侧显示滚动条 |▐ | | | 可用 ↑↓ 按行滚动 | | | | | | | | A 确认 B 取消 | 提示18px | | +--------------------------------------+ | | | +----------------------------------------------------------+ - 面板宽 520;最小高 180,最大高 370(不遮挡屏幕标题栏),垂直居中。 - 标题栏高 44,标题居中、24px 高亮色。 - 正文 24px 正文色,行距 32(≤6 行)或 28(>6 行)。 - 信息弹窗底部提示「A/B 返回」;确认弹窗为「A 确认 B 取消」。 - 内容溢出时底部提示追加「↑↓ 滚动」,右侧显示滚动条。 - 删除二次确认、备份变更确认、更新确认、未识别文件、各类结果/错误均使用 此弹窗。 13.7 进度弹窗 +----------------------------------------------------------+ | 半透明遮罩 | | +----------------------------------+ | | | 处理中 42% | 24px | | | 推送中… | 18px | | | [██████████████░░░░░░░░░░] | 进度条10px | | +----------------------------------+ | +----------------------------------------------------------+ - 面板 400x120,居中;标题与阶段文案居中。 - 进度条距面板底部 34,左右各留 40,高 10;百分比未知时显示空槽并提示 「请稍候」。 - 备份、更新、Gitee 检查等后台任务使用;恢复/删除页面在状态行展示进度, 不叠加此弹窗。