chore(tasks): start T-306 migrate V2 UI Walk->Gio
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -48,7 +48,7 @@
|
|||||||
| T-303 | 实现 Go 的事件引擎与 V1 回归对比 | T-302 | 同一录像的确认事件、无报警案例和延迟满足 V1 基线。 | DONE |
|
| T-303 | 实现 Go 的事件引擎与 V1 回归对比 | T-302 | 同一录像的确认事件、无报警案例和延迟满足 V1 基线。 | DONE |
|
||||||
| T-304 | 完成 Go 实时演示、报警和打包 | T-303 | 实时 RTSP、红色画面、声音、弹窗和截图可运行;新环境按文档启动。 | DOING |
|
| T-304 | 完成 Go 实时演示、报警和打包 | T-303 | 实时 RTSP、红色画面、声音、弹窗和截图可运行;新环境按文档启动。 | DOING |
|
||||||
| T-305 | V2 UI 框架评估:Gio Spike(应对 Walk TTM_ADDTOOL 启动故障) | T-302 | 以 Gio 搭 `cmd/gio-spike`:窗口可显示并关闭、无 TTM_ADDTOOL、能贴一张 `*image.RGBA`(V2 render 输出)并有双 Tab/按钮骨架;据此决定 V2 UI 是修 Walk manifest 还是迁移 Gio。 | DONE |
|
| T-305 | V2 UI 框架评估:Gio Spike(应对 Walk TTM_ADDTOOL 启动故障) | T-302 | 以 Gio 搭 `cmd/gio-spike`:窗口可显示并关闭、无 TTM_ADDTOOL、能贴一张 `*image.RGBA`(V2 render 输出)并有双 Tab/按钮骨架;据此决定 V2 UI 是修 Walk manifest 还是迁移 Gio。 | DONE |
|
||||||
| T-306 | V2 UI 从 Walk 迁移到 Gio | T-305 | 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口;后台更新经 `Invalidate` 上屏、UI 线程只渲染;双 Tab、贴 render 的 RGBA、确认弹窗(自绘遮罩)与声音(Win32 syscall);`cmd/silver-pose` 起窗无 TTM_ADDTOOL。 | TODO |
|
| T-306 | V2 UI 从 Walk 迁移到 Gio | T-305 | 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口;后台更新经 `Invalidate` 上屏、UI 线程只渲染;双 Tab、贴 render 的 RGBA、确认弹窗(自绘遮罩)与声音(Win32 syscall);`cmd/silver-pose` 起窗无 TTM_ADDTOOL。 | DOING |
|
||||||
|
|
||||||
## Backlog
|
## Backlog
|
||||||
|
|
||||||
|
|||||||
@@ -550,3 +550,12 @@
|
|||||||
- 阻塞:无。
|
- 阻塞:无。
|
||||||
- 决策:**V2 UI 从 Walk 迁移到 Gio**。理由:Gio 从根上不用 Win32 common controls,规避 comctl/manifest 一类问题;`internal/render` 已出 `*image.RGBA`,Gio 直接 `paint.NewImageOp` 贴,UI 层薄;纯 Go 单 exe 符合"无 Go 环境运行"且不带 WebView2。已更新架构文档 `internal/ui` 为 Gio;新增迁移任务 T-306。
|
- 决策:**V2 UI 从 Walk 迁移到 Gio**。理由:Gio 从根上不用 Win32 common controls,规避 comctl/manifest 一类问题;`internal/render` 已出 `*image.RGBA`,Gio 直接 `paint.NewImageOp` 贴,UI 层薄;纯 Go 单 exe 符合"无 Go 环境运行"且不带 WebView2。已更新架构文档 `internal/ui` 为 Gio;新增迁移任务 T-306。
|
||||||
- 下一步:T-306 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口不变。
|
- 下一步:T-306 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口不变。
|
||||||
|
|
||||||
|
## 【2026-07-23】T-306 V2 UI 从 Walk 迁移到 Gio
|
||||||
|
|
||||||
|
- 状态:DOING
|
||||||
|
- 变更:任务落 DOING;将用 Gio 重写 `v2/internal/ui/window.go`,保持 `Window` 公开接口(`NewWindow/Run/Present/PresentAlert/ReportIssue`)与 `spec.go` 的 `ViewModel`/`MonitorWindowSpec` 不变;`cmd/silver-pose`、`monitor`、`alert` 等不动。
|
||||||
|
- 验证:开始前 `GOOS=windows CGO_ENABLED=0 go build ./cmd/gio-spike` 通过。迁移每步以 `GOOS=windows` 交叉编译验证(本环境无法运行 Gio)。
|
||||||
|
- 阻塞:真实窗口/声音/弹窗目视需 Windows。
|
||||||
|
- 决策:后台 `Present/PresentAlert/ReportIssue` 只在带锁共享区更新最新帧/状态/待弹窗并 `Invalidate()`,Gio 事件循环在独立 goroutine 只渲染最新帧(取代 Walk 的 `main.Synchronize`);声音用 Windows `MessageBeep` syscall(`sound_windows.go` + 非 Windows 空实现),弹窗自绘遮罩。`ViewModel` 逻辑复用、`spec_test.go` 不受影响。
|
||||||
|
- 下一步:写 Gio `window.go` + sound 文件,交叉编译通过后接 `cmd/silver-pose` 验证。
|
||||||
|
|||||||
Reference in New Issue
Block a user