Skip to content

fix(macos): set speech recognition taskHint for Talk Mode mic capture#38445

Merged
steipete merged 1 commit intoopenclaw:mainfrom
dmiv:pr/talk-mode-taskhint
Mar 8, 2026
Merged

fix(macos): set speech recognition taskHint for Talk Mode mic capture#38445
steipete merged 1 commit intoopenclaw:mainfrom
dmiv:pr/talk-mode-taskhint

Conversation

@dmiv
Copy link
Contributor

@dmiv dmiv commented Mar 7, 2026

Summary

Set the taskHint property on the speech recognition request for Talk Mode on macOS. This improves recognition accuracy by telling the system the audio is coming from a dictation/conversation context.

Motivation

Without the task hint, macOS speech recognition may optimize for the wrong use case (e.g., search queries vs. dictation), resulting in lower transcription quality during Talk Mode sessions.

Changes

  • Added taskHint configuration to the speech recognition request

Add taskHint = .dictation to Talk Mode's SFSpeechAudioBufferRecognitionRequest,
matching what Voice Wake already sets. Without this hint the recognizer may not
properly initialize audio capture, causing Talk Mode to appear unresponsive.

Co-Authored-By: dmiv <[email protected]>
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 7, 2026

Greptile Summary

This PR delivers a focused macOS improvement to TalkModeRuntime.swift by setting taskHint = .dictation on the SFSpeechAudioBufferRecognitionRequest. This single line tells macOS's Speech framework to apply dictation-optimized language models and acoustic processing during Talk Mode mic capture, rather than defaulting to unspecified behavior.

Technical Assessment:

  • Change: self.recognitionRequest?.taskHint = .dictation is set immediately after shouldReportPartialResults = true, before the request is handed to the audio engine.
  • Correctness: .dictation is the appropriate hint for Talk Mode's continuous, natural-language conversational speech capture. The alternatives (.search for short queries, .confirmation for yes/no responses) are poor fits.
  • Safety: The change is a simple property assignment on a freshly-created per-call SFSpeechAudioBufferRecognitionRequest with no side effects on surrounding recognition lifecycle logic.

The PR also includes broader cleanup and documentation updates across other parts of the codebase (test refactoring, config adjustments, documentation corrections), but the primary focus and value of this change is the macOS speech recognition improvement.

Confidence Score: 5/5

  • This PR is safe to merge — it makes a single, well-targeted property assignment with no side effects or behavioral regressions.
  • The main change (setting taskHint to .dictation) is correct, minimal, and improves speech recognition accuracy for Talk Mode. The property is set on a fresh object created per-call, cannot cause crashes or data loss, and the surrounding recognition lifecycle is unchanged. Code review of the change confirms .dictation is the appropriate hint for continuous conversational speech capture.
  • No files require special attention.

Last reviewed commit: 0d8d7c3

@steipete steipete merged commit d2347ed into openclaw:main Mar 8, 2026
23 of 24 checks passed
@steipete
Copy link
Contributor

steipete commented Mar 8, 2026

Landed via temp rebase onto main.

  • Gate: Test Suite 'Selected tests' started at 2026-03-08 13:52:32.228.
    Test Suite 'OpenClawPackageTests.xctest' started at 2026-03-08 13:52:32.236.
    Test Suite 'OpenClawPackageTests.xctest' passed at 2026-03-08 13:52:32.236.
    Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'Selected tests' passed at 2026-03-08 13:52:32.236.
    Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.008) seconds
    ◇ Test run started.
    ↳ Testing Library Version: 1501
    ↳ Target Platform: arm64e-apple-macos14.0
    ✔ Test run with 0 tests in 0 suites passed after 0.001 seconds. + Detect secrets...........................................................Failed
  • hook id: detect-secrets
  • exit code: 3
  • files were modified by this hook

The baseline file was updated.
Probably to keep line numbers of secrets up-to-date.
Please git add .secrets.baseline, thank you. +

[email protected] lint /Users/steipete/Projects/clawdbot2
oxlint --type-aware

Found 0 warnings and 0 errors.
Finished in 5.5s on 4955 files with 136 rules using 32 threads.

[email protected] build /Users/steipete/Projects/clawdbot2
pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/copy-plugin-sdk-root-alias.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts

[email protected] canvas:a2ui:bundle /Users/steipete/Projects/clawdbot2
bash scripts/bundle-a2ui.sh

A2UI bundle up to date; skipping.

[email protected] build:plugin-sdk:dts /Users/steipete/Projects/clawdbot2
tsc -p tsconfig.plugin-sdk.dts.json

[copy-hook-metadata] Copied 4 hook metadata files.
[copy-export-html-templates] Copied 5 export-html assets.

[email protected] test /Users/steipete/Projects/clawdbot2
node scripts/test-parallel.mjs

RUN v4.0.18 /Users/steipete/Projects/clawdbot2

RUN v4.0.18 /Users/steipete/Projects/clawdbot2

✓ src/acp/server.startup.test.ts (4 tests) 359ms
✓ src/cli/config-cli.test.ts (19 tests) 382ms
✓ src/hooks/bundled/session-memory/handler.test.ts (16 tests) 604ms
✓ src/plugins/install.test.ts (22 tests) 781ms
✓ src/cli/nodes-cli.coverage.test.ts (5 tests) 1158ms
✓ src/cli/gateway-cli/run.option-collisions.test.ts (9 tests) 786ms
✓ src/memory/qmd-manager.test.ts (57 tests) 248ms
✓ src/slack/monitor/slash.test.ts (27 tests) 2486ms
✓ dispatches the command when a menu button is clicked 1816ms
✓ src/config/config.plugin-validation.test.ts (9 tests) 293ms
✓ src/cli/program/preaction.test.ts (5 tests) 209ms
✓ src/memory/embeddings.test.ts (23 tests) 429ms
✓ src/tui/gateway-chat.test.ts (16 tests) 214ms
✓ src/secrets/audit.test.ts (14 tests) 189ms
✓ src/config/schema.test.ts (20 tests) 376ms
✓ src/secrets/apply.test.ts (12 tests) 157ms
✓ src/media-understanding/providers/image.test.ts (4 tests) 3317ms
✓ routes minimax-portal image models through the MiniMax VLM endpoint 3313ms
✓ src/infra/fs-safe.test.ts (29 tests) 144ms
✓ src/memory/index.test.ts (10 tests) 157ms
✓ src/infra/update-startup.test.ts (10 tests) 52ms
✓ src/infra/restart.test.ts (5 tests) 4007ms
✓ kills stale gateway pids discovered on the gateway port 2002ms
✓ uses explicit port override when provided 2001ms
✓ src/secrets/resolve.test.ts (16 tests) 154ms
✓ src/cli/daemon-cli/install.integration.test.ts (2 tests) 269ms
✓ src/pairing/pairing-store.test.ts (17 tests) 154ms
✓ src/security/audit.test.ts (95 tests) 305ms
✓ src/infra/gateway-lock.test.ts (9 tests) 98ms
✓ src/cli/program.smoke.test.ts (4 tests) 111ms
✓ src/security/temp-path-guard.test.ts (3 tests) 220ms
✓ src/cron/service.failure-alert.test.ts (4 tests) 88ms
✓ test/scripts/ios-team-id.test.ts (3 tests) 129ms
✓ src/cron/isolated-agent.delivers-response-has-heartbeat-ok-but-includes.test.ts (5 tests) 106ms
✓ src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts (18 tests) 188ms
✓ src/slack/monitor/message-handler/prepare.test.ts (21 tests) 140ms
✓ src/cron/isolated-agent.skips-delivery-without-whatsapp-recipient-besteffortdeliver-true.test.ts (12 tests) 205ms
✓ src/cron/isolated-agent.model-formatting.test.ts (22 tests) 224ms
✓ src/cron/service.issue-regressions.test.ts (36 tests) 359ms
✓ src/infra/heartbeat-runner.returns-default-unset.test.ts (25 tests) 150ms
✓ src/media/store.test.ts (24 tests) 168ms
✓ src/acp/control-plane/manager.test.ts (25 tests) 109ms
✓ src/config/config.legacy-config-detection.accepts-imessage-dmpolicy.test.ts (30 tests) 73ms
✓ src/config/io.write-config.test.ts (15 tests) 103ms
✓ src/cron/service.persists-delivered-status.test.ts (6 tests) 71ms
✓ src/memory/manager.batch.test.ts (3 tests) 114ms
✓ src/config/sessions/store.pruning.integration.test.ts (10 tests) 56ms
✓ src/infra/system-presence.version.test.ts (3 tests) 87ms
✓ src/config/config.identity-avatar.test.ts (3 tests) 15ms
✓ src/infra/device-pairing.test.ts (11 tests) 109ms
✓ src/plugin-sdk/subpaths.test.ts (10 tests) 211ms
✓ src/cli/program/register.message.test.ts (2 tests) 55ms
✓ src/infra/provider-usage.auth.normalizes-keys.test.ts (17 tests) 76ms
✓ src/memory/manager.embedding-batches.test.ts (5 tests) 95ms
✓ src/routing/resolve-route.test.ts (41 tests) 71ms
✓ src/config/schema.help.quality.test.ts (20 tests) 34ms
✓ src/config/config.nix-integration-u3-u5-u9.test.ts (19 tests) 86ms
✓ src/media-understanding/apply.test.ts (32 tests) 225ms
✓ src/infra/host-env-security.test.ts (11 tests) 211ms
✓ src/infra/update-runner.test.ts (16 tests) 380ms
✓ src/canvas-host/server.test.ts (6 tests) 115ms
✓ src/slack/monitor.tool-result.test.ts (25 tests) 170ms
✓ src/cli/memory-cli.test.ts (24 tests) 104ms
✓ src/hooks/loader.test.ts (13 tests) 325ms
✓ src/config/sessions.test.ts (37 tests) 319ms
✓ src/plugins/update.test.ts (4 tests) 71ms
✓ src/node-host/invoke-system-run.test.ts (25 tests) 89ms
✓ src/hooks/install.test.ts (15 tests) 232ms
✓ src/wizard/onboarding.test.ts (7 tests) 97ms
✓ src/cli/gateway-cli/register.option-collisions.test.ts (2 tests) 94ms
✓ src/cli/daemon-cli/lifecycle.test.ts (7 tests) 41ms
✓ src/wizard/onboarding.gateway-config.test.ts (7 tests) 78ms
✓ src/cron/service.restart-catchup.test.ts (7 tests) 60ms
✓ test/git-hooks-pre-commit.test.ts (1 test) 101ms
✓ src/slack/monitor/media.test.ts (28 tests) 61ms
✓ src/infra/heartbeat-runner.respects-ackmaxchars-heartbeat-acks.test.ts (12 tests) 99ms
✓ src/memory/manager.get-concurrency.test.ts (1 test) 65ms
✓ src/infra/boundary-path.test.ts (5 tests) 51ms
✓ src/process/command-queue.test.ts (16 tests) 59ms
✓ src/infra/archive.test.ts (14 tests) 73ms
✓ src/infra/outbound/outbound.test.ts (63 tests) 102ms
✓ src/plugins/loader.test.ts (43 tests) 372ms
✓ src/plugin-sdk/keyed-async-queue.test.ts (4 tests) 59ms
✓ src/memory/manager.async-search.test.ts (2 tests) 127ms
✓ src/plugin-sdk/channel-lifecycle.test.ts (3 tests) 59ms
✓ src/infra/path-alias-guards.test.ts (3 tests) 81ms
✓ src/process/supervisor/supervisor.test.ts (5 tests) 138ms
✓ src/cron/run-log.test.ts (11 tests) 286ms
✓ src/infra/outbound/message-action-runner.test.ts (40 tests) 288ms
✓ src/cli/program/register.status-health-sessions.test.ts (9 tests) 150ms
✓ src/plugins/discovery.test.ts (12 tests) 159ms
✓ src/security/fix.test.ts (5 tests) 120ms
✓ src/infra/outbound/message.channels.test.ts (8 tests) 22ms
✓ src/utils.test.ts (28 tests) 22ms
✓ src/cron/isolated-agent.subagent-model.test.ts (4 tests) 86ms
✓ src/cron/service.every-jobs-fire.test.ts (3 tests) 122ms
✓ src/infra/heartbeat-runner.ghost-reminder.test.ts (6 tests) 102ms
✓ src/config/sessions/sessions.test.ts (15 tests) 79ms
✓ src/infra/heartbeat-runner.sender-prefers-delivery-target.test.ts (1 test) 152ms
✓ src/security/skill-scanner.test.ts (27 tests) 331ms
✓ src/cli/program/register.maintenance.test.ts (7 tests) 264ms
✓ src/cron/service.runs-one-shot-main-job-disables-it.test.ts (14 tests) 188ms
✓ src/cron/service.store.migration.test.ts (6 tests) 344ms
✓ src/cli/program/register.setup.test.ts (4 tests) 25ms
✓ src/cli/update-cli.test.ts (26 tests) 13ms
✓ src/memory/manager.readonly-recovery.test.ts (4 tests) 59ms
✓ src/media/server.test.ts (9 tests) 40ms
✓ src/memory/batch-voyage.test.ts (2 tests) 56ms
✓ src/plugins/tools.optional.test.ts (6 tests) 5ms
✓ src/cli/daemon-cli.coverage.test.ts (5 tests) 30ms
✓ src/slack/monitor/monitor.test.ts (24 tests) 44ms
✓ src/media-understanding/apply.echo-transcript.test.ts (10 tests) 41ms
✓ src/memory/manager.atomic-reindex.test.ts (1 test) 47ms
✓ src/config/config.compaction-settings.test.ts (5 tests) 38ms
✓ src/imessage/monitor.shutdown.unhandled-rejection.test.ts (1 test) 5ms

Test Files 18 passed (18)
Tests 325 passed (325)
Start at 13:53:32
Duration 14.84s (transform 10.47s, setup 1.81s, import 19.81s, tests 4.91s, environment 1ms)

✓ src/infra/install-package-dir.test.ts (4 tests) 84ms
✓ src/config/schema.hints.test.ts (7 tests) 43ms
✓ src/cron/service.read-ops-nonblocking.test.ts (3 tests) 96ms
✓ src/config/env-preserve-io.test.ts (4 tests) 53ms
✓ src/config/config.backup-rotation.test.ts (4 tests) 65ms
✓ src/cli/update-cli.option-collisions.test.ts (2 tests) 137ms
✓ src/logging/log-file-size-cap.test.ts (3 tests) 56ms
✓ src/infra/heartbeat-runner.model-override.test.ts (6 tests) 205ms
✓ src/cron/service.delivery-plan.test.ts (3 tests) 74ms
✓ src/cli/daemon-cli/lifecycle-core.test.ts (5 tests) 35ms
✓ src/config/config.identity-defaults.test.ts (7 tests) 81ms
✓ src/hooks/hooks-install.test.ts (1 test) 34ms
✓ src/config/redact-snapshot.test.ts (40 tests) 41ms
✓ src/infra/infra-store.test.ts (15 tests) 20ms
✓ src/slack/monitor/message-handler/prepare.thread-session-key.test.ts (4 tests) 39ms
✓ src/plugin-sdk/persistent-dedupe.test.ts (6 tests) 33ms
✓ src/config/config.pruning-defaults.test.ts (6 tests) 42ms
✓ src/process/exec.no-output-timer.test.ts (1 test) 4ms
✓ src/memory/manager.read-file.test.ts (4 tests) 39ms
✓ src/memory/internal.test.ts (13 tests) 30ms
✓ src/config/plugins-runtime-boundary.test.ts (3 tests) 36ms
✓ src/cron/service.session-reaper-in-finally.test.ts (3 tests) 34ms
✓ src/cron/isolated-agent.direct-delivery-forum-topics.test.ts (1 test) 44ms
✓ src/infra/system-presence.test.ts (3 tests) 29ms
✓ src/config/sessions/store.session-key-normalization.test.ts (4 tests) 26ms
✓ src/config/io.compat.test.ts (7 tests) 28ms
✓ src/config/config-misc.test.ts (32 tests) 28ms
✓ src/infra/brew.test.ts (5 tests) 22ms
✓ src/signal/monitor/event-handler.inbound-contract.test.ts (7 tests) 37ms
✓ src/hooks/workspace.test.ts (5 tests) 24ms
✓ src/daemon/service-audit.test.ts (16 tests) 28ms
✓ src/cron/service.store-migration.test.ts (3 tests) 29ms
✓ src/cli/nodes-camera.test.ts (17 tests) 16ms
✓ src/cron/service.issue-16156-list-skips-cron.test.ts (3 tests) 37ms
✓ src/signal/format.test.ts (7 tests) 15ms
✓ src/cli/program/register.onboard.test.ts (7 tests) 151ms
✓ src/cli/update-cli/restart-helper.test.ts (20 tests) 26ms
✓ src/secrets/runtime.test.ts (51 tests) 26ms
✓ src/channels/plugins/plugins-core.test.ts (28 tests) 40ms
✓ src/config/config.legacy-config-detection.rejects-routing-allowfrom.test.ts (28 tests) 32ms
✓ src/memory/manager.mistral-provider.test.ts (3 tests) 28ms
✓ src/cli/program/register.agent.test.ts (13 tests) 35ms
✓ src/infra/exec-approvals-safe-bins.test.ts (47 tests) 26ms
✓ src/cli/acp-cli.option-collisions.test.ts (7 tests) 34ms
✓ src/cli/program/config-guard.test.ts (8 tests) 31ms
✓ src/infra/exec-approvals-allow-always.test.ts (16 tests) 24ms
✓ src/infra/session-cost-usage.test.ts (9 tests) 29ms
✓ src/memory/manager.sync-errors-do-not-crash.test.ts (1 test) 24ms
✓ src/cli/browser-cli-extension.test.ts (4 tests) 26ms
✓ src/infra/run-node.test.ts (1 test) 20ms
✓ src/config/sessions.cache.test.ts (9 tests) 28ms
✓ src/cron/service.heartbeat-ok-summary-suppressed.test.ts (2 tests) 31ms
✓ src/infra/install-source-utils.test.ts (13 tests) 23ms
✓ src/cli/devices-cli.test.ts (13 tests) 26ms
✓ src/plugins/schema-validator.test.ts (7 tests) 23ms
✓ src/cron/session-reaper.test.ts (16 tests) 27ms
✓ src/daemon/schtasks.test.ts (22 tests) 23ms
✓ src/infra/exec-approvals.test.ts (41 tests) 26ms
✓ src/i18n/registry.test.ts (3 tests) 20ms
✓ src/cli/skills-cli.commands.test.ts (5 tests) 26ms
✓ src/cli/route.test.ts (3 tests) 28ms
✓ src/version.test.ts (10 tests) 44ms
✓ src/cli/models-cli.test.ts (4 tests) 24ms
✓ src/cron/store.test.ts (10 tests) 84ms
✓ src/config/includes.test.ts (26 tests) 22ms
✓ src/cli/banner.test.ts (3 tests) 19ms
✓ src/plugins/uninstall.test.ts (23 tests) 20ms
✓ src/plugins/manifest-registry.test.ts (7 tests) 27ms
✓ src/cron/isolated-agent.auth-profile-propagation.test.ts (1 test) 48ms
✓ src/cli/pairing-cli.test.ts (12 tests) 27ms
✓ src/config/plugin-auto-enable.test.ts (20 tests) 19ms
✓ src/infra/outbound/deliver.test.ts (38 tests) 28ms
✓ src/daemon/schtasks.install.test.ts (3 tests) 38ms
✓ src/process/exec.test.ts (8 tests | 2 skipped) 49ms
✓ src/media/server.outside-workspace.test.ts (1 test) 44ms
✓ src/config/sessions/store.pruning.test.ts (4 tests) 319ms
✓ src/infra/infra-runtime.test.ts (14 tests) 18ms
✓ src/signal/monitor.tool-result.sends-tool-summaries-responseprefix.test.ts (16 tests) 38ms
✓ src/infra/node-pairing.test.ts (4 tests) 20ms
✓ src/config/io.owner-display-secret.test.ts (1 test) 70ms
✓ src/logger.test.ts (9 tests) 16ms
✓ src/config/io.runtime-snapshot-write.test.ts (3 tests) 15ms
✓ src/config/io.validation-fails-closed.test.ts (2 tests) 18ms
✓ src/cli/gateway-cli/run-loop.test.ts (8 tests) 17ms
✓ src/logging/console-capture.test.ts (9 tests) 16ms
✓ src/infra/heartbeat-runner.transcript-prune.test.ts (2 tests) 29ms
✓ src/infra/retry.test.ts (9 tests) 12ms
✓ src/infra/restart-sentinel.test.ts (9 tests) 11ms
✓ src/signal/format.chunking.test.ts (21 tests) 19ms
✓ src/slack/monitor.threading.missing-thread-ts.test.ts (3 tests) 27ms
✓ src/infra/outbound/cfg-threading.guard.test.ts (2 tests) 11ms
✓ src/cron/service.main-job-passes-heartbeat-target-last.test.ts (2 tests) 30ms
✓ src/config/config.acp-binding-cutover.test.ts (6 tests) 9ms
✓ src/config/sessions/session-key.test.ts (6 tests) 2ms
✓ src/cron/service.skips-main-jobs-empty-systemevent-text.test.ts (3 tests) 26ms
✓ src/infra/provider-usage.test.ts (15 tests) 17ms
✓ src/channels/status-reactions.test.ts (35 tests) 18ms
✓ src/channels/typing.test.ts (14 tests) 24ms
✓ src/acp/client.test.ts (34 tests) 18ms
✓ src/cli/cron-cli.test.ts (34 tests) 23ms
✓ src/config/talk.normalize.test.ts (6 tests) 16ms
✓ src/config/config.allowlist-requires-allowfrom.test.ts (14 tests) 18ms
✓ src/memory/manager.vector-dedupe.test.ts (1 test) 21ms
✓ src/cron/service.issue-35195-backup-timing.test.ts (1 test) 14ms
✓ src/cli/browser-cli-inspect.test.ts (5 tests) 13ms
✓ src/channels/plugins/actions/actions.test.ts (44 tests) 18ms
✓ src/infra/unhandled-rejections.fatal-detection.test.ts (6 tests) 11ms
✓ src/media-understanding/media-understanding-misc.test.ts (7 tests) 15ms
✓ src/cron/service.prevents-duplicate-timers.test.ts (1 test) 19ms
✓ src/cli/program/register.configure.test.ts (2 tests) 12ms
✓ src/cli/deps.test.ts (2 tests) 10ms
✓ src/cron/service.get-job.test.ts (2 tests) 17ms
✓ src/slack/monitor/events/interactions.test.ts (21 tests) 17ms
✓ src/tts/tts.test.ts (29 tests) 14ms
✓ src/cli/channel-options.test.ts (4 tests) 11ms
✓ src/cron/service.list-page-sort-guards.test.ts (2 tests) 3ms
✓ src/hooks/frontmatter.test.ts (20 tests) 14ms
✓ src/node-host/invoke-system-run-plan.test.ts (6 tests) 10ms
✓ src/config/config.discord.test.ts (2 tests) 13ms
✓ src/security/windows-acl.test.ts (48 tests) 10ms
✓ src/daemon/systemd.test.ts (43 tests) 16ms
✓ src/infra/install-flow.test.ts (5 tests) 10ms
✓ src/hooks/bundled/bootstrap-extra-files/handler.test.ts (2 tests) 22ms
✓ src/scripts/ci-changed-scope.test.ts (9 tests) 12ms
✓ src/signal/monitor/event-handler.mention-gating.test.ts (15 tests) 25ms
✓ src/media-understanding/runner.auto-audio.test.ts (4 tests) 17ms
✓ src/media-understanding/runner.proxy.test.ts (3 tests) 14ms
✓ src/infra/ssh-config.test.ts (3 tests) 6ms
✓ src/infra/ports.test.ts (7 tests) 7ms
✓ src/memory/session-files.test.ts (3 tests) 13ms
✓ src/infra/heartbeat-wake.test.ts (13 tests) 12ms
✓ src/cli/command-secret-gateway.test.ts (18 tests) 13ms
✓ src/process/supervisor/adapters/pty.test.ts (9 tests) 9ms
✓ src/config/legacy-migrate.test.ts (20 tests) 18ms
✓ src/infra/exec-approvals-parity.test.ts (20 tests) 11ms
✓ src/media/store.redirect.test.ts (2 tests) 17ms
✓ src/cron/service.rearm-timer-when-running.test.ts (2 tests) 94ms
✓ src/infra/heartbeat-runner.scheduler.test.ts (8 tests) 22ms
✓ src/config/paths.test.ts (10 tests) 34ms
✓ src/infra/bonjour.test.ts (7 tests) 10ms
✓ src/docker-image-digests.test.ts (2 tests) 12ms
✓ src/slack/send.blocks.test.ts (12 tests) 10ms
✓ src/scripts/canvas-a2ui-copy.test.ts (3 tests) 9ms
✓ src/infra/restart-stale-pids.test.ts (37 tests) 11ms
✓ src/acp/secret-file.test.ts (4 tests) 10ms
✓ src/hooks/gmail-setup-utils.test.ts (3 tests) 5ms
✓ src/markdown/ir.blockquote-spacing.test.ts (19 tests) 12ms
✓ src/config/config.multi-agent-agentdir-validation.test.ts (2 tests) 10ms
✓ src/memory/manager.watcher-config.test.ts (1 test) 10ms
✓ src/slack/format.test.ts (7 tests) 13ms
✓ src/memory/embeddings-voyage.test.ts (4 tests) 19ms
✓ src/media-understanding/runner.skip-tiny-audio.test.ts (3 tests) 10ms
✓ src/cron/service/jobs.schedule-error-isolation.test.ts (8 tests) 9ms
✓ src/wizard/onboarding.finalize.test.ts (2 tests) 18ms
✓ src/cron/isolated-agent/helpers.test.ts (20 tests) 6ms
✓ src/cli/cli-utils.test.ts (11 tests) 13ms
✓ src/config/config.schema-regressions.test.ts (13 tests) 15ms
✓ src/cli/qr-cli.test.ts (18 tests) 16ms
✓ src/media/input-files.fetch-guard.test.ts (10 tests) 30ms
✓ src/test-helpers/state-dir-env.test.ts (4 tests) 38ms
✓ src/infra/dotenv.test.ts (3 tests) 60ms
✓ src/markdown/ir.nested-lists.test.ts (18 tests) 14ms
✓ src/hooks/import-url.test.ts (7 tests) 62ms
✓ src/config/group-policy.test.ts (13 tests) 7ms
✓ src/cli/system-cli.test.ts (7 tests) 15ms
✓ src/infra/windows-task-restart.test.ts (4 tests) 58ms
✓ src/infra/net/fetch-guard.ssrf.test.ts (10 tests) 15ms
✓ src/cli/gateway-cli.coverage.test.ts (8 tests) 67ms
✓ src/memory/query-expansion.test.ts (26 tests) 16ms
✓ src/cron/isolated-agent/run.skill-filter.test.ts (13 tests) 33ms
✓ src/cron/service.jobs.test.ts (34 tests) 13ms
✓ src/imessage/send.test.ts (11 tests) 12ms
✓ src/tui/components/chat-log.test.ts (3 tests) 15ms
✓ src/slack/send.upload.test.ts (5 tests) 10ms
✓ src/infra/push-apns.test.ts (8 tests) 35ms
✓ src/cli/daemon-cli/status.gather.test.ts (7 tests) 11ms
✓ src/channels/plugins/onboarding/helpers.test.ts (59 tests) 16ms
✓ src/markdown/frontmatter.test.ts (8 tests) 11ms
✓ src/cli/program/routes.test.ts (20 tests) 16ms
✓ src/cli/program.force.test.ts (15 tests) 9ms
✓ src/cron/schedule.test.ts (22 tests) 10ms
✓ src/cron/isolated-agent/run.message-tool-policy.test.ts (2 tests) 4ms
✓ src/media/mime.test.ts (44 tests) 11ms
✓ src/security/external-content.test.ts (35 tests) 9ms
✓ src/config/config.sandbox-docker.test.ts (21 tests) 10ms
✓ src/config/sessions/disk-budget.test.ts (2 tests) 11ms
✓ src/channels/plugins/config-schema.test.ts (3 tests) 5ms
✓ src/markdown/ir.hr-spacing.test.ts (13 tests) 12ms
✓ src/infra/outbound/message-action-params.test.ts (1 test) 10ms
✓ src/config/config.agent-concurrency-defaults.test.ts (4 tests) 11ms
✓ src/infra/net/ssrf.pinning.test.ts (15 tests) 8ms
✓ src/routing/account-id.test.ts (5 tests) 2ms
✓ src/cli/completion-fish.test.ts (4 tests) 2ms
✓ src/markdown/ir.table-bullets.test.ts (7 tests) 8ms
✓ src/secrets/runtime.coverage.test.ts (2 tests) 7ms
✓ src/infra/exec-approval-forwarder.test.ts (13 tests) 12ms
✓ src/daemon/launchd.test.ts (20 tests) 7ms
✓ src/channels/plugins/setup-helpers.test.ts (3 tests) 2ms
✓ src/infra/tailscale.test.ts (12 tests) 8ms
✓ src/infra/git-root.test.ts (4 tests) 8ms
✓ test/scripts/check-channel-agnostic-boundaries.test.ts (11 tests) 10ms
✓ src/memory/temporal-decay.test.ts (6 tests) 7ms
✓ src/cron/isolated-agent/subagent-followup.test.ts (23 tests) 8ms
✓ src/infra/outbound/message-action-runner.threading.test.ts (7 tests) 9ms
✓ src/infra/watch-node.test.ts (3 tests) 5ms
✓ src/plugin-sdk/webhook-targets.test.ts (20 tests) 8ms
✓ src/canvas-host/server.state-dir.test.ts (1 test) 8ms
✓ src/context-engine/context-engine.test.ts (19 tests) 6ms
✓ src/media-understanding/runner.video.test.ts (2 tests) 11ms
✓ src/tui/components/searchable-select-list.test.ts (19 tests) 7ms
✓ src/config/validation.allowed-values.test.ts (4 tests) 7ms
✓ src/security/dm-policy-shared.test.ts (66 tests) 8ms
✓ ui/src/ui/controllers/chat.test.ts (25 tests) 7ms
✓ src/process/kill-tree.test.ts (4 tests) 6ms
✓ src/infra/control-ui-assets.test.ts (9 tests) 7ms
✓ src/media-understanding/providers/mistral/index.test.ts (3 tests) 5ms
✓ src/cli/exec-approvals-cli.test.ts (3 tests) 8ms
✓ src/memory/search-manager.test.ts (6 tests) 7ms
✓ src/cron/isolated-agent/run.cron-model-override.test.ts (6 tests) 26ms
✓ src/signal/monitor.tool-result.pairs-uuid-only-senders-uuid-allowlist-entry.test.ts (2 tests) 10ms
✓ src/infra/http-body.test.ts (9 tests) 7ms
✓ src/logging/diagnostic.test.ts (7 tests) 8ms
✓ src/cli/browser-cli-state.option-collisions.test.ts (9 tests) 8ms
✓ src/plugins/voice-call.plugin.test.ts (7 tests) 9ms
✓ src/infra/exec-approvals-config.test.ts (9 tests) 7ms
✓ src/cron/service.armtimer-tight-loop.test.ts (3 tests) 11ms
✓ src/cli/daemon-cli/restart-health.test.ts (9 tests) 8ms
✓ src/cli/qr-dashboard.integration.test.ts (2 tests) 10ms
✓ src/infra/retry-policy.test.ts (3 tests) 9ms
✓ src/cli/secrets-cli.test.ts (5 tests) 7ms
✓ src/daemon/service-env.test.ts (48 tests) 8ms
✓ src/tui/tui-event-handlers.test.ts (17 tests) 9ms
✓ src/cli/program/message/helpers.test.ts (10 tests) 8ms
✓ src/infra/device-identity.state-dir.test.ts (1 test) 6ms
✓ src/config/config.dm-policy-alias.test.ts (6 tests) 7ms
✓ src/cli/program/command-registry.test.ts (9 tests) 8ms
✓ src/infra/net/ssrf.test.ts (9 tests) 7ms
✓ src/config/thread-bindings-config-keys.test.ts (5 tests) 9ms
✓ src/signal/format.links.test.ts (3 tests) 9ms
✓ src/config/config.secrets-schema.test.ts (8 tests) 7ms
✓ src/hooks/internal-hooks.test.ts (30 tests) 7ms
✓ src/infra/install-safe-path.test.ts (5 tests) 8ms
✓ src/config/sessions/artifacts.test.ts (3 tests) 2ms
✓ src/cli/program/register.subclis.test.ts (6 tests) 6ms
✓ src/config/config.env-vars.test.ts (6 tests) 7ms
✓ src/infra/process-respawn.test.ts (13 tests) 7ms
✓ src/acp/translator.session-rate-limit.test.ts (4 tests) 6ms
✓ test/scripts/check-no-random-messaging-tmp.test.ts (5 tests) 9ms
✓ src/acp/persistent-bindings.test.ts (18 tests) 7ms
✓ src/cli/program/help.test.ts (3 tests) 6ms
✓ src/config/slack-token-validation.test.ts (4 tests) 6ms
✓ src/logging/redact.test.ts (12 tests) 7ms
✓ src/media-understanding/providers/deepgram/audio.test.ts (3 tests) 6ms
✓ src/infra/shell-env.test.ts (13 tests) 6ms
✓ src/infra/exec-obfuscation-detect.test.ts (22 tests) 6ms
✓ test/scripts/check-no-raw-window-open.test.ts (4 tests) 8ms
✓ src/infra/exec-safe-bin-policy.test.ts (84 tests) 6ms
✓ src/media-understanding/attachments.guards.test.ts (3 tests) 3ms
✓ src/channels/transport/stall-watchdog.test.ts (3 tests) 6ms
✓ src/infra/outbound/targets.test.ts (47 tests) 12ms
✓ src/pairing/setup-code.test.ts (15 tests) 6ms
✓ src/imessage/monitor.gating.test.ts (9 tests) 8ms
✓ src/process/supervisor/supervisor.pty-command.test.ts (2 tests) 6ms
✓ src/media/fetch.test.ts (3 tests) 5ms
✓ src/memory/embeddings-ollama.test.ts (4 tests) 6ms
✓ src/infra/provider-usage.fetch.claude.test.ts (9 tests) 7ms
✓ src/config/config.irc.test.ts (7 tests) 6ms
✓ src/channels/inbound-debounce-policy.test.ts (3 tests) 4ms
✓ src/infra/bonjour-discovery.test.ts (4 tests) 8ms
✓ src/markdown/ir.table-code.test.ts (4 tests) 7ms
✓ src/cli/skills-cli.formatting.test.ts (2 tests) 6ms
✓ src/infra/json-utf8-bytes.test.ts (2 tests) 6ms
✓ src/terminal/table.test.ts (12 tests) 5ms
✓ src/signal/format.visual.test.ts (7 tests) 8ms
✓ src/plugins/runtime/gateway-request-scope.test.ts (1 test) 9ms
✓ src/daemon/runtime-paths.test.ts (17 tests) 6ms
✓ src/config/slack-http-config.test.ts (6 tests) 7ms
✓ src/media-understanding/defaults.test.ts (5 tests) 3ms
✓ src/cli/logs-cli.test.ts (11 tests) 7ms
✓ src/infra/exec-safe-bin-runtime-policy.test.ts (16 tests) 7ms
✓ src/infra/format-time/format-time.test.ts (32 tests) 6ms
✓ src/config/telegram-webhook-secret.test.ts (6 tests) 6ms
✓ src/providers/google-shared.preserves-parameters-type-is-missing.test.ts (9 tests) 6ms
✓ src/infra/system-events.test.ts (11 tests) 6ms
✓ src/memory/mmr.test.ts (25 tests) 5ms
✓ src/imessage/monitor/inbound-processing.test.ts (4 tests) 7ms
✓ src/cli/skills-cli.test.ts (11 tests) 6ms
✓ src/config/config.telegram-topic-agentid.test.ts (5 tests) 6ms
✓ src/media/ffmpeg-exec.test.ts (3 tests) 3ms
✓ src/infra/provider-usage.fetch.minimax.test.ts (8 tests) 6ms
✓ src/slack/actions.blocks.test.ts (7 tests) 5ms
✓ src/slack/actions.download-file.test.ts (5 tests) 5ms
✓ src/config/config.tools-alsoAllow.test.ts (3 tests) 5ms
✓ src/cron/service.issue-13992-regression.test.ts (9 tests) 6ms
✓ src/infra/tmp-openclaw-dir.test.ts (11 tests) 7ms
✓ src/infra/parse-finite-number.test.ts (7 tests) 3ms
✓ src/media-understanding/providers/openai/audio.test.ts (3 tests) 6ms
✓ src/cli/daemon-cli/install.test.ts (6 tests) 7ms
✓ src/process/supervisor/adapters/child.test.ts (5 tests) 5ms
✓ src/plugins/wired-hooks-compaction.test.ts (8 tests) 5ms
✓ src/config/env-preserve.test.ts (16 tests) 4ms
✓ src/memory/backend-config.test.ts (7 tests) 3ms
✓ src/hooks/message-hooks.test.ts (12 tests) 6ms
✓ src/tui/tui.test.ts (24 tests) 7ms
✓ src/infra/openclaw-root.test.ts (7 tests) 6ms
✓ src/whatsapp/normalize.test.ts (8 tests) 3ms
✓ src/config/normalize-paths.test.ts (1 test) 6ms
✓ src/cli/channel-auth.test.ts (7 tests) 6ms
✓ src/channels/plugins/outbound/telegram.test.ts (4 tests) 5ms
✓ src/daemon/runtime-hints.test.ts (3 tests) 2ms
✓ src/channels/plugins/plugins-channel.test.ts (21 tests) 6ms
✓ src/hooks/bundled/boot-md/handler.gateway-startup.integration.test.ts (1 test) 2ms
✓ src/terminal/ansi.test.ts (2 tests) 2ms
✓ src/plugin-sdk/command-auth.test.ts (2 tests) 3ms
✓ src/channels/plugins/helpers.test.ts (4 tests) 2ms
✓ src/cron/service.jobs.top-of-hour-stagger.test.ts (6 tests) 7ms
✓ src/imessage/targets.test.ts (12 tests) 5ms
✓ src/channels/plugins/onboarding/whatsapp.test.ts (8 tests) 6ms
✓ src/slack/client.test.ts (3 tests) 3ms
✓ src/shared/net/ip.test.ts (4 tests) 4ms
✓ src/infra/path-env.test.ts (5 tests) 4ms
✓ src/slack/sent-thread-cache.test.ts (8 tests) 6ms
✓ src/cli/nodes-cli/register.invoke.nodes-run-approval-timeout.test.ts (4 tests) 4ms
✓ src/config/telegram-webhook-port.test.ts (3 tests) 5ms
✓ src/plugin-sdk/temp-path.test.ts (4 tests) 7ms
✓ src/tui/tui.submit-handler.test.ts (11 tests) 6ms
✓ src/cli/command-secret-resolution.coverage.test.ts (9 tests) 6ms
✓ src/infra/net/ssrf.dispatcher.test.ts (1 test) 4ms
✓ src/channels/plugins/outbound/discord.test.ts (12 tests) 5ms
✓ src/config/zod-schema.session-maintenance-extensions.test.ts (5 tests) 5ms
✓ src/tui/theme/theme.test.ts (6 tests) 4ms
✓ src/config/sessions/delivery-info.test.ts (4 tests) 3ms
✓ src/media-understanding/resolve.test.ts (6 tests) 4ms
✓ src/media-understanding/providers/google/video.test.ts (2 tests) 4ms
✓ src/config/config.discord-agent-components.test.ts (3 tests) 8ms
✓ src/cli/program/build-program.version-alias.test.ts (2 tests) 6ms
✓ src/media/store.outside-workspace.test.ts (1 test) 5ms
✓ src/infra/provider-usage.fetch.shared.test.ts (3 tests) 3ms
✓ src/tui/tui-command-handlers.test.ts (6 tests) 6ms
✓ src/config/config.msteams.test.ts (2 tests) 4ms
✓ src/infra/widearea-dns.test.ts (2 tests) 3ms
✓ src/logging/logger-timestamp.test.ts (1 test) 6ms
✓ src/plugins/runtime/index.test.ts (4 tests) 6ms
✓ src/routing/session-key.test.ts (18 tests) 4ms
✓ src/memory/qmd-scope.test.ts (6 tests) 3ms
✓ src/channels/plugins/outbound/whatsapp.sendpayload.test.ts (5 tests) 5ms
✓ src/cli/daemon-cli/register-service-commands.test.ts (2 tests) 6ms
✓ src/plugin-sdk/reply-payload.test.ts (4 tests) 2ms
✓ src/config/env-substitution.test.ts (16 tests) 5ms
✓ src/secrets/configure-plan.test.ts (6 tests) 5ms
✓ src/plugin-sdk/webhook-memory-guards.test.ts (9 tests) 3ms
✓ src/logging/console-timestamp.test.ts (4 tests) 5ms
✓ src/infra/npm-pack-install.test.ts (10 tests) 5ms
✓ src/plugin-sdk/group-access.test.ts (17 tests) 3ms
✓ src/config/config.hooks-module-paths.test.ts (4 tests) 5ms
✓ src/config/config.talk-api-key-fallback.test.ts (2 tests) 3ms
✓ src/plugins/services.test.ts (2 tests) 5ms
✓ src/config/config.web-search-provider.test.ts (14 tests) 5ms
✓ src/cron/isolated-agent/run.sandbox-config-preserved.test.ts (2 tests) 7ms
✓ src/slack/monitor/provider.reconnect.test.ts (6 tests) 5ms
✓ src/channels/plugins/onboarding/channel-access.test.ts (7 tests) 4ms
✓ src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts (5 tests) 4ms
✓ src/infra/safe-open-sync.test.ts (2 tests) 5ms
✓ src/infra/outbound/session-binding-service.test.ts (6 tests) 6ms
✓ src/slack/monitor/events/messages.test.ts (10 tests) 5ms
✓ src/acp/translator.prompt-prefix.test.ts (2 tests) 5ms
✓ src/hooks/bundled/boot-md/handler.test.ts (7 tests) 4ms
✓ src/channels/plugins/account-helpers.test.ts (15 tests) 3ms
✓ src/channels/plugins/onboarding/imessage.test.ts (3 tests) 2ms
✓ src/cron/isolated-agent/run.session-key.test.ts (4 tests) 2ms
✓ src/channels/session.test.ts (4 tests) 5ms
✓ src/cli/run-main.profile-env.test.ts (1 test) 2ms
✓ src/imessage/monitor/reflection-guard.test.ts (16 tests) 4ms
✓ src/infra/heartbeat-events-filter.test.ts (3 tests) 2ms
✓ src/signal/client.test.ts (3 tests) 3ms
✓ src/cron/service/timeout-policy.test.ts (4 tests) 2ms
✓ src/providers/qwen-portal-oauth.test.ts (8 tests) 6ms
✓ src/cli/argv.test.ts (51 tests) 5ms
✓ src/media/host.test.ts (3 tests) 4ms
✓ src/tui/osc8-hyperlinks.test.ts (19 tests) 5ms
✓ src/secrets/target-registry.test.ts (3 tests) 4ms
✓ src/shared/shared-misc.test.ts (16 tests) 5ms
✓ src/config/zod-schema.typing-mode.test.ts (2 tests) 4ms
✓ src/config/config.gateway-tailscale-bind.test.ts (4 tests) 5ms
✓ src/config/telegram-actions-poll.test.ts (2 tests) 5ms
✓ src/plugin-sdk/fetch-auth.test.ts (5 tests) 5ms
✓ src/daemon/runtime-hints.windows-paths.test.ts (1 test) 4ms
✓ src/media-understanding/runner.deepgram.test.ts (1 test) 6ms
✓ src/config/config.discord-presence.test.ts (7 tests) 5ms
✓ src/infra/fetch.test.ts (9 tests) 5ms
✓ src/imessage/monitor/deliver.test.ts (3 tests) 4ms
✓ src/channels/plugins/outbound/discord.sendpayload.test.ts (5 tests) 6ms
✓ src/link-understanding/detect.test.ts (10 tests) 4ms
✓ src/channels/plugins/outbound/slack.test.ts (7 tests) 6ms
✓ src/infra/state-migrations.state-dir.test.ts (1 test) 5ms
✓ src/shared/text/reasoning-tags.test.ts (12 tests) 4ms
✓ src/cron/normalize.test.ts (27 tests) 6ms
✓ src/logging/logger-env.test.ts (2 tests) 4ms
✓ src/hooks/message-hook-mappers.test.ts (5 tests) 3ms
✓ src/infra/runtime-guard.test.ts (5 tests) 4ms
✓ src/media-understanding/providers/moonshot/video.test.ts (2 tests) 5ms
✓ src/channels/plugins/outbound/direct-text-media.sendpayload.test.ts (5 tests) 5ms
✓ src/plugins/hooks.model-override-wiring.test.ts (6 tests) 5ms
✓ src/infra/transport-ready.test.ts (3 tests) 5ms
✓ src/cli/ports.test.ts (7 tests) 4ms
✓ src/infra/unhandled-rejections.test.ts (32 tests) 4ms
✓ src/slack/actions.read.test.ts (2 tests) 4ms
✓ src/infra/update-check.test.ts (5 tests) 3ms
✓ src/shared/pid-alive.test.ts (9 tests) 4ms
✓ src/infra/system-run-command.test.ts (23 tests) 7ms
✓ src/cron/cron-protocol-conformance.test.ts (2 tests) 4ms
✓ src/test-utils/env.test.ts (8 tests) 3ms
✓ src/infra/npm-integrity.test.ts (4 tests) 4ms
✓ src/memory/batch-http.test.ts (2 tests) 4ms
✓ src/plugins/http-registry.test.ts (6 tests) 5ms
✓ src/tui/tui-formatters.test.ts (26 tests) 6ms
✓ src/plugin-sdk/webhook-request-guards.test.ts (11 tests) 5ms
✓ src/channels/allowlists/resolve-utils.test.ts (10 tests) 4ms
✓ src/cli/browser-cli.test.ts (3 tests) 3ms
✓ src/infra/provider-usage.fetch.codex.test.ts (5 tests) 5ms
✓ src/channels/plugins/outbound/whatsapp.poll.test.ts (1 test) 2ms
✓ src/cron/isolated-agent/run.interim-retry.test.ts (3 tests) 5ms
✓ src/node-host/runner.credentials.test.ts (6 tests) 5ms
✓ src/cron/isolated-agent/delivery-target.test.ts (15 tests) 5ms
✓ src/infra/outbound/agent-delivery.test.ts (6 tests) 4ms
✓ src/cli/command-options.test.ts (7 tests) 4ms
✓ src/test-utils/temp-home.test.ts (1 test) 6ms
✓ src/slack/monitor/allow-list.test.ts (3 tests) 4ms
✓ src/media/parse.test.ts (5 tests) 4ms
✓ src/infra/provider-usage.shared.test.ts (4 tests) 4ms
✓ src/cron/isolated-agent/run.payload-fallbacks.test.ts (3 tests) 5ms
✓ src/config/zod-schema.cron-retention.test.ts (3 tests) 4ms
✓ src/node-host/invoke.sanitize-env.test.ts (9 tests) 4ms
✓ src/routing/account-lookup.test.ts (2 tests) 3ms
✓ src/plugin-sdk/index.test.ts (3 tests) 5ms
✓ src/plugin-sdk/runtime.test.ts (2 tests) 3ms
✓ src/slack/targets.test.ts (6 tests) 3ms
✓ src/infra/net/proxy-fetch.test.ts (7 tests) 5ms
✓ src/slack/draft-stream.test.ts (7 tests) 5ms
✓ src/slack/monitor/message-handler.test.ts (4 tests) 5ms
✓ src/channels/plugins/group-mentions.test.ts (7 tests) 4ms
✓ src/channels/plugins/outbound/slack.sendpayload.test.ts (5 tests) 7ms
✓ src/cron/delivery.test.ts (9 tests) 4ms
✓ src/plugins/hooks.before-agent-start.test.ts (10 tests) 3ms
✓ src/channels/channel-config.test.ts (17 tests) 4ms
✓ src/infra/outbound/outbound-send-service.test.ts (4 tests) 4ms
✓ src/acp/control-plane/runtime-cache.test.ts (2 tests) 4ms
✓ src/polls.test.ts (6 tests) 3ms
✓ src/infra/exec-safe-bin-trust.test.ts (6 tests) 4ms
✓ src/providers/github-copilot-models.test.ts (6 tests) 3ms
✓ src/cron/isolated-agent.delivery-target-thread-session.test.ts (6 tests) 4ms
✓ src/cli/run-main.test.ts (14 tests) 4ms
✓ src/cron/isolated-agent/session.test.ts (10 tests) 4ms
✓ src/channels/plugins/onboarding/channel-access-configure.test.ts (3 tests) 4ms
✓ src/whatsapp/resolve-outbound-target.test.ts (21 tests) 5ms
✓ src/infra/session-maintenance-warning.test.ts (1 test) 4ms
✓ src/config/merge-patch.test.ts (6 tests) 5ms
✓ src/infra/heartbeat-active-hours.test.ts (7 tests) 4ms
✓ src/plugins/wired-hooks-subagent.test.ts (6 tests) 4ms
✓ src/infra/wsl.test.ts (10 tests) 4ms
✓ src/channels/plugins/outbound/signal.test.ts (2 tests) 4ms
✓ src/slack/monitor/events/reactions.test.ts (9 tests) 9ms
✓ src/cron/service.issue-17852-daily-skip.test.ts (3 tests) 6ms
✓ src/infra/provider-usage.fetch.zai.test.ts (3 tests) 5ms
✓ src/config/zod-schema.logging-levels.test.ts (2 tests) 7ms
✓ src/channels/plugins/group-policy-warnings.test.ts (10 tests) 3ms
✓ src/infra/outbound/message.test.ts (2 tests) 4ms
✓ src/cli/plugin-install-plan.test.ts (4 tests) 6ms
✓ src/media/inbound-path-policy.test.ts (5 tests) 7ms
✓ src/infra/system-run-command.contract.test.ts (8 tests) 3ms
✓ src/config/config.telegram-audio-preflight.test.ts (2 tests) 9ms
✓ src/infra/abort-pattern.test.ts (6 tests) 4ms
✓ src/channels/dock.test.ts (8 tests) 4ms
✓ src/infra/infra-parsing.test.ts (16 tests) 4ms
✓ src/acp/runtime/registry.test.ts (6 tests) 3ms
✓ src/channels/thread-binding-id.test.ts (3 tests) 2ms
✓ src/memory/hybrid.test.ts (5 tests) 4ms
✓ ui/src/ui/controllers/agents.test.ts (7 tests) 4ms
✓ src/shared/requirements.test.ts (6 tests) 6ms
✓ src/channels/draft-stream-controls.test.ts (6 tests) 7ms
✓ src/plugin-sdk/slack-message-actions.test.ts (2 tests) 4ms
✓ src/config/config.meta-timestamp-coercion.test.ts (5 tests) 4ms
✓ src/cli/browser-cli-manage.timeout-option.test.ts (1 test) 4ms
✓ src/logging/console-settings.test.ts (2 tests) 4ms
✓ src/memory/embeddings-remote-fetch.test.ts (2 tests) 3ms
✓ src/config/config.telegram-custom-commands.test.ts (2 tests) 4ms
✓ src/plugins/wired-hooks-message.test.ts (4 tests) 3ms
✓ src/tui/tui-session-actions.test.ts (3 tests) 5ms
✓ src/cli/progress.test.ts (2 tests) 3ms
✓ src/tui/tui-stream-assembler.test.ts (12 tests) 3ms
✓ src/dockerfile.test.ts (4 tests) 4ms
✓ src/channels/plugins/status-issues/bluebubbles.test.ts (3 tests) 3ms
✓ src/utils/utils-misc.test.ts (22 tests) 4ms
✓ src/channels/conversation-label.test.ts (8 tests) 2ms
✓ src/utils/directive-tags.test.ts (6 tests) 3ms
✓ src/security/dm-policy-channel-smoke.test.ts (6 tests) 5ms
✓ src/tui/tui-input-history.test.ts (7 tests) 3ms
✓ src/utils/run-with-concurrency.test.ts (3 tests) 3ms
✓ src/slack/accounts.test.ts (4 tests) 2ms
✓ src/imessage/monitor/monitor-provider.echo-cache.test.ts (3 tests) 3ms
✓ src/channels/targets.test.ts (4 tests) 3ms
✓ src/signal/monitor.test.ts (6 tests) 2ms
✓ src/plugins/wired-hooks-llm.test.ts (3 tests) 4ms
✓ src/markdown/whatsapp.test.ts (3 tests) 2ms
✓ src/media-understanding/transcribe-audio.test.ts (3 tests) 3ms
✓ src/signal/send-reactions.test.ts (3 tests) 4ms
✓ src/infra/provider-usage.fetch.copilot.test.ts (2 tests) 3ms
✓ src/cli/cron-cli/shared.test.ts (9 tests) 3ms
✓ src/process/spawn-utils.test.ts (3 tests) 4ms
✓ src/channels/plugins/outbound/imessage.test.ts (2 tests) 5ms
✓ src/daemon/program-args.test.ts (3 tests) 3ms
✓ src/infra/outbound/channel-selection.test.ts (5 tests) 3ms
✓ src/acp/runtime/session-identifiers.test.ts (5 tests) 3ms
✓ src/slack/threading-tool-context.test.ts (12 tests) 3ms
✓ src/pairing/pairing-challenge.test.ts (5 tests) 5ms
✓ src/infra/outbound/sanitize-text.test.ts (27 tests) 4ms
✓ src/daemon/constants.test.ts (19 tests) 4ms
✓ src/channels/plugins/whatsapp-heartbeat.test.ts (8 tests) 3ms
✓ test/appcast.test.ts (1 test) 3ms
✓ src/acp/session-mapper.test.ts (2 tests) 3ms
✓ src/cli/profile.test.ts (19 tests) 4ms
✓ src/channels/typing-start-guard.test.ts (4 tests) 3ms
✓ src/logging/logger-settings.test.ts (2 tests) 3ms
✓ src/acp/runtime/error-text.test.ts (2 tests) 2ms
✓ src/slack/monitor/events/members.test.ts (7 tests) 3ms
✓ src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts (2 tests) 3ms
✓ src/logging/timestamps.test.ts (9 tests) 4ms
✓ src/infra/provider-usage.fetch.gemini.test.ts (2 tests) 4ms
✓ src/slack/stream-mode.test.ts (11 tests) 4ms
✓ src/config/allowed-values.test.ts (2 tests) 3ms
✓ src/config/logging-max-file-bytes.test.ts (2 tests) 4ms
✓ src/docs/slash-commands-doc.test.ts (1 test) 4ms
✓ src/wizard/onboarding.completion.test.ts (2 tests) 3ms
✓ src/secrets/runtime-gateway-auth-surfaces.test.ts (9 tests) 4ms
✓ src/process/exec.windows.test.ts (2 tests) 5ms
✓ src/infra/outbound/target-resolver.test.ts (2 tests) 3ms
✓ src/plugins/enable.test.ts (6 tests) 4ms
✓ src/cli/hooks-cli.test.ts (3 tests) 4ms
✓ src/memory/qmd-query-parser.test.ts (6 tests) 4ms
✓ src/poll-params.test.ts (9 tests) 3ms
✓ src/cli/program/action-reparse.test.ts (3 tests) 3ms
✓ src/config/io.eacces.test.ts (2 tests) 3ms
✓ src/imessage/monitor/loop-rate-limiter.test.ts (5 tests) 5ms
✓ src/plugin-sdk/ssrf-policy.test.ts (9 tests) 3ms
✓ src/config/commands.test.ts (8 tests) 3ms
✓ src/secrets/path-utils.test.ts (6 tests) 4ms
✓ src/slack/blocks-input.test.ts (4 tests) 3ms
✓ src/plugin-sdk/outbound-media.test.ts (2 tests) 3ms
✓ src/media-understanding/runner.vision-skip.test.ts (1 test) 3ms
✓ src/tui/tui-overlays.test.ts (2 tests) 3ms
✓ src/channels/channels-misc.test.ts (11 tests) 5ms
✓ src/slack/monitor/events/pins.test.ts (7 tests) 4ms
✓ src/slack/monitor.test.ts (12 tests) 4ms
✓ src/slack/monitor/message-handler.app-mention-race.test.ts (4 tests) 3ms
✓ src/slack/http/registry.test.ts (5 tests) 4ms
✓ src/media/audio.test.ts (23 tests) 3ms
✓ src/channels/run-state-machine.test.ts (3 tests) 3ms
✓ src/plugin-sdk/status-helpers.test.ts (10 tests) 3ms
✓ src/terminal/restore.test.ts (3 tests) 3ms
✓ src/infra/warning-filter.test.ts (3 tests) 3ms
✓ src/config/config.skills-entries-config.test.ts (2 tests) 5ms
✓ src/channels/plugins/directory-config-helpers.test.ts (4 tests) 3ms
✓ src/shared/string-normalization.test.ts (4 tests) 3ms
✓ src/memory/post-json.test.ts (2 tests) 3ms
✓ src/plugin-sdk/root-alias.test.ts (3 tests) 3ms
✓ src/secrets/target-registry-pattern.test.ts (4 tests) 4ms
✓ src/sessions/model-overrides.test.ts (3 tests) 2ms
✓ src/acp/runtime/errors.test.ts (2 tests) 3ms
✓ src/memory/embedding-chunk-limits.test.ts (4 tests) 4ms
✓ src/imessage/monitor/sanitize-outbound.test.ts (11 tests) 3ms
✓ src/tui/tui-local-shell.test.ts (2 tests) 3ms
✓ src/media-understanding/format.test.ts (5 tests) 3ms
✓ src/slack/monitor/replies.test.ts (3 tests) 3ms
✓ src/slack/monitor/provider.auth-errors.test.ts (20 tests) 4ms
✓ src/process/supervisor/registry.test.ts (3 tests) 3ms
✓ src/plugin-sdk/allow-from.test.ts (10 tests) 4ms
✓ src/hooks/gmail-watcher-lifecycle.test.ts (5 tests) 3ms
✓ src/shared/avatar-policy.test.ts (5 tests) 3ms
✓ src/daemon/cmd-argv.test.ts (12 tests) 3ms
✓ src/plugins/config-state.test.ts (10 tests) 4ms
✓ src/node-host/exec-policy.test.ts (12 tests) 4ms
✓ src/infra/archive-path.test.ts (3 tests) 3ms
✓ src/plugins/wired-hooks-session.test.ts (3 tests) 3ms
✓ src/channels/plugins/status-issues/whatsapp.test.ts (3 tests) 3ms
✓ src/channels/plugins/normalize/telegram.test.ts (6 tests) 3ms
✓ src/sessions/transcript-events.test.ts (2 tests) 3ms
✓ src/plugins/wired-hooks-gateway.test.ts (3 tests) 4ms
✓ src/slack/resolve-users.test.ts (2 tests) 3ms
✓ src/memory/batch-output.test.ts (3 tests) 2ms
✓ src/config/model-alias-defaults.test.ts (7 tests) 4ms
✓ src/pairing/pairing-messages.test.ts (6 tests) 3ms
✓ src/infra/net/undici-global-dispatcher.test.ts (5 tests) 4ms
✓ src/plugins/slots.test.ts (5 tests) 3ms
✓ ui/src/ui/views/usage-render-details.test.ts (8 tests) 3ms
✓ src/utils/queue-helpers.test.ts (8 tests) 3ms
✓ src/tts/prepare-text.test.ts (5 tests) 3ms
✓ src/slack/monitor/auth.test.ts (4 tests) 3ms
✓ src/plugins/bundled-sources.test.ts (3 tests) 3ms
✓ src/channels/telegram/api.test.ts (4 tests) 3ms
✓ src/hooks/gmail.test.ts (8 tests) 3ms
✓ src/cli/program/helpers.test.ts (16 tests) 4ms
✓ src/wizard/onboarding.secret-input.test.ts (3 tests) 3ms
✓ src/wizard/session.test.ts (3 tests) 4ms
✓ src/tui/commands.test.ts (4 tests) 3ms
✓ src/infra/provider-usage.format.test.ts (5 tests) 3ms
✓ src/utils/usage-format.test.ts (3 tests) 2ms
✓ src/infra/outbound/targets.channel-resolution.test.ts (2 tests) 3ms
✓ src/signal/probe.test.ts (6 tests) 3ms
✓ src/cli/nodes-media-utils.test.ts (2 tests) 3ms
✓ src/acp/session.test.ts (5 tests) 4ms
✓ src/daemon/systemd-unit.test.ts (3 tests) 23ms
✓ src/cli/program/context.test.ts (5 tests) 4ms
✓ src/plugin-sdk/channel-config-helpers.test.ts (7 tests) 3ms
✓ src/channels/location.test.ts (4 tests) 4ms
✓ src/config/runtime-overrides.test.ts (7 tests) 4ms
✓ src/secrets/command-config.test.ts (3 tests) 5ms
✓ src/cli/browser-cli-actions-input/shared.test.ts (4 tests) 5ms
✓ src/config/sessions/explicit-session-key-normalization.test.ts (4 tests) 2ms
✓ src/infra/heartbeat-visibility.test.ts (13 tests) 4ms
✓ src/imessage/monitor/provider.group-policy.test.ts (3 tests) 3ms
✓ src/cli/npm-resolution.test.ts (8 tests) 3ms
✓ src/utils/transcript-tools.test.ts (7 tests) 3ms
✓ src/config/channel-capabilities.test.ts (6 tests) 4ms
✓ src/daemon/systemd-hints.test.ts (3 tests) 2ms
✓ src/media/base64.test.ts (3 tests) 2ms
✓ src/secrets/plan.test.ts (6 tests) 3ms
✓ src/secrets/configure.test.ts (1 test) 3ms
✓ src/channels/plugins/message-actions.security.test.ts (3 tests) 4ms
✓ src/infra/host-env-security.policy-parity.test.ts (1 test) 3ms
✓ src/channels/ack-reactions.test.ts (8 tests) 3ms
✓ src/slack/resolve-allowlist-common.test.ts (2 tests) 3ms
✓ src/cli/daemon-cli/gateway-token-drift.test.ts (2 tests) 2ms
✓ src/utils/message-channel.test.ts (2 tests) 2ms
✓ src/memory/batch-status.test.ts (4 tests) 3ms
✓ src/utils/delivery-context.test.ts (7 tests) 3ms
✓ src/cli/outbound-send-mapping.test.ts (1 test) 2ms
✓ src/cli/program/build-program.test.ts (1 test) 3ms
✓ src/channels/allow-from.test.ts (8 tests) 3ms
✓ src/cli/run-main.exit.test.ts (1 test) 3ms
✓ src/daemon/runtime-binary.test.ts (6 tests) 3ms
✓ src/daemon/inspect.test.ts (3 tests) 3ms
✓ src/channels/command-gating.test.ts (8 tests) 3ms
✓ src/infra/outbound/message-action-normalization.test.ts (6 tests) 5ms
✓ src/cron/heartbeat-policy.test.ts (5 tests) 6ms
✓ src/infra/outbound/bound-delivery-router.test.ts (5 tests) 4ms
✓ src/cli/update-cli/shared.command-runner.test.ts (1 test) 6ms
✓ src/channels/registry.helpers.test.ts (4 tests) 3ms
✓ test/release-check.test.ts (3 tests) 4ms
✓ src/slack/monitor/message-handler.debounce-key.test.ts (7 tests) 20ms
✓ src/slack/monitor/provider.group-policy.test.ts (3 tests) 26ms
✓ src/security/audit-extra.sync.test.ts (7 tests) 4ms
✓ src/config/runtime-group-policy.test.ts (7 tests) 5ms
✓ src/shared/operator-scope-compat.test.ts (5 tests) 8ms
✓ src/signal/identity.test.ts (7 tests) 5ms
✓ src/hooks/fire-and-forget.test.ts (2 tests) 3ms
✓ src/channels/plugins/config-helpers.test.ts (5 tests) 2ms
✓ test/scripts/ui.test.ts (5 tests) 3ms
✓ src/config/sessions/cache-fields.test.ts (4 tests) 2ms
✓ ui/src/ui/views/agents-utils.test.ts (7 tests) 4ms
✓ src/slack/resolve-channels.test.ts (2 tests) 3ms
✓ src/infra/update-channels.test.ts (3 tests) 2ms
✓ src/test-utils/channel-plugins.test.ts (3 tests) 3ms
✓ src/config/issue-format.test.ts (4 tests) 3ms
✓ src/plugins/commands.test.ts (3 tests) 2ms
✓ src/channels/plugins/normalize/targets.test.ts (4 tests) 3ms
✓ src/imessage/probe.test.ts (1 test) 2ms
✓ src/cli/program/command-tree.test.ts (4 tests) 3ms
✓ src/channels/model-overrides.test.ts (3 tests) 2ms
✓ src/channels/sender-label.test.ts (4 tests) 2ms
✓ src/slack/modal-metadata.test.ts (4 tests) 5ms
✓ src/daemon/service.test.ts (4 tests) 2ms
✓ src/cli/daemon-cli-compat.test.ts (3 tests) 3ms
✓ src/config/cache-utils.test.ts (2 tests) 2ms
✓ src/cli/log-level-option.test.ts (2 tests) 2ms
✓ src/slack/monitor/context.test.ts (2 tests) 2ms
✓ src/channels/plugins/onboarding/signal.test.ts (5 tests) 3ms
✓ src/providers/github-copilot-token.test.ts (3 tests) 3ms
✓ src/cron/stagger.test.ts (4 tests) 2ms
✓ src/slack/channel-migration.test.ts (5 tests) 3ms
✓ src/cli/command-secret-targets.test.ts (2 tests) 2ms
✓ src/slack/monitor/events/message-subtype-handlers.test.ts (4 tests) 2ms
✓ src/infra/channel-summary.test.ts (1 test) 2ms
✓ src/cli/program.nodes-test-helpers.test.ts (1 test) 2ms
✓ src/channels/native-command-session-targets.test.ts (3 tests) 2ms
✓ src/terminal/stream-writer.test.ts (2 tests) 3ms
✓ src/infra/heartbeat-reason.test.ts (5 tests) 4ms
✓ src/infra/env.test.ts (6 tests) 2ms
✓ src/plugin-sdk/text-chunking.test.ts (3 tests) 2ms
✓ src/logging/logger.settings.test.ts (3 tests) 2ms
✓ src/plugins/logger.test.ts (1 test) 4ms
✓ src/terminal/prompt-select-styled.test.ts (1 test) 3ms
✓ src/media/load-options.test.ts (3 tests) 2ms
✓ src/slack/monitor/message-handler/dispatch.streaming.test.ts (5 tests) 3ms
✓ src/infra/npm-registry-spec.test.ts (5 tests) 3ms
✓ src/plugins/installs.test.ts (3 tests) 3ms
✓ src/infra/skills-remote.test.ts (2 tests) 2ms
✓ src/config/agent-dirs.test.ts (2 tests) 2ms
✓ src/routing/session-key.continuity.test.ts (3 tests) 2ms
✓ src/slack/monitor/events/channels.test.ts (2 tests) 2ms
✓ src/infra/fixed-window-rate-limit.test.ts (2 tests) 2ms
✓ src/infra/agent-events.test.ts (4 tests) 3ms
✓ src/security/safe-regex.test.ts (5 tests) 4ms
✓ src/slack/threading.test.ts (7 tests) 3ms
✓ src/infra/install-mode-options.test.ts (4 tests) 3ms
✓ src/plugin-sdk/request-url.test.ts (3 tests) 2ms
✓ src/memory/batch-error-utils.test.ts (4 tests) 2ms
✓ src/infra/home-dir.test.ts (8 tests) 2ms
✓ src/acp/policy.test.ts (4 tests) 3ms
✓ src/sessions/send-policy.test.ts (5 tests) 2ms
✓ src/logging/subsystem.test.ts (5 tests) 3ms
✓ src/plugins/runtime/types.contract.test.ts (1 test) 3ms
✓ src/shared/text/assistant-visible-text.test.ts (5 tests) 3ms
✓ src/channels/telegram/allow-from.test.ts (2 tests) 2ms
✓ src/utils/normalize-secret-input.test.ts (6 tests) 2ms
✓ src/slack/message-actions.test.ts (1 test) 2ms
✓ src/media/image-ops.helpers.test.ts (3 tests) 2ms
✓ src/infra/file-identity.test.ts (6 tests) 2ms
✓ src/cron/isolated-agent/delivery-dispatch.named-agent.test.ts (10 tests) 3ms
✓ src/cli/update-cli/progress.test.ts (3 tests) 2ms
✓ src/cron/service.issue-19676-at-reschedule.test.ts (7 tests) 3ms
✓ src/infra/secure-random.test.ts (2 tests) 2ms
✓ src/logging/parse-log-line.test.ts (3 tests) 2ms
✓ src/cli/tagline.test.ts (3 tests) 2ms
✓ src/plugins/hooks.phase-hooks.test.ts (3 tests) 3ms
✓ src/config/merge-patch.proto-pollution.test.ts (4 tests) 3ms
✓ src/cli/plugins-config.test.ts (3 tests) 2ms
✓ src/infra/outbound/conversation-id.test.ts (5 tests) 2ms
✓ src/utils/mask-api-key.test.ts (3 tests) 2ms
✓ src/infra/scp-host.test.ts (2 tests) 2ms
✓ src/shared/node-list-parse.test.ts (2 tests) 2ms
✓ src/hooks/module-loader.test.ts (5 tests) 2ms
✓ src/infra/abort-signal.test.ts (3 tests) 2ms
✓ src/infra/system-run-approval-mismatch.contract.test.ts (3 tests) 2ms
✓ src/utils/reaction-level.test.ts (5 tests) 2ms
✓ src/infra/plain-object.test.ts (2 tests) 2ms
✓ test/ui.presenter-next-run.test.ts (2 tests) 2ms
✓ src/infra/system-message.test.ts (3 tests) 2ms
✓ src/media-understanding/providers/index.test.ts (4 tests) 2ms
✓ src/wizard/clack-prompter.test.ts (3 tests) 2ms
✓ src/infra/cli-root-options.test.ts (2 tests) 2ms
✓ src/channels/mention-gating.test.ts (5 tests) 3ms
✓ src/shared/text/join-segments.test.ts (5 tests) 2ms
✓ src/memory/embeddings-model-normalize.test.ts (3 tests) 3ms
✓ src/channels/plugins/actions/reaction-message-id.test.ts (3 tests) 2ms
✓ src/channels/account-snapshot-fields.test.ts (1 test) 2ms
✓ src/media-understanding/runner.entries.guards.test.ts (3 tests) 3ms
✓ src/plugins/source-display.test.ts (3 tests) 2ms
✓ src/plugin-sdk/allowlist-resolution.test.ts (1 test) 2ms
✓ src/shared/config-eval.test.ts (4 tests) 3ms
✓ src/infra/path-safety.test.ts (2 tests) 2ms
✓ src/cron/service.issue-22895-every-next-run.test.ts (2 tests) 2ms
✓ src/sessions/session-id.test.ts (2 tests) 2ms
✓ src/slack/blocks-fallback.test.ts (3 tests) 2ms
✓ src/channels/plugins/message-actions.test.ts (2 tests) 2ms
✓ src/cli/prompt.test.ts (2 tests) 2ms
✓ src/cli/daemon-cli/shared.test.ts (2 tests) 2ms
✓ src/config/legacy.shared.test.ts (1 test) 2ms
✓ src/channels/plugins/account-action-gate.test.ts (3 tests) 2ms
✓ src/terminal/safe-text.test.ts (2 tests) 2ms
✓ src/shared/string-sample.test.ts (3 tests) 2ms
✓ src/cli/program/program-context.test.ts (3 tests) 2ms
✓ src/plugins/cli.test.ts (1 test) 3ms
✓ src/memory/embeddings-mistral.test.ts (3 tests) 2ms
✓ src/channels/plugins/onboarding/telegram.test.ts (3 tests) 3ms
✓ src/tui/tui-waiting.test.ts (2 tests) 2ms

Test Files 858 passed (858)
Tests 6965 passed | 2 skipped (6967)
Start at 13:53:32
Duration 37.50s (transform 35.25s, setup 27.65s, import 286.22s, tests 30.87s, environment 918ms)

Thanks @dmiv!

steipete added a commit that referenced this pull request Mar 8, 2026
@steipete
Copy link
Contributor

steipete commented Mar 8, 2026

Follow-up landed on main in d5b305b

GitHub's deleted-head rebase path kept the contributor commit but dropped the maintainer follow-up that added the changelog entry plus the Talk Mode speech-request defaults regression coverage/helper, so I landed those directly on main afterward.

Also: the earlier landing comment here was mangled by shell expansion; ignore that one.

Thanks @dmiv!

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
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
(cherry picked from commit d5b305b)

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants