Commit Graph

1372 Commits

Author SHA1 Message Date
Peter Steinberger 9a14696f30 test: dedupe feishu config schema checks 2026-03-13 23:35:26 +00:00
Peter Steinberger b5eb329f94 test: dedupe feishu outbound setup 2026-03-13 23:35:26 +00:00
Peter Steinberger 2cf6e2e4f6 test: dedupe matrix target resolution cases 2026-03-13 23:35:26 +00:00
Peter Steinberger 1dc8e17371 refactor: share line outbound media loop 2026-03-13 23:35:26 +00:00
Peter Steinberger 407d0d296d refactor: share tlon outbound send context 2026-03-13 23:35:26 +00:00
Peter Steinberger a57c590a71 refactor: share telegram outbound send options 2026-03-13 23:35:26 +00:00
Peter Steinberger d0337a18b6
fix: clear typecheck backlog 2026-03-13 22:09:06 +00:00
Peter Steinberger a9d8518e7c test: dedupe msteams consent auth fixtures 2026-03-13 21:54:39 +00:00
Peter Steinberger 110eeec5b8 test: dedupe twitch access control checks 2026-03-13 21:54:39 +00:00
Peter Steinberger 0530d1c530 test: dedupe twitch access control assertions 2026-03-13 21:54:39 +00:00
Peter Steinberger f2300f4522 test: dedupe msteams policy route fixtures 2026-03-13 21:54:39 +00:00
Peter Steinberger b23bfef8cc test: dedupe feishu probe fixtures 2026-03-13 21:54:39 +00:00
Peter Steinberger 5b51d92f3e test: dedupe synology channel account fixtures 2026-03-13 21:54:39 +00:00
Peter Steinberger d964c15040 test: dedupe synology webhook request helpers 2026-03-13 21:54:39 +00:00
Peter Steinberger 8896a477df test: dedupe bluebubbles local media send cases 2026-03-13 21:54:39 +00:00
Peter Steinberger 168394980f refactor: share slack allowlist target mapping 2026-03-13 21:54:39 +00:00
Peter Steinberger f0d0ad39c4 test: dedupe nostr profile http assertions 2026-03-13 21:54:39 +00:00
Peter Steinberger 58baf22230 refactor: share zalo monitor processing context 2026-03-13 21:54:39 +00:00
Peter Steinberger b9f0effd55 test: dedupe synology chat client timer setup 2026-03-13 21:54:39 +00:00
Peter Steinberger 853999fd7f refactor: dedupe synology chat client webhook payloads 2026-03-13 21:54:39 +00:00
Peter Steinberger f5b9095108 refactor: share zalo send result handling 2026-03-13 21:54:39 +00:00
Peter Steinberger a6375a2094 refactor: share zalouser account resolution 2026-03-13 21:40:54 +00:00
Peter Steinberger 4ec0a120df test: share zalo api request assertion 2026-03-13 21:40:54 +00:00
Peter Steinberger 83571fdb93 refactor: dedupe agent list filtering 2026-03-13 21:40:53 +00:00
Peter Steinberger 4269ea4e8d test: share slack config snapshot helper 2026-03-13 21:40:53 +00:00
Peter Steinberger 71639d1744 test: share lobster windows spawn assertions 2026-03-13 21:40:53 +00:00
Peter Steinberger 12432ca138 test: share googlechat webhook routing helpers 2026-03-13 21:40:53 +00:00
Peter Steinberger d4d0091760 test: share msteams safe fetch assertions 2026-03-13 21:40:53 +00:00
Peter Steinberger 9ecd1898d0 refactor: share telegram channel test harnesses 2026-03-13 21:40:53 +00:00
Peter Steinberger 3ffb9f19cb test: reduce feishu reply dispatcher duplication 2026-03-13 21:40:53 +00:00
Peter Steinberger d347a4426d refactor: share twitch outbound target assertions 2026-03-13 21:40:53 +00:00
Peter Steinberger aa551e5a9c refactor: share acpx process env test helper 2026-03-13 21:40:53 +00:00
Peter Steinberger 65cf2cea9d refactor: share matrix monitor test helpers 2026-03-13 21:40:53 +00:00
Peter Steinberger b5010719d6 test: dedupe telnyx webhook test fixtures 2026-03-13 21:40:53 +00:00
Peter Steinberger d5d2fe1b0e test: reduce webhook auth test duplication 2026-03-13 21:40:53 +00:00
Peter Steinberger de9ea76b6c refactor: dedupe feishu send reply fallback helpers 2026-03-13 21:40:53 +00:00
Peter Steinberger 6ecc184637 refactor: share googlechat api fetch handling 2026-03-13 21:40:53 +00:00
Peter Steinberger eca22c0cc7 test: share bluebubbles attachment fixtures 2026-03-13 21:40:53 +00:00
Peter Steinberger 89e0e80db3 test: share bluebubbles removal reaction helper 2026-03-13 21:40:53 +00:00
Peter Steinberger 143ae5a5b0 refactor: share feishu chunked reply delivery 2026-03-13 21:40:53 +00:00
Peter Steinberger 6756e376f3 refactor: share bluebubbles response and tapback helpers 2026-03-13 21:40:53 +00:00
Peter Steinberger 867dc6a185 test: share twitch send success mocks 2026-03-13 21:40:53 +00:00
Peter Steinberger a8508f2b31 test: share voice webhook reaper harness 2026-03-13 21:40:53 +00:00
Peter Steinberger 534e4b1418 refactor: share synology chat raw config fields 2026-03-13 21:40:52 +00:00
Peter Steinberger 1cea43d349 test: share zalouser group policy resolver 2026-03-13 21:40:52 +00:00
Vincent Koc a976cc2e95
Slack: add opt-in interactive reply directives (#44607)
* Reply: add Slack interactive directive parser

* Reply: wire Slack directives into normalization

* Reply: cover Slack directive parsing

* Reply: test Slack directive normalization

* Slack: hint interactive reply directives

* Config: add Slack interactive reply capability type

* Config: validate Slack interactive reply capability

* Reply: gate Slack directives behind capability

* Slack: gate interactive reply hints by capability

* Tests: cover Slack interactive reply capability gating

* Changelog: note opt-in Slack interactive replies

* Slack: fix interactive reply review findings

* Slack: harden interactive reply routing and limits

* Slack: harden interactive reply trust and validation
2026-03-13 14:08:04 -07:00
Peter Steinberger b84c7037de fix: repair ci audit and type drift 2026-03-13 21:02:19 +00:00
Vincent Koc ffee3dfef0 Plugins: resolve local openclaw peer for audits 2026-03-13 13:55:28 -07:00
Peter Steinberger bf631b5872 refactor: share voice restore test setup 2026-03-13 20:37:53 +00:00
Peter Steinberger ba2d57d024 refactor: share mattermost test harnesses 2026-03-13 20:37:53 +00:00
Peter Steinberger 48853f875b refactor: share test request helpers 2026-03-13 20:37:53 +00:00
Peter Steinberger 784020f71e docs: trim duplicated plugin and open prose guides 2026-03-13 20:19:39 +00:00
Peter Steinberger d53d4dc22f refactor: share zalouser group gating helpers 2026-03-13 20:19:39 +00:00
Peter Steinberger 2dd180472f refactor: share mattermost interaction test helpers 2026-03-13 20:19:39 +00:00
Peter Steinberger a5f0f66427 refactor: share zalouser group auth setup 2026-03-13 20:19:38 +00:00
Peter Steinberger 985be2a864 refactor: share acpx ensure install checks 2026-03-13 20:19:38 +00:00
Peter Steinberger 41c9e3ead0 refactor: share cron and zalo monitor test helpers 2026-03-13 18:38:12 +00:00
Peter Steinberger 6464149031 refactor: share feishu webhook monitor harness 2026-03-13 18:38:12 +00:00
Peter Steinberger 369430f9ab refactor: share tlon upload test mocks 2026-03-13 17:29:59 +00:00
Peter Steinberger e358d57fb5 refactor: share feishu reply fallback flow 2026-03-13 16:51:59 +00:00
Peter Steinberger a14a32695d refactor: share feishu reaction client setup 2026-03-13 16:51:59 +00:00
Peter Steinberger acfb95e2c6 refactor: share tlon channel put requests 2026-03-13 16:51:59 +00:00
Peter Steinberger fb40b09157 refactor: share feishu media client setup 2026-03-13 16:51:59 +00:00
Peter Steinberger 6b04ab1e35 refactor: share teams drive upload flow 2026-03-13 16:51:59 +00:00
Peter Steinberger a4525b721e refactor: deduplicate nextcloud send context 2026-03-13 16:51:59 +00:00
Peter Steinberger 6b07604d64 refactor: share nextcloud target normalization 2026-03-13 16:51:59 +00:00
Peter Steinberger ef8cc3d0fb refactor: share tlon inline text rendering 2026-03-13 16:51:59 +00:00
Peter Steinberger 261a40dae1 fix: narrow acpx health failure handling 2026-03-13 16:30:27 +00:00
Peter Steinberger 3f37afd18c refactor: extract acpx event builders 2026-03-13 16:30:27 +00:00
Peter Steinberger f4ed317083 refactor: deduplicate acpx availability checks 2026-03-13 16:30:27 +00:00
Peter Steinberger 16ececf0a6
chore: bump version to 2026.3.13 2026-03-13 04:38:32 +00:00
Peter Steinberger 496ca3a637 fix(feishu): fail closed on webhook signature checks 2026-03-13 03:13:56 +00:00
Peter Steinberger de3e6a8c5b fix(routing): require ids for slack and msteams allowlists 2026-03-13 01:44:42 +00:00
Peter Steinberger 88244c0942 refactor(zalouser): reuse shared name matching helper 2026-03-13 01:44:42 +00:00
Peter Steinberger c25e46a433
chore: prepare 2026.3.12 release 2026-03-13 01:38:20 +00:00
Peter Steinberger b14a5c6713 fix(zalouser): require ids for group allowlist auth 2026-03-13 01:31:17 +00:00
Peter Steinberger 87ad1ce9b1 refactor: add non-interactive provider plugin setup 2026-03-13 01:19:35 +00:00
Vincent Koc fed24a1311 build: sync bundled plugin versions 2026-03-12 21:06:12 -04:00
Peter Steinberger 4dd4e36450
build: update deps and fix vitest 4 regressions 2026-03-13 01:02:00 +00:00
Peter Steinberger 86a3149b2e
fix: harden windows npm runtime path 2026-03-12 23:03:19 +00:00
Vincent Koc 92191fcd68 deps: bump openclaw to 2026.3.11
Raise internal OpenClaw constraints to 2026.3.11 and regenerate pnpm lockfile to remove the vulnerable 2026.3.8 resolution.
2026-03-12 19:00:49 -04:00
Peter Steinberger 212afb6950
refactor: clarify pairing setup auth labels 2026-03-12 22:46:28 +00:00
Peter Steinberger 1c7ca391a8
refactor: trim bootstrap token metadata 2026-03-12 22:46:28 +00:00
Peter Steinberger d83491e751 feat: modularize provider plugin architecture 2026-03-12 22:24:35 +00:00
Peter Steinberger bf89947a8e
fix: switch pairing setup codes to bootstrap tokens 2026-03-12 22:23:07 +00:00
Vincent Koc f96ba87f03
Zalo: rate limit invalid webhook secret guesses before auth (#44173)
* Zalo: rate limit webhook guesses before auth

* Tests: cover pre-auth Zalo webhook rate limiting

* Changelog: note Zalo pre-auth rate limiting

* Zalo: preserve auth-before-content-type response ordering

* Tests: cover auth-before-content-type webhook ordering

* Zalo: split auth and unauth webhook rate-limit buckets

* Tests: cover auth bucket split for Zalo webhook rate limiting

* Zalo: use trusted proxy client IP for webhook rate limiting

* Tests: cover trusted proxy client IP rate limiting for Zalo
2026-03-12 12:30:50 -04:00
Vincent Koc 7844bc89a1
Security: require Feishu webhook encrypt key (#44087)
* Feishu: require webhook encrypt key in schema

* Feishu: cover encrypt key webhook validation

* Feishu: enforce encrypt key at startup

* Feishu: add webhook forgery regression test

* Feishu: collect encrypt key during onboarding

* Docs: require Feishu webhook encrypt key

* Changelog: note Feishu webhook hardening

* Docs: clarify Feishu encrypt key screenshot

* Feishu: treat webhook encrypt key as secret input

* Feishu: resolve encrypt key only in webhook mode
2026-03-12 11:01:00 -04:00
Vincent Koc 3e730c0332
Security: preserve Feishu reaction chat type (#44088)
* Feishu: preserve looked-up chat type

* Feishu: fail closed on ambiguous reaction chats

* Feishu: cover reaction chat type fallback

* Changelog: note Feishu reaction hardening

* Feishu: fail closed without resolved chat type

* Feishu: normalize reaction chat type at runtime
2026-03-12 10:53:40 -04:00
Lyle c965049dc6
fix(mattermost): pass mediaLocalRoots through reply delivery (#44021)
Merged via squash.

Prepared head SHA: 856f11f129
Co-authored-by: LyleLiu666 <31182860+LyleLiu666@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-12 20:13:51 +05:30
Teconomix 171d2df9e0
feat(mattermost): add replyToMode support (off | first | all) (#29587)
Merged via squash.

Prepared head SHA: 4a67791f53
Co-authored-by: teconomix <6959299+teconomix@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-12 18:03:12 +05:30
Nimrod Gutman 4f620bebe5
fix(doctor): canonicalize gateway service entrypoint paths (#43882)
Merged via squash.

Prepared head SHA: 9f530d2a86
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-03-12 12:39:22 +02:00
Ayaan Zaidi 783a0d540f
fix: add zalouser outbound chunker 2026-03-12 15:47:12 +05:30
darkamenosa a6711afdc2
feat(zalouser): add markdown-to-Zalo text style parsing (#43324)
* feat(zalouser): add markdown-to-Zalo text style parsing

Parse markdown formatting (bold, italic, strikethrough, headings, lists,
code blocks, blockquotes, custom color/style tags) into Zalo native
TextStyle ranges so outbound messages render with rich formatting.

- Add text-styles.ts with parseZalouserTextStyles() converter
- Wire markdown mode into send pipeline (sendMessageZalouser)
- Export TextStyle enum and Style type from zca-client
- Add textMode/textStyles to ZaloSendOptions
- Pass textStyles through sendZaloTextMessage to zca-js API
- Enable textMode:"markdown" in outbound sendText/sendMedia and monitor
- Add comprehensive tests for parsing, send, and channel integration

* fix(zalouser): harden markdown text parsing

* fix(zalouser): mirror zca-js text style types

* fix(zalouser): support tilde fenced code blocks

* fix(zalouser): handle quoted fenced code blocks

* fix(zalouser): preserve literal quote lines in code fences

* fix(zalouser): support indented quoted fences

* fix(zalouser): preserve quoted markdown blocks

* fix(zalouser): rechunk formatted messages

* fix(zalouser): preserve markdown structure across chunks

* fix(zalouser): honor chunk limits and CRLF fences
2026-03-12 16:24:15 +07:00
Xaden Ryan 658bd54ecf
feat(llm-task): add thinking override
Co-authored-by: Xaden Ryan <165437834+xadenryan@users.noreply.github.com>
2026-03-12 19:21:35 +11:00
Vincent Koc 4dfd8eea90 BlueBubbles: require confirmed outbound for self-chat cache 2026-03-12 03:22:57 -04:00
Mathias Nagler e8a162d3d8
fix(mattermost): prevent duplicate messages when block streaming + threading are active (#41362)
* fix(mattermost): prevent duplicate messages when block streaming + threading are active

Remove replyToId from createBlockReplyPayloadKey so identical content is
deduplicated regardless of threading target. Add explicit threading dock
to the Mattermost plugin with resolveReplyToMode reading from config
(default "all"), and add replyToMode to the Mattermost config schema.

Fixes #41219

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(mattermost): address PR review — per-account replyToMode and test clarity

Read replyToMode from the merged per-account config via
resolveMattermostAccount so account-level overrides are honored in
multi-account setups. Add replyToMode to MattermostAccountConfig type.
Rename misleading test to clarify it exercises shouldDropFinalPayloads
short-circuit, not payload key dedup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Replies: keep block-pipeline reply targets distinct

* Tests: cover block reply target-aware dedupe

* Update CHANGELOG.md

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-03-12 03:15:17 -04:00
Vincent Koc 241e8cc553
fix(bluebubbles): dedupe reflected self-chat duplicates (#38442)
* BlueBubbles: drop reflected self-chat duplicates

* Changelog: add BlueBubbles self-chat echo dedupe entry

* BlueBubbles: gate self-chat cache and expand coverage

* BlueBubbles: require explicit sender ids for self-chat dedupe

* BlueBubbles: harden self-chat cache

* BlueBubbles: move self-chat cache identity into cache

* BlueBubbles: gate self-chat cache to confirmed outbound sends

* Update CHANGELOG.md

* BlueBubbles: bound self-chat cache input work

* Tests: cover BlueBubbles cache cap under cleanup throttle

* BlueBubbles: canonicalize self-chat DM scope

* Tests: cover BlueBubbles mixed self-chat scope aliases
2026-03-12 03:11:43 -04:00
Peter Steinberger ce5dd742f8
build: sync versions to 2026.3.11 2026-03-12 04:01:57 +00:00
Peter Steinberger 0e397e62b7 chore: bump version to 2026.3.10 2026-03-11 23:29:53 +00:00
Peter Steinberger 9c81c31232 chore: refresh dependencies except carbon 2026-03-11 20:10:33 +00:00