feat(channel): add Slack channel configuration UI - #3935
Draft
tcp404 wants to merge 1 commit into
Draft
Conversation
- Add SlackConfigForm with Bot Token and App-Level Token inputs for Socket Mode - Promote Slack from coming-soon placeholder to an active channel card and wire status/model/pairing - Add settings.assistant.slack* i18n keys across all 13 locales - Update channels PRD to reflect Slack active status
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
tcp404
marked this pull request as draft
August 9, 2026 04:59
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add a Slack channel configuration UI to the Settings → Channels panel, moving Slack from the
coming_soonplaceholder to anactivechannel with a full config form.SlackConfigForm.tsx(new, modeled onTelegramConfigForm): two-token input — Bot Token (xoxb-) and App-Level Token (xapp-), bothInput.Passwordwith visibility toggle and soft prefix validation. "Test" validates only the Bot Token viaauth.test; on success it auto-enables the plugin submitting both tokens. Includes the pairing-request flow, authorized-users list, and a Next-Steps guide.ChannelModalContent.tsx(wiring): adds'slack'to the platform type; introducesslackPluginStatus/useChannelModelSelection('slack')/slackTokenRef/slackEnableLoading/handleToggleSlackPlugin; removes Slack fromcomingSoonChannelsand inserts anactiveslackChannelcard (right after Telegram); hooks up toggle dispatch,pluginStatusChanged, andloadPluginStatus. Discord stayscoming_soon.settings.assistant.slack*keys (18) plussettings.assistant.unknownUseracross all 13 locales (real translations, not placeholders); regeneratesi18n-keys.d.ts.docs/prds/remote/channels/channels.md— Slack movedcoming_soon→active, newF-WEBUI-13bsection.Wire contract (agreed with backend)
slack.testPluginsends{ plugin_id: 'slack', token: <xoxb> }(validates Bot Token only).enablePluginsends{ plugin_id: 'slack', config: { credentials: { token: <xoxb>, app_token: <xapp> } } }— key name is exactlyapp_token(underscore).channel.*IPC; no new IPC entry points. Pairing / authorized users are filtered byplatformType === 'slack'.Related Issues
Type of Change
feat— New feature (non-breaking change which adds functionality)Atomic PR Checklist (Rule 1)
<type>(<scope>): <subject>(English)Local Checks (Rule 3)
bun run format— formatting passesbun run lint— no lint errors (pre-existing repo warnings only;just pushlint-strict gate passed)bunx tsc --noEmit— no type errors (0 errors)bunx vitest run— tests pass (3964 passed / 5 skipped viajust push)bun run i18n:types+node scripts/check-i18n.js)Runtime Verification
Additional Context
aioncorerepo on branchboii/feat/channel-slack.tsc --noEmit/ vitest / i18n check) + code review + front/back contract cross-check. Runtime verification is deferred to a shared integration instance.'Unknown User'in other channel forms (Telegram/Lark/DingTalk/WeChat/WeCom) is pre-existing debt and intentionally out of scope here; this PR only introduces i18n for its own new file (ratchet, no regression).