Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/fresh-slack-manifest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@roomote/web": minor
---

Add a guided Slack app manifest updater to Communication Settings so admins can apply current Roomote capabilities, permissions, events, and callback URLs with a fresh configuration token.
25 changes: 20 additions & 5 deletions apps/docs/providers/communications/slack.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ If Slack is already configured, Settings → Communications shows the saved
credentials and still offers **Create a new Slack app with a configuration
token** when you need to replace them.

### Update an existing Slack app

After connecting a workspace, use **Settings → Communications → Slack → Update
app** to bring the existing app manifest up to date with the current Roomote
configuration. Generate and paste a fresh app configuration token when
prompted. Roomote exports the app's current manifest, preserves custom fields,
adds or updates Roomote's required capabilities, scopes, events, redirect URLs,
and callback URLs, validates the result, and then applies it. The token is not
stored.

If the update changes permissions, Roomote shows **Reinstall in Slack**. Finish
that approval step before testing the new capabilities because Slack does not
add scopes to existing installations automatically.

### Alternative: env vars or an existing app

If you already have a Slack app, or production secret management should own the
Expand Down Expand Up @@ -153,11 +167,12 @@ Roomote-created apps enable Slack's current **Agent messaging experience**
opens Fast-mode responses in threads, and allows Slack to render native loading
states and streamed task cards.

For an existing manually configured app, open its Slack app settings, enable
the **Agents** feature, and select the Agent messaging experience. Add the
`assistant:write` scope and the `app_home_opened` and `app_context_changed`
events listed above, then reinstall the app and hard-refresh Slack. Keep
`message.im` enabled so direct messages continue reaching Roomote.
For an existing app, use **Update app** in Settings → Communications to apply
these settings. You can also configure them manually by enabling the **Agents**
feature, selecting the Agent messaging experience, adding the `assistant:write`
scope and the `app_home_opened` and `app_context_changed` events, and then
reinstalling the app. Hard-refresh Slack afterward. Keep `message.im` enabled
so direct messages continue reaching Roomote.

## Fast answers

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion apps/web/src/components/settings/CommsProviderSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ import {
import { Section } from './Section';
import { TelegramLinkAccountStep } from './TelegramLinkAccountStep';
import { DiscordSetupStatus } from './DiscordSetupStatus';
import { SlackManifestUpdateDialog } from './SlackManifestUpdateDialog';

function getProviderIconId(providerId: CommsProviderId): string {
return providerId === 'microsoft' ? 'teams' : providerId;
Expand Down Expand Up @@ -537,7 +538,10 @@ export function CommsProviderSection({
title={provider.label}
action={
provider.id === 'slack' ? (
<SlackWorkspaceAuthButton configured={hasConfiguredValues} />
<div className="flex items-center gap-2">
<SlackManifestUpdateDialog />
<SlackWorkspaceAuthButton configured={hasConfiguredValues} />
</div>
) : null
}
>
Expand Down
146 changes: 146 additions & 0 deletions apps/web/src/components/settings/SlackManifestUpdateDialog.test.tsx

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading