Skip to content

feat: add configurable silence timeout#39607

Merged
steipete merged 2 commits intoopenclaw:mainfrom
danodoesdesign:codex/feat-talk-silence-timeout
Mar 8, 2026
Merged

feat: add configurable silence timeout#39607
steipete merged 2 commits intoopenclaw:mainfrom
danodoesdesign:codex/feat-talk-silence-timeout

Conversation

@danodoesdesign
Copy link
Contributor

Summary

Forgive me, this is my first OSS contribution! I hope it is valuable.
Written 99% with codex via 5.4

  • Problem: Talk mode for the apps has hard-coded, reasonably aggressive talking cadence timeouts before sending the transcript onwards. For example on macOS it's set to 0.7s.
  • Why it matters: This doesn't allow for much room for variability in speech patterns or customisation to user preference. In various experiences IRL, I've found people have gotten cut off prior to completing their thought.
  • What changed: This feature adds a new talk mode config to modify this hard-coded value, keeping defaults but letting someone customise the millisecond timing. It then makes the required changes to surface that on the 3 major platforms that do/will support talk mode, macOS, iOS and Android.
  • What did NOT change (scope boundary): Nothing has changed in system design our foundational, only variables and whatnot required to support replacing a hard coded value with a dynamic, configurable one.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

User-visible / Behavior Changes

List user-visible changes (including defaults/config).

  • New config line under Talk category for timeout milliseconds
  • Stays at default values unless user changes them
  • User can change the values to higher or lower ms counts
  • Lower ms counts will result in talk mode ending turn and sending on transcript quicker after shorter waits
  • Higher ms counts will result in talk mode ending turn and sending on transcript later after longer waits

Security Impact (required)

  • New permissions/capabilities? (No)
  • Secrets/tokens handling changed? (No)
  • New/changed network calls? (No)
  • Command/tool execution surface changed? (No)
  • Data access scope changed? (No)
  • If any Yes, explain risk + mitigation:

Repro + Verification

Environment

  • OS: macOS Tahoe
  • Runtime/container: Node 22+
  • Model/provider: Any
  • Integration/channel (if any): N/A
  • Relevant config (redacted): talk.silenceTimeoutMs: ####

Steps

  1. Visit dashboard config page
  2. Change and save value for Talk > Silence timeout. Set value to 10000 ms
  3. Start talk mode on macOS via app and speak

Expected

  • Observe significantly longer silence wait times before talk mode sends transcript onwards

Actual

  • Have observed this

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Unsure how to provide behavioural evidence for this sorry :S

image image

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios: Talk mode on macOS
  • Edge cases checked: None, unsure what they would be
  • What you did not verify: Android or iOS use cases

Compatibility / Migration

  • Backward compatible? (No, assumedly because config change)
  • Config/env changes? (Yes)
  • Migration needed? (Unsure)
  • If yes, exact upgrade steps: I wouldn't expect so

Failure Recovery (if this breaks)

  • How to disable/revert this change quickly: revert to parent commit in all instances of runtime changes
  • Files/config to restore: All listed in commits
  • Known bad symptoms reviewers should watch for: /

Risks and Mitigations

List only real risks for this PR. Add/remove entries as needed. If none, write None.

  • Risk:
    • Mitigation:

@openclaw-barnacle openclaw-barnacle bot added docs Improvements or additions to documentation app: android App: android app: ios App: ios app: macos App: macos app: web-ui App: web-ui gateway Gateway runtime size: S labels Mar 8, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 8, 2026

Greptile Summary

This PR adds a configurable talk.silenceTimeoutMs setting that replaces the hard-coded silence window used by Talk mode across macOS, iOS, and Android, while preserving each platform's existing default when the config key is unset (700 ms on macOS/Android, 900 ms on iOS).

Key changes:

  • Config layer (TypeScript): New optional silenceTimeoutMs field in TalkConfig, Zod schema, wire schema, normalization, help text, labels, and docs — all consistent and tested.
  • macOS (TalkModeRuntime.swift): silenceWindow promoted from let to var; resolvedSilenceTimeoutMs helper added; default used in both success and error-fallback branches of fetchTalkConfig.
  • iOS (TalkModeManager.swift): Same structural change; handles Int, Double, and NSNumber JSON types for robust deserialization.
  • Android (TalkModeManager.kt): Cleans up a pre-existing dead-code constant while wiring in the new configurable value.
  • Tests: Unit tests added on all three platforms covering the configured, missing, and invalid-value cases.

Minor issue: the CHANGELOG entry is missing a blank line before the ### Fixes section.

Confidence Score: 4/5

  • Safe to merge once the CHANGELOG formatting is corrected. The implementation is well-scoped, backward-compatible, and consistently implemented across all three platforms with test coverage.
  • The feature is clean and follows existing patterns on each platform. All three clients reset to platform defaults on config-load failure, preventing regressions. The implementation is complete with proper schema validation, normalization, and test coverage. The only flagged issue is a minor CHANGELOG formatting correction (missing blank line before section header), which is easily fixed.
  • CHANGELOG.md — requires one blank line addition to fix section spacing.

Last reviewed commit: 3f0dccf

CHANGELOG.md Outdated
Comment on lines 9 to 10
- Talk mode: add top-level `talk.silenceTimeoutMs` config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. Fixes #17147.
### Fixes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing blank line before the ### Fixes section header. The new changelog entry should be followed by a blank line to match the spacing used elsewhere in the file and ensure proper markdown rendering.

Suggested change
- Talk mode: add top-level `talk.silenceTimeoutMs` config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. Fixes #17147.
### Fixes
- Talk mode: add top-level `talk.silenceTimeoutMs` config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. Fixes #17147.
### Fixes
Prompt To Fix With AI
This is a comment left during a code review.
Path: CHANGELOG.md
Line: 9-10

Comment:
Missing blank line before the `### Fixes` section header. The new changelog entry should be followed by a blank line to match the spacing used elsewhere in the file and ensure proper markdown rendering.

```suggestion
- Talk mode: add top-level `talk.silenceTimeoutMs` config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. Fixes #17147.

### Fixes
```

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@steipete steipete force-pushed the codex/feat-talk-silence-timeout branch from 3f0dccf to 43c395d Compare March 8, 2026 14:30
@steipete steipete merged commit 0af3118 into openclaw:main Mar 8, 2026
9 checks passed
@steipete
Copy link
Contributor

steipete commented Mar 8, 2026

Landed via temp rebase onto main.

  • Gate: pnpm lint && pnpm build && pnpm test
  • Extra verify: swift test --package-path apps/macos --filter TalkModeConfigParsingTests
  • Extra verify: ./gradlew :app:testDebugUnitTest --tests ai.openclaw.app.voice.TalkModeConfigParsingTest
  • iOS note: xcodebuild test for OpenClawTests/TalkModeConfigParsingTests is currently blocked by an existing unrelated LiveActivityManager compile failure in apps/ios/Sources/Model/NodeAppModel.swift.
  • Source commit: danodoesdesign@3f0dccf
  • Land commit: 43c395d
  • Merge commit: 0af3118

Thanks @danodoesdesign!

mrosmarin added a commit to mrosmarin/openclaw that referenced this pull request Mar 8, 2026
* main: (70 commits)
  Refactor release hardening follow-ups (openclaw#39959)
  docs: clarify bot review conversation ownership (openclaw#39942)
  fix: harden talk silence timeout parsing (openclaw#39607) (thanks @danodoesdesign)
  talk: add configurable silence timeout
  transcript-policy: use named Set for anthropic signature-excluded providers
  transcript-policy: don't preserve thinking signatures for kimi-coding (openclaw#39798)
  fix: land mac universal release defaults (openclaw#33891) (thanks @cgdusek)
  Docs: clarify notarization handoff in mac release flow
  Docs: mark basic mac dist example as non-notarized
  Docs: clarify release build arch defaults for mac packaging
  macOS: default release app builds to universal binaries
  fix(issue-39839): address tool-call extra params parsing for kimi anthropic-messages
  docs: use alphabetical provider ordering
  fix: follow up openclaw#39321 and openclaw#38445 landings
  docs: note /landpr merge process
  fix: land Brave llm-context gaps (openclaw#33383) (thanks @thirumaleshp)
  feat: add Brave Search LLM Context API mode for web_search
  fix(feishu): restore @larksuiteoapi/node-sdk in root dependencies
  refactor: tighten codex inline api fallback follow-up
  macOS: set speech recognition taskHint for Talk Mode mic capture
  ...
Saitop pushed a commit to NomiciAI/openclaw that referenced this pull request Mar 8, 2026
GordonSH-oss pushed a commit to GordonSH-oss/openclaw that referenced this pull request Mar 9, 2026
hugs42 pushed a commit to hugs42/openclaw that referenced this pull request Mar 10, 2026
jenawant pushed a commit to jenawant/openclaw that referenced this pull request Mar 10, 2026
Get-windy pushed a commit to Get-windy/JieZi-ai-PS that referenced this pull request Mar 10, 2026
上游更新摘要(abb8f6310 → bda63c3,164 commits):

### 新功能
- ACP: 新增 resumeSessionId 支持 ACP session 恢复(openclaw#41847)
- CLI: 新增 openclaw backup create/verify 本地状态归档命令(openclaw#40163)
- Talk: 新增 talk.silenceTimeoutMs 配置项,可自定义静默超时(openclaw#39607)
- ACP Provenance: 新增 ACP 入站溯源元数据和回执注入(openclaw#40473)
- Brave 搜索: 新增 llm-context 模式,返回 AI 精炼摘要(openclaw#33383)
- browser.relayBindHost: Chrome relay 可绑定非 loopback 地址(WSL2 支持)(openclaw#39364)
- node-pending-work: 新增 node.pending.pull/ack RPC 接口
- Telegram: 新增 exec-approvals 处理器,支持 Telegram 内命令执行审批
- Mattermost: 新增 target-resolution,修复 markdown 保留和 DM media 上传
- MS Teams: 修复 Bot Framework General channel 对话 ID 兼容性(openclaw#41838)
- secrets/runtime-web-tools: 全新 web runtime secrets 工具模块
- cron: 新增 store-migration,isolated-agent 直送核心通道,delivery failure notify
- TUI: 自动检测浅色终端主题(COLORFGBG),支持 OPENCLAW_THEME 覆盖(openclaw#38636)

### 修复
- macOS: launchd 重启前重启已禁用服务,修复 openclaw update 卡死问题
- Telegram DM: 按 agent 去重入站 DM,防止同一条消息触发重复回复(openclaw#40519)
- Matrix DM: 修复 m.direct homeserver 检测,保留房间绑定优先级(openclaw#19736)
- 飞书: 清理插件发现缓存,修复 onboarding 安装后重复弹窗(openclaw#39642)
- config/runtime snapshots: 修复 config 写入后 secret 快照丢失问题(openclaw#37313)
- browser/CDP: 修复 ws:// CDP URL 反向代理和 wildcard 地址重写
- agents/failover: 识别 Bedrock tokens per day 限额为 rate limit

### 版本
- ACPX 0.1.16
- iOS/macOS 版本号更新
- Android: 精简后台权限

构建验证:待执行
sauerdaniel pushed a commit to sauerdaniel/openclaw that referenced this pull request Mar 11, 2026
dhoman pushed a commit to dhoman/chrono-claw that referenced this pull request Mar 11, 2026
alexey-pelykh pushed a commit to remoteclaw/remoteclaw that referenced this pull request Mar 14, 2026
alexey-pelykh added a commit to remoteclaw/remoteclaw that referenced this pull request Mar 14, 2026
…nodoesdesign) (#1274)

(cherry picked from commit 0af3118)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: dano does design <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: android App: android app: ios App: ios app: macos App: macos app: web-ui App: web-ui docs Improvements or additions to documentation gateway Gateway runtime size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants