richarjiang
ea22901553
feat(background-task): 完善iOS后台任务系统并优化断食通知和UI体验
...
- 修复iOS后台任务注册时机问题,确保任务能正常触发
- 添加后台任务调试辅助工具和完整测试指南
- 优化断食通知系统,增加防抖机制避免频繁重调度
- 改进断食自动续订逻辑,使用固定时间而非相对时间计算
- 优化统计页面布局,添加身体指标section标题
- 增强饮水详情页面视觉效果,改进卡片样式和配色
- 添加用户反馈入口到个人设置页面
- 完善锻炼摘要卡片条件渲染逻辑
- 增强日志记录和错误处理机制
这些改进显著提升了应用的稳定性、性能和用户体验,特别是在iOS后台任务执行和断食功能方面。
2025-11-05 11:23:33 +08:00
richarjiang
635d835a50
feat(fasting): 完善断食通知系统并优化错误提示
...
在应用启动时添加断食通知初始化逻辑,改进错误消息提示,并新增后台任务支持断食通知同步。同时优化挑战加入后的数据刷新流程和会员卡片显示样式。
主要更改:
- 添加断食通知启动检测和初始化
- 改进断食通知错误消息,提供更详细的用户指导
- 新增断食通知后台任务处理
- 优化挑战加入后自动刷新详情和排名数据
- 调整会员价格字体大小以提升视觉效果
2025-11-03 14:13:49 +08:00
richarjiang
ce382794ba
style(membership): 调整会员卡片价格字体大小
2025-11-03 11:17:06 +08:00
richarjiang
16c2351160
feat: 移除目标管理功能模块
...
删除了完整的目标管理功能,包括目标创建、编辑、任务管理等相关页面和组件。同时移除了相关的API服务、Redux状态管理、类型定义和通知功能。应用版本从1.0.20升级到1.0.21。
2025-10-31 08:49:22 +08:00
richarjiang
7cd290d341
feat(membership): 重构会员系统架构并优化VIP卡片显示
...
- 创建独立的会员服务模块 services/membership.ts,统一管理会员计划元数据和工具函数
- 新增 membershipSlice Redux状态管理,集中处理会员数据和状态
- 重构个人中心VIP会员卡片,支持动态显示会员计划和有效期
- 优化会员购买弹窗,使用统一的会员计划配置
- 改进会员数据获取流程,确保状态同步和一致性
2025-10-29 16:08:58 +08:00
richarjiang
fcf1be211f
feat(vip): 实现VIP服务权限控制和食物识别功能限制
...
- 添加VIP服务权限检查hook,支持免费使用次数限制
- 为食物识别功能添加登录验证和VIP权限检查
- 优化RevenueCat用户标识同步逻辑
- 修复会员购买状态检查的类型安全问题
- 为营养成分分析添加登录验证
2025-10-29 09:44:30 +08:00
richarjiang
eaa7f7275c
feat(ui): 调整个人中心和会员购买界面布局
...
- 将推送通知设置移至开发者选项section
- 移除会员购买按钮的协议接受状态限制
- 优化购买按钮的禁用条件逻辑
2025-10-28 11:16:32 +08:00
richarjiang
71a8bb9740
feat(toast): 实现原生Toast系统并优化会员购买错误处理
...
- 新增iOS原生Toast模块(NativeToastManager),提供毛玻璃风格的Toast展示
- 重构ToastContext为原生模块调用,添加错误边界和回退机制
- 优化会员购买流程的错误处理,使用RevenueCat标准错误码
- 调整购买按钮高度和恢复购买按钮字体大小,改善UI体验
- 移除不必要的延迟和注释代码,提升代码质量
2025-10-28 11:04:34 +08:00
richarjiang
db8b50f6d7
feat(membership): 重构会员权益对比表并优化购买界面布局
...
- 重构权益对比数据结构,支持独占、有限、无限三种权限类型
- 新增权限图标显示逻辑,区分VIP和普通用户权限状态
- 优化会员卡片布局,采用三段式布局提升视觉效果
- 实现悬浮购买按钮,支持Liquid Glass毛玻璃效果
- 增强购买流程验证,添加自动选择产品和详细错误处理
- 调整界面间距和样式,提升整体用户体验
2025-10-27 14:43:19 +08:00
richarjiang
82edb2593c
feat(membership): 重构会员购买界面并添加图标库使用规范
...
- 将 MaterialIcons 替换为 Ionicons 以保持图标库一致性
- 重新设计会员购买界面,采用分段卡片布局和权益对比表格
- 添加 Liquid Glass 兼容的悬浮返回按钮
- 优化套餐卡片样式,使用渐变背景和标签展示
- 添加会员权益对比功能,清晰展示 VIP 与普通用户差异
- 更新任务文档,记录图标库使用规范和按钮组件 Liquid Glass 兼容性实现模式
2025-10-27 08:19:15 +08:00
richarjiang
2e11f694f8
feat(membership): 实现会员系统和购买流程
...
- 创建 MembershipModalContext 统一管理会员弹窗
- 优化 MembershipModal 产品套餐展示和购买流程
- 集成 RevenueCat SDK 并初始化内购功能
- 在个人中心添加会员 Banner,引导非会员用户订阅
- 修复日志工具的循环引用问题,确保错误信息正确记录
- 版本更新至 1.0.20
新增了完整的会员购买流程,包括套餐选择、购买确认、购买恢复等功能。会员 Banner 仅对非会员用户展示,已是会员的用户不会看到。同时优化了错误日志记录,避免循环引用导致的序列化失败。
2025-10-24 09:16:04 +08:00
richarjiang
b75a8991ac
feat(auth): 添加登录验证到食物记录相关功能
...
- 在食物拍照、语音记录和营养成分分析功能中添加登录验证
- 使用 ensureLoggedIn 方法确保用户已登录后再调用服务端接口
- 使用 pushIfAuthedElseLogin 方法处理需要登录的页面导航
- 添加新的营养图标资源
- 在路由常量中添加 FOOD_CAMERA 路由定义
- 更新 Memory Bank 任务文档,记录登录验证和路由常量管理的实现模式
2025-10-16 17:45:52 +08:00
richarjiang
5013464a2c
feat(nutrition): 添加营养成分表拍照分析功能
...
新增营养成分表拍照识别功能,用户可通过拍摄食物包装上的成分表自动解析营养信息:
- 创建成分表分析页面,支持拍照/选择图片和结果展示
- 集成新的营养成分分析API,支持图片上传和流式分析
- 在营养雷达卡片中添加成分表分析入口
- 更新应用版本至1.0.19
2025-10-16 12:16:08 +08:00
richarjiang
d39a32c0d8
feat(fasting): add auto-renewal and reset functionality for fasting plans
...
- Implement auto-renewal logic for completed fasting cycles using dayjs
- Add reset button with information modal in FastingOverviewCard
- Configure iOS push notifications for production environment
- Add expo-media-library and react-native-view-shot dependencies
- Update FastingScheduleOrigin type to include 'auto' origin
2025-10-15 19:06:18 +08:00
richarjiang
435f5cc65c
feat: 适配 headerbar ios26
2025-10-14 16:31:19 +08:00
richarjiang
cf069f3537
feat(fasting): 重构断食通知系统并增强可靠性
...
- 新增 useFastingNotifications hook 统一管理通知状态和同步逻辑
- 实现四阶段通知提醒:开始前30分钟、开始时、结束前30分钟、结束时
- 添加通知验证机制,确保通知正确设置和避免重复
- 新增 NotificationErrorAlert 组件显示通知错误并提供重试选项
- 实现断食计划持久化存储,应用重启后自动恢复
- 添加开发者测试面板用于验证通知系统可靠性
- 优化通知同步策略,支持选择性更新减少不必要的操作
- 修复个人页面编辑按钮样式问题
- 更新应用版本号至 1.0.18
2025-10-14 15:05:11 +08:00
richarjiang
e03b2b3032
feat(fasting): 新增轻断食功能模块
...
新增完整的轻断食功能,包括:
- 断食计划列表和详情页面,支持12-12、14-10、16-8、18-6四种计划
- 断食状态实时追踪和倒计时显示
- 自定义开始时间选择器
- 断食通知提醒功能
- Redux状态管理和数据持久化
- 新增tab导航入口和路由配置
2025-10-13 19:21:29 +08:00
richarjiang
971aebd560
feat(workout): 新增锻炼结束监听和个性化通知功能
...
实现了iOS HealthKit锻炼数据实时监听,当用户完成锻炼时自动发送个性化鼓励通知。包括锻炼类型筛选、时间范围控制、用户偏好设置等完整功能,并提供了测试工具和详细文档。
2025-10-13 10:05:02 +08:00
12883c5410
perf: 删除不必要的代码
2025-10-11 21:55:39 +08:00
ed3a178aa0
feat(workout): 优化心率图表性能并移除每日总结通知功能
...
- 重构心率数据采样算法,采用智能采样保留峰值、谷值和变化率大的点
- 减少心率图表最大数据点数和查询限制,提升渲染性能
- 移除图表背景线样式,简化视觉呈现
- 完全移除每日总结通知功能相关代码和调用
2025-10-11 21:53:18 +08:00
richarjiang
d43d8c692f
feat(workout): 重构锻炼模块并新增详细数据展示
...
- 移除旧的锻炼会话页面和布局文件
- 新增锻炼详情模态框组件,支持心率区间、运动强度等详细数据展示
- 优化锻炼历史页面,增加月度统计卡片和交互式详情查看
- 新增锻炼详情服务,提供心率分析、METs计算等功能
- 更新应用版本至1.0.17并调整iOS后台任务配置
- 添加项目规则文档,明确React Native开发规范
2025-10-11 17:20:51 +08:00
79ddd41a49
feat(workout): 新增锻炼历史记录功能与健康数据集成
...
- 新增锻炼历史页面,展示最近一个月的锻炼记录详情
- 添加锻炼汇总卡片组件,在统计页面显示当日锻炼数据
- 集成HealthKit锻炼数据获取,支持多种运动类型和详细信息
- 完善锻炼数据处理工具,包含统计分析和格式化功能
- 优化后台任务,随机选择挑战发送鼓励通知
- 版本升级至1.0.16
2025-10-02 22:13:59 +08:00
richarjiang
3e6f55d804
feat(challenges): 排行榜支持单位显示与健身圆环自动上报进度
...
- ChallengeRankingItem 新增 unit 字段,支持按单位格式化今日进度
- FitnessRingsCard 监听圆环闭合,自动向进行中的运动挑战上报 1 次进度
- 过滤已结束挑战,确保睡眠、喝水、运动进度仅上报进行中活动
- 移除 StressMeter 调试日志与 challengesSlice 多余打印
2025-09-30 14:37:15 +08:00
richarjiang
b0602b0a99
feat(challenges): 新增挑战详情页与排行榜及轮播卡片交互
...
- 重构挑战列表为横向轮播,支持多进行中的挑战
- 新增挑战详情页 /challenges/[id]/index 与排行榜 /challenges/[id]/leaderboard
- ChallengeProgressCard 支持小时级剩余时间显示
- 新增 ChallengeRankingItem 组件展示榜单项
- 排行榜支持分页加载、下拉刷新与错误重试
- 挑战卡片新增已结束角标与渐变遮罩
- 加入/退出挑战时展示庆祝动画与错误提示
- 统一背景渐变色与卡片阴影细节
2025-09-30 11:33:24 +08:00
richarjiang
d32a822604
feat(challenges): 支持即将开始与已结束挑战的禁用态及睡眠挑战自动进度上报
2025-09-30 10:21:50 +08:00
richarjiang
d74bd214ed
feat(challenges): 登录态守卫与进度条动画优化
...
- 在 _layout 中仅当已登录时才拉取挑战列表,避免未授权请求
- 挑战详情页加入 ensureLoggedIn 守卫,未登录时跳转登录
- ChallengeProgressCard 新增分段进度动画,提升视觉反馈
- 升级版本号至 1.0.15
2025-09-29 15:39:52 +08:00
richarjiang
970a4b8568
feat(challenges): 新增 ChallengeProgressCard 组件并接入喝水挑战进度上报
...
- 抽离进度卡片为独立组件,支持主题色自定义与复用
- 挑战列表页顶部展示进行中的挑战进度
- 喝水记录自动上报至关联的水挑战
- 移除旧版 challengeSlice 与冗余进度样式
- 统一使用 value 字段上报进度,兼容多类型挑战
2025-09-29 15:14:59 +08:00
richarjiang
a014998848
feat(water): 重构饮水模块并新增自定义提醒设置功能
...
- 新增饮水详情页面 `/water/detail` 展示每日饮水记录与统计
- 新增饮水设置页面 `/water/settings` 支持目标与快速添加配置
- 新增喝水提醒设置页面 `/water/reminder-settings` 支持自定义时间段与间隔
- 重构 `useWaterData` Hook,支持按日期查询与实时刷新
- 新增 `WaterNotificationHelpers.scheduleCustomWaterReminders` 实现个性化提醒
- 优化心情编辑页键盘体验,新增 `KeyboardAvoidingView` 与滚动逻辑
- 升级版本号至 1.0.14 并补充路由常量
- 补充用户偏好存储字段 `waterReminderEnabled/startTime/endTime/interval`
- 废弃后台定时任务中的旧版喝水提醒逻辑,改为用户手动管理
2025-09-26 11:02:17 +08:00
richarjiang
badd68c039
fix:修复心情日历无法打开的问题
2025-09-26 08:54:02 +08:00
richarjiang
94899fbc5c
feat(ui): 添加设置弹窗功能并重构水摄入设置界面
...
- 添加设置弹窗状态管理
- 实现设置按钮点击处理函数
- 在头部添加设置图标按钮
- 移除原有的设置行界面,改为弹窗形式展示
- 添加新的样式定义支持设置弹窗布局
- 优化设置项的展示和交互体验
2025-09-25 18:56:01 +08:00
richarjiang
79ab354f31
feat: 新增基础代谢详情页面并优化HRV数据获取逻辑
...
- 新增基础代谢详情页面,包含图表展示、数据缓存和防抖机制
- 优化HRV数据获取逻辑,支持实时、近期和历史数据的智能获取
- 移除WaterIntakeCard和WaterSettings中的登录验证逻辑
- 更新饮水数据管理hook,直接使用HealthKit数据
- 添加饮水目标存储和获取功能
- 更新依赖包版本
2025-09-25 14:15:42 +08:00
richarjiang
83e534c4a7
feat(health): 优化HRV数据质量分析与获取逻辑
...
- 新增HRV质量评分算法,综合评估数值有效性、数据源可靠性与元数据完整性
- 实现最佳质量HRV值自动选取,优先手动测量并过滤异常值
- 扩展TS类型定义,支持完整HRV数据结构及质量分析接口
- 移除StressMeter中未使用的时间格式化函数与注释代码
- 默认采样数提升至50条,增强质量分析准确性
2025-09-24 18:29:58 +08:00
richarjiang
6303795870
feat: 支持围度数据图表
2025-09-24 18:04:12 +08:00
028ef56caf
feat: 修复健康数据
2025-09-24 09:43:17 +08:00
richarjiang
e6dfd4d59a
feat(health): 重构营养卡片数据获取逻辑,支持基础代谢与运动消耗分离
...
- 新增 fetchCompleteNutritionCardData 异步 action,统一拉取营养、健康与基础代谢数据
- NutritionRadarCard 改用 Redux 数据源,移除 props 透传,自动根据日期刷新
- BasalMetabolismCard 新增详情弹窗,展示 BMR 计算公式、正常区间及提升策略
- StepsCard 与 StepsCardOptimized 引入 InteractionManager 与动画懒加载,减少 UI 阻塞
- HealthKitManager 新增饮水读写接口,支持将饮水记录同步至 HealthKit
- 移除 statistics 页面冗余 mock 与 nutrition/health 重复请求,缓存时间统一为 5 分钟
2025-09-23 10:01:50 +08:00
richarjiang
d082c66b72
feat:支持身体围度数据展示
2025-09-22 10:58:23 +08:00
richarjiang
fb85a5f30c
refactor(health): remove basalEnergyBurned from global state and move to local component
...
Remove basalEnergyBurned from global health data structure and refactor BasalMetabolismCard to fetch its own data locally. This decouples the component from global state and improves data locality.
- Remove basalEnergyBurned from HealthData interface and health utilities
- Update BasalMetabolismCard to use selectedDate prop and fetch data locally
- Simplify statistics screen by removing unused basalMetabolism variable
- Update nutrition radar card to use activeCalories only for burned calories calculation
2025-09-19 17:01:45 +08:00
richarjiang
9bcea25a2f
feat(auth): 为未登录用户添加登录引导界面
...
为目标页面、营养记录、食物添加等功能添加登录状态检查和引导界面,确保用户在未登录状态下能够获得清晰的登录提示和指引。
- 在目标页面添加精美的未登录引导界面,包含渐变背景和登录按钮
- 为食物记录相关组件添加登录状态检查,未登录时自动跳转登录页面
- 重构血氧饱和度卡片为独立数据获取,移除对外部数据依赖
- 移除个人页面的实验性SwiftUI组件,统一使用原生TouchableOpacity
- 清理统计页面和营养记录页面的冗余代码和未使用变量
2025-09-19 15:52:24 +08:00
richarjiang
ccfccca7bc
feat(health): 完善HealthKit权限管理和数据获取系统
...
- 重构权限管理,新增SimpleEventEmitter实现状态监听
- 实现完整的健身圆环数据获取(活动热量、锻炼时间、站立小时)
- 优化组件状态管理,支持实时数据刷新和权限状态响应
- 新增useHealthPermissions Hook,简化权限状态管理
- 完善iOS原生代码,支持按小时统计健身数据
- 优化应用启动时权限初始化流程,避免启动弹窗
BREAKING CHANGE: FitnessRingsCard组件API变更,移除手动传参改为自动获取数据
2025-09-19 14:16:11 +08:00
richarjiang
6f0c872223
feat: 支持原生模块健康数据
2025-09-18 09:51:37 +08:00
richarjiang
6b7776e51d
feat: 支持 healthkit
2025-09-17 18:05:11 +08:00
richarjiang
63ed820e93
feat(ui): 统一健康卡片标题图标并优化语音录音稳定性
...
- 为所有健康数据卡片添加对应功能图标,提升视觉一致性
- 将“小鱼干”文案统一为“能量值”,并更新获取说明
- 语音录音页面增加组件卸载保护、错误提示与资源清理逻辑
- 个人页支持毛玻璃按钮样式,默认用户名置空
- 新增血氧、饮食、心情、压力、睡眠、步数、体重等图标资源
- 升级 react-native-purchases 至 9.4.3
- 移除 useAuthGuard 调试日志
2025-09-16 09:35:50 +08:00
richarjiang
281149201b
feat(personal): 持久化开发者模式状态并优化登录后数据加载
...
- 新增 kv-store 持久化开发者模式开关,避免每次冷启动丢失
- 登录成功后立即拉取用户资料,减少首页空数据闪烁
- 修复体重卡片在未登录时重复请求的问题
- 移除 ActivityHeatMap 与 userSlice 中的调试日志
- useAuthGuard 增加 token 调试输出(临时)
2025-09-15 16:24:38 +08:00
richarjiang
91df01bd79
feat(auth): 预加载用户数据并优化登录状态同步
...
- 在启动屏预加载用户 token 与资料,避免首页白屏
- 新增 rehydrateUserSync 同步注入 Redux,减少异步等待
- 登录页兼容 ERR_REQUEST_CANCELED 取消场景
- 各页面统一依赖 isLoggedIn 判断,移除冗余控制台日志
- 步数卡片与详情页改为实时拉取健康数据,不再缓存至 Redux
- 后台任务注册移至顶层,防止重复定义
- 体重记录、HeaderBar 等 UI 细节样式微调
2025-09-15 09:56:42 +08:00
55d133c470
feat: 更新 UI 样式以及消息通知
2025-09-14 21:41:33 +08:00
ab87bddd51
fix: 修复压力数据
2025-09-12 22:51:14 +08:00
richarjiang
1b76cc305a
feat(ui): 实现原生标签页与玻璃效果按钮组件
...
引入 NativeTabs 替代默认 Tabs 以支持原生标签栏样式,并添加 GlassButton 组件实现毛玻璃效果按钮。
移除对 useBottomTabBarHeight 的依赖,统一使用固定底部间距 60。
重构头像上传逻辑,使用新的 uploadImage API 替代 COS 直传方案。
更新 expo-router 至 ~6.0.1 版本以支持不稳定特性。
2025-09-12 15:48:58 +08:00
richarjiang
a84c026599
feat(ui): 更新应用品牌名称为 Out Live 并优化睡眠详情页默认数据展示
...
- 将 Sealife 更名为 Out Live(登录页、隐私弹窗)
- 睡眠详情页无数据时显示 "--" 替代固定默认值
- 移除睡眠阶段卡片中的质量标签与总览徽章
- 修复体重历史卡片依赖监听字段与跳转路由
- 调整喝水提醒后台任务时间范围为 8-21 点
- 标签栏按钮新增 activeOpacity=1 禁用点击透明度变化
2025-09-12 09:59:01 +08:00
richarjiang
3a4a55b78e
feat: 新增语音记录饮食功能与开发者调试模块
...
- 集成 @react-native-voice/voice 实现中文语音识别,支持“一句话记录”餐食
- 新增语音录制页面,含波形动画、音量反馈与识别结果确认
- FloatingFoodOverlay 新增语音入口,打通拍照/库/语音三种记录方式
- 添加麦克风与语音识别权限描述(iOS Info.plist 与 Android manifest)
- 实现开发者模式:连续三次点击用户名激活,含日志查看、导出与清除
- 新增 logger 工具类,统一日志存储(AsyncStorage)与按级别输出
- 重构 BackgroundTaskManager 为单例并支持 Promise 初始化,避免重复注册
- 移除 sleep-detail 多余渐变背景,改用 ThemedView 统一主题
- 新增通用 haptic 反馈函数,支持多种震动类型(iOS only)
- 升级 expo-background-task、expo-notifications、expo-task-manager 至兼容版本
2025-09-11 19:11:09 +08:00
richarjiang
62690ee3fc
refactor(sleep): 重构睡眠数据获取逻辑,移除冗余代码并优化组件结构
...
- 从 healthSlice 和 health.ts 中移除 sleepDuration 字段及相关获取逻辑
- 将 SleepCard 改为按需异步获取睡眠数据,支持传入指定日期
- 睡眠详情页改为通过路由参数接收日期,支持查看历史记录
- 移除 statistics 页面对 sleepDuration 的直接依赖,统一由 SleepCard 管理
- 删除未使用的 SleepStageChart 组件,简化页面结构
2025-09-11 09:08:51 +08:00