Harness governance / validate (push) Has been cancelled
Initialize the full harness coding document set from the harness_coding_docs template, customized for the SoftBox project: - Vision, requirements, tech stack (modern Go 1.25 + Gio v0.10.1; Win7 legacy Go 1.20.14 + Gio v0.6.0), architecture, coding rules - Protocol contracts (signed catalog, package protocol v1, Ed25519 license, events, CLI) and Gio view structure - Roadmap Phase 0-6 with 20 suggested tasks; T-001 (monorepo skeleton) filed and ready to claim - Agent entry points (AGENTS.md, docs/00-ai-start-here.md), context manifest, governance scripts and tests - Merge Go gitignore with harness rules; keep go.work tracked Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
62 lines
3.8 KiB
Markdown
62 lines
3.8 KiB
Markdown
# 页面与视图结构(Gio)
|
|
|
|
> 本项目是 Gio 桌面应用,没有 URL 路由;本文约定页面(视图)划分、职责和组件归属。现代版与 Win7 版共享 ViewModel 和交互语义,Gio 控件实现允许分别适配。
|
|
|
|
## 主窗口布局
|
|
|
|
```text
|
|
┌─────────────────────────────────────────────┐
|
|
│ 顶部栏:搜索框 · 分类筛选 · 检测更新 · 下载队列入口 │
|
|
├────────┬────────────────────────────────────┤
|
|
│ 左侧 │ 中部:虚拟化软件列表(layout.List) │
|
|
│ 视图 │ 每项:图标·名称·版本·状态·进度·主操作按钮 │
|
|
│ 全部 │ │
|
|
│ 已安装 │ 右侧/弹层:软件详情 │
|
|
│ 可更新 │ 版本 · 简介 · 教程 · 授权状态 · 操作 │
|
|
│ 最近使用│ │
|
|
├────────┴────────────────────────────────────┤
|
|
│ 底部状态栏:网络 · 任务数 · 磁盘 · 盒子版本(Legacy 标识) │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
|
|
## 视图清单
|
|
|
|
| 视图 | 职责 | MVP |
|
|
| --- | --- | --- |
|
|
| 软件列表(主视图) | 全部/已安装/可更新/下载中/最近使用切换;搜索、分类、多标签筛选;滚动位置稳定 | P0 |
|
|
| 软件详情(弹层或右栏) | 版本、简介、教程链接、授权状态;下载/更新/启动/取消操作 | P0 |
|
|
| 下载队列 | 所有任务的进度、速度、剩余时间;暂停/取消/重试 | P0 |
|
|
| 设置 | 并发数、目录、代理、自动检查更新、beta 通道、日志级别、便携模式(V2) | P0(最小集) |
|
|
| 授权 | 许可证导入、已授权软件列表、machine 信息、换绑/申诉入口 | P0 |
|
|
| 提示/错误弹窗 | 失败原因、重试路径、更新确认、退出运行中软件提示 | P0 |
|
|
|
|
## 组件归属
|
|
|
|
| 组件 | 归属 | 说明 |
|
|
| --- | --- | --- |
|
|
| AppShell | 全局 | 窗口框架、顶部栏、左侧导航、底部状态栏 |
|
|
| AppList | 主视图 | 惰性 `layout.List`;控件状态按软件 ID 保存,不按列表序号 |
|
|
| AppRow | 主视图 | 单个软件项:状态、进度和主操作按钮 |
|
|
| AppDetail | 详情 | 详情展示与操作 |
|
|
| DownloadPanel | 下载队列 | 任务列表与控制 |
|
|
| SettingsForm | 设置 | 设置项读写(经 application 用例) |
|
|
| LicensePanel | 授权 | 导入与状态展示 |
|
|
| Toast/Dialog | 全局 | 错误与确认交互 |
|
|
|
|
每个页面用独立 struct 保存:`widget.Clickable`、`widget.Editor`、`layout.List`、过滤条件、当前 ViewModel、pending RequestID、临时提示和错误状态。
|
|
|
|
## 交互规则(硬约束)
|
|
|
|
- 每帧先 drain 点击事件,再提交用例;后台只发布事件,UI 在 ApplyEvent 中更新 ViewModel 后 `Window.Invalidate`。
|
|
- Layout 中不得读磁盘、访问网络、计算哈希;图标走内存 + 磁盘缓存(按 DPI)。
|
|
- 数百个软件项滚动不卡顿是验收标准,不是优化项。
|
|
- 未验证/不兼容的软件显示原因,操作按钮禁用,不静默失败。
|
|
- Win7 版允许减少动画、阴影和高成本渲染,但交互语义与现代版一致,并明显展示 Legacy 标识。
|
|
|
|
## 导航规则
|
|
|
|
- 列表 → 详情:点击软件项;详情保留返回/关闭。
|
|
- 任一视图可进下载队列(顶部入口);任务完成后返回时列表状态已回填。
|
|
- 启动需授权的软件而无有效许可证时,引导到授权视图,不直接报错退出。
|
|
- 更新需要退出运行中的软件时,弹确认对话框,等待用户处理,超时取消更新。
|