feat(web): show Slack integration status on settings page

Add a Communication panel showing Slack integration enabled state
and default channel, alongside the existing GitHub panel reframed
as Version Control.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-05-20 09:53:58 -04:00
parent ac9385a68e
commit a594eaaf58
No known key found for this signature in database

View file

@ -27,23 +27,33 @@ export default function SettingsIntegrations() {
return (
<div className="space-y-6">
<SettingsPageIntro description={DESCRIPTION} />
{settings ? <IntegrationsPanel settings={settings} /> : <PanelSkeleton />}
{settings ? (
<>
<GithubPanel settings={settings} />
<SlackPanel settings={settings} />
</>
) : (
<>
<PanelSkeleton />
<PanelSkeleton />
</>
)}
</div>
);
}
function IntegrationsPanel({ settings }: { settings: ServerSettings }) {
const { integrations } = settings.server;
function GithubPanel({ settings }: { settings: ServerSettings }) {
const { github } = settings.server.integrations;
return (
<Panel title="Integrations">
<Panel title="Version Control">
<Row title="GitHub" help="App for repo access, checks, and PR automation.">
<IntegrationValue
enabled={integrations.github.enabled}
enabled={github.enabled}
detail={
integrations.github.slug
? `app: ${integrations.github.slug}`
: integrations.github.app_id
? `app id: ${integrations.github.app_id}`
github.slug
? `app: ${github.slug}`
: github.app_id
? `app id: ${github.app_id}`
: undefined
}
/>
@ -52,6 +62,27 @@ function IntegrationsPanel({ settings }: { settings: ServerSettings }) {
);
}
function SlackPanel({ settings }: { settings: ServerSettings }) {
const { slack } = settings.server.integrations;
return (
<Panel title="Communication">
<Row
title="Slack"
help="Workspace app for run notifications and approvals."
>
<IntegrationValue
enabled={slack.enabled}
detail={
slack.default_channel
? `channel: ${slack.default_channel}`
: undefined
}
/>
</Row>
</Panel>
);
}
function IntegrationValue({
enabled,
detail,