feat: persist main window state
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
### P0 · 模板必须具备
|
||||
|
||||
- 应用壳:侧边导航、顶部用户区、主内容区,默认布局适合长期业务操作。
|
||||
- 主窗口:默认不最大化,初始 `1280x800`,最小 `1024x720`,居中,可调整大小。
|
||||
- 主窗口:默认不最大化,初始 `1280x800`,最小 `1024x720`,居中,可调整大小,并恢复用户上次窗口尺寸和最大化状态。
|
||||
- 页面布局:根容器 `width: 100%`、`height: 100vh`,内部使用 flex/grid 填满窗口。
|
||||
- 内容区:阅读型内容保留最大宽度;列表、仪表盘、设置页自适应拉伸。
|
||||
- 第二窗口:保持小窗,不参与主窗口最大化和尺寸恢复逻辑。
|
||||
@@ -39,7 +39,6 @@ P0 数据统计只做 6 个指标:
|
||||
|
||||
P1 再考虑:
|
||||
|
||||
- 保存主窗口尺寸和最大化状态,下次启动恢复用户上次选择。
|
||||
- 图片优化前后平均文件大小变化。
|
||||
- 不同优化类型使用次数,例如增强、压缩、背景替换。
|
||||
- 最常见错误类型 Top 5。
|
||||
|
||||
@@ -218,13 +218,13 @@ image_task_results(
|
||||
- 主窗口承载长期业务操作,默认不最大化。
|
||||
- 主窗口初始尺寸为 `1280x800`,最小尺寸为 `1024x720`。
|
||||
- 主窗口启动时居中,并允许用户调整大小。
|
||||
- 主窗口按 `window.width`、`window.height`、`window.start_state` 和 `window.remember_state` 恢复用户上次选择。
|
||||
- 前端根容器使用 `width: 100%` 和 `height: 100vh`。
|
||||
- 主应用布局内部使用 flex 或 grid 填满窗口。
|
||||
- 阅读型内容保留最大宽度,列表、仪表盘、设置页等工作型页面自适应拉伸。
|
||||
- 第二窗口保持当前小窗定位,不参与最大化、尺寸恢复和主布局填充逻辑。
|
||||
- 后续增强再保存主窗口尺寸和最大化状态,下次启动恢复用户选择。
|
||||
|
||||
实现状态:主窗口初始尺寸、居中、可调整大小、根容器和主布局填充已落地;主应用路由骨架已落地;登录 provider 边界已落地;设置模块统一 schema 已落地。窗口尺寸持久化下一步基于 `window.*` 配置实现。
|
||||
实现状态:主窗口初始尺寸、居中、可调整大小、根容器和主布局填充已落地;主应用路由骨架已落地;登录 provider 边界已落地;设置模块统一 schema 已落地;主窗口尺寸和最大化状态持久化已落地。
|
||||
|
||||
## 关键风险
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
| T-012 | 搭建主应用路由骨架 | T-011 | `login`、`dashboard`、`image-optimizer`、`logs`、`statistics`、`settings`、`components` 路由可访问 | DONE |
|
||||
| T-013 | 实现登录 provider 边界 | T-012 | 支持本地固定账号 provider;预留 remote provider;账号密码不写死在前端;登录事件写审计日志 | DONE |
|
||||
| T-014 | 收敛设置模块 schema | T-012 | 主题、语言、窗口行为、快捷键、数据目录、日志策略都有统一配置定义和默认值 | DONE |
|
||||
| T-015 | 持久化窗口尺寸和最大化状态 | T-014 | 保存主窗口尺寸和最大化状态;下次启动恢复用户上次选择;第二窗口不参与该逻辑 | TODO |
|
||||
| T-015 | 持久化窗口尺寸和最大化状态 | T-014 | 保存主窗口尺寸和最大化状态;下次启动恢复用户上次选择;第二窗口不参与该逻辑 | DONE |
|
||||
|
||||
## Phase 2 · 业务样例与日志统计
|
||||
|
||||
|
||||
+14
-4
@@ -1,12 +1,12 @@
|
||||
# 当前状态
|
||||
|
||||
更新时间:2026-07-08
|
||||
更新时间:2026-07-09
|
||||
|
||||
## 当前阶段
|
||||
|
||||
项目处于可复用桌面应用模板的 Phase 1 基础模块建设阶段。目标已经从迁移后的基础工程调整为“Windows-first、可扩展到其他平台的桌面端应用模板”。
|
||||
|
||||
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界和统一设置 schema 阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口和本地登录能力。商品图片 AI 优化、完整审计日志查询、运行日志和数据统计仍是骨架页面,尚未接入真实后端服务和业务数据模型。
|
||||
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema 和主窗口状态恢复阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口和本地登录能力。商品图片 AI 优化、完整审计日志查询、运行日志和数据统计仍是骨架页面,尚未接入真实后端服务和业务数据模型。
|
||||
|
||||
## 已确认事实
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
- 当前主应用模块路由:`/#/login`、`/#/dashboard`、`/#/image-optimizer`、`/#/logs`、`/#/statistics`、`/#/settings`、`/#/components`。
|
||||
- 当前兼容重定向路由:`/#/business/image-optimizer`、`/#/logs/audit`、`/#/logs/app`。
|
||||
- 当前第二窗口路由:`/#/second`
|
||||
- 已实现主窗口策略:默认不最大化,初始 `1280x800`,最小 `1024x720`,居中,可调整大小。
|
||||
- 已实现主窗口策略:默认不最大化,初始 `1280x800`,最小 `1024x720`,居中,可调整大小;启动后可按 `window.*` 配置恢复尺寸和最大化状态。
|
||||
- 已实现页面布局策略:根容器 `width: 100%`、`height: 100vh`,内部 flex/grid 填满窗口。
|
||||
- 已实现内容区策略:阅读型内容保留最大宽度;列表、仪表盘、设置页自适应拉伸。
|
||||
- 已保留第二窗口策略:保持小窗,不参与主窗口最大化和尺寸恢复逻辑。
|
||||
@@ -37,6 +37,7 @@
|
||||
- 已实现登录审计留痕:登录成功、登录失败和退出写入 `audit_logs`。
|
||||
- 已实现统一设置 schema:主题、语言、窗口行为、快捷键展示、数据目录、日志策略和登录 provider 配置都有默认值、说明和基础校验。
|
||||
- 已实现设置页 schema 展示:`/#/settings` 可读取后端 `GetSettingsSchema` 并展示分组、当前值、默认值、说明和只读标记。
|
||||
- 已实现主窗口状态持久化:主窗口普通尺寸和最大化状态会写回 `appconfig`,下次启动恢复;第二窗口不参与该逻辑。
|
||||
|
||||
## 当前命令
|
||||
|
||||
@@ -147,9 +148,18 @@ wails3 build
|
||||
- `/#/settings` 展示统一设置 schema。
|
||||
- `go test ./...`、`npm run typecheck`、`npm run build`、`go build -o bin\cmbone.exe .`、`cmd /c build.bat` 通过。
|
||||
|
||||
2026-07-09 完成主窗口状态持久化:
|
||||
|
||||
- 主窗口启动时读取 `window.width`、`window.height`、`window.start_state` 和 `window.remember_state`。
|
||||
- 主窗口 resize、maximize、restore 和 closing 时写回普通尺寸和最大化状态。
|
||||
- `window.remember_state` 默认值调整为 `true`。
|
||||
- 已补充旧默认值迁移,把 T-014 旧描述下的 `window.remember_state=false` 升级为 `true`。
|
||||
- 第二窗口仍保持固定 `340x320` 小窗,不注册尺寸恢复逻辑。
|
||||
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
|
||||
|
||||
## 下一步
|
||||
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-015`:持久化窗口尺寸和最大化状态。
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-020`:建立商品图片 AI 优化任务模型。
|
||||
|
||||
## 当前 blocker
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
| --- | --- | --- |
|
||||
| `main.go` | `main()` | 创建 Wails app、注册服务、嵌入资源、启动应用 |
|
||||
| `internal/services/appservice.go` | `ConfigureAppService` | 配置窗口、托盘、语言资源和生命周期 |
|
||||
| `internal/services/window_state.go` | main window state helpers | 读取和保存主窗口尺寸、最大化状态;第二窗口不参与 |
|
||||
|
||||
## 存储
|
||||
|
||||
|
||||
+2
-3
@@ -29,7 +29,7 @@
|
||||
| `#/image-optimizer` | 商品图片 AI 优化 | `T-020` / `T-023` 接入任务模型、任务列表、状态、结果和失败原因 |
|
||||
| `#/logs` | 操作日志 | `T-021` 接入审计日志和运行日志查询 |
|
||||
| `#/statistics` | 数据统计 | `T-022` 接入趋势、成功率、耗时和失败任务 |
|
||||
| `#/settings` | 设置中心 | 已接入统一设置 schema,`T-015` 继续使用窗口配置做尺寸恢复 |
|
||||
| `#/settings` | 设置中心 | 已接入统一设置 schema,窗口配置已用于主窗口尺寸恢复 |
|
||||
| `#/components` | 组件示例 | `T-030` 扩充输入框、多选框、下拉框、多行文本、表格、筛选、分页 |
|
||||
|
||||
## 主窗口布局
|
||||
@@ -47,14 +47,13 @@ Windows 10+ 是主要体验目标。主窗口策略已经实现到当前代码
|
||||
- 最小宽高:`1024x720`。
|
||||
- 启动时居中。
|
||||
- 允许用户调整大小。
|
||||
- 保存主窗口尺寸和最大化状态,下次启动恢复用户上次选择。
|
||||
- 页面根容器使用 `width: 100%` 和 `height: 100vh`。
|
||||
- 主布局内部使用 flex 或 grid,让侧边导航、顶部区域和内容区稳定填满窗口。
|
||||
- 阅读型内容使用最大宽度,建议 `max-width: 960px` 并居中。
|
||||
- 列表、仪表盘、设置页等工作型页面自适应拉伸,占满可用内容区。
|
||||
- 第二窗口保持小窗,不参与主窗口最大化、尺寸恢复和布局填充逻辑。
|
||||
|
||||
后续增强:保存主窗口尺寸和最大化状态,下次启动恢复用户上次选择。
|
||||
|
||||
## 页面规则
|
||||
|
||||
- 新增页面必须先确认属于模板能力、业务样例还是开发者示例。
|
||||
|
||||
Reference in New Issue
Block a user