From 4320cde91d9574d65dd240f8b033463cc723d6a6 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 2 Mar 2026 01:03:39 +0000 Subject: [PATCH] fix(slack): land #31028 from @taw0002 Co-authored-by: taw0002 --- CHANGELOG.md | 1 + extensions/slack/src/channel.test.ts | 4 ++++ extensions/slack/src/channel.ts | 1 + 3 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 917e3f620d2..6f693d768f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Slack/Announce target account routing: enable session-backed announce-target lookup for Slack so multi-account announces resolve the correct `accountId` instead of defaulting to bot-token context. Landed from contributor PR #31028 by @taw0002. Thanks @taw0002. - Tools/Edit workspace boundary errors: preserve the real `Path escapes workspace root` failure path instead of surfacing a misleading access/file-not-found error when editing outside workspace roots. Landed from contributor PR #31015 by @haosenwang1018. Thanks @haosenwang1018. - Sandbox/mkdirp boundary checks: allow directory-safe boundary validation for existing in-boundary subdirectories, preventing false `cannot create directories` failures in sandbox write mode. (#30610) Thanks @glitch418x. - Android/Voice screen TTS: stream assistant speech via ElevenLabs WebSocket in Talk Mode, stop cleanly on speaker mute/barge-in, and ignore stale out-of-order stream events. (#29521) Thanks @gregmousseau. diff --git a/extensions/slack/src/channel.test.ts b/extensions/slack/src/channel.test.ts index 977cb5dd0fa..4e04d6cf3b7 100644 --- a/extensions/slack/src/channel.test.ts +++ b/extensions/slack/src/channel.test.ts @@ -16,6 +16,10 @@ vi.mock("./runtime.js", () => ({ import { slackPlugin } from "./channel.js"; describe("slackPlugin actions", () => { + it("prefers session lookup for announce target routing", () => { + expect(slackPlugin.meta.preferSessionLookupForAnnounceTarget).toBe(true); + }); + it("forwards read threadId to Slack action handler", async () => { handleSlackActionMock.mockResolvedValueOnce({ messages: [], hasMore: false }); const handleAction = slackPlugin.actions?.handleAction; diff --git a/extensions/slack/src/channel.ts b/extensions/slack/src/channel.ts index 0720a71a338..ab6047f10cc 100644 --- a/extensions/slack/src/channel.ts +++ b/extensions/slack/src/channel.ts @@ -67,6 +67,7 @@ export const slackPlugin: ChannelPlugin = { id: "slack", meta: { ...meta, + preferSessionLookupForAnnounceTarget: true, }, onboarding: slackOnboardingAdapter, pairing: {