diff --git a/CHANGELOG.md b/CHANGELOG.md index 414ace9d..2d7a5253 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,28 @@ ## Unreleased -- 2026-07-25 23:56–23:59 的 App-Plus 批次已提交但**尚未发布**:未构建云打包 App、未发布 H5、未发布后端 JAR、未重启服务。见下节。 +- 2026-07-25 23:56–2026-07-26 02:40 的 App-Plus 批次已提交但**尚未发布**:未构建云打包 App、未发布 H5、未发布后端 JAR、未重启服务。见下两节。 + +## 2026-07-26 02:35–02:40|恢复 App 端回复语音优先 + +### 功能与修复 + +- **2026-07-26 02:38**(`d84ad87c`):恢复 App 端回复的语音优先形态。`73712994` 用 `!isNativeAppRuntime()` 关掉原生端 TTS 预生成后,App 上每条回复都退化成纯文字气泡加 `播报` 按钮;语音条、`转文字`、`收起全文` 的模板与样式一直在包内但无法到达。现预生成在所有平台生效,消息以 `transcriptOpen: true` 建立,合成期间文字即可读,不必等一次 TTS 往返。 + +### 取舍与偏离 + +- **2026-07-26 02:38**:收起文字的触发点定为**开始播放**,不是合成完成。真机实测本地合成 2–6 秒即就绪,若按合成完成收起,文字会在读到一半时被抽走、只闪约 3 秒,与「不必等」的意图相反。新增 `transcriptPinned` 记录手动 `转文字`/`收起`/`收起全文`,自动收起不覆盖读者选择;不播放则文字一直可读。 +- **2026-07-26 02:38**:`preparing` 语音条加 20 秒上限(对齐后端 DashScope 上游超时),超时按 `unavailable` 退化成纯文字加 `播报`,避免永久停在占位时长。该上限只结束界面等待态,**不中止**已发出的合成请求。 +- **2026-07-26 02:38**:语音条显示 `语音` 而非微信式 `12"`。`measureAudioDuration` 依赖全局 `Audio`,App-Plus 逻辑层无该对象直接返回 `null`。属该形态既有缺口,非本次引入;修法需改走 `uni.createInnerAudioContext` 的 `duration`,因该函数被对练与摘要播报共用,**未改**。 +- **2026-07-26 02:38**:`tests/agent.test.mjs` 中原断言以 `!isNativeAppRuntime()` 等源码字符串锁住旧行为,属同义反复,已换为行为断言:语音优先不依赖平台、合成完成不得收起文字、播放才收起、超时有兜底。 + +### 验证与边界 + +- **2026-07-26 02:40**:`vue-tsc --noEmit` 通过;前端单测 `168/168` 通过。`build:app` 按产物核验含 `app-service.js`、`app-renderjs.js`、`manifest.json`,不以 `DONE Build complete.` 为准。 +- **2026-07-26 02:40**:真机取样(包推 `__UNI__B36D8BE` 后重启基座):3 秒为 `…` 合成中加红点、文字可读、`收起全文 ▲`;12 秒语音就绪而文字仍在;点播放后文字收起、红点清除;26 秒回到空闲,未复现挂死。 +- **2026-07-26 02:40**:**未验证**音频是否真实出声——状态机走完整链路,但设备音频输出无法取证,需人工试听。 +- **2026-07-26 02:40**:本节完成层级为「已实现、已本地验证、已提交」。**未构建云打包 App、未发布 H5、未发布后端 JAR、未重启服务**。 +- **2026-07-26 02:40**:排障口径修正。`adb exec-out screencap -p` 的 PNG 直接读取会静默返回空内容,若据此描述界面会得出凭空结论;本批已改为先 `sips` 转换/裁剪再读。据此撤回两条本轮口头结论:「App 端 TTS 挂死」(实测本次 2–6 秒合成成功)与「设备弹出 SDK 版本不匹配窗口并吞掉点击」(界面无该弹窗,点击落空系启动时序)。 ## 2026-07-25 23:56–2026-07-26 00:02|App-Plus 实时对练与构建链修复