Skip to content

fix(dictation): 长按实时原文、受保护替换与编号校验 - #1134

Closed
cassieliang6709 wants to merge 2 commits into
Open-Less:betafrom
cassieliang6709:fix/live-dictation-and-input-validation
Closed

cassieliang6709 wants to merge 2 commits into
Open-Less:betafrom
cassieliang6709:fix/live-dictation-and-input-validation

Conversation

@cassieliang6709

@cassieliang6709 cassieliang6709 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

摘要

当前实时 ASR 仅更新状态,目标应用收到的是停止后 LLM 的文字。此 PR 按手势区分交付:Auto 短按与 Toggle 完整输出;Auto 长按/Hold 在受支持的 macOS 控件实时显示 ASR 原文,松手后润色并替换本次口述范围。此前文档提案已补充首版实现。

修复 / 新增 / 改进

  • 会话级 DictationDelivery 区分原有设置、完整输出与长按原文;保留 Auto 350 ms 阈值。原生释放入口与 FIFO 异步启停分开,启动握手期间的短按不产生延迟原文写入。
  • 将 ASR offset 修订合成为完整快照,以 50 ms 合并更新;原文修订和最终润色走同一个受保护范围接口,不追加两份正文。
  • macOS 仅在可验证 AXTextField / AXTextArea、空选区、有限基线和选区写入能力成立时启用。检查焦点、光标和文档是否被编辑,只设置本次口述选区;拒绝代理对中间的 UTF-16 边界,确认更新结果。
  • 编辑/失焦/送达不确定时停止替换并复制最终结果;取消清除排队快照且加入正在执行的原生写入,之后才释放会话。
  • 内置结构化风格在完整输出和历史存储前统一校验连续数字列表及重复的同一标号;保留代码、引用、年份、版本号、字母子项和转义实体。该风格停止后完整输出,避免提前写入未校验编号。

兼容与限制

  • 不修改用户保存的快捷键模式。要同时使用短按/长按,请选择 Auto;Hold 仅按住录音,Toggle/DoubleClick 保留原启停方式。
  • 不切换 ASR 服务。批量 ASR、稳定转写或没有录音期快照时完整输出。Windows/Linux/Android/不支持 AX 的控件也完整输出,受保护范围能力默认关闭。
  • 保护基线仅在本地使用,经过原有安全门禁和 AX 消息超时;不新增默认全文日志,不将基线上传给 LLM。
  • AX 没有跨进程原子比较替换;最后一次检查与写入之间仍有竞态。真实文本控件、输入法、焦点、取消和连续手动输入尚需维护者实测;不声称已验证所有应用。
  •   / 2\. 的来源尚需模型正文与编辑器内容对照,不全局解码或移除反斜线。自定义风格、翻译、原文回退不执行编号校验。
  • 麦克风修复见独立 PR fix(audio): 优先麦克风原生格式并拦截空录音 #1135。

测试计划

  • cargo test --locked --manifest-path openless-all/app/crates/openless-core/Cargo.toml -p openless-core --lib -j 2:1,074 项通过,1 项忽略。
  • 生产 UTF-16 范围辅助函数的独立测试通过(中文、emoji、换行、文末和代理对边界;不等同于 AX 实机测试)。
  • npm ci、npm run build 通过,原有前端循环依赖/分块警告仍存在。
  • macOS cargo check --locked --manifest-path openless-all/app/src-tauri/Cargo.toml -j 2 通过;原有 Rust 弃用/未使用等警告仍存在。
  • 修改文件 rustfmt --check 与 git diff --check 通过。
  • macOS 真实控件、实时 ASR、输入法、编辑/焦点竞态、快捷键慢启动和取消实测待进行。

@cassieliang6709 cassieliang6709 changed the title docs(dictation): 提议长按实时输入与结构化结果校验 fix(dictation): 长按实时原文、受保护替换与编号校验 Oct 2, 2026
@cassieliang6709
cassieliang6709 marked this pull request as ready for review October 2, 2026 16:25
@H-Chris233 H-Chris233 added area:input Input area area:voice Voice area enhancement New feature or request large-change Large or risky change needs-review Needs review needs-tests Needs tests needs-work Needs additional work P2 Medium priority platform:macos macOS-specific labels Oct 13, 2026
@H-Chris233

Copy link
Copy Markdown
Collaborator

如果要解决的就是“说话时能看到识别结果”,现有胶囊已经满足。为了改成输入框内实时落字,再承担选区覆盖、用户编辑冲突和原生写入竞态,当前没有足够收益支撑。

@H-Chris233 H-Chris233 closed this Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:input Input area area:voice Voice area enhancement New feature or request large-change Large or risky change needs-review Needs review needs-tests Needs tests needs-work Needs additional work P2 Medium priority platform:macos macOS-specific

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants