|
|
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 |
|
|
|
20425e392c
|
fix: 恢复折叠动画 Phase 2 下方行偏移,移除 showWeekPager 切换
- 恢复 CalendarMonthPage 中 isBelow 行的 `- phase2 * belowRowsHeight`
(2592a5f 误删导致展开时下方行原地淡入而非滑出)
- 移除 CalendarMonthView 的 showWeekPager + AnimatedContent 切换
(完全折叠后下拉拖拽时只显示 WeekPager 单周,上下空白)
- 回退到始终显示 CalendarPager,由 CalendarMonthPage 处理折叠动画
- 添加详细动画调试日志(Page/WeekRow/View 三层)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-26 17:39:40 +08:00 |
|
|
|
2592a5fa55
|
feat: 使用 AnimatedContent 平滑切换 CalendarPager ↔ WeekPager
- 用 AnimatedContent 包装 pager 切换,添加 fadeIn/fadeOut 过渡
- 延迟 50ms 切换避免折叠 spring 动画期间的视觉跳跃
- 修复 WeekRow 下方行的 yOffset 计算(移除 phase2 项)
- WeekPager 添加农历缓存支持
- 添加折叠动画调试日志
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-26 14:18:50 +08:00 |
|
|
|
4c53f234cf
|
fix: 去掉 CalendarPager ↔ WeekPager 切换,修复折叠闪烁
CalendarPager 在 collapseProgress=1.0 时只渲染 anchor 行,
效果和 WeekPager 相同,但避免了切换导致的视觉跳跃。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-26 13:54:02 +08:00 |
|
|
|
ea7558dec8
|
Merge pull request #9 from xunrua/main
优化年月切换卡顿
|
2026-05-26 09:37:41 +08:00 |
|
|
|
47876a233b
|
feat: 添加 PowerShell 性能追踪脚本
一键抓取 Perfetto trace、帧统计、内存信息并生成 Markdown 报告
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-26 08:12:48 +08:00 |
|
meyou
|
dfb820d610
|
Revert "feat: 添加年月滚轮选择器,支持触觉反馈"
This reverts commit bbe51051ae83d56fda8ad965f7b73a014ddea7b8.
|
2026-05-26 07:33:15 +08:00 |
|
meyou
|
0b6d9ea87a
|
fix: 滚轮选择器仅在滚动停止后触发选中变更和触觉反馈
快速滑动时不再每帧更新 selectedIndex,改为等滚动停止后
计算最终中心项再触发回调,消除来回抽搐问题。
|
2026-05-25 23:38:59 +08:00 |
|
meyou
|
bbe51051ae
|
feat: 添加年月滚轮选择器,支持触觉反馈
- 新增 WheelPicker composable:惯性吸附 + 触觉反馈滚轮
- 新增 MonthYearPickerDialog:年月双滚轮选择弹窗
- 新增 YearPickerDialog:年份滚轮选择弹窗
- MonthHeader:点击年月文字弹出年月选择器
- YearHeader:点击年份文字弹出年份选择器
- 滚动时触发 HapticFeedbackConstants.CLOCK_TICK 触觉反馈
|
2026-05-25 23:34:25 +08:00 |
|
meyou
|
6fac313fdf
|
perf: 延迟 YearGridView 文本测量到第二帧,补充性能分析文档
YearGridView 首帧 168ms 中约 24ms 来自 remember 同步文本测量。
将 dayLayouts/titleLayouts/weekdayLayouts 改为 produceState,
首帧 Canvas 渲染为空(sharedElement 结构不变),第二帧填充内容。
DEVELOPMENT.md 补充已知性能瓶颈分析和 Baseline Profile 覆盖建议。
|
2026-05-25 23:19:58 +08:00 |
|
meyou
|
ce84c614de
|
fix: 恢复 AnimatedGif 弹跳动画和 YearGridView 全量 sharedElement
- AnimatedGif: 恢复原始 scale 弹跳入场动画,仅保留 repeatCount 限制
- YearGridView: 恢复所有 12 个月的 sharedElement,保证点击任意
月份都有正确的共享元素转场动画
- CalendarPager: beyondViewportPageCount 1→0 保留(无视觉影响)
|
2026-05-25 23:06:15 +08:00 |
|
meyou
|
5158b99800
|
perf: 优化年月切换卡顿
Perfetto trace 分析:
- YearGridView 首帧 168ms: 12 个 MiniMonth 各创建 sharedElement
节点,但仅 1 个 key 匹配 CalendarPager
- compose:lazy:prefetch 最长 703ms: CalendarPager 预加载相邻页
修复:
- YearGridView: 仅选中的月份使用 sharedElement(11→1 个),
减少首次组合的 modifier 节点创建开销
- CalendarPager: beyondViewportPageCount 1→0,消除预加载卡顿
|
2026-05-25 22:57:18 +08:00 |
|
meyou
|
80ab328906
|
perf: 限制 WebP 动画重复次数并简化入场动画,减少帧丢失
Perfetto trace 分析显示 75.6% 帧延迟,根因为 250x250 WebP
持续以 11-14 FPS 无限循环解码。每次解码周期导致 4-26 帧延迟。
- AnimatedGif: repeatCount(2) 限制动画播放 3 次后停止
- AnimatedGif: 移除两阶段弹跳动画,改为 150ms 淡入
- README: 添加构建命令和产物路径
|
2026-05-25 22:43:45 +08:00 |
|
meyou
|
a84e1b9528
|
fix: 移除农历初一月份名称重复的后缀"月"
lunarMonth.getName() 返回的月份名称已包含"月"字,
如"三月"、"四月",无需再手动拼接。
|
2026-05-25 22:01:06 +08:00 |
|
|
|
bb0a72006d
|
revert: 回退 graphicsLayer 优化,实机 GPU 合成开销过大
graphicsLayer 创建的离屏 layer 在实体机上导致 slow draw commands 激增,
整体体验比重组更卡。回退以下改动:
- WeekRow: graphicsLayer → offset + alpha
- CalendarPager: graphicsLayer → alpha
- WeekPager: graphicsLayer → alpha
- YearGridView: graphicsLayer → alpha
- BottomCard: graphicsLayer → offset + alpha
- layoutReady: graphicsLayer → alpha
保留的优化:
- DayCell produceState 上移(42 协程 → 1 协程)
- remember 稳定化 lambda 和计算
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-25 17:25:22 +08:00 |
|
|
|
73b176a95e
|
perf: remember 稳定化 lambda 和计算,减少重组传播
- weekNumber: remember(selectedDate) 缓存 getIsoWeekNumber 结果
- onDateClick/onMonthChanged/shiftKindAt: remember 稳定化,避免每次重组创建新 lambda
- onRowHeightMeasured: remember 稳定化
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-25 16:58:46 +08:00 |
|