 longandCursor
|
50abe5dece
|
refactor: 训练模块整体迁入分包,减小主包体积
主包超出 2MB 上限无法上传发布版,把训练相关全部移到独立分包。
目录调整:
- pages/training/* → training/pages/*
- hooks/use{Metronome,VoiceCoach,TrainingSession,TrainingBgm}.ts
→ training/hooks/*
- static/training/* → training/static/*
- 主包 hooks/ 目录已清空,所有 use* 都被分包独占
引用路径更新:
- 分包内 hook import 用相对路径 ../hooks/xxx,不依赖 @/ alias
- 资源路径 /static/training/audio/click.mp3
→ /training/static/audio/click.mp3
- useMetronome 默认 clickSrc / useVoiceCoach VOICE_BASE
/ useTrainingBgm BGM_BASE 全部对齐新路径
pages.json:
- 主包 pages 移除 training/index 和 training/metronome
- subPackages 新增 root="training",含 pages/index 和 pages/metronome
- 跟现有 TUIKit / doctor 分包风格一致
调用方:
- components/dev-training-entry navigateTo URL 更新成
/training/pages/metronome (此组件留在主包,主包跳分包是合法操作)
文档/工具同步:
- training/static/README.md 路径示例改为 training/static/...
- scripts/generate-voice.mjs VOICE_DIR 与提示输出对齐新路径
Git mv 检测到的全是 rename(R),历史完整保留。
分包总体 80K(pages 44K + hooks 20K + static 16K),主包瘦身明显。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:00:01 +08:00 |
|
long
|
f718df833e
|
update
|
2026-05-25 18:28:55 +08:00 |
|
 longandCursor
|
552da3aec2
|
feat(metronome): 节拍音改用真实木鱼录音
来源:Freesound 用户 the_very_Real_Horst 的"Fischtrommel_Muyu.mp3"
(ID 205999, CC BY 4.0,真实中国木鱼/Mokugyo 录音)
从 26 秒原录音中提取 1.665s 处第一个干净敲击,
ffmpeg 处理:
- 普通拍 click.mp3:原音木鱼,截 0.15s,标准化峰值 -0.3dB
- 重音拍 click-wood.mp3:asetrate 升 +3 半音让音色更清脆,
截 0.18s,标准化峰值 -0.4dB
- alimiter 限幅 0.97 防爆音,exp 衰减保留自然敲击尾巴
听感:
- 取代之前 ffmpeg 纯正弦合成的"叮"声
- 真乐器录音,木质共鸣空腔感清晰
- 重音通过升音区分,跟普通拍音色统一不违和
- mean 响度比合成版提升约 10dB
旧合成版备份在 audio/_backup/,不喜欢可一键恢复
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 18:12:35 +08:00 |
|
 longandCursor
|
0d35d1b6c3
|
fix(metronome): 顶部色协调 + 视频边缘柔化 + 节拍音加大
NavBar 颜色协调:
- 节拍器页 navigationBarBackgroundColor 从 #0f172a 暗色
改为 #f8fafc,跟页面背景纯色一致,顶部不再撕裂
- 文字色改 black,补 backgroundColor 防止下拉露出底色
视频边缘柔化(去掉硬切感):
- 页面背景从渐变改为纯色 #f8fafc,让 box-shadow 颜色稳定
- walker-clip 加 box-shadow 0 0 30rpx 12rpx #f8fafc
圆形外圈"消融"到背景里,不再有硬边框感
- video transform: scale(1.1) → 1.4
让 video 自带的灰白渐变边和右上角原生 PIP/小窗按钮
全部被推到圆外,被 overflow:hidden 切掉
节拍音重做(响度+音色):
- 时长从 0.13s 缩到 0.085s,去掉衰减尾巴更干脆
- 加 5ms white-noise burst 模拟敲击瞬间的"tk"音头
- volume 拉到 6 倍 + alimiter 限 0.98 防爆音
- 实测峰值从 -13.5dB 推到 0dB(满量程),
mean 从 -26dB 提到 -19dB,听感响度约翻倍
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:28:25 +08:00 |
|
 longandCursor
|
27c2ada4ec
|
feat(metronome): 浅色清爽改版 + 三档位 + 阳光节拍音
整页配色从暗色系换成浅色清爽:
- 背景 #f8fafc → #eef2f7 渐变
- 卡片纯白 + 柔和阴影
- 主圆 emerald 翡翠绿,重音切琥珀色
视频区域:
- 移除卡片外框/光晕/阴影,保留圆形蒙版
(圆形蒙版仍负责裁掉 video 灰白边 + 隐藏微信原生右上角小窗按钮)
- video 透明背景,跟白底融合
新增 3 档位推荐(主操作):
- 慢走 80 BPM · 健走 110 BPM · 快走 130 BPM
- 横排白卡,选中变浅绿 + emerald 描边
- 一键同步 BPM 和拍号,免去手动调
右下角微调(次要操作):
- absolute 定位胶囊,7 成透明
- ± BPM 微调 + 2/3/4 拍号
- 不抢主视觉,需要精确时才点
替换节拍音色(ffmpeg 合成):
- 普通拍 C6 1046Hz + C7 泛音,清脆"叮"
- 重音 G6 1568Hz + D7 + G7,更明亮"叮咚"
- 加 5ms attack + exp decay + 轻微回声,模拟钢片琴
- 旧的阴沉鼓点声备份在 audio/_backup/
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:14:45 +08:00 |
|
 longandCursor
|
6be5b4c45d
|
feat(metronome): walker 卡片改左右布局 + 圆形蒙版小人
老布局问题:视频被困在小白卡里、灰白渐变底跟暗卡片不搭、
左右大量空白、右上角小窗按钮没办法靠属性彻底隐藏。
新布局:
- 圆形蒙版裁切 video,灰白底自动收成柔和光晕,
原生右上角小窗/投屏按钮被切到圆外,看不见
- video 加 transform:scale(1.08) 让小人居中且裁掉边缘灰边
- 圆外加随节拍脉动的彩色 glow,颜色跟 badge 联动
(健走绿/快走黄/慢跑橙/快跑红)
- 视频右侧填充节奏数据三行:
· 每分钟 X 步
· 每步耗时 X ms
· 动画速度 X ×
把空白填上有意义的信息层级
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:02:47 +08:00 |
|
 longandCursor
|
867a6a97cf
|
feat(metronome): walker 区改用 MP4 视频,playbackRate 跟 BPM 同步
将之前的 PNG runner + CSS 律动方案,升级为真正的卡通 walk cycle 视频:
- 删除 runner.png(静态图无法表现关节运动)
- 新增 runner.mp4(LottieFiles 卡通跑步动画,150x150, 60fps, 27KB)
- walker 区从 image + CSS 抖动 改为 video + playback-rate 调速
- 视频原速基准 124 BPM(0.97s 一个 walk cycle = 2 步)
- playbackRate = clamp(bpm/124, 0.5, 2.0),贴合微信小程序限制
- 视频与节拍器同步策略:
· watch isPlaying → 自动 play/pause
· watch playbackRate → 调用 videoCtx.playbackRate API 兜底
· onMounted 默认暂停,等用户点开始才播
- 视频白底跟暗色卡片冲突,改用"嵌入式高亮卡片"设计:
· runner-card 白底 + 32rpx 圆角 + 阴影,像专业健康 APP
· video object-fit contain 保证不被裁切
- 移除冗余的 .ground 地面线样式
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 16:15:46 +08:00 |
|
 longandCursor
|
a3ee72b34d
|
feat(metronome): walker 区接入卡通跑步小人,跟 BPM 同步律动
- 替换原来两只脚印为一张跑步小人 PNG(static/training/runner.png)
- 静态 PNG + CSS 律动:
· runner-bob keyframes: 1 拍内做"下蹲→起跳→反向倾斜→落地"
四个阶段,模拟跑步身体起伏
· 上下抖动 ±14rpx, 左右轻摆 ±1.5°,scale Y 微妙压缩
· drop-shadow 让人物有立体感
- 阴影同步:runner-shadow-pulse 跟律动反向变化
(跳起时阴影变小变淡 0.2,落地时变大变浓 0.5)
- 动画 duration 绑定 --step-duration = 60000/bpm
· BPM 60 → 1000ms/次,慢悠悠
· BPM 120 → 500ms/次,正常跑
· BPM 180 → 333ms/次,紧张快跑
注意: 用户提供的文件实际是静态 PNG 不是 SVG 动图,
所以是"画面整体律动"而非真正的 walk cycle 关节运动。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 15:45:43 +08:00 |
|
 longandCursor
|
665481a6d8
|
style(footprint): 圆润脚跟,告别尖锐 V 形
之前两段曲线都汇聚到 (50,138) 一点,且控制点位置偏下,
形成尖锐 V 形脚跟。修复:
- 脚跟底中心 (50,138) → (50,140),稍微下移
- 内侧弧控制点 (38,130) → (30,122)(40,140),从靠肩部
渐进到水平方向,切线在底部呈水平,不再向下尖收
- 外侧弧对称处理 (60,140)(70,122)
- 进入和离开脚跟底心时切线都水平,视觉上变成圆润 U 形
- 整体高度 138 → 140,viewBox 100x150 不变
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 13:02:39 +08:00 |
|
 longandCursor
|
30b344b776
|
style(metronome): 脚印重画为葫芦型,告别椭圆感
之前的 SVG path 内外侧太对称,看起来还是椭圆。重新设计:
- viewBox 100x140 → 100x150 (拉长比例 1:1.5,更"瘦长")
- 主体 path 内侧凹陷 + 外侧饱满,形成葫芦轮廓:
· 内侧足弓 x 收到 22 (凹陷)
· 外侧饱满 x 推到 78 (凸出)
· 前足比脚跟略宽,模拟真实脚型
- 5 个脚趾:
· 拇趾 rotate(-18°) 内侧明显倾斜
· 小趾 rotate(+22°) 外侧外展
· cy 沿弧线 22→11→9→13→20,形成自然弧形
· rx 从 6.5 递减到 3.5,大小过渡更自然
- 容器尺寸从 100x140 → 96x144,匹配 SVG 新比例
- walker 高度 200→220rpx 以容纳抬脚动画上限
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:49:36 +08:00 |
|
 longandCursor
|
e104249707
|
style(metronome): 脚印改用 SVG 矢量,单笔成型告别卡通感
div 拼接(椭圆+5 个圆)无论怎么调都摆脱不了"青蛙脚"既视感,
根本原因是 div 画不出曲线轮廓。改用 SVG path 单笔成型:
- 新增 static/training/footprint.svg(775B)
· path 一笔走完:前足→足弓凹陷→脚跟,模拟真实脚印拓印
· 5 个脚趾用 ellipse + rotate 转角,大小递减(7.2→3.8rpx)
· 内侧(拇趾侧)凹陷、外侧饱满,符合解剖学
· 单色 #e2e8f0 fill-opacity 0.92,接近湿沙脚印质感
- metronome.vue:
· 模板:删 heel + 5×toe,改用 image src=footprint.svg
· CSS:删除 70+ 行 heel/toe 位置定位,只保留 footprint 容器
· 左脚保持 scaleX(-1) 镜像,动画 keyframe 不变
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:45:17 +08:00 |
|
 longandCursor
|
2beace89f4
|
feat(TUICallKit-Vue3): 迁入节拍器与练一练训练模块
之前误将训练模块加在 uniapp 项目,实际目标项目是 TUICallKit-Vue3
(甄养堂主小程序壳),整体迁入:
- hooks/useMetronome.ts 节拍器(音频实例池+预热,无冷启动延迟)
- hooks/useTrainingSession.ts 训练 Session 状态机
- hooks/useVoiceCoach.ts 语音教练队列
- hooks/useTrainingBgm.ts 训练/休息 BGM 切换+渐变
- pages/training/index.vue 练一练主页(器械跟练)
- pages/training/metronome.vue 独立节拍器(老人友好版,
中央圆即开始/暂停按钮,纯 CSS 几何 icon,大字大按钮)
- pages/training/components/exercise-anim.vue CSS 动作动画
- pages/training/exercises.ts 5 个器械动作预设
- static/training/audio/*.mp3 3 种 click 音色(MIT 协议)
- scripts/generate-voice.mjs MiMo TTS 批量生成语音脚本
- pages.json 注册 pages/training/index 与 pages/training/metronome
- 「我的」页加 DevTrainingEntry 悬浮入口,生产环境自动隐藏
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:28:55 +08:00 |
|
Your Name
|
7147c8e148
|
新增
|
2026-03-19 12:19:00 +08:00 |
|
Your Name
|
7832514f28
|
更新
|
2026-03-18 14:53:09 +08:00 |
|
Your Name
|
cda63b5ae2
|
更新
|
2026-03-16 15:08:28 +08:00 |
|
Your Name
|
4a853ba237
|
新增功能
|
2026-03-14 15:39:34 +08:00 |
|
Your Name
|
38ad60f4bb
|
更新
|
2026-03-11 09:49:47 +08:00 |
|
Your Name
|
52bb80e2f1
|
更新
|
2026-03-06 14:27:24 +08:00 |
|