refactor: 首次运行为空列表并简化存储初始化

- 移除 seed-data 模块,首次运行改为持久化空任务列表
- 简化 initializeStore(),将 tasksInitialized 处理集中到 store 层
- 移除 loadTasksData() 写入 tasksInitialized 的副作用
- 已归一化的任务数据跳过多余的 localStorage 回写
- 为旧版安装补写 tasksInitialized;首次写入失败时下次访问重试
- 补充存储兼容性测试并更新 README
This commit is contained in:
eddy
2026-08-01 14:53:32 +08:00
parent ebc245da50
commit f1c6c052bc
6 changed files with 78 additions and 132 deletions
+4 -3
View File
@@ -155,7 +155,6 @@ npm run format
- `src/js/timeline.js`:手动及系统时间轴记录
- `src/js/import-export.js`1.0 版备份验证、导入和导出
- `src/js/notify.js`:通知和截止日期提醒
- `src/js/seed-data.js`:首次运行时的示例任务
- `src/js/i18n/`:中英文词典及插值逻辑
- `test/`:单元测试和旧版数据兼容性测试
@@ -167,10 +166,12 @@ npm run format
- `taskSortOrders`
- `showHiddenCompletedTasks`
- `showHiddenTodoTasks`
- `tasksInitialized`
- `tasksInitialized`(历史兼容标记)
- `tasksCorruptedBackup`
任务、排序和显示偏好使用 JSON 编码。若任务列表格式损坏,原始文本会保存到 `tasksCorruptedBackup`。当浏览器存储不可用或空间不足时,应用会在当前页面会话中继续运行,但刷新后内存中的改动会丢失
首次运行时任务列表为空,并会写入 `tasks: []``tasksInitialized` 标记。`tasksInitialized` 仅作历史兼容用途:读取时用于判断是否需要为旧版安装补写,写入则是为了在回退到含示例任务的旧版本时能识别出已初始化状态。从含示例任务的旧版本升级后,已有本地数据保持不变;仅全新安装(本地尚无 `tasks` 键)时以空列表开始
任务、排序和显示偏好使用 JSON 编码。若任务列表格式损坏,原始文本会保存到 `tasksCorruptedBackup`。当浏览器存储不可用时,应用会在当前页面会话中继续运行而不尝试写入,改动在刷新后丢失;当存储可用但空间不足时,首次初始化若写入失败则不会设置 `tasksInitialized`,下次访问会重试写入。
## 备份格式