feat: persist chub settings and instances

This commit is contained in:
QiuSW
2026-07-22 15:17:08 +08:00
parent 28fefc76f7
commit 82f3c1be0e
7 changed files with 281 additions and 8 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
| ID | 任务 | 依赖 | 状态 |
| --- | --- | --- | --- |
| T-201 | HTML 原型、Gio 外壳和实例列表/表单 | T-002 | DONE |
| T-202 | 本地配置持久化和实例恢复 | T-101 | TODO |
| T-202 | 本地配置持久化和实例恢复 | T-101 | DONE |
| T-203 | CLI 合约和本地事件推送 | T-103 | TODO |
| T-204 | UI 全状态验收与 Windows 打包 smoke | T-201,T-202,T-203 | TODO |
+4 -4
View File
@@ -3,11 +3,11 @@
## 快照
- 日期:2026-07-22
- 阶段:Phase 2 产品外壳(T-201 已完成)
- 代码:已建立 Go module `chub`、`cmd/chub` 入口、logging 测试基座、浏览器 domain/application 合约、Chrome/Edge 参数/发现模块、启动 registry、Windows 身份/占用检查、优雅关闭、Job Object 和真实 Chrome/Edge smoke,T-001 至 T-003、T-101 至 T-104、T-201 已完成
- UI:已接入 Gio v0.10.1 双页桌面壳,包含实例列表、状态展示、启动入口、设置表单;配置保存和真实服务接入由 T-202/T-203 完成
- 阶段:Phase 2 产品外壳(T-201、T-202 已完成)
- 代码:已建立 Go module `chub`、`cmd/chub` 入口、logging 测试基座、浏览器 domain/application 合约、Chrome/Edge 参数/发现模块、启动 registry、Windows 身份/占用检查、优雅关闭、Job Object、真实 Chrome/Edge smoke、JSON 配置存储和启动恢复,T-001 至 T-003、T-101 至 T-104、T-201 至 T-202 已完成
- UI:已接入 Gio v0.10.1 双页桌面壳,设置保存异步写入本地配置,启动时恢复设置和已保存实例;CLI/实时事件由 T-203 接入
- 浏览器核心:设计参考来自 `D:\OPC\shop_helm\internal\platform\chrome`,尚未复制或接入本项目
- blocker:无;下一个任务为 T-202(本地配置持久化和实例恢复)
- blocker:无;下一个任务为 T-203(CLI 合约和本地事件推送)
## 当前目录
+36
View File
@@ -0,0 +1,36 @@
---
id: T-202
title: 实现本地配置持久化和实例恢复
phase: 2
deps: [T-101]
status: DONE
created: 2026-07-22
owner: codex
---
## 需求与背景
用户配置和实例定义必须在 Chub 重启后保留,且不能因为 UI 帧刷新或设置保存而丢失其他实例。
## 方案与边界
- MVP 使用用户配置目录下的 `chub/config.json`,结构带 `version` 字段,便于后续迁移。
- 只保存可复现启动所需的路径、目录、浏览器类型、Profile 和 URL 等配置;不保存密码、Cookie、Token。
- 保存采用 0600 临时文件、同步后替换目标文件,并保留失败回滚路径。
- 启动阶段加载设置和实例定义;实例恢复为“已退出”视图,真实进程重连由后续服务层完成。
- Gio 点击保存只调度异步写入,不在 FrameEvent 内执行文件 I/O。
## 验收要点
- 缺少配置文件时返回带默认值的空配置。
- 配置可保存、重新加载,实例定义不丢失。
- JSON 损坏或版本不支持时返回明确错误。
- `go test ./...`、`go vet ./...`、`go build -o build/chub.exe ./cmd/chub` 通过。
## 执行记录
- 状态:DONE
- 变更:新增 `internal/platform/config.Store`、JSON 版本结构、原子替换写入和 round-trip 测试;Gio 设置保存异步落盘,启动时恢复设置及已保存实例。
- 验证:`gofmt`、`go test ./...`、`go vet ./...`、`go build -o build/chub.exe ./cmd/chub` 均通过。
- 阻塞:无。
- 残余风险:实例恢复目前只恢复配置视图,尚未自动重启浏览器或订阅实时进程事件;由 T-203 处理。