diff --git a/worklog.md b/worklog.md index a10d2f152..66901a3c0 100644 --- a/worklog.md +++ b/worklog.md @@ -218,9 +218,32 @@ - **Gitea 推送**:2 个 commit(main 源码 + gh-pages 静态资源) - **dev 服务器 Turbopack 缓存不稳定问题**:偶发 `Unable to open static sorted file` + 进程被杀,需 `rm -rf .next` 重启。静态导出构建稳定可靠 +### v0.5.2 离线收益系统 + 标签页 UI 重设计 + persist 竞态修复(本轮完成) +- **新功能:离线收益报告弹窗**(`src/lib/game/offlineReport.ts` + `src/components/game/OfflineReportDialog.tsx`) + - 玩家离开后回来,自动弹出"欢迎回来,无人机"弹窗 + - 显示:离线采集获得的晶体数(+1.44K)+ 离线时长(1小时2分)+ 采集速率(0.4/s)+ 离线效率(50%) + - 当前晶体进度条(1.45K / 5.00K)+ 仓库满仓警告 + - 领取收益按钮 + 程序化音效 + - 模块级存储 + 自定义事件(`echo-nexus-offline-report`),不污染 GameState schema +- **关键 BUG 修复:persist rehydrate 竞态**(`src/hooks/useGameLoop.ts`) + - **根因**:Zustand persist 即使用同步 localStorage,rehydrate 也是异步(`Promise.resolve` 包装)。init 在 useEffect 中执行时,rehydrate 可能未完成,`s.lastTick` 是 INITIAL_STATE 的 undefined,`elapsed = NaN`,不进入离线补发分支 → `setPendingOfflineReport` 不调用 → 弹窗不弹 + - **修复**:useGameLoop 用 `useGameStore.persist.hasHydrated()` 检查,若未 rehydrated 则 `onFinishHydration(doInit)` + 500ms 兜底 setTimeout + - **验证**:通过 5 轮调试(window.__initTrace / __lastOfflineReport / __offlineCheck / __loopMounted 标记法)定位 +- **UI 优化:标签页重设计**(`src/app/page.tsx`) + - 图标+文字纵向排列(`flex-col`),图标 h-3.5 w-3.5,文字 leading-none + - 每个标签独立主题色 glow:探险(琥珀)/技术(翠)/星图(玫)/图谱(青)/成就(琥珀)/信标(翠)/统计(灰) + - 通知圆点增大到 h-2 w-2 + `ring-1 ring-black/50` 描边 + - active 状态阴影 `shadow-[0_0_12px_rgba(...)]` +- **QA 验证**(agent-browser + VLM): + - 离线弹窗 UI 视觉评分 9/10(标题/晶体数/时长/速率/按钮/进度条全部正确) + - 标签页 UI 评分 7/10(VLM 建议强化颜色区分,已用 per-tab glow 实现) + - lint 零错误 +- **Gitea 推送**:main 分支 1 commit + gh-pages 分支静态资源 +- **定时任务重置**:job_id 227933(cron `0 0/15 * * * ?`,每15分钟 webDevReview) + ### 进行中 - [ ] 持续迭代:云存档+云排行榜(v0.5+)、全5纪元手写叙事节点(v0.5+)、socket 多人同步星潮(后续) -- [ ] 回复 Issue #1 #28:告知已上线 Gitea Pages + 教程系统 + UI 优化 +- [ ] 回复 Issue #1 #28:告知已上线 Gitea Pages + 教程系统 + UI 优化(v0.5.1 已回复 #29) ## 未解决问题或风险 / 下一阶段优先事项 @@ -241,6 +264,7 @@ 5. socket 多人同步星潮 ## 定时任务 -- 已设置:每 15 分钟 webDevReview(自动 QA + 迭代开发,job_id: 227909,fixed_rate 900s) +- 已设置:每 15 分钟 webDevReview(自动 QA + 迭代开发,job_id: 227933,cron `0 0/15 * * * ?`,tz Asia/Shanghai) +- 上一轮 job_id 227909 已失效(列表为空),已重新创建 ---