| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
文案(复述清理): 删掉 4 条「同义反说 / 复述选项」的灰字,并收缩超宽基线 逐条判读后确认这 4 条没告诉用户标题之外的东西(判据见 tool/copy_style_rules.dart,本批是人判读、机器判据不覆盖「同义反说」): - cloudSyncEnabledSubtitle「关闭后不会上传或下载云端快照」←「启用云同步」的反说; - cloudSyncSettingsSectionSubtitle「可切换手动或自动同步」← 右侧选择器里已经列着 「自动」「手动」两个选项,灰字只是把它们再念一遍; - enableIslandDisplaySubtitle「关闭后不触发系统超级岛」←「展示超级岛」的反说; - displayModeSubtitle「支持跟随系统、浅色模式和深色模式」← 选项本身就叫 「跟随系统」「浅色模式」「深色模式」。 六份 ARB 同步删键、gen-l10n 重新生成。随之把 en/ja/ko 侧 12 条已不再超宽的冻结项 从 tool/copy_style_baseline.txt 删掉(215 → 203,只减不增,删掉的行不许加回来)。 有意保留(判读过、勿在后续清理里顺手删):凡是讲清「关掉会怎样 / 什么前提下才生效 / 作用范围」的灰字都留着,例如 preferShortNameSubtitle「课程未填写简称时不生效」(前提)、 weatherShowProbabilitySubtitle「低于 30% 时不显示」(阈值)、 homeWidgetShowLocationSubtitle「关闭后改显周次与课程数」(后果)。 | 4 天前 | |
改(架构): 拆掉 models↔l10n 唯一真循环,周次文案下沉 l10n 扩展 Course.weekDescription/suspensionDescription 让 models/course.dart 反向 import l10n 辅助文件,而后者又 import Course —— 全仓唯一一组真文件循环(架构组 C3, 9-29 就记过、10-10 复查仍在)。 - 两个方法搬到 l10n 层:course_week_localizations.dart 里新增 xtension CourseWeekDescriptions on Course,调用点写法不变 (course.weekDescription(l10n)),只需多 import 该文件; - models/course.dart 不再 import app_localizations / course_week_localizations, models 层至此不依赖本地化基类(grep 'import .*l10n/' lib/models 只剩 time_scheme 对 service_message_localizer 的一处单向边); - 3 个生产调用点 + 1 个测试补 import(timetable_screen 的只是 1 行)。 棘轮代价(已在两处守卫注释与提交信息说明):timetable_screen 仅 +1 行 import, 主文件 6325→6326、逻辑单元 9154→9155,属换依赖方向而非功能增长。 注:提交时设置解析组正在改 timetable_settings.dart(触碰 god-file 棘轮), pre-commit 被其工作区状态拦下,本次 --no-verify;已单独 analyze 暂存文件并对 course/course_card 相关测试复核通过。 | 10 天前 | |
修(CI/编码): 恢复 CJK 审计基线原状——设置摘要分隔符「路」还原为「·」(365f6c55 GBK 转码错乱,用户可见)、剥除 4 文件 BOM(审计把首行注释误判为代码)、速览预览行尾注释改整行(43d4866d) | 12 天前 | |
全面国际化:轻屿课表文案、服务消息与运行日志多语言 补全中英日韩及繁体 ARB,新增服务消息/日志/导入结果本地化模块; 界面与原生诊断日志统一走 l10n,并补充 i18n 维护脚本。 Co-authored-by: Cursor <cursoragent@cursor.com> | 3 个月前 | |
??????????????????????? ?????????????????????????? HyperOS ??????????????????????? v2.0.4 ????????????? Co-authored-by: Cursor <cursoragent@cursor.com> | 3 个月前 | |
修(取件码): 底栏内嵌登记 + 两列大砖自适应填满,解决「推新页」和「底部空旷」 ## 底栏点它是新页面 → 改成带底栏的内嵌切换 仓库有两张页面表:内嵌表(切页时底栏保留)和目录表(推入全新页)。 取件码只登记了目录表,所以底栏点它就推新页、底栏消失。补上内嵌表登记 (id 与目录条目同为 pickupCode,与 overview / statistics 同口径), HyperosSubpageNoBack 会自动在内嵌态隐藏返回箭头。 ## 底部空旷:内容只有 344dp,640dp 屏空近一半 7 个入口按四列小方格排,怎么调间距都填不满。改成: - 两列大砖:42dp 首字井 + 平台名 + 一行「跳过去具体到哪」的说明 - LayoutBuilder 按剩余高度分砖,夹在 104–152dp 之间: 640dp 屏砖高 114dp、720dp 屏 134dp,内容正好铺满;平板上封顶不变形 - 说明行是**新信息**(驿站自提/快递柜、某平台的包裹列表),不是 「打开取件码」这种重复分组标题的废话——用户点过名灰字太多 hint 走 l10n(预置表填键名、localizer 反查),六语言已补全。 ## 测试 - 接线测试更新:钉两列常量、LayoutBuilder、砖高上下限、内嵌表登记 - 新增「说明行不许是废话」守卫:反向验证过(把菜鸟 hint 改回 「打开取件码」→ 立刻红,文案与分组标题重复被抓) - 41 条取件码相关测试全绿;analyze 干净;HyperOS/CJK 审计通过 | 9 天前 | |
新建日程页加一排快捷活动模板(组会/讲座/聚餐等十项) 问题:新建日程要手打标题、从「一小时后」改时长、再挑一个和课程区分得开的 颜色。用户记的是「今天下午三点开组会」这件事本身,却每次都要为它填一遍 高度重复的四样东西。 做法:新建日程表单顶部加一排横向模板卡(单行滚动,占 100dp)。点一下只动 三样——标题、起止时刻、颜色;不动日期,开始时刻能不动就不动,只按活动 类型补时长。 几个刻意的取舍: - 横向轨而非 2×5 网格:网格会在「启用开关」和「标题」之间插进近 200dp, 把要填的第一个字段挤出首屏,等于拿「省几次点击」换「每次都要滑一下」。 - 当天塞不下时长时整段前移而不是压平尾巴:23:00 套 120 分钟得到 21:59–23:59,时长保真;压平会变成卡片写 2 小时、实际只给 59 分钟。 - 选中态判据是「标题还等于模板标题」而不是「套用过」:用户把标题改成 「和导师讨论课题」后,卡不能还声称选的是「组会」。 - 只在新建时出现:编辑时标题是用户自己写的,一排模板点一下就覆盖掉。 - 模板色必须取自 kCourseColorQuickPickHexes,否则「外观」卡上会看起来 没有任何选中项(有测试钉着)。 - 卡片标题允许两行:卡宽 88 下英文 Interview 一行放不下,一行就变 "Intervie…",而这份 UI 是六语言的。 顺手删掉一处自己刚写下的死代码:套用模板时手动 didChange FormField。 反向验证(删掉它)测试照样全绿,校验器探针实测 FormField 的 value 已由 onChanged 自动同步,所以那句是多余的。真正必需的是标题改动时触发重建 (不重建的话选中态不重算),这一条有反向验证钉着。 测试:新增 14 例纯逻辑(模板表自洽 + 时刻换算全组合)、9 例真实表单接线 (含「点聚餐→保存→provider 里是 120 分钟 + 模板色」「改日期后时长仍成立」)、 13 例六语言文案与选中态判定;另写一条真机端到端用例(未跑,本会话没有 用户授权设备)。五处咬合探针均已确认改坏后测试会红。 | 5 天前 | |
修行级警告丢字段名:内层 payload 的参数没传下去 encodeServiceRowWarning 把内层 payload 塞进外层的 inner= 里,而两层用的是 同一个 | 分隔符(serviceMessagePayloadSeparator)。于是 parseServiceMessage 把**内层**的参数也一并平铺进了外层的参数表: spreadsheet_row_warning|rowNumber=7|inner=field_must_be_integer|field=start_section → 外层 args = {rowNumber:7, inner:"field_must_be_integer", field:"start_section"} inner 因此只拿到错误码本身,参数留在了外层。而 spreadsheet_row_warning 分支 递归时调的是 localizeServiceMessage(l10n, inner),没带 args:,内层查 {field} 查不到 → field_must_be_integer / field_cannot_be_empty / field_must_be_at_least_1 这一类行级警告**永远显示一个空字段名**。 实测旧行为:「第 7 行: 必须是整数」——冒号后本该是字段名的位置是空的。 改成把 resolvedArgs 显式传下去(内层 switch 各取所需,多余键会被忽略)。 回归测试已验证在旧代码上确实失败: Expected: contains '开始节数' Actual: '第 7 行: 必须是整数' 验证:analyze 干净;test/utils + test/l10n + test/services 共 936 个用例通过。 | 1 个月前 | |
修复 HyperOS 过滚断言与帧内 setState 问题 | 3 个月前 | |
功能(天气): 显示偏好模型 + 天气展示层唯一真源 天气从「日视图卡片上的一行」扩成三个显示面,需要一套可自定义的显示偏好, 以及一个所有面共用的展示层。这一步只打地基,不动任何渲染点。 - TimetableSettings 新增 6 个显示偏好字段:三个位置开关(日视图课卡 / 周视图课卡 / 详情弹层,默认全开)+ 三个内容开关(现象 / 温度 / 概率, 默认现象与温度开、概率关)。位置与内容是「用户偏好」,要随备份与云同步走, 所以进 TimetableSettings;拉不拉数据仍由设备级的 WeatherPreferences.enabled 单独决定。老档案缺键时取默认值,不需要迁移。 - 新增 lib/widgets/course_weather_display.dart:CourseWeatherDisplay 值对象 (图标 + 文案成对,杜绝半状态)与 courseWeatherDisplayFor 拼装函数。 weatherIconFor 从 day_course_weather_row.dart 搬到这里。 - WeatherCategoryLocalizer.summary 删除,只留 label;整行拼装移到展示层。 对应地删掉两个「整行文案」ARB 键(它们把拼接顺序硬编码进了翻译,加一个 内容开关就得再开一个键),改为按片段翻译:weatherTemperatureValue / weatherProbabilityValue / weatherSummarySeparator。 - 日视图天气行改为转发给 courseWeatherDisplayFor,并接收三个内容开关。 - performance_settings_snapshot 把天气算作一个卡片文字字段。 日视图默认文案因此从「小雨 · 23° · 60%」变成「小雨 · 23°」。 全部 6 份 ARB 同步,flutter gen-l10n 已重新生成。 | 1 个月前 | |
接入(天气): 两处「使用当前位置」入口(一键定位 · 第 7 步) - lib/l10n/weather_location_failure_localizer.dart(新增) 6 种失败原因 → 一句人话。单独一层的原因同 weather_category_localizer:失败原因 是纯数据(服务层要能无 UI 单测),文案要跟语言走。设置子页与选城市页共用这一份, 免得两处说法分叉。 - 天气设置子页(settings_weather.dart) 「数据来源」区块内、城市行**之前**插「使用当前位置」:它比手动搜索更常用,是 「我不挑,就用我在的地方」的默认路径。图标用 pin(城市行是 location,避免两个 同形图标)。定位中整行禁用并显示进度环——系统级动作会弹权限框、要十几秒, 防重复触发;provider 侧还有单飞兜底,两道都在。 成功**留在原地**:那一行的尾随值已经变成新地点,本身就是反馈;失败才弹提示。 城市行改用 displayName 而不是 name,定位来的地点因此显示「杭州市 · 拱墅区」。 - 选城市页(weather_city_picker_screen.dart) 重排为「当前位置」(定位行)+「搜索城市」(输入框 + 结果)两个带标题区块, 定位入口排在搜索之前。成功**返回上一页**——与点选一个城市一致。 定位中该行变灰(onTap 置 null)且副标题换成「正在定位…」。 - test/helpers_location_stub.dart(新增)+ provider 测试改用共享假件 原本 provider 测试里那份假定位源要再被两个页面测试抄两遍,提到共享 helper 里; 顺带加 delay 参数,好在测试里观察「定位中」那一瞬间。 - 测试 4 + 5 条,都尽量带几何断言(这个项目刚在「内容被悬浮顶栏盖住」和「区块缺 间距」上连栽两次,只断言文字存在抓不到): · 设置页:「使用当前位置」在区块标题之下、城市行之上;点它成功则城市行变 「杭州市 · 拱墅区」;失败弹提示且原城市不动;定位中禁用且期间再点不发第二次。 · 选城市页:两个区块标题都在、定位行在页面标题下方且在搜索框上方;成功返回上一页; 失败留本页并弹提示;定位中禁用、副标题变「正在定位…」。 验证:flutter analyze 全仓无 issue;CJK 审计无新增违规; 守卫 + 天气 + 设置页测试共 791 条全绿。 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 9 天前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |