| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |
| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |
| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |
| feat: implement P0 UX optimizations - welcome tutorial and better boot experience - Add 4-page welcome tutorial showcasing offline learning, gamification, variable snapshots, and 7-day plan - Fix BootScreen version display to use dynamic BuildConfig.VERSION_NAME instead of hardcoded v0.2 - Improve BootScreen copy from technical jargon to user-friendly messages - Create AppPrefs utility for first launch detection using SharedPreferences - Integrate welcome tutorial into navigation flow (shown only on first launch) - Update bottom tagline from 'OFFLINE READY' to Chinese '完全离线 · 无需网络 · 随时学习' | 8 天前 |
| feat: implement P0 UX optimizations - welcome tutorial and better boot experience - Add 4-page welcome tutorial showcasing offline learning, gamification, variable snapshots, and 7-day plan - Fix BootScreen version display to use dynamic BuildConfig.VERSION_NAME instead of hardcoded v0.2 - Improve BootScreen copy from technical jargon to user-friendly messages - Create AppPrefs utility for first launch detection using SharedPreferences - Integrate welcome tutorial into navigation flow (shown only on first launch) - Update bottom tagline from 'OFFLINE READY' to Chinese '完全离线 · 无需网络 · 随时学习' | 8 天前 |
| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |
| feat: implement P0 UX optimizations - welcome tutorial and better boot experience - Add 4-page welcome tutorial showcasing offline learning, gamification, variable snapshots, and 7-day plan - Fix BootScreen version display to use dynamic BuildConfig.VERSION_NAME instead of hardcoded v0.2 - Improve BootScreen copy from technical jargon to user-friendly messages - Create AppPrefs utility for first launch detection using SharedPreferences - Integrate welcome tutorial into navigation flow (shown only on first launch) - Update bottom tagline from 'OFFLINE READY' to Chinese '完全离线 · 无需网络 · 随时学习' | 8 天前 |
| feat: implement P0 UX optimizations - welcome tutorial and better boot experience - Add 4-page welcome tutorial showcasing offline learning, gamification, variable snapshots, and 7-day plan - Fix BootScreen version display to use dynamic BuildConfig.VERSION_NAME instead of hardcoded v0.2 - Improve BootScreen copy from technical jargon to user-friendly messages - Create AppPrefs utility for first launch detection using SharedPreferences - Integrate welcome tutorial into navigation flow (shown only on first launch) - Update bottom tagline from 'OFFLINE READY' to Chinese '完全离线 · 无需网络 · 随时学习' | 8 天前 |
| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |
| refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 9 天前 |