key
140aa6f31f
fix: allow 500MB async knowledge uploads
2026-07-29 17:55:12 +08:00
key
6ba7df863f
chore: add UI audits and reconcile release docs
2026-07-29 16:10:46 +08:00
key
d08d3fb921
fix(release): wait for backend readiness
2026-07-29 15:25:08 +08:00
key
652e48884b
fix(aihr): recover stalled media processing
2026-07-29 15:09:01 +08:00
key
f17b904b5c
docs(release): register complete external gate archive
2026-07-29 12:55:01 +08:00
key
46f4616bd4
fix(release): gate channel and distribution acceptance
2026-07-29 12:51:31 +08:00
key
5ee002ddcd
docs(release): register self-consistent handoff archive
2026-07-29 12:46:15 +08:00
key
9c53668c84
fix(release): stamp current package in audit snapshot
2026-07-29 12:43:48 +08:00
key
7548387430
docs(release): register strict 0.1.13 handoff
2026-07-29 12:43:03 +08:00
key
63968f3368
fix(release): enforce August 1 business readiness
2026-07-29 12:40:11 +08:00
key
c0b55efc29
docs(release): clarify remaining content gates
2026-07-29 12:29:00 +08:00
key
dd04b3b71a
docs(release): register reproducible 0.1.13 handoff
2026-07-29 12:28:31 +08:00
key
fee80877de
fix(release): make August 1 handoff reproducible
2026-07-29 12:25:20 +08:00
key
6e2b6025c1
docs(release): register 0.1.13 delivery archive
2026-07-29 12:20:23 +08:00
key
cc1865a979
docs(release): register Android 0.1.13 candidate
2026-07-29 12:18:00 +08:00
key
af8af2f6dd
fix(release): remove completed auth gaps from RC
2026-07-29 12:07:58 +08:00
key
70e5516ff3
fix(release): close fixed-code mobile auth gaps
2026-07-29 11:59:30 +08:00
key
3c92edd23d
docs(release): register Android 0.1.12 package
2026-07-29 10:38:06 +08:00
key
6bf365d591
docs(android): adopt login-page legal consent
2026-07-29 10:35:41 +08:00
key
b9e0878926
fix(android): share public legal URLs with cloud builds
2026-07-29 10:07:22 +08:00
key
7f3357c7a1
fix(android): use login consent instead of native privacy prompt
2026-07-29 09:59:41 +08:00
key
f322f2b21b
docs: register enhanced Android operations package
2026-07-29 03:45:16 +08:00
key
71f005c229
fix(android): capture privacy exit states
2026-07-29 03:43:30 +08:00
key
8354e4e9c2
docs: register final August 1 dual-freeze package
2026-07-29 03:40:33 +08:00
key
414af66eed
docs: align August 1 dual-commit freeze
2026-07-29 03:39:19 +08:00
key
861fa0ea76
feat(release): package runtime and operations freezes
2026-07-29 03:38:19 +08:00
key
2d5568f94b
test(release): verify Android production routes read-only
2026-07-29 03:34:21 +08:00
key
99958f42fc
fix(release): protect backend recovery races
2026-07-29 03:30:39 +08:00
key
39476b2244
feat(release): gate backend deploy and rollback
2026-07-29 03:28:10 +08:00
key
c3e0789f29
test(android): capture read-only acceptance evidence
2026-07-29 03:22:19 +08:00
key
feece9bb74
fix(release): verify frozen backend artifacts
2026-07-29 03:14:26 +08:00
key
771d8552fa
docs: record scoped production preflight
2026-07-29 03:10:52 +08:00
key
566f222e82
fix(release): support scoped backend preflight
2026-07-29 03:05:16 +08:00
key
ab7d18406f
docs: narrow Android production release scope
2026-07-29 03:01:40 +08:00
key
04b35c055f
docs: refresh Android 0.1.10 release evidence
2026-07-29 02:53:10 +08:00
key
dc20b92061
fix(mobile): recover direct channels after network failure
2026-07-29 02:31:19 +08:00
key
376a7c4b84
docs: record Android 0.1.9 RC evidence
2026-07-29 02:23:06 +08:00
key
cb928edafd
fix(mobile): handle file picker cancellation
2026-07-29 02:01:45 +08:00
key
fd59421574
docs: record Android overlay lifecycle evidence
2026-07-29 01:56:23 +08:00
key
8d291d1483
docs: refresh August 1 RC evidence
2026-07-29 01:52:01 +08:00
key
8764031d4a
release: gate August 1 content candidates
2026-07-29 01:36:07 +08:00
key
6a1f672892
docs: record Android 0.1.8 RC evidence
2026-07-29 01:22:57 +08:00
key
ba68fc8326
release: harden Android network security
2026-07-29 01:13:18 +08:00
key
9ea5d79a62
release: prepare August 1 Android RC
2026-07-29 00:35:15 +08:00
key
9ae5f750c8
fix: align Windows dev, App compiler, and ASR
2026-07-26 21:27:37 +08:00
admin
f57e0a53c6
feat(mobile): expand TTS voices and align App SDK
2026-07-26 17:05:43 +08:00
admin
94ee29f59c
fix(speech): write native TTS temp file as binary and clean it up
...
App-Plus 的 plus.io FileWriter 只接受字符串:write 写文本,writeAsBinary 收
base64。原先传 Blob 会被原生桥接序列化成空内容,落地 0 字节且照样回调
onwriteend,InnerAudioContext 静默播完、不报错,表现为"界面正常但没有声音"。
改用 writeAsBinary 并在 onwriteend 里复核 size > 0,让写盘失败能被暴露。
清理侧同一处存在文件泄漏:播放要 convertLocalFileSystemURL 转出的 file://
绝对路径,而 resolveLocalFileSystemURL 删除只认 `_doc/xxx.mp3` 相对路径。
原先只回传前者,拿它去 resolve 解析不到,remove() 从不执行,且 catch 静默,
临时 mp3 逐句堆积。改为返回 { playbackUrl, plusPath } 两个路径,清理失败加告警。
真机验证(Android 10 / io.dcloud.HBuilder):落盘 80251 字节,ID3+LAME 头,
MPEG layer III 160 kbps 24 kHz 单声道,播完文件自动删除。
顺带把测试里 MP3 头字面量的真实 NUL 字节改为 \x00 转义(运行时字节不变),
此前 git 将该测试文件判为二进制,diff 无法审阅。
2026-07-26 12:10:50 +08:00
admin and Claude Opus 5
3f7f0496f7
docs(changelog): record the App voice-first restore and its tradeoffs
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-26 02:39:40 +08:00
admin and Claude Opus 5
d84ad87cb6
fix(sop): restore voice-first replies on App without withholding text
...
73712994 disabled voice-first on native by gating the TTS preload behind
!isNativeAppRuntime(), which left App users with the degraded text bubble
plus a 播报 button. The voice-line, 转文字 toggle and 收起全文 markup were
still present but unreachable.
Re-enable the preload on every platform and open the transcript when the
message is created, so the answer is readable while synthesis runs.
Collapse the transcript when playback starts rather than when synthesis
finishes: on-device synthesis settles in 2-6s, so collapsing on ready
pulled the answer away mid-sentence. transcriptPinned records a manual
toggle so the automatic collapse never overrides the reader.
Bound the preparing bubble at 20s (the upstream DashScope ceiling) so a
stalled synthesis degrades to the plain text bubble instead of showing an
endless placeholder duration.
Replace the tautological assertion that pinned the previous behaviour by
matching source strings with assertions on the behaviour itself.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-26 02:36:14 +08:00
admin and Claude Opus 5
7096545e82
fix(mobile): translate microphone errors and pre-request permission
...
实时陪练失败时,getUserMedia 抛出的 Chromium 英文原文会直接透给用户(真机实测见过
"Could not start audio source"),既不可读也不含任何可执行指引。新增
utils/microphone.ts 把权限、设备占用、无设备、非安全上下文四类底层错误翻译成中文
引导;业务层自己抛的中文文案原样透出,未识别的错误回落到原有通用提示。
同时在建会话之前主动申请 RECORD_AUDIO,并在 manifest 显式声明该权限。
需要说明:此权限预申请是防御性的。真机核查 RECORD_AUDIO 已授予、APK 本就声明该权限、
实时链路可正常跑通,先前那次 "Could not start audio source" 是麦克风被其他应用占用
的瞬时故障,不是权限缺陷。未在"权限未授予"的设备上实测过 WebView 是否会自行弹出
Android 运行时授权框,故此调用在已授权设备上为无害空转;若确实不弹,则它是唯一授权入口。
manifest 声明同样只为防未来模块调整导致权限丢失。
新增 6 项单测覆盖错误映射与授权分支(共 168 项通过)。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-26 00:58:40 +08:00