Colin
378e18b75b
Slack: support blocks in plugin edit action
2026-02-16 23:51:44 +01:00
Colin
3912a2264b
Slack: support blocks in plugin send action
2026-02-16 23:51:44 +01:00
Latitude Bot
3238bd78d9
fix(discord): normalize bare numeric IDs in outbound target resolution
...
Bare numeric Discord IDs (e.g. '1470130713209602050') in cron
delivery.to caused 'Ambiguous Discord recipient' errors and silent
delivery failures.
Adds normalizeDiscordOutboundTarget() to the existing Discord
normalize module (channels/plugins/normalize/discord.ts) alongside
normalizeDiscordMessagingTarget. Defaults bare numeric IDs to
'channel:<id>', matching existing behavior.
Both the Discord extension plugin and standalone outbound adapter
use the shared helper via a one-liner resolveTarget.
Fixes #14753 . Related: #13927
2026-02-16 13:25:58 -06:00
Shadow
1b7301051b
Config: require Discord ID strings ( #18220 )
2026-02-16 12:22:58 -06:00
Ayaan Zaidi
16327f21da
feat(telegram): support inline button styles ( #18241 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 239cb3552e
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-16 22:48:47 +05:30
Ayaan Zaidi
c8a536e30a
fix(agents): scope message tool schema by channel ( #18215 )
...
Co-authored-by: Shadow <shadow@openclaw.ai >
2026-02-16 10:34:18 -06:00
Peter Steinberger
93ca0ed54f
refactor(channels): dedupe transport and gateway test scaffolds
2026-02-16 14:59:31 +00:00
Shadow
a61c2dc4bd
Discord: add component v2 UI tool support ( #17419 )
2026-02-15 21:19:25 -06:00
Peter Steinberger
618008b483
refactor(channels): share directory allowFrom parsing
2026-02-16 01:49:16 +00:00
Peter Steinberger
067509fa44
refactor(onboarding): dedupe WhatsApp owner allowlist
2026-02-16 01:05:27 +00:00
Peter Steinberger
e84b20a527
refactor(status-issues): share enabled/configured account gate
2026-02-16 01:03:02 +00:00
Peter Steinberger
f03ea76db3
fix(slack): tighten threadId type to satisfy lint
2026-02-16 00:49:00 +00:00
Peter Steinberger
753491ab80
refactor(slack): dedupe outbound send flow
2026-02-16 00:48:32 +00:00
Peter Steinberger
d00adfe98c
refactor(signal): dedupe outbound media limit resolve
2026-02-16 00:47:19 +00:00
Peter Steinberger
2b2c3a071b
refactor(imessage): dedupe outbound media limit resolve
2026-02-16 00:46:18 +00:00
Peter Steinberger
0e2d8b8a1e
perf(test): consolidate channel action suites
2026-02-15 23:14:42 +00:00
Peter Steinberger
a1c50b4ee3
perf(test): consolidate channel plugin suites
2026-02-15 23:14:42 +00:00
Peter Steinberger
9a5e617a55
fix(discord): align message action send parameters
2026-02-15 18:53:24 +00:00
Peter Steinberger
c118f6c688
fix(discord): fix component parsing and modal field typing
2026-02-15 18:50:36 +00:00
Shadow
c6b3736fe7
fix: dedupe probe/token base types ( #16986 ) (thanks @iyoda)
2026-02-15 11:36:54 -06:00
Sebastian
6277698f86
test(discord): fix updated test harness mocks
2026-02-15 11:50:16 -05:00
Peter Steinberger
b4f16001aa
refactor(channels): dedupe discord channel lookup
2026-02-15 16:42:20 +00:00
Peter Steinberger
c1bf99406f
refactor(slack): dedupe onboarding token prompts
2026-02-15 16:26:11 +00:00
Shadow
9203a2fdb1
Discord: CV2! ( #16364 )
2026-02-15 10:24:53 -06:00
Mr. Guy
e927fd1e35
fix: allow agent workspace directories in media local roots ( #17136 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7545ef1e19
Co-authored-by: MisterGuy420 <255743668+MisterGuy420@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-15 10:53:45 -05:00
Peter Steinberger
360b73bbb8
refactor(discord): dedupe onboarding config patching
2026-02-15 13:14:50 +00:00
Peter Steinberger
2944c7d6af
refactor(slack): dedupe onboarding config patching
2026-02-15 13:13:21 +00:00
Peter Steinberger
a39a5a35b0
refactor(slack): dedupe outbound hook handling
2026-02-15 06:49:48 +00:00
Peter Steinberger
fef86e475b
refactor: dedupe shared helpers across ui/gateway/extensions
2026-02-15 03:34:14 +00:00
Vignesh Natarajan
4587175fb1
test (signal): cover mixed-case group target ids
2026-02-14 18:59:48 -08:00
Vignesh Natarajan
8647a1ebed
fix (signal): preserve case for group target normalization
2026-02-14 18:59:48 -08:00
Peter Steinberger
cf04208cb9
fix(allowlist): canonicalize Slack/Discord allowFrom
2026-02-15 03:46:16 +01:00
Peter Steinberger
5e205030ed
refactor(telegram): share outbound param parsing
2026-02-15 01:15:43 +00:00
Peter Steinberger
f835eb32f3
refactor(slack): share message action helpers
2026-02-15 01:15:43 +00:00
Peter Steinberger
eccd4d8c39
refactor(whatsapp): share target resolver
2026-02-15 01:15:43 +00:00
Peter Steinberger
0d0ebd0e20
refactor(onboarding): share promptAccountId helper
2026-02-15 01:15:43 +00:00
Peter Steinberger
809f87c41c
refactor(onboarding): dedupe whatsapp allowlist prompt
2026-02-14 21:45:40 +00:00
Peter Steinberger
47b6cde8ca
refactor(config): add dmPolicy aliases for Slack/Discord
2026-02-14 21:04:27 +01:00
Robby
8e5689a84d
feat(telegram): add sendPoll support ( #16193 ) ( #16209 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: b58492cfed
Co-authored-by: robbyczgw-cla <239660374+robbyczgw-cla@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-14 18:34:30 +01:00
Peter Steinberger
50645b905b
refactor(outbound): centralize outbound identity
2026-02-14 16:44:43 +01:00
Peter Steinberger
e3b432e481
fix(telegram): require sender ids for allowlist auth
2026-02-14 16:09:00 +01:00
Robby
09e1cbc35d
fix(cron): pass agent identity through delivery path ( #16218 ) ( #16242 )
...
* fix(cron): pass agent identity through delivery path
Cron delivery messages now include agent identity (name, avatar) in
outbound messages. Identity fields are passed best-effort for Slack
(graceful fallback if chat:write.customize scope is missing).
Fixes #16218
* fix: fix Slack cron delivery identity (#16242 ) (thanks @robbyczgw-cla)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-14 16:08:51 +01:00
Peter Steinberger
ef70a55b7a
refactor(reply): clarify explicit reply tags in off mode ( #16189 )
...
* refactor(reply): clarify explicit reply tags in off mode
* fix(plugin-sdk): alias account-id subpath for extensions
2026-02-14 14:15:37 +01:00
Peter Steinberger
51296e770c
feat(slack): land thread-ownership from @DarlingtonDeveloper ( #15775 )
...
Land PR #15775 by @DarlingtonDeveloper:
- add thread-ownership plugin and Slack message_sending hook wiring
- include regression tests and changelog update
Co-authored-by: Mike <108890394+DarlingtonDeveloper@users.noreply.github.com >
2026-02-13 23:37:05 +00:00
Peter Steinberger
2086cdfb9b
perf(test): reduce hot-suite import and setup overhead
2026-02-13 20:26:39 +00:00
nyanjou
385eed14f6
fix(discord): pass silent flag through plugin action handler
...
The Discord send action was going through the plugin handler path
which wasn't passing the silent flag to sendMessageDiscord.
- Add silent param reading in handle-action.ts
- Pass silent to handleDiscordAction
- Add silent param in discord-actions-messaging.ts sendMessage case
2026-02-13 12:44:14 -06:00
nyanjou
77df8b1104
feat(discord): add silent message support (SUPPRESS_NOTIFICATIONS flag)
...
- Add silent option to message tool for Discord
- Passes SUPPRESS_NOTIFICATIONS flag (4096) to Discord API
- Threads silent param through entire outbound chain:
- message-action-runner.ts
- outbound-send-service.ts
- message.ts
- deliver.ts
- discord outbound adapter
- send.outbound.ts
- send.shared.ts
Usage: message tool with silent=true suppresses push/desktop notifications
2026-02-13 12:44:14 -06:00
nyanjou
36525a974e
fix(discord): use fetch with proper headers for voice message upload
...
The @buape/carbon RequestClient wasn't setting Content-Type: application/json
for the attachments endpoint request. Use native fetch with explicit headers
for the upload URL request.
Also pass token through to sendDiscordVoiceMessage for authorization.
2026-02-13 12:44:14 -06:00
nyanjou
a09e4fac3f
feat(discord): add voice message support
...
Adds support for sending Discord voice messages via the message tool
with asVoice: true parameter.
Voice messages require:
- OGG/Opus format (auto-converted if needed via ffmpeg)
- Waveform data (generated from audio samples)
- Duration in seconds
- Message flag 8192 (IS_VOICE_MESSAGE)
Implementation:
- New voice-message.ts with audio processing utilities
- getAudioDuration() using ffprobe
- generateWaveform() samples audio and creates base64 waveform
- ensureOggOpus() converts audio to required format
- sendDiscordVoiceMessage() handles 3-step Discord upload process
Usage:
message(action='send', channel='discord', target='...',
path='/path/to/audio.mp3', asVoice=true)
Note: Voice messages cannot include text content (Discord limitation)
2026-02-13 12:44:14 -06:00
Marcus Castro
3d921b6157
fix(slack): apply limit parameter to emoji-list action ( #13421 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 67e9b64858
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-13 18:20:41 +01:00