Yuval Dinodia
b7ab62c2cf
fix(mattermost): preserve text-block boundaries in draft preview ( #87322 ) ( #87449 )
...
* fix(mattermost): preserve text-block boundaries in draft preview (#87322 )
* fix(mattermost): preserve block preview boundaries
* fix(mattermost): reset progress at tool boundaries
* docs(plugin-sdk): refresh API baseline
* fix(mattermost): group parallel tool previews
* fix(mattermost): stage tool previews before awaits
* fix(mattermost): satisfy tool boundary return contract
* fix(mattermost): serialize preview block generations
Co-authored-by: Yuval Dinodia <yetvald@gmail.com >
* fix(mattermost): preserve complete block previews
* test(agents): align streaming assertions
* test(telegram): align reply pipeline mock
* fix(plugin-sdk): keep reply prefix options compatible
* test(mattermost): exercise threaded final participation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 14:32:11 +01:00
iloveleon19
70a7e6e658
feat(mattermost): add opt-in DM threading by chat type ( #98111 )
...
* feat(mattermost): add opt-in DM threading via dmReplyToMode
Resolves #93203 .
Mattermost direct messages are hardcoded non-threaded: resolveMattermostReplyToMode
returns "off" for direct chats before consulting config, and the reply-root /
effective-reply resolvers short-circuit for direct chats. So every DM accretes into
one ever-growing session with unbounded per-session token usage, with no way to
isolate each DM topic the way groups/channels (and Slack) can.
Add channels.mattermost.dmReplyToMode (same enum as replyToMode), default "off" so
existing flat-DM deployments are unchanged. When set to "first"/"all", a DM @mention
starts an independent, thread-scoped session:
- resolveMattermostReplyToMode: direct chats return config.dmReplyToMode ?? "off".
- resolveMattermostEffectiveReplyToId: direct early-return gated on replyToMode "off"
(the value already reflects dmReplyToMode for direct chats).
- resolveMattermostReplyRootId: direct early-return gated on the absence of a thread
root (a DM carries one only when DM threading is enabled).
- New DM threads start fresh (no parent-session inheritance) so each topic is isolated;
a threaded DM keeps its own history key while a flat DM root keeps none.
Default-off preserves the documented flat-DM contract, so this changes no existing
behavior. Adds unit coverage and documents the opt-in. The only open question is the
knob shape (dmReplyToMode enum vs a boolean dmThreading) — happy to adjust.
Refs #65729 .
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
* fix(mattermost): register dmReplyToMode in config schema
dmReplyToMode was wired into the account config type and reply
resolution but never added to MattermostConfigSchema, so setting it in
openclaw.json failed config validation ("must not have additional
properties: dmReplyToMode") and the gateway refused to start — the knob
could not actually be enabled. Register it in the schema, regenerate the
bundled channel config metadata and doc baseline, and add a
config-schema test.
* fix(mattermost): thread direct reply transport when dmReplyToMode is on
resolveReplyTransport nulled the direct reply root/thread id
unconditionally, so routed replies and message-tool follow-ups in an
opted-in DM thread were still sent flat even when the effective
replyToMode was first/all. Keep direct transport flat only when the mode
is off (the historical contract) and preserve the thread root otherwise,
matching the monitor-level DM threading gates. Adds channel.test.ts
coverage for resolveReplyTransport.
* fix(mattermost): use per-chat reply mode overrides
* fix(mattermost): bound direct thread history
* chore(config): refresh docs baseline
---------
Co-authored-by: leon <leon@gmail.com >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 06:19:03 +01:00
Peter Steinberger
f7d7148cf0
docs: rewrite published docs grounded in current source ( #100142 )
...
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.
Closes #100141
2026-07-05 00:32:47 -04:00
Alex Knight
64c81f25c0
fix(mattermost): record thread participation on preview-finalized replies; document thread mention exception
2026-06-23 18:58:38 +10:00
Vincent Koc
f2eca94391
feat(plugins): externalize additional official plugins ( #95683 )
2026-06-22 16:12:51 +08:00
Patrick Erichsen
d60ab48511
Add Telegram progress preview flows ( #83847 )
...
* feat(telegram): add progress preview flow tooling
* docs: add channel flow preview skill
* test(telegram): exercise native draft flow fixture
* fix(telegram): remove progress label ellipsis animation
* fix(telegram): address progress preview review
2026-05-18 21:23:55 -07:00
Peter Steinberger
b78c2ee8c8
refactor: adopt presentation rendering in Mattermost
2026-05-17 14:18:23 +01:00
Peter Steinberger
a0fb7fb045
refactor: centralize channel ingress access
2026-05-10 00:18:36 -04:00
Vincent Koc
4ee234f8ee
docs: typography hygiene across 6 pages
...
Replaced 66 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.
- docs/channels/mattermost.md: 12 chars
- docs/tools/plugin.md: 11 chars
- docs/providers/xai.md: 11 chars
- docs/plugins/building-plugins.md: 11 chars
- docs/concepts/streaming.md: 11 chars
- docs/concepts/model-providers.md: 11 chars
2026-05-05 20:45:39 -07:00
Peter Steinberger
d111676bcb
ci: externalize more channel plugins
2026-05-02 07:52:26 +01:00
Agustin Rivera
9c0975c1c2
Mattermost: refresh slash callback command validation ( #72923 )
...
* fix(mattermost): refresh slash callback tokens
* fix(mattermost): reconcile slash callback method
* fix(mattermost): bound slash command lookups
* fix(mattermost): cache slash validation lookups
* fix(mattermost): refresh slash routing
* fix(mattermost): require slash callback secret
* fix(mattermost): rate limit slash validation
* fix(mattermost): throttle slash validation
* fix(mattermost): bound slash token cache
* fix(mattermost): sanitize slash callback logs
* fix(mattermost): avoid stale slash token cache
* fix(mattermost): scope slash token gate to command
* fix(mattermost): rate-limit slash validation
* fix(mattermost): redact slash validation errors
* fix(mattermost): satisfy slash sanitizer lint
* Move Mattermost slash refresh changelog entry to Unreleased Fixes
* Apply oxfmt accordion blank-line on Mattermost slash docs
---------
Co-authored-by: Devin Robison <drobison@nvidia.com >
2026-05-01 09:10:17 -06:00
Peter Steinberger
2b0b614417
docs(plugins): clarify clawhub npm migration
2026-04-29 06:09:34 +01:00
Peter Steinberger
f95f720b25
docs: separate mintlify list closings
2026-04-28 08:43:20 +01:00
Peter Steinberger
78a12706ec
fix(docs): make docs formatter mintlify-safe
2026-04-28 08:13:21 +01:00
Peter Steinberger
424560c6c2
docs: normalize mintlify component closings
2026-04-28 07:54:15 +01:00
Vincent Koc
06d409dc27
docs(mattermost): rewrite with Steps for setup and HMAC, Tabs for chatmodes, AccordionGroup for slash commands and troubleshooting
2026-04-26 00:56:05 -07:00
Vincent Koc
4a2cd533ac
docs: remove duplicate H1 where frontmatter title already sets it
2026-04-23 13:11:14 -07:00
Vincent Koc
daaedf37b7
docs: prune recent additions for readability
2026-04-23 00:23:18 -07:00
Vincent Koc
91c795cee0
docs: MCP + cron + plugin lifecycle plus channel env-block cross-links
2026-04-22 23:56:53 -07:00
Vincent Koc
30a5c441f3
docs(channels): cover WhatsApp replyToMode, Discord inheritParent, Slack HTTP/ACP/downloadFile, Telegram webhook+picker auth, Mattermost reasoning suppression, workspace .env block for channel endpoints
2026-04-22 23:39:38 -07:00
Peter Steinberger
938af16289
docs: deep audit documentation against source
2026-04-23 07:32:58 +01:00
Peter Steinberger
fb9a21ae8f
fix: centralize draft preview finalization
2026-04-22 02:32:55 +01:00
Vincent Koc
7d7c0b1dfe
docs: cover BB tapback fallback, iMessage/SMS routing, Mattermost streaming, Matrix mention-prefixed slash
2026-04-21 13:09:09 -07:00
Peter Steinberger
ea2f56b4e8
docs: refresh bundled channel naming mirrors
2026-04-04 15:16:11 +01:00
Peter Steinberger
fde6e07f2a
docs: refresh bundled channel setup refs
2026-04-04 15:06:39 +01:00
Peter Steinberger
11542e9310
docs: refresh bundled channel plugin refs
2026-04-04 15:02:08 +01:00
Peter Steinberger
70b39f4893
docs: refresh mattermost group config refs
2026-04-04 14:39:38 +01:00
Peter Steinberger
fdb1be0079
docs: refresh mattermost slash auth refs
2026-04-04 11:54:52 +01:00
Vincent Koc
2b4f600f9c
docs: Batch 2 — add Related sections to all channel pages
...
Add consistent Related sections to 17 channel pages that had none,
linking to: Channels Overview, Pairing, Groups, Channel Routing, Security.
Add Groups and Security links to 4 channel pages (discord, slack,
telegram, whatsapp) that already had partial Related sections.
2026-03-30 19:08:22 +09:00
Peter Steinberger
341e617c84
docs(plugins): refresh bundled plugin runtime docs
2026-03-29 09:10:39 +01:00
Jonathan Jing
2145eb5908
feat(mattermost): add retry logic and timeout handling for DM channel creation ( #42398 )
...
Merged via squash.
Prepared head SHA: 3db47be907
Co-authored-by: JonathanJing <17068507+JonathanJing@users.noreply.github.com >
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Reviewed-by: @mukhtharcm
2026-03-17 22:16:56 +05:30
Peter Steinberger
c4a5fd8465
docs: update channel setup wording
2026-03-15 21:07:18 -07:00
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
Teconomix
6d0547dc2e
mattermost: fix DM media upload for unprefixed user IDs ( #29925 )
...
Merged via squash.
Prepared head SHA: 5cffcb072c
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-10 14:22:24 +05:30
Muhammed Mukhthar CM
4a80d48ea9
fix(mattermost): allow reachable interaction callback URLs ( #37543 )
...
Merged via squash.
Prepared head SHA: 4d593731be
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Reviewed-by: @mukhtharcm
2026-03-06 15:27:47 +05:30
Tony Dehnke
136ca87f7b
feat(mattermost): add interactive buttons support ( #19957 )
...
Merged via squash.
Prepared head SHA: 8a25e60872
Co-authored-by: tonydehnke <36720180+tonydehnke@users.noreply.github.com >
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Reviewed-by: @mukhtharcm
2026-03-05 20:14:57 +05:30
Muhammed Mukhthar CM
b1b41eb443
feat(mattermost): add native slash command support (refresh) ( #32467 )
...
Merged via squash.
Prepared head SHA: 989126574e
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Reviewed-by: @mukhtharcm
2026-03-03 12:39:18 +05:30
Peter Steinberger
cfa44ea6b4
fix(security): make allowFrom id-only by default with dangerous name opt-in ( #24907 )
...
* fix(channels): default allowFrom to id-only; add dangerous name opt-in
* docs(security): align channel allowFrom docs with id-only default
2026-02-24 01:01:51 +00:00
Peter Steinberger
777817392d
fix: fail closed missing provider group policy across message channels ( #23367 ) (thanks @bmendonca3)
2026-02-22 12:21:04 +01:00
Vincent Koc
59c78c105a
docs: revert automated heading consistency edits ( #22743 )
2026-02-21 11:18:29 -05:00
Vincent Koc
79183852f9
docs: more channel onboarding naming cleanup ( #22536 )
...
* docs: fix thinking link and add reasoning anchor reference
* docs(channels): rename LINE setup heading to onboarding
* docs(channels): normalize Nextcloud Talk onboarding headings
* docs(channels): use onboarding heading for Matrix setup
* docs(channels): standardize Discord onboarding heading
* docs(channels): standardize Telegram onboarding heading
* docs(channels): standardize WhatsApp onboarding heading
* docs(channels): rename iMessage onboarding and configuration sections
* docs(channels): rename Slack onboarding and configuration sections
* docs(channels): rename Signal onboarding heading
* docs(channels): standardize Nostr onboarding and configuration headings
* docs(channels): standardize Zalo onboarding and configuration headings
* docs(channels): standardize Twitch onboarding heading
* docs(channels): standardize Google Chat onboarding heading
* docs(channels): standardize Mattermost onboarding heading
* docs(channels): standardize Zalo Personal onboarding heading
2026-02-21 03:31:55 -05:00
Sebastian
dd0b789669
fix(mattermost): surface reactions support
2026-02-17 09:30:50 -05:00
Nimrod Gutman
b2fef5ebc4
Revert "Default Telegram polls to public"
...
This reverts commit c43e95e011 .
2026-02-17 09:38:15 +02:00
Krish
0a02b91638
Handle Telegram poll vote updates for agent context
2026-02-16 23:54:56 +01:00
Seb Slight
929a3725d3
docs: canonicalize docs paths and align zh navigation ( #11428 )
...
* docs(navigation): canonicalize paths and align zh nav
* chore(docs): remove stray .DS_Store
* docs(scripts): add non-mint docs link audit
* docs(nav): fix zh source paths and preserve legacy redirects (#11428 ) (thanks @sebslight)
* chore(docs): satisfy lint for docs link audit script (#11428 ) (thanks @sebslight)
2026-02-07 15:40:35 -05:00
Seb Slight
abcaa8c7a9
Docs: add nav titles across docs ( #5689 )
2026-01-31 15:04:03 -06:00
cpojer
8cab78abbc
chore: Run pnpm format:fix.
2026-01-31 21:13:13 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Peter Steinberger
06cb2bf58d
docs: expand mattermost intro
2026-01-23 01:35:50 +00:00