Skip to content

feat(channel): add Mattermost channel - #497

Open
longkeyy wants to merge 4 commits into
iOfficeAI:mainfrom
longkeyy:feat/mattermost-channel
Open

feat(channel): add Mattermost channel#497
longkeyy wants to merge 4 commits into
iOfficeAI:mainfrom
longkeyy:feat/mattermost-channel

Conversation

@longkeyy

@longkeyy longkeyy commented Jun 21, 2026

Copy link
Copy Markdown

Summary

  • add a built-in Mattermost channel plugin using Mattermost REST and WebSocket APIs
  • validate server URLs and credentials, load bot identity, and reconnect WebSocket sessions with bounded timeouts/backoff
  • support channel allowlists, self-message filtering, threaded replies, pairing, media/tool relay, and in-place streamed reply updates
  • register Mattermost in plugin types, routes, defaults, and channel configuration

Configuration

  • credential: accessToken
  • settings: serverUrl, allowedChannelIds, replyInThread, ignoreSelfMessages

Safety And Reliability

  • rejects non-HTTP(S) server URLs
  • preserves stored credentials when the frontend saves settings without replacing the token
  • ignores messages from the bot when configured
  • filters allowed channel IDs before dispatch
  • covers WebSocket TLS, timeout, close, reconnect, and streamed-message update behavior

Related

Verification

  • rebased onto AionCore origin/main at fe448e02
  • just push --force-with-lease longkeyy feat/mattermost-channel passed migration immutability, formatting, clippy, workspace compilation, and all 9344 nextest tests (52 skipped by configuration)
  • cargo check -p aionui-channel --features mattermost passed
  • cargo test -p aionui-channel mattermost passed
  • release AionCore is injected into a macOS arm64 AionUi package and runtime-verified after the rebase

Delivery Dependency

After this PR merges, publish an AionCore release newer than v0.1.72 and update the frontend aioncoreVersion pin. The current public v0.1.72 artifact predates Mattermost even though the crate version on this branch remains 0.1.72.

@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch 2 times, most recently from 742edbb to d8c97b0 Compare July 15, 2026 02:49
@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch 2 times, most recently from c6ac8db to fdd8667 Compare July 21, 2026 04:16
@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch from fdd8667 to 9c16e3a Compare July 28, 2026 03:40
@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch from 9c16e3a to ba5e72d Compare August 11, 2026 03:18
@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch 2 times, most recently from 0a2a314 to e826c93 Compare August 21, 2026 09:39
@longkeyy

Copy link
Copy Markdown
Author

Rebased onto current main and ready for review. The PR body now includes configuration, safety/reliability behavior, full local verification, frontend dependency, and the required release/pin follow-up. @kaizhou-lab @tcp404, could you please review when available?

@longkeyy
longkeyy force-pushed the feat/mattermost-channel branch from e826c93 to d342e31 Compare August 28, 2026 04:42
@longkeyy

Copy link
Copy Markdown
Author

Rebased onto current main (fe448e02) and force-updated the branch. The full local gate passed: migration immutability, formatting, clippy, workspace compilation, and 9344/9344 nextest tests (52 skipped by configuration). The PR body now reflects the current v0.1.72 release dependency and frontend pin follow-up. @kaizhou-lab @tcp404, this is ready for review again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant