Commit Graph

  • 7af7cd64e6 feat(app): E.1 内测 APK 构建配置 — Android 品牌化 + 签名 + ProGuard main iven 2026-06-07 20:17:19 +08:00
  • ec8a04c80a feat(app): D.3 中等优先级 UX 改进 — 保存指示器 + 触摸目标 + 主题持久化 iven 2026-06-07 13:50:34 +08:00
  • 750605e479 feat(app): 全局离线提示横幅 — 网络不可用时显示黄色警告 iven 2026-06-07 13:44:40 +08:00
  • 346c751cbb refactor(app): 迁移 4 个页面到共享 EmptyStateWidget + ErrorStateWidget iven 2026-06-07 13:42:56 +08:00
  • 2f96f9a4f4 feat(app): 编辑器未保存确认 + 日历今天按钮 iven 2026-06-07 13:38:34 +08:00
  • f64355946c feat(app): 共享 UI 组件 + 4 个关键 UX bug 修复 iven 2026-06-07 13:36:10 +08:00
  • 1f48a67db5 docs: 更新路线图 — A+B+C 阶段完成,9 条链路 8 通过 iven 2026-06-07 13:15:53 +08:00
  • 225af89e41 fix(app): Token 刷新彻底失败时通知 AuthBloc 派发 AuthExpired iven 2026-06-07 12:59:12 +08:00
  • dbb74b6545 fix(diary): 系统性修复 DTO 输入验证 — 42 项审计发现中输入验证类全部修复 iven 2026-06-07 12:55:50 +08:00
  • 3c3d70c751 fix(app): 日历页切换月份后保留选中日期的日记列表 iven 2026-06-07 10:44:55 +08:00
  • ed8252d7c8 docs: 更新 Wiki 文档 — 数据层/前端/后端/健康/索引同步至最新 iven 2026-06-07 10:44:26 +08:00
  • 41ef28f20b test(app): CalendarBloc 新增 31 个单元测试 iven 2026-06-07 10:44:15 +08:00
  • d67eedf7de feat(app): 多页面动态化 — 搜索/资料/教师/贴纸库/模板/日历 iven 2026-06-07 10:44:04 +08:00
  • a05374e8d1 feat(app): 编辑器增强 — 查看模式 + 图层排序 + 标签/贴纸动态化 iven 2026-06-07 10:43:37 +08:00
  • a5d2b0409f feat(app): 发现页动态化 — DiscoverBloc + API 驱动 + 下拉刷新 iven 2026-06-07 10:43:23 +08:00
  • 3bc2ca7332 feat(diary): 添加发现页 Discover API — 每日灵感/热门标签/精选模板/专家日记 iven 2026-06-07 10:43:02 +08:00
  • 4cb91f3ac9 fix(app): 修复打开已保存日记时笔迹不可见 — syncStrokes 后缺少 setState iven 2026-06-04 23:12:51 +08:00
  • c253c8ddcf chore(scripts): 开发脚本支持 Flutter Windows 桌面端 iven 2026-06-04 20:35:39 +08:00
  • bb388ed8ff fix(app): 日记可见性修复 — 私密日记仅本地 + Web 端 ID 修复 + 分享按钮 iven 2026-06-04 12:03:24 +08:00
  • c441aa4e34 fix(app): RemoteJournalRepository 创建日记 date 格式修复 — ISO 8601 → NaiveDate iven 2026-06-04 10:47:14 +08:00
  • e635557e67 fix(app): 修复 RemoteJournalRepository API 响应解析 — 分页信封嵌套 iven 2026-06-04 09:35:54 +08:00
  • 138bfa9723 fix(app): Flutter Web 改用 HTML 渲染器,避免 Google Fonts CDN 加载中文字体 iven 2026-06-04 09:22:48 +08:00
  • b72009718f fix(app): 日记保存逻辑修复 — EditorPage 改为 StatefulWidget + 更新合并编辑器状态 iven 2026-06-04 00:13:51 +08:00
  • 9fce34f4ef fix(app): 修复 4 个 Flutter 交互问题 iven 2026-06-04 00:05:22 +08:00
  • 988ee7335a feat(app): 内容安全词库 + 过滤服务 + 分享前检查 — 28 个测试全覆盖 iven 2026-06-03 19:40:13 +08:00
  • 9c92cba87f test(app): ClassBloc + SearchBloc 单元测试 — 33 个测试全覆盖 iven 2026-06-03 19:03:29 +08:00
  • f6d394afb6 test(app): 手写引擎 Canvas 集成测试 — 55 个测试全覆盖 iven 2026-06-03 18:57:41 +08:00
  • 4cd08535d3 chore(app): 管理端品牌替换 — 移除所有 ERP 面向用户文字,统一暖记风格 iven 2026-06-03 18:48:47 +08:00
  • 271f0c4f29 test(diary): 添加 9 个集成测试 + 修复 mood_stats 表名 iven 2026-06-03 18:04:58 +08:00
  • 4cd381295a fix(app): Flutter Web 开发模式默认连接 localhost:3000 API iven 2026-06-03 17:50:55 +08:00
  • 8300822232 fix(diary): JournalResp 补充 assigned_topic_id 字段 iven 2026-06-03 17:46:50 +08:00
  • 367f21de08 feat(app): 统一同步协议 — SyncModels + ApiClient.sync + SyncEngine.tryBatchSync iven 2026-06-03 17:20:51 +08:00
  • 1766cefde9 refactor(diary): Service 层改用 DiaryEvent 枚举替代字符串事件 iven 2026-06-03 17:15:00 +08:00
  • 38592d61ce refactor(diary): Phase 3 质量提升 — 201 状态码 + OpenAPI 文档 + DiaryEvent 类型安全 iven 2026-06-03 17:06:03 +08:00
  • e8df3a9562 fix(app): 修复登录页 Logo 和文字未居中 — Stack alignment + Column mainAxisSize iven 2026-06-03 16:36:20 +08:00
  • 32a91551c4 perf(app): Phase 2 前端性能优化 5 项 — 8b-D01/D02/D03/M02/N01 iven 2026-06-03 16:05:11 +08:00
  • b6ffc60331 perf(diary): sticker_service 批量 GROUP BY 替代 N+1 贴纸计数 — 8a-C04 iven 2026-06-03 15:51:05 +08:00
  • 4e5c1287a6 perf(diary): parent_service 批量软删除替代逐条 UPDATE — 8a-C03 iven 2026-06-03 15:48:29 +08:00
  • 3258acaa77 perf(diary): sync_service 批量预查询 + 事务化 — 8a-C02 iven 2026-06-03 15:45:36 +08:00
  • 0c9ada242a perf(diary): mood_stats 改用 SQL GROUP BY 替代全量加载 — 8a-C01 iven 2026-06-03 15:37:09 +08:00
  • 99db8e5cb0 fix(app): 家长同意验证流程 — PIPL 第28条合规 iven 2026-06-03 10:25:23 +08:00
  • a34c9fd176 fix(app): 强制 HTTPS — Android 网络安全配置 + 生产默认 HTTPS iven 2026-06-03 10:13:20 +08:00
  • 45949e3ed0 fix(app): Token 自动刷新拦截器 — 401 时自动刷新 + 重试原请求 iven 2026-06-03 10:07:33 +08:00
  • c4b2de8294 fix(diary): 家长绑定改为两步验证 — 孩子确认后才生效 iven 2026-06-03 10:03:50 +08:00
  • cca2d77ea2 fix(diary): 班级码改用字母数字混合 — 16^6 提升到 62^6(568 亿组合) iven 2026-06-03 09:56:24 +08:00
  • 6d7ac05d0f fix(auth): Token 黑名单改用 SHA-256 替代 SipHash iven 2026-06-03 09:51:47 +08:00
  • 11d0971a67 feat(app): pnpm 一键启动 + Flutter Web 编译修复 iven 2026-06-03 09:50:19 +08:00
  • b81a972245 fix(diary): 为所有 DTO 添加 Validate derive + handler 调用 validate() iven 2026-06-03 01:14:23 +08:00
  • af7d3f65fd fix(diary): 修复日记列表 IDOR — 非管理角色只能查看自己的日记 iven 2026-06-03 01:08:00 +08:00
  • 9ce300ddb9 fix(app): 修复笔画缓存 use-after-dispose — 移除增量合成时的提前 dispose iven 2026-06-03 01:06:34 +08:00
  • e0052ea99b fix(diary): 添加事务 — create_class/join_class/parent 删除原子化 iven 2026-06-03 01:03:57 +08:00
  • 1750f17f41 fix(diary): 修复 class_service unwrap() — 改为从 Model 安全取值 iven 2026-06-03 00:58:58 +08:00
  • 5f06056d26 fix(server): 添加权限守卫 — 审计日志 + 文件上传 + diary.comment.delete 种子 iven 2026-06-03 00:57:39 +08:00
  • 935918c9ab fix(server): 修复 RLS 变量名 bug — app.current_tenant → app.current_tenant_id + 空值保护 iven 2026-06-03 00:55:00 +08:00
  • d482497e49 fix(app): 修复 smoke test — 改为验证主题构建,避免 Isar 依赖 iven 2026-06-03 00:00:15 +08:00
  • 45530616ee feat(diary): 添加贴纸包 UpdateStickerPackReq DTO + update service/handler — Task 13 iven 2026-06-02 23:54:04 +08:00
  • d6dd017155 feat(web): 贴纸包 CRUD UI + 主题编辑/停用 — Task 14-15 完成 iven 2026-06-02 23:40:46 +08:00
  • f0741450bc feat(app): 家长端数据导出 — 添加 JSON 文件下载 + 预览 iven 2026-06-02 23:36:35 +08:00
  • c9a69d0be1 feat(app): 添加评论列表展示组件 — FutureBuilder 轮询模式 iven 2026-06-02 23:26:54 +08:00
  • 9e53ca8555 feat(app): EditorPage 顶栏添加评语入口 — 仅已有日记显示 iven 2026-06-02 23:26:24 +08:00
  • 6c9a38b27b feat(app): 添加 EditorBloc.LoadJournal event — 加载已有日记数据 iven 2026-06-02 23:23:17 +08:00
  • e57c3427a4 fix(app): 18 处 catch(e) 添加 debugPrint 异常日志 iven 2026-06-02 23:21:16 +08:00
  • c92ead60e3 feat(app): EditorPage 加载已有日记 — 替换为 LoadJournal 原子事件 iven 2026-06-02 23:16:58 +08:00
  • ab45f40cc8 docs: 修订实施计划 — 修复 EditorView 目标类/apiClient.data/主题后端已存在 iven 2026-06-02 23:06:11 +08:00
  • 8ea1032c9d feat(diary): Phase 1.3 完善修复 — 贴纸/主题 CRUD + 管理端对接 + HMS 清理 iven 2026-06-02 23:01:13 +08:00
  • 94bfb3297a docs: 添加课堂试点就绪实施计划 — 4 Phase 16 Task iven 2026-06-02 22:59:16 +08:00
  • 85d6781372 fix: Phase 1.3 完善修复 — 管理端对接 + HMS清理 + 编辑器加载 iven 2026-06-02 22:54:09 +08:00
  • 860844a399 docs: 修订课堂试点设计规格 v1.1 — 修正 API 路径/已存在功能/测试标准 iven 2026-06-02 22:49:17 +08:00
  • 4d5ddf35a7 docs: 添加课堂试点就绪设计规格 — 四角色闭环 + 跨角色链路 iven 2026-06-02 22:40:11 +08:00
  • a83909dd24 fix(server): Phase 1.2 核心功能修复 — C1/C2/H4/H6 iven 2026-06-02 21:33:47 +08:00
  • 49d4aa36a7 fix(app): Phase 1.1 紧急修复 — SyncEngine 接入 + authorId + catch 异常处理 iven 2026-06-02 21:21:43 +08:00
  • 7e928ae1e1 fix(app): 修复 P2~P4 共 10 项前端问题 iven 2026-06-02 20:21:51 +08:00
  • 75db6a7eb7 fix(server): 修复菜单种子迁移 — 使用动态 tenant 查询替代 nil UUID iven 2026-06-02 14:13:32 +08:00
  • 74551d48e6 feat(server): 添加暖记日记管理菜单种子数据 + 图标注册 iven 2026-06-02 12:24:29 +08:00
  • 78018a9a64 feat(app): 管理端 Web 基座→暖记品牌迁移 + 日记管理页面 iven 2026-06-02 12:16:44 +08:00
  • 0a9e5b1cb3 docs: 更新 wiki + CLAUDE.md — 三端架构和管理端集成 iven 2026-06-02 10:11:03 +08:00
  • 8111471e93 feat: 添加管理端前端 (HMS 基座 React 管理面板) iven 2026-06-02 10:03:13 +08:00
  • 181bfb1f3e fix(app): 对齐 Open Design spec — 字体/Token/首页/Tab栏/路由/Discover页 iven 2026-06-02 09:11:46 +08:00
  • b320641d9c fix(app): 全链路验证修复 — 编译错误/CORS/迁移/启动脚本 iven 2026-06-02 01:03:58 +08:00
  • 749ef55b89 feat: Week 4 收尾 + 架构治理 — 搜索/家长中心/Feature Flag/Docker/环境配置 iven 2026-06-01 23:53:34 +08:00
  • ffde0c9e77 feat(test): Week 3 质量保障体系 — 55 新增测试 + CI/CD 流水线 iven 2026-06-01 23:20:18 +08:00
  • f0921d554c fix(app): 修复 ShareBottomSheet nullable 检查 iven 2026-06-01 23:06:39 +08:00
  • 4c743e150e test(app): 前端第一批测试 — EditorBloc 19用例 + JournalElement 11用例 + InMemoryRepo 12用例 iven 2026-06-01 23:02:14 +08:00
  • 3eaf83c79a feat(app): 老师点评功能 — CommentCreate事件 + CommentBottomSheet + 日记墙点评按钮 iven 2026-06-01 22:49:56 +08:00
  • 973bb56af6 feat(app): 编辑器完成按钮接入分享面板 — ShareBottomSheet + sharedToClass更新 iven 2026-06-01 22:45:56 +08:00
  • 55285b57a7 feat(app): 班级码验证前后端联调 — AuthBloc接入API + 错误计数锁定UI iven 2026-06-01 22:42:33 +08:00
  • b3fc066aac feat(db): 添加 student/teacher/parent 角色种子 — 日记权限分配 iven 2026-06-01 22:37:52 +08:00
  • 6cb288b4f2 feat(diary): 班级码验证添加5次错误锁定 — Redis计数 + 30分钟冷却 iven 2026-06-01 22:34:02 +08:00
  • 0c6a33d96b chore(app): linter 格式化 + image_picker 自动生成插件注册 iven 2026-06-01 21:44:07 +08:00
  • 6378da055f feat(app): EditorPage 读取 template 参数 — 模板选择框架 iven 2026-06-01 21:41:53 +08:00
  • db881c25a0 feat(app): 集成贴纸选择到编辑器 — 底部面板 + 自动放置 iven 2026-06-01 21:38:26 +08:00
  • 57b45f7cbf feat(app): 创建贴纸选择底部面板 — 6 类 60 个 emoji 贴纸 iven 2026-06-01 21:36:51 +08:00
  • 89c1cefb11 feat(app): 集成图片上传到编辑器 — 拍照/相册 + 压缩 + 拖拽定位 iven 2026-06-01 21:35:43 +08:00
  • cd86156590 feat(app): 创建图片选择+压缩处理器 — ImagePickerHandler iven 2026-06-01 21:32:55 +08:00
  • f8a20d673e feat(app): 添加 image_picker 依赖 iven 2026-06-01 21:31:28 +08:00
  • 9785370922 feat(app): 增强文字元素渲染 — 多行+字号+颜色 iven 2026-06-01 21:28:15 +08:00
  • fef2d629e5 feat(app): 集成文字输入到编辑器 — TextInputOverlay + 工具栏选项行 iven 2026-06-01 21:27:15 +08:00
  • d392515f4a feat(app): 创建文字输入覆盖层组件 — TextInputOverlay iven 2026-06-01 21:23:30 +08:00
  • 417dcb08e4 feat(app): 添加 JournalElement 类型便利工厂方法 — text/image/sticker iven 2026-06-01 21:22:27 +08:00
  • 92a70ca2ed docs(plans): Week 1 编辑器体验完善实施计划 iven 2026-06-01 21:03:32 +08:00