Files
windows-application/UPDATE.md

63 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 更新记录
> 说明:本文件用于记录每次客户端代码层面的更新内容,按时间倒序排列。
---
### 2026-01-29
- **挖矿任务持久化重构(替换 SQLite 为本地日志文件)**
- 移除 `sqflite_common_ffi` 及 SQLite 依赖,避免在 Windows / Linux 环境下对系统 `libsqlite3` 的安装要求。
- `DatabaseService` 改为基于 `bin/mining_tasks.log` 的 JSON 行存储:
- 新挖矿任务创建时追加写入 `.log`
- 挖矿任务完成后,从 `.log` 中删除对应记录;
- 客户端启动时读取 `.log`,仅保留未过期任务,并自动恢复最新一条未完成的挖矿任务。
- **退出流程优化**
- 新增 `ClientProvider.shutdown()`,在点击“退出程序”时:
- 停止与服务器的连接和心跳;
- 停止当前挖矿进程和持续挖矿任务;
- 关闭自动刷新定时器,确保退出后不会残留后台矿工进程。
- **文档与多平台说明**
- README 中补充了“持续挖矿中”状态标识(蓝色指示灯)及 `bin/mining_tasks.log` 的作用说明。
- 增加 Linux 构建脚本(`build_linux.sh`)和运行脚本(`start_linux_app.sh`)的使用说明,支持在 Linux 环境下一键安装依赖并运行客户端。
### 2026-01-23
- **网络与构建相关**
- 配置 Flutter 使用国内镜像源(`PUB_HOSTED_URL` / `FLUTTER_STORAGE_BASE_URL`),解决 `pub.dev` 访问失败问题。
- 清理并修复 Windows 构建缓存CMake 路径不一致导致的构建失败)。
- 排查 `sqlite3` 原生资产构建失败的原因(无法访问 GitHub 下载预编译库),为后续在有外网环境下构建做准备。
- **数据库与路径**
- 移除未使用的 `package:path/path.dart` 导入database 层统一通过 `PathUtils.binFile` 处理路径。
- **重连与认证逻辑**
- `ClientCore`
- 为 TCP 连接新增**指数退避重连策略**10s、20s、40s、80s、160s最多重试 5 次,并在连接成功后重置重试次数。
- 在连接错误、连接关闭和心跳超时(超过 60 分钟未收到 ping时触发重连。
- **重连成功后自动发送 `auth.machineCode` 认证消息**(在已成功获取机器码和身份信息的前提下)。
- **持续挖矿SustainMiner**
-`mining.windows.conf``[sustain]` 段读取配置,校验必填字段与矿工程序路径。
- 当没有租约任务时自动启动持续挖矿,有租约任务到来时暂停,租约结束后自动恢复持续挖矿。
- 新增持续挖矿进程监控:
- 监听矿工进程退出事件如果在持续挖矿运行且未暂停的情况下进程意外退出5 秒后自动重启持续挖矿。
- **状态与 UI 展示**
- `ClientStatus`
- 新增 `sustainingMining` 状态,用于表示“持续挖矿中”,在界面上显示为**蓝色圆点 + 文案「持续挖矿中」**。
- `ClientProvider`
- 根据是否有租约任务 / 持续挖矿任务,区分显示:
- `mining`:租约挖矿中。
- `sustainingMining`:持续挖矿中。
- 统一通过 `_getMiningInfo()` 构造当前挖矿信息(支持租约挖矿和持续挖矿),供界面展示。
- `MainScreen`
- “挖矿信息”按钮在以下状态下可用:`ClientStatus.mining``ClientStatus.sustainingMining`,并且存在 `miningInfo`
- 点击后进入同一套挖矿信息界面。
- `MiningInfoScreen`
- 复用同一界面展示日志和当前任务信息。
- 当为**持续挖矿**时,不再显示“结束时间”和“剩余时间”区域,仅展示基本任务信息和日志。