|
|
87d51b253a
|
refactor: gifs/→animations/、AnimatedGif→AnimatedWebp, 名实相符
问题
- 目录名 gifs/ 与类名 AnimatedGif 长期描述 GIF, 但实际格式是 WebP 动画
(依赖 sketch-animated-webp, 文件后缀也是 .webp)
- 名实不符持续误导阅读者, 也让 GIF 相关搜索返回错误结果
改动(仅重命名, 不改运行时行为)
- core/src/main/assets/gifs/ → animations/ (git mv, 152 个 webp + AGENTS.md)
- core/.../ui/AnimatedGif.kt → AnimatedWebp.kt, 函数 AnimatedGif() → AnimatedWebp()
- Platform.kt:13 getWebpUri 路径 gifs/ → animations/
- BottomCard.kt:175 调用点 AnimatedGif( → AnimatedWebp(
- CalendarMonthView.kt:583 注释同步
- scripts/profile.sh:228,1103 两处场景描述/trace 文档同步
- baseline-prof.txt: 19 处 AnimatedGifKt → AnimatedWebpKt (R8 类名)
注: lambda hash 可能需下次 updateBaselineProfile 重新生成校准, 当前不影响构建
验证
- grep 全仓库 (排除 build/AGENTS.md/baseline-prof) 无 AnimatedGif/ 残留
- ./gradlew :app:assembleDebug → BUILD SUCCESSFUL
备注
- WEBP_FILES = (1..152) 硬编码暂保留, 下一个提交替换为构建期 BuildConfig
- AGENTS.md 文档校正留待 Task 6 统一处理
|
2026-06-15 13:57:09 +08:00 |
|
|
|
3d39e609df
|
chore(app): 删除 app/assets 中无引用的 app_icon PNG 图标
问题
- app/src/main/assets/app_icon.png (61KB) 与 app_icon_original.png (468KB)
无任何代码引用(grep 全仓库确认),但作为 assets/ 文件会被原样打进 APK
- 实际应用内图标用的是 core/src/main/assets/app_icon.webp
(Platform.kt:15 getAppIconUri() 引用),与这两个 PNG 无关
验证
- grep -rn "app_icon_original\|assets/app_icon\.png" app/src core/src
→ 无输出(仅 AGENTS.md 提及,已排除)
- unzip -l 对比: assets/ 总量 4,286,121 → 3,757,710 字节(-528,411B ≈ 516KB)
- ./gradlew :app:assembleDebug → BUILD SUCCESSFUL
影响
- 设备安装体积减少 ~516KB(APK 是 ZIP, PNG 已压缩, 故 APK 文件本身仅 -139B;
但 assets 安装时解压展开, 设备占用是实打实少 516KB)
- 不影响任何运行时行为
|
2026-06-15 13:52:21 +08:00 |
|
|
|
7d6ed1428e
|
refactor: 日期检查器 Canvas 手绘图标替换为 Material Icons
CalendarIcon/ArrowRightIcon 改用 Icons.Filled.DateRange 和
Icons.AutoMirrored.Filled.ArrowForward,统一图标风格并支持
RTL 自动镜像;删除冗余 Canvas 绘制代码及关联 import(Offset/
StrokeCap/Stroke)。
|
2026-06-15 13:26:34 +08:00 |
|
|
|
1cb35d2752
|
Merge branch 'fix/date-checker-negative-days'
修复日期检查器保质期天数负数 bug: clampExpiryDays 纯函数钳制非负(含 4 单测);两个日期写入路径(选择器确认+行内输入)兜底;DatePicker SelectableDates 禁选早于生产日期(仅 Row);加载清理历史持久化负数旧数据
|
2026-06-15 11:43:34 +08:00 |
|
|
|
7628f299c2
|
fix: 加载保质期列表时钳制旧数据,清理历史持久化的负数天数
|
2026-06-15 11:40:26 +08:00 |
|
|
|
1438b405a9
|
feat: 日期检查器 Row 日期选择器禁选早于生产日期
|
2026-06-15 11:30:43 +08:00 |
|
|
|
2085c22987
|
fix: 日期检查器写入保质期天数前钳制为非负,防止负数落库
|
2026-06-15 11:27:35 +08:00 |
|
|
|
55d50c3e1d
|
feat: 添加 clampExpiryDays 纯函数钳制保质期天数为非负
|
2026-06-15 11:24:38 +08:00 |
|
|
|
8f24706d8c
|
chore: gitignore 添加 docs/superpowers/
|
2026-06-08 13:47:35 +08:00 |
|
|
|
0868522741
|
feat: 为版本号添加可点击效果
|
2026-06-08 13:43:29 +08:00 |
|
|
|
c2c8b1c321
|
feat: 保质期列表添加空状态提示
|
2026-06-08 13:36:56 +08:00 |
|
|
|
4805bd1f0e
|
fix: 修复日期检查器右滑删除卡住问题,列表底部添加间距防止FAB遮挡
|
2026-06-08 13:30:04 +08:00 |
|
|
|
62d3bbabea
|
refactor: 首页 FAB 菜单图标替换为 Material Icons,展开时切换 Close 并添加过渡动画
|
2026-06-08 13:20:33 +08:00 |
|
|
|
a5a4173cc2
|
refactor: 返回图标从 Canvas 手绘替换为 Material Icons ChevronLeft
|
2026-06-08 13:10:44 +08:00 |
|
|
|
6b15c4b88b
|
feat: 日期检查器 FAB 图标替换为 Material Icons
|
2026-06-08 11:36:58 +08:00 |
|
|
|
0560e81fb2
|
feat: 日期检查器添加数据持久化和恢复默认按钮
- 新增 DateCheckerStorage,SharedPreferences 持久化生产日期和保质期列表
- 添加 DateCheckerStorageTest 单元测试(含 InMemorySharedPreferences stub)
- 页面退出后保留数据,重新打开自动恢复
- 左下角新增恢复默认 FAB,点击弹出确认弹窗后重置全部数据
- 双 FAB 样式统一(FloatingActionButton + CircleShape + primary 配色)
|
2026-06-08 11:08:48 +08:00 |
|
|
|
fa872caa59
|
docs: 版本号统一由 gradle.properties 管理,更新发布流程文档
|
2026-06-02 14:15:07 +08:00 |
|
|
|
a36f6c41e1
|
docs: 更新 README 为纯 Android 描述,调整 CHANGELOG 顺序,添加 RELEASE.md 与图标资源
|
2026-06-02 13:43:47 +08:00 |
|
|
|
5b5d780593
|
release: v1.1.0
|
2026-06-02 13:29:41 +08:00 |
|
|
|
b3abe92b2c
|
feat: 更新 Baseline Profile,覆盖日期检查器/调休/工具页等场景
|
2026-06-02 13:10:49 +08:00 |
|
|
|
ecf8a70f5d
|
docs: 更新 AGENTS.md,标准化命令/规范/包名说明
|
2026-06-02 10:29:05 +08:00 |
|
|
|
51d6e383b0
|
feat: profile.sh 支持 --all 批量录制全部 15 个自动场景
将之前需手动操作的 date_select / cross_month / date_checker / full_flow
也改为自动执行(基于屏幕百分比坐标估算点击位置),
--all 可一次性录制全部场景并生成汇总对比报告
|
2026-06-01 18:30:09 +08:00 |
|
|
|
d933ca3e41
|
feat: 将 profile.sh 重写为场景化版本,支持按交互场景录制 Perfetto trace
- 引入 --scenario 参数,支持 15 种预设交互场景
- 自动场景通过 adb 自动执行操作(滑动翻页、拖拽折叠、切换视图等)
- 手动场景提供操作指引并保留倒计时准备
- 批量录制模式(--all)自动遍历所有场景并生成汇总报告
- 输出文件按场景名命名,支持场景级对比分析
|
2026-06-01 18:22:56 +08:00 |
|
|
|
829f89eb7c
|
refactor: 删除 P0 冗余代码(自定义combine/死StateFlow/网格重复算法/runBlocking)
- 删除自定义 6 参数 combine + Quintuple,改用标准库嵌套 combine + Triple
- 删除 yearViewProgress 死 StateFlow 及关联测试
- generateMonthDays/generateMiniMonthDays 复用 getMonthGridInfo
- WeekPager 移除 runBlocking,交由 DayCell 自行异步计算
- 修复 AnimLog 在 JVM 单元测试中因 android.util.Log 不可用而崩溃
|
2026-06-01 18:03:27 +08:00 |
|
|
|
e249700ee5
|
refactor: 清理不必要的 @Suppress 注解并替换弃用 API
移除 23 处不必要或可通过改写避免的 @Suppress。
- 删除 12 处完全不必要(误加/重构遗留)
- 替换 9 处 monthNumber/dayOfMonth → month.number/day
- 替换 4 处弃用构造函数 LocalDate(year,month,1) → LocalDate(year,Month(month),1)
- 保留 6 处必要 @Suppress(NOTHING_TO_INLINE、Android API 兼容等)
|
2026-06-01 17:55:18 +08:00 |
|
|
|
484045950f
|
fix: 修复日期检查器滑动删除 state 错位并消除 deprecation warning
- 将 dismissState 移入 key(row.id) 内部,修复删除后 state 被错误复用的问题
- 新增 pendingDeleteIds 延迟删除机制,滑动删除播放 shrinkVertically + fadeOut 退场动画
- 移除废弃的 confirmValueChange 参数,改用 LaunchedEffect 监听 dismissState.currentValue
|
2026-06-01 17:21:42 +08:00 |
|
|
|
877a3f9aa4
|
refactor: 日期检查器滑动删除添加动画等待完成后移除数据
|
2026-06-01 17:15:14 +08:00 |
|
|
|
23a7db1057
|
docs: 重写 AGENTS.md,精简为模块概览、命令、规范等核心信息
|
2026-06-01 16:59:32 +08:00 |
|
|
|
aeb147c6a7
|
feat: 日期检查器添加行级入场/出场动画与 animateContentSize
|
2026-06-01 16:56:19 +08:00 |
|
|
|
c9bdff9063
|
docs: 添加模拟器启动与 adb logcat 命令
|
2026-06-01 16:41:36 +08:00 |
|
|
|
24cb8fd3fe
|
refactor: 移除日期检查器新行入场动画与高亮动画
- 移除 ExpiryRow.isNew 字段及相关入场淡入+上滑动效
- 移除 highlightedRowId 高亮逻辑及相关动画
- simplify animateItem() 为默认参数
- 用 Spacer 替代 verticalArrangement 实现行间距
- 用 animateScrollToItem 替代 scrollToItem + delay 模式
|
2026-06-01 16:41:33 +08:00 |
|
|
|
f0975f119d
|
feat: 日期检查器新行添加入场动画(淡入+上滑)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 15:54:40 +08:00 |
|
|
|
bc9c10d82e
|
feat: 日期检查器添加新行自动滚动与高亮动画
- 点击 FAB 添加新行后自动滚动到列表底部
- 新增行短暂高亮显示(primaryContainer 背景色)
- LazyColumn 添加 animateItem() 提升列表动画体验
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 15:39:43 +08:00 |
|
|
|
b12206dc88
|
feat: 日期检查器 UI 改版,添加过期状态显示
- 生产日期改为渐变卡片展示,支持点击切换日期
- 保质期条目改为 ExpiryCard,显示过期状态标签
- 新增 ExpiryStatus 枚举(SAFE/WARNING/URGENT/EXPIRED)
- 新增 ArrowRightIcon 自定义图标
- 添加中文日期格式化辅助函数
- 改进 TopAppBar 和 FAB 样式
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 14:12:41 +08:00 |
|
|
|
23909e855f
|
refactor: 简化 BottomCard 年视图切换动画并移除调试日志
- 将 slideAnim 初始值固定为 1f(屏幕外),简化年↔月切换逻辑
- 移除 BottomCard 区域的调试 logd 日志
- fadeIn easing 从 FastOutSlowInEasing 改为 LinearOutSlowInEasing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 14:00:18 +08:00 |
|
|
|
be023a00a9
|
refactor: 优化年份视图切换动画,使用 Animatable 精确控制
- 用 Animatable + LaunchedEffect 替换 animateFloatAsState
实现滑出/滑入分阶段动画序列(先滑出再滑入)
- 统一缩放/淡入淡出动画时长为 350ms
- 底部卡片滑出偏移从 200.dp 增加到 300.dp
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 13:47:36 +08:00 |
|
|
|
f34e34e5ae
|
feat: 引入 YaYaTheme 并应用到所有 Activity
新增 Theme.kt 提供 Android 12+ 动态颜色支持,
为全部 5 个 Activity 的 setContent 包裹 YaYaTheme。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 13:25:27 +08:00 |
|
|
|
2b0491d7d7
|
chore: 添加 .editorconfig 配置 ktlint Composable 函数命名规则
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 13:20:55 +08:00 |
|
|
|
a8717dec7d
|
refactor: MenuItem 和 ToolItem 统一使用 Card(onClick)
|
2026-06-01 13:18:27 +08:00 |
|
|
|
6446d6636e
|
refactor: 移除 LicensesScreen 调试日志
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 11:44:15 +08:00 |
|
|
|
c72120ee0a
|
fix: 开源许可列表项改用 Card(onClick) 以支持点击动画
原实现使用 Column + Modifier.clickable 在 LazyColumn 中无法显示
ripple 反馈。改用 Material3 Card 的 onClick 参数后,点击水波纹
动画正常显示。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 11:42:49 +08:00 |
|
|
|
acb737dd25
|
refactor: 简化 holiday badge 空值检查为 Elvis 运算符
|
2026-06-01 11:18:10 +08:00 |
|
|
|
4a8480be64
|
feat: 移除共享元素转场,月/年视图切换改用缩放+淡入淡出动画
|
2026-06-01 11:11:45 +08:00 |
|
|
|
1930bbcb7f
|
feat: 添加 Perfetto trace 分析脚本并更新开发文档
|
2026-05-27 18:10:53 +08:00 |
|
|
|
6dffaf4c91
|
feat: 法定假日背景添加波浪缩放动画
点击"显示调休"后,假日格子背景从左上到右下依次缩放弹出(每格延迟15ms),
关闭时反向缩放消失,使用 graphicsLayer 实现高性能动画。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 17:41:18 +08:00 |
|
|
|
3c1a04580c
|
更新 baseline profile 和优化基准测试生成器
|
2026-05-27 17:13:16 +08:00 |
|
|
|
281abcf66b
|
perf: 添加性能追踪标记并改进基线配置文件生成器
|
2026-05-27 16:06:05 +08:00 |
|
|
|
4de00e35dc
|
Update baseline profile for performance optimization
|
2026-05-27 11:14:07 +08:00 |
|
|
|
4eadc479eb
|
feat: 添加 testTag 基础设施,扩展 Baseline Profile 覆盖路径
为 CalendarPager、BottomCard、FAB、工具页、日期检查器等关键 UI 元素添加 testTag,
启用 testTagsAsResourceId 支持 UI Automator 通过 resource-id 定位。
BaselineProfileGenerator 使用 testTag 选择器重写,覆盖工具页、日期检查器、
DatePicker 等更多导航路径。清理 DEVELOPMENT.md 移除已过时的性能瓶颈描述。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 10:03:16 +08:00 |
|
|
|
9a0222b4a2
|
perf: 引入 logd 条件日志工具,增强动画调试并优化 sharedElement 缓存
- 新增 AnimLog.kt,提供 BuildConfig.DEBUG 条件控制的 logd 日志工具,
支持 lambda 延迟求值以避免 release 模式下的字符串拼接开销
- 全模块替换 android.util.Log.d 为 logd,并将日志重构为 lambda 形式
- CalendarViewModel: toggleYearView / selectMonthFromYearView 添加纳秒级
耗时追踪日志
- CalendarMonthView / CalendarMonthPage / CalendarPager / YearGridView:
增加重组/进入/离开/页面切换/动画状态变化的详细调试日志
- 折叠动画/滑动进度日志添加状态去重,避免频繁重复输出
- P0: 缓存 sharedElement tween 实例(CalendarMonthView + YearGridView),
避免每次重组创建新实例导致动画重新计算
- P0: YearPager pageYear 使用 remember 稳定计算,避免 settledPage 与
yearViewYear 不同步导致抖动
- 移除 YearPager crossFadeAlpha,改为无透明度渐变
- app/build.gradle.kts 添加 profileinstaller 依赖
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-26 18:27:07 +08:00 |
|