feat(miniapp): align UI with H5 and harden device debugging

五个页面按 h5/css 的 style.css → ui-20261009 → ui-20261012 覆盖顺序逐条重排,
换算规则固定为 calc(N * var(--u)) → 2N rpx,固定 px 的字号保持 px。

- app.acss:换回 H5 设计 token(方角小倒角按钮 10rpx、卡片 14rpx、.chev 折线箭头)
- splash/profile/history:底图与按钮文字图改用 H5 资源,隐私/政策弹窗按 H5 重排
- report:环形分用 conic-gradient、人脸裁切窗口叠加 face_maps、标记点百分比盒、
  侧脸皱纹 pending/unavailable 文案;用 Playwright 抓 H5 94 个选择器几何比对,
  整页高 2438.7 vs 2438.67
- camera:淘宝 <camera> 组件在真机整页崩溃(嵌了微信专有的 <cover-view>),
  改为默认系统相机 + `config.nativeCamera` 开关 + pages/camtest 冒烟页验证组件
- permissions:淘宝用带前缀的 scope.camera(裸名返回 5022 Scope:camera信息不存在),
  先试带前缀再退回裸名,拒绝后不再重复弹窗
- voice:非 HTTPS 资源导致的异常不再冒泡成整页崩溃;app.js 加开发版错误 toast
- 开发版入口:权限诊断(启动页/相机页)、相机组件测试
- 测试 20/20(新增权限与相机能力用例)
This commit is contained in:
xsl
2026-11-01 23:30:38 +08:00
parent f5c416dd9d
commit fed52930cc
33 changed files with 3061 additions and 876 deletions
+11 -3
View File
@@ -47,9 +47,17 @@ function start(id, kind) {
lastAt[id] = Date.now();
cur = { id: id, kind: kind, token: {} };
var token = cur.token;
audio.stop();
audio.src = api.assetUrl('voice/' + id + '.mp3');
audio.play();
try {
audio.stop();
audio.src = api.assetUrl('voice/' + id + '.mp3');
audio.play();
} catch (_) {
// 资源域名不可用、平台拒绝非 HTTPS src 等情况:静默跳过。
// 语音只是辅助,绝不能让异常冒泡成页面崩溃(真机曾整页白屏)。
cur = null;
drain();
return;
}
// 播放失败/结束时 cur 清理放在 drain 前,避免排队卡死
cur.token = token;
}