Skip to content

Commit 21d07f0

Browse files
committed
Auto-merge upstream openclaw/openclaw
2 parents ba66e0f + bb543f7 commit 21d07f0

5 files changed

Lines changed: 12 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Docs: https://docs.openclaw.ai
1111
- WhatsApp: honor the configured default account when the active listener helper is used without an explicit account id, so named default accounts do not get registered under `default`. (#53918) Thanks @yhyatt.
1212
- QA/packaging: stop packaged CLI startup and completion cache generation from reading repo-only QA scenario markdown by routing QA command registration through a narrow facade. (#64648) Thanks @obviyus.
1313
- Control UI/webchat: persist agent-run TTS audio replies into webchat history before finalization so tool-generated audio reaches webchat clients again. (#63514) thanks @bittoby
14+
- macOS/Talk Mode: after granting microphone permission on first enable, continue starting Talk Mode instead of requiring a second toggle. (#62459) Thanks @ggarber.
1415

1516
## 2026.4.10
1617

apps/macos/Sources/OpenClaw/TalkModeRuntime.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,9 @@ actor TalkModeRuntime {
128128
private func start() async {
129129
let gen = self.lifecycleGeneration
130130
guard voiceWakeSupported else { return }
131-
guard PermissionManager.voiceWakePermissionsGranted() else {
132-
self.logger.debug("talk runtime not starting: permissions missing")
131+
132+
guard await PermissionManager.ensureVoiceWakePermissions(interactive: true) else {
133+
self.logger.error("talk runtime not starting: permissions missing")
133134
return
134135
}
135136
await self.reloadConfig()

extensions/memory-wiki/index.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ describe("memory-wiki plugin", () => {
2121
expect(registerMemoryPromptSupplement).toHaveBeenCalledTimes(1);
2222
expect(registerGatewayMethod.mock.calls.map((call) => call[0])).toEqual([
2323
"wiki.status",
24+
"wiki.importRuns",
25+
"wiki.importInsights",
26+
"wiki.palace",
2427
"wiki.init",
2528
"wiki.doctor",
2629
"wiki.compile",

src/config/config.pruning-defaults.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import { describe, expect, it } from "vitest";
2-
import { applyConfigDefaults as applyAnthropicConfigDefaults } from "../../extensions/anthropic/provider-policy-api.js";
32
import type { OpenClawConfig } from "./config.js";
3+
import { applyProviderConfigDefaultsForConfig } from "./provider-policy.js";
44

55
function expectAnthropicPruningDefaults(cfg: OpenClawConfig, heartbeatEvery = "30m") {
66
expect(cfg.agents?.defaults?.contextPruning?.mode).toBe("cache-ttl");
77
expect(cfg.agents?.defaults?.contextPruning?.ttl).toBe("1h");
88
expect(cfg.agents?.defaults?.heartbeat?.every).toBe(heartbeatEvery);
99
}
1010

11-
function applyAnthropicDefaultsForTest(
12-
config: Parameters<typeof applyAnthropicConfigDefaults>[0]["config"],
13-
) {
14-
return applyAnthropicConfigDefaults({ config, env: {} });
11+
function applyAnthropicDefaultsForTest(config: OpenClawConfig) {
12+
return applyProviderConfigDefaultsForConfig({ provider: "anthropic", config, env: {} });
1513
}
1614

1715
describe("config pruning defaults", () => {

src/infra/outbound/target-resolver.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ vi.mock("../../channels/plugins/index.js", () => ({
2323
}));
2424

2525
vi.mock("../../plugins/runtime.js", () => ({
26+
getActivePluginChannelRegistry: () => null,
27+
getActivePluginRegistry: () => null,
2628
getActivePluginChannelRegistryVersion: () => mocks.getActivePluginChannelRegistryVersion(),
2729
}));
2830

0 commit comments

Comments
 (0)