lc
|
b52db87ddf
|
feat: 排行榜虚拟领奖台 + 勋章对齐与尺寸统一
- 领奖台数据不足 3 名时显示虚拟空位(虚线轮廓+虚位以待)
- 领奖台勋章与昵称对齐改为等高盒结构性修复(移除 margin 盲推)
- 全 app 成就勋章图标尺寸统一为 30rpx(前三名/列表/设置页/记录页一致)
- 勋章 SVG 按包围盒精确居中(utils/icons.js)
- 设置页/记录页勋章展示配套调整
|
2026-08-04 11:23:48 +08:00 |
|
lc
|
bce796d893
|
feat: 首页按钮样式调整(小圆角/并排/高度对齐)
- 主按钮与自由/循环训练按钮圆角统一为 16rpx(直角→折中方案)
- 自由训练/循环训练两个次按钮改为并排一行,文字精简为「自由训练」「循环训练」
- 两个次按钮 size 由 md 改为 xl,与主按钮高度一致
- 新增 preview-buttons.html 对照预览
- 更新工作记忆
|
2026-08-03 17:04:05 +08:00 |
|
lc
|
6ff70971d8
|
docs: 工作日志补记本次提交与 tts 云函数部署待办
|
2026-08-03 16:35:33 +08:00 |
|
lc
|
3532d0111b
|
feat: 循环训练模式 + 语音补全 / 屏幕常亮 / 卡片渲染修复
循环训练(circuit)
- 新增 utils/circuitTimer.js 状态机: 工作->休息->...->完成, stop() 返回有效撑总秒(不含休息)
- 首页新增「循环训练·分组练习」入口 + stepper 配置弹窗
- 配置本地持久化 circuit_config(每组时长/组数/休息/每周目标), 下次自动预填
- 记录以 planId:'circuit' + mode:'circuit' 落库, duration 语义不变 -> 排行榜/统计/每日计划进度零改动
- 记录页展示「循环 N组xMs·休Rs」
计时器顶部循环进度面板
- 组进度点阵按组数等分铺满(flex:1 1 0, 去掉 max-width 封顶), 当前组以增高而非加宽强调
- 大号「X/Y 组」+ 四态阶段徽章(撑住/休息中/准备开始/已暂停) + 累计秒数副行
- 状态灯用纯 CSS 圆点(SVG 图标颜色烤死在 data URI 里, CSS 改不动)
- 超过 15 组自动降级为线性进度条; 面板不设固定高度, 规避真机大字体档裁字
修复: 循环训练全程无语音
- 根因: circuit 的 onTick 走 _circuitCue(只有震动), 从未调用 _remind
- 接入整场进度播报, 基准为 sets x holdPerSet(而非每组), 避免 4 组播 4 次「已完成一半」
- 新增 restStart/nextSet/lastSet 三条不含数字的词条, 客户端与 tts 云函数词表同步
- 修复必然撞车的时序: 偶数组时 halfway 与休息切换同一 tick, 加 2.6s 优先窗口让位
- 防吵闸门: 每组 <10s 不播过场语音, 休息 <5s 不播; 预载按模式取词条
训练期间屏幕常亮
- wx.setKeepScreenOn: onStart 开 / onUnload 关 / onShow 在 isRunning 时重新武装
- 切后台再回来该标志会被系统清掉, 故必须重新武装, 否则后半程丢语音与震动
- 低基础库与 Android 省电模式静默降级, 不弹 toast
修复: 首页打卡卡片左侧两个竖条
- 根因: ui-card 宿主节点无 display 声明为 inline, 页面侧加的 border 被打断成两个零宽行盒碎片
- ui-card 加 :host{display:block}, margin-bottom 从内部 view 上提到宿主
- 高亮由 border 改为 box-shadow spread 描边(不占布局, 无跳动) + 补 border-radius
- 连带修复失效的交错入场: nth-child 跨组件边界恒匹配 1, 改为 index 属性驱动内联 animation-delay, 14 处调用点补序号
注意: tts 云函数需重新部署, 否则新增的 3 条词条返回 Unknown prompt key(静默降级不报错)
|
2026-08-03 16:34:22 +08:00 |
|
lc
|
76cd2b6c0f
|
fix: 三个 P2 小修(榜单离线兜底/同天连胜文案/热力图日期解析)
- leaderboard.js _applyLocal 离线兜底补 subText(N次),与云端路径对齐
- timer.js _detectCelebrationLevel 增加 lastIsToday 判断,修复同天二次训练连胜文案虚高 1 天
- calendar-heatmap.js 用 util.dateOnly 归一化后再取'日',修复脆弱的 split 解析
|
2026-07-31 10:23:44 +08:00 |
|
lc
|
deaff72763
|
refactor(index): 去掉首页底部 toolbar 上方的小提示卡片
- 删除首页随机姿势提示卡片(homeTip):wxml 移除 tip-card 整块、wxss 清理 .tip-card/.tip-icon/.tip-text、js 移除 homeTip 逻辑
- config.postureTips 仍被训练页复用,保留不动
|
2026-07-31 09:42:11 +08:00 |
|
lc
|
1589d6c387
|
feat(leaderboard): 新增耐力榜(全局单次最久 top10) + 领奖台日期两行 + 顶部哲理文案
- 云函数支持 endurance 周期:遍历全部 records 取 max(duration) 及 bestDate
- 客户端新增耐力榜 tab(maxRank=10),未上榜时在底部 my-bar 显示最佳成绩+产生时间
- 领奖台底座(耐力榜)单次日期拆成「日期+时间」两行,统一三阶底座高度修复第3名贴顶
- 领奖台顶部新增哲理文案,配置进 config.js(leaderboardPodiumSlogan),斜体金句卡片样式
|
2026-07-31 09:30:30 +08:00 |
|
lc
|
fca3e32d04
|
优化记录页趋势分析展示
|
2026-07-29 14:46:38 +08:00 |
|
lc
|
19b0c4d4c8
|
修复趋势图表加载与比例展示
|
2026-07-29 14:18:45 +08:00 |
|
lc
|
1372ec19b8
|
新增勋章图标替换设计说明
|
2026-07-29 14:17:54 +08:00 |
|
lc
|
903951aee0
|
优化勋章分段进度展示
|
2026-07-29 11:45:20 +08:00 |
|
lc
|
11d49a26df
|
修复主题恢复与勋章状态
|
2026-07-29 11:31:25 +08:00 |
|
lc
|
3db170c4b9
|
memory文档
|
2026-07-29 11:05:03 +08:00 |
|
lc
|
17727ab1dd
|
修复云端数据一致性问题
|
2026-07-29 11:03:44 +08:00 |
|
lc
|
a3dd080b6f
|
feat(leaderboard): 预计算快照消除首开延迟
- leaderboard 云函数重写为快照架构:定时触发离线算日/月/年三榜写入
leaderboard_snapshot 集合(约 50ms 单次 get),请求默认读快照,force 才
实时重算并回写;快照缺失/过期自动回退实时路径,老客户端零改动兼容
- config.json 加每 4 分钟定时器 snapshotTimer
- _persistSnapshot 修复 wx-server-sdk 写操作需 { data: {...} } 包裹的坑
(裸 set(data) 报 parameter.data should be object instead of undefined)
- app.js onLaunch 预热排行榜,覆盖"开 App→点榜"常见路径
- leaderboard.js 更新过时"全表扫描 2-3s"注释
|
2026-07-28 17:41:08 +08:00 |
|
lc
|
926dffad95
|
feat(records): 新增 80 天勋章图标
- utils/icons.js 新增 star 五角星路径及 starWhite 解锁态白星
- config.js 80 天「洪荒神登」改用独立 star 图标(原误用 diamond 与 60 天撞图)
- 修正勋章配置处过时注释(name 不再一律累计措辞)
|
2026-07-28 16:40:53 +08:00 |
|
lc
|
daed0cd719
|
feat(index): 首页随机姿势提示 + 移除冗余文案
- homeTip 从 config.postureTips 随机取一条,每次进首页换一条
- 移除圆环下方"平板支撑"单位文字,调整 ring 间距
|
2026-07-28 16:25:55 +08:00 |
|
lc
|
c5ae332cbe
|
feat(records): 训练勋章 UI 改造
- 勋章图标从 emoji 改为矢量 SVG 线性图标(utils/icons.js 新增 bolt/moon/diamond 路径及 white 变体)
- 命名改为累计语义(一周累计/半月累计/月度累计/双月累计/百日累计),并标注"非连续打卡"
- 进度条改回等距节点,解锁时填充正好抵达节点、满级满格
- 新增单枚解锁庆祝:持久化已见解锁集合,进入页面弹 toast + 节点 pop 动画
- 已解锁节点常驻显示勋章名 + 右上角 ✓ 角标,直观体现"已拥有"
- utils/storage.js 新增 totalDays(累计去重训练日),为勋章统计提供数据源
|
2026-07-28 16:25:55 +08:00 |
|
lc
|
75bad477b1
|
feat(records): 训练趋势图表 + 列表时长改 MM:SS
- 新增 trend-chart 柱状图组件(CSS,近7天/近6月切换)
- records 页加训练趋势卡片(统计卡片后)
- 训练记录列表时长从秒数改为 MM:SS 显示
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 11:19:07 +08:00 |
|
lc
|
faa49cff1c
|
feat(leaderboard): 下拉刷新动画图标
下拉刷新时顶部显示主题色旋转 spinner + "刷新中…"指示器,
仅下拉刷新显示(pullRefreshing),后台静默刷新保持无感。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 09:20:43 +08:00 |
|
lc
|
b42d080826
|
feat(leaderboard): 训练完强刷 + 下拉刷新 force
- 云函数 _fetchLatestByOpenid 支持 force 跳过实例缓存重新扫描
- 训练完成设 _lb_force_refresh 标志,下次打开排行榜强刷,新数据立即可见
- 下拉刷新带 force=true,拉取最新数据
- 平时常规打开仍走 5min 缓存 + 客户端乐观缓存,不增加无谓扫描
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 08:47:41 +08:00 |
|
lc
|
e2becc24aa
|
feat(ui): 排行榜与首页打卡卡片多项优化
排行榜性能:
- 客户端乐观缓存:进页面/切周期秒显旧数据,后台静默刷新,消除 2-3s 空白
- 云函数实例缓存 TTL 60s -> 5min,降低全表扫描频率
排行榜 UI:
- 空状态重设计:奖杯光环插画(径向光晕 + 闪光漂浮)
- 领奖台 slot 撑满对齐列表、金银铜底座配色、角标与昵称间距修复、底线对齐
首页打卡卡片:
- 火焰光晕脉动 + 72rpx 大数字 + 分段进度格子
- 计划 >10 天时进度退化为里程碑连续条
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-27 17:28:53 +08:00 |
|
liucheng
|
4b5f195a18
|
fix(index): 修复预设时长方块点击时布局跳变
preset-item 默认无 border,selected 加 2rpx border 致外宽变化,flex-wrap
重新换行(3行/2行/2列跳变)。加 box-sizing:border-box + 默认透明 border
占位,selected 只变色不改变外宽,布局稳定。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 15:13:19 +08:00 |
|
liucheng
|
03ea5881be
|
fix(index): 修复选预设时长时页面向上跳动
input 聚焦键盘弹起时点预设,onSelectPreset 清空 customInput 触发
adjust-position 重算导致页面上跳。点预设时先失焦 input 收键盘。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 15:09:31 +08:00 |
|
liucheng
|
983ae1b9cb
|
fix: 缓存击穿/play竞态/onUnload泄漏/清除数据UI/统计NaN
- leaderboard 云函数: _fetchLatestByOpenid 加 in-flight promise,并发请求复用同一次扫描,防缓存击穿
- voice: play 加序列号,丢弃过期播放,避免旧语音截断新语音
- timer: onUnload 补取消 _completionCountUp,系统返回手势不再泄漏动画定时器
- settings: 清除数据 setData 补 voiceGender/vibrateIntensity 重置,避免 UI 与存储不一致
- storage: getTotalStats 对 r.duration 防御(Number||0),避免脏数据产生 NaN 传染
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 15:01:51 +08:00 |
|
liucheng
|
41aa81083f
|
fix: tts fileID 校验归属 + 排行榜不下发他人 openid
- tts: client 传的 fileID 校验必须属于 tts-cache 目录,防伪造 cloud:// 换取他人私有文件
- leaderboard: ranked 去掉他人 openid 改用 isMe 标记,wxml 用 item.isMe 高亮
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:59:15 +08:00 |
|
liucheng
|
88a2c349f4
|
fix(tts): 服务端 tts_cache 去重,防传 null 强制重合成刷 TTS 账单
- 合成前先查 tts_cache 集合,命中则直接 getTempFileURL,不重复合成
- 合成后写 tts_cache,相同参数组合只合成一次
- 集合不存在时 catch 走原合成路径不崩(需在云开发控制台建 tts_cache 集合启用去重)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:55:23 +08:00 |
|
liucheng
|
1c140bd503
|
fix: 修复 4 个正确性问题(分享秒数/主题同步/云推送定位/streak重算)
- timer: 完成弹窗存实际时长 completionActualElapsed,分享改用它,避免用动画值导致秒数错误
- theme: setTheme 补 _markLocalChanged,避免云恢复覆盖未同步的主题改动
- cloud: _doPush 重定位查询补 orderBy(updatedAt desc),与 pullAll 一致,避免命中最旧文档
- storage: deleteRecord 改用 recomputeStreak,修复删连续链中间某天 streak 虚高
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:51:09 +08:00 |
|
liucheng
|
b47a48259e
|
fix: 修复审查发现的 4 个高优先级问题
- plan: getTodayTarget 补 customPlans 参数,timer/index 调用点传值,修复自定义计划每日目标失效
- leaderboard: fetchRank 加请求序列号丢弃过期响应,修复快速切换周期竞态
- leaderboard 云函数:遍历记录加防御(r.date/duration/数组校验),避免单条脏数据崩溃全榜
- tts: _upload cloudPath 补 volume/speed,避免不同音量语速音频互相覆盖
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:48:09 +08:00 |
|
liucheng
|
c1e0c78861
|
chore(config): 版本号 v3.0 -> v3.01
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:27:56 +08:00 |
|
liucheng
|
bafc4abbc8
|
fix(voice): 修复 play 赋值用了未定义的 url 变量,导致语音无声
上轮本地缓存改造时 play 内变量由 url 改名为 src,但 ctx.src = url
漏改,ctx.src 被设为 undefined,所有语音静默不播。改为 ctx.src = src。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:26:01 +08:00 |
|
liucheng
|
83077648fe
|
perf(voice): app onLaunch 预载语音,进一步消除首段延迟
- app.js onLaunch 调 voice.preload(),app 启动即后台下载全部语音
- 与 timer 页 onLoad 预载形成双保险(已缓存条目 no-op)
- 仅语音引导开启时预载,在 cloud.init 之后调用
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:22:29 +08:00 |
|
liucheng
|
16924d31db
|
perf(voice): 语音本地文件缓存 + 预加载,消除播放延迟
- 新增本地文件缓存层:downloadFile + saveFileSync 存持久本地文件,跨重启命中即出声
- _resolveSrc 三层优先:本地文件 -> 云函数 audioUrl -> 下载存本地
- 新增 preload(),timer 页 onLoad 后台预载全部语音
- 文件被清理自动回退重下载,下载失败回退临时 url
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:21:04 +08:00 |
|
liucheng
|
e682f07892
|
fix(leaderboard): 修复加载期空白页,加 loading 图标
- leaderboard.json 未注册 ui-skeleton,骨架屏不渲染致 loading 期空白
- 注册 ui-skeleton,骨架屏恢复 shimmer
- 骨架屏上方加主题色旋转加载图标 + "加载中…"
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 14:21:04 +08:00 |
|
liucheng
|
ed7029faf9
|
feat(timer): 训练超时与完成展示优化 (v3.0)
- 超时后圆环底环变绿,中心改显总训练时长(MM:SS 实时涨),移除 +Xs 小徽章
- 完成弹窗成绩由纯秒数改为分秒(如 1分23秒),>=60s 时缩字号防撑破卡片
- 修复结束确认弹窗停留期间计时器未暂停导致训练时长虚增:onStop 暂停、取消恢复、确认取暂停值
- progress-ring 新增 elapsed prop,remaining=0 时中心切显总时长
- 清理废弃的 overtime 字段与 .overtime-badge 样式
- 版本号 v2.9 -> v3.0,更新日期
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 11:36:32 +08:00 |
|
liucheng
|
e712741425
|
feat(share): 启用全站系统分享 + 完善分享文案配置
- 各 Page 补齐 onShareAppMessage/onShareTimeline,修复右上角转发/朋友圈按钮灰色
- ui-btn 透传 open-type,完成弹窗接入分享按钮
- config.share 集中维护文案,动态标题用 titleTemplate 占位符
- leaderboard 的 myEntry.rank 缺失时回退静态标题,避免出现"排第 undefined"
- 完成弹窗分享按钮高度对齐 88rpx,与同排按钮等高
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-25 11:03:02 +08:00 |
|
lc
|
3e1d3bd05e
|
fix(settings): 关于页直接展示公众号名称,去除复制链接引导
- config.js: articleUrl 替换为 officialAccount: '爱咖啡的人'
- settings: 关于页「功能介绍」改为「公众号」直接展示名称,点击复制名称便于微信搜索关注
- 移除复制链接的底部 sheet 弹窗及对应样式
|
2026-07-22 10:21:31 +08:00 |
|
lc
|
6176f2c341
|
feat(ui): 记录页月份联动与多项 UI 美化/修复
- records: 底部列表与月份选择器联动,新增 [本月|最近] 分段控件;标题/空态随模式切换
- leaderboard: 领奖台布局(冠军居中+皇冠)、次数标注于底座且三档水平对齐;头像 cloud:// 批量预解析提速(云函数需重新部署)
- index/timer: 主色底图标改白色变体修复隐形;目标数字按微信字体缩放补偿真机遮挡
- settings: 配色方案横滑渐变色卡;头像上传前压缩至 200px
- theme: 新增 teal 主题;暗黑背景统一对齐
- 圆形头像双保险(image 自身 border-radius)修复月/年榜方图
注: cloudfunctions/leaderboard 改动须在开发者工具重新部署才生效。
|
2026-07-22 09:36:22 +08:00 |
|
lc
|
70b87d424d
|
perf(theme): onLaunch 提前设导航栏色,缩小冷启动橙->主题色跳变
新增 applyChrome() 在 onLaunch 第一行调用,把导航栏变色点从首页 onShow
提前到 onLaunch,缩短冷启动橙色跳变窗口。app.json 静态橙色在 JS 执行前
生效是框架硬限制,无法完全消除。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 09:54:41 +08:00 |
|
lc
|
1eff3d60c4
|
fix(ui): 多项 UI 修复 — 弹窗遮挡/按钮可见性/暗黑闪烁/云函数版本
- 计划编辑弹窗移出 .container 避免 fixed 降级 + 修复滚动
- dock bottom 40rpx→8rpx 紧贴底部, sheet padding 同步调整
- 计划编辑器取消/恢复默认按钮可见性修复(bg 匹配容器)
- ui-btn--danger 按钮可见性修复
- 清除确认弹窗跟随暗黑模式切换
- icons.js build() 中 Fill 路径覆盖 outlined 路径修复
- plan.js getPlanDay 忽略 customPlans 修复
- darkMode.js 冗余三元简化
- util.js fileToDataURI fallback 可读性提升
- theme.js: BASE_VARS 与 getThemeStyle 统一来源, 去 50ms navbar 延迟
- app.wxss: 移除 page transition 和 background-color 减少闪白
- 云函数 wx-server-sdk 版本统一 ~2.6.3, tts cloud.init 一致化
- 闪白问题: wx.setBackgroundColor 三层防护(onLaunch/applyThemeToPage/switchTab)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 09:40:04 +08:00 |
|
lc
|
d5121d349f
|
fix(dark): 调亮暗黑色调 + dock 跟随暗黑切换 + 图标文字放大
- theme/app.wxss: 暗黑背景 #0F0F12->#2C2C2E,卡片 #1C1C1E->#3A3A3C,
bg-soft/border 同步提亮,拉开卡片与背景对比(原太黑看不到卡片)
- custom-tab-bar: dock 注册 wx.onThemeChange,系统切暗黑/明亮实时跟随
(组件不在 getCurrentPages,app.js watchDarkMode 通知不到)
- custom-tab-bar: 新增 updateTheme,settings 手动切深色时通知 dock
- custom-tab-bar.wxss: dock 图标 44->50rpx,文字 20->23rpx,未激活
opacity 0.5->0.7(更醒目)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 15:02:17 +08:00 |
|
lc
|
afd2b72bcb
|
fix(ui): 根治真机弹窗 fixed 降级(移出 .container + pageIn 去 transform)
根因:.page-enter 的 pageIn 动画含 transform,即使 to: transform:none,
真机 fill-mode 没真正消除 transform,.container 仍是 fixed 的包含块。
记录页内容超一屏时 mask 降级相对 .container(高>>视口),flex 居中把
弹窗放到 .container 中心(视口外),真机看不到(模拟器宽松所以正常)。
- records: 日历详情弹窗移出 .container.page-enter,fixed 相对视口;
加 style themeStyle 拿暗黑变量
- app.wxss: pageIn keyframes 去掉 transform 只留 opacity 淡入,根治所有
页面(settings 计划编辑器/timer 完成弹窗)的 fixed 降级
- calendar-heatmap: onDayTap 的 find 用 Number(day) 修真机 dataset
字符串化导致 === 失败;移除诊断日志
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 14:41:34 +08:00 |
|
lc
|
7784ccafa8
|
fix(ui): 修复训练记录详情弹窗被底部遮挡
pageIn 动画终态 transform: translateY(0) 是非 none 的 transform,会让
.container 成为包含块,后代 position: fixed 降级相对 .container。
记录页内容超一屏时 flex 居中把弹窗放到 .container 几何中心(视口下方),
被底部 dock 遮挡。改终态为 transform: none(视觉无变化,不创建包含块),
fixed 恢复相对视口。records 日历详情/settings 计划编辑器/timer 完成弹窗均受益。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 11:04:37 +08:00 |
|
lc
|
885db8c18b
|
feat(timer): 训练中轮换姿势要领 + hint 字号调大
- 训练中 hint 每 12 秒轮换一条平板支撑姿势要领(收紧核心/肩膀放松/
别塌腰/别憋气等 10 条),替代固定文案,帮助持续纠正姿势
- 姿势文案与间隔移入 config.js(postureTips/tipInterval),统一管理
- hint 字号 28rpx -> 34rpx,图标 32rpx -> 36rpx,更易看清
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 11:04:37 +08:00 |
|
lc
|
ed16ac5efd
|
fix(vibrate): 修复旧用户震动失效 + 新增震动强度选项
根因:user_settings 早期无 vibrate 字段,getSettings 未兜底,
_remind 的 !s.vibrate 误判 undefined 为关闭,导致震动静默失效,
需手动操作开关才恢复。
- storage: getSettings 兜底 vibrate/voiceGuide/vibrateIntensity 默认值
- timer: !s.vibrate 改 === false,字段缺失视为开(与 voiceGuide 一致)
- timer: vibrate 按 vibrateIntensity 选 API(light/medium=vibrateShort,
heavy=vibrateLong),fail 回调辅助排查
- settings: 新增"震动强度"三档(短促/标准/强烈),默认强烈
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 10:36:14 +08:00 |
|
lc
|
a7ed017267
|
feat(voice): 语音参数移入 config.js + 设置页男女声切换
- config: 新增 tts.female/male 两组参数(voiceType/volume/speed),
直接改数字即可调音色,无需改逻辑代码
- storage: getSettings 兜底 voiceGender(旧用户迁移为女声)
- voice: 新增 _getTtsParams 读 config+性别;缓存 key 含完整参数,
改音色/音量/性别自动重新合成,无需手动清缓存
- settings: 训练偏好加"语音音色"segmented(女声/男声)
- tts 云函数: _synthesize 用传入 opts 合成;_upload 路径含 voiceType
(男/女不同文件);需重新部署
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 10:08:09 +08:00 |
|
lc
|
dd9cd1859c
|
feat(timer): 训练到目标时长不再自动结束,支持超长发挥
- Timer: 到时间触发 onGoalReached(提示)而非自动结束,elapsed/overtime
继续累加直到用户手动停止
- timer: onGoalReached 播 goal 语音 + goalReached 状态;finishTraining
补 complete 语音;完成弹窗显示"超长发挥 +X 秒"
- wxml: 超时 badge 训练中也显示;新增 goalReached hint 分支
- voice/tts: 新增 goal 语音 prompt(需部署 tts 云函数)
- config: 版本号 v2.5 -> v2.6
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 09:37:32 +08:00 |
|
lc
|
6fffc5aece
|
fix: 振动定时器清理、完成保存守卫、暗黑冷启动、头像云存储
- timer: 振动 setTimeout 入栈追踪,暂停/停止/卸载/重练统一清理,
避免页面销毁后残留震动(_clearVibrateTimers)
- timer: _saving 守卫统一到 _saveAndShowCompletion,自然完成与手动
结束两路径都防重复保存;修复 onTrainAgain 不重置会话状态导致
再练一次后第二次无语音/振动且保存被挡
- app.wxss: @media dark 补全 --text/--card-bg/--bg-soft/--border/
--success/--danger,冷启动即为完整深色,不再背景深卡片白的割裂闪烁
- settings: 头像优先上传云存储存 fileID,三级回退(fileID->base64->
临时URL),pushAll 不再每次传输图片字节
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 09:17:27 +08:00 |
|
lc
|
850f919269
|
fix(sync): 数据同步合并化 + 排行榜缓存与游标分页
- storage: 新增 mergeRecords,云端记录与本地按 id 去重合并,restore
不再覆盖,解决训练中冷启动丢记录与多设备记录丢失
- storage: 新增 recomputeStreak,restore 后基于合并记录重算 streak,
不再信任云端 streak 值
- storage: 新增 _local_changed_at 标记,settings/profile/customPlans
在本地有未同步改动时保留本地,避免被云端旧值覆盖
- app: _restoreFromCloud 改合并 + 时间戳保护 + streak 重算;Case 2
合并后回推让两端收敛
- leaderboard: 模块级 60s 缓存 + 游标分页(_id > lastId)替代 skip,
全表扫描从每次打开降到 60s 内一次
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 09:06:44 +08:00 |
|
lc
|
1d13b49682
|
fix: 修复头像存储、日历详情数据与弹窗定位问题
- settings: 补上缺失的 util 导入,onChooseAvatar 不再抛
ReferenceError,头像走 data URI 永久存储主路径
- records: 日历详情改用 dateOnly 比较,修复详情永远显示 0 次/0 时长
- records: 日历详情弹窗从 ui-modal 改为普通 view + fixed,
修复被底部 dock 遮挡/不居中;补暗黑阴影描边与滚动穿透处理
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-09 08:46:17 +08:00 |
|