Skip to content

feat(signals): add team-wide Slack channel picker to inbox settings - #69908

Merged
VojtechBartos merged 4 commits into
masterfrom
vojtab/signals-team-channel-ui
Jul 13, 2026
Merged

feat(signals): add team-wide Slack channel picker to inbox settings#69908
VojtechBartos merged 4 commits into
masterfrom
vojtab/signals-team-channel-ui

Conversation

@VojtechBartos

@VojtechBartos VojtechBartos commented Jul 10, 2026

Copy link
Copy Markdown
Member

Problem

Came up from support ticket https://posthoghelp.zendesk.com/agent/tickets/61892

The team-default inbox Slack channel (SignalTeamConfig.default_slack_notification_channel) had no UI. It was only ever set automatically during Slack-app onboarding, or via the REST API. Teams that installed Slack before that onboarding shipped (or that want reports in a specific existing channel) had no self-serve way to route every report to one team channel. Surfaced by a support ticket.

Changes

Adds a "Notify the whole team" card to the Slack section of inbox settings, above the per-user "Notify me directly" card: an enable toggle (mirroring the per-user card) plus a channel picker. Toggling off clears the team channel.

  • signalTeamConfigLogic gets a generic patchTeamConfig(patch) action with an optimistic reducer. It reuses the POST response instead of refetching, and resyncs on error.
  • SlackNotificationsSection is split into TeamChannelCard + PerUserChannelCard with a shared card header and a single "connect Slack" empty state.
  • SlackChannelPicker now skips duplicate channel fetches when multiple pickers mount for the same workspace.
  • The Connections rail's Notifications widget counts either channel (team or personal) as configured, and its status names each: Team #reports · You #vojta.

Showcase

Screen.Recording.2026-07-13.at.10.38.29.mov

How did you test this code?

  • Manually clicked through the toggle, picker, and Connections widget flows (see the demo above).
  • 24/24 existing Jest tests pass (SlackChannelPicker.test.tsx, slackIntegrationLogic.test.ts).
  • oxlint + oxfmt clean, kea typegen regenerated, tsgo typecheck with zero errors in the changed files.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

🤖 Agent context

Autonomy: Human-driven (agent-assisted)
Model: Claude Code (Opus 4.8, Fable 5)

The team-default inbox notification channel (default_slack_notification_channel)
had no UI. It was only ever set automatically during Slack-app onboarding
(find-or-create #posthog-inbox) or via the API, so teams whose Slack app predates
that onboarding, or who want a specific channel, had no self-serve way to route
every report to one team channel regardless of the suggested reviewer.

Add a 'Notify the whole team' channel picker to the Slack section of inbox
settings, alongside the existing per-user 'Notify me directly' card. It writes
default_slack_notification_channel via signalTeamConfigLogic; clearing the channel
disables the team default. Targets the team's first Slack workspace to mirror the
backend's _get_team_slack_integration routing.
@VojtechBartos VojtechBartos self-assigned this Jul 10, 2026
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — 🟢 -5.73 MiB (-8.2%)

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 64.33 MiB · 🟢 -5.73 MiB (-8.2%)

File Size Δ vs base
render-query/src/render-query/render-query.js 21.21 MiB 🟢 -2.96 MiB (-12.2%)
toolbar/src/toolbar/toolbar-app.js 71.0 KiB 🟢 -1.65 MiB (-96.0%)
toolbar/src/scenes/product-tours/editor/chunk-generateStepHtml.js 647.0 KiB 🔺 +647.0 KiB (new)
exporter/src/exporter/scenes/ExporterNotebookScene.js 3.20 MiB 🔺 +326.4 KiB (+11.1%)
exporter/src/exporter/scenes/ExporterDashboardScene.js 272.4 KiB 🔺 +265.0 KiB (+3561.7%)
exporter/_parent/products/workflows/frontend/Workflows/WorkflowScene.js removed 🟢 -157.4 KiB (-100.0%)
exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene.js removed 🟢 -150.9 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/AIObservabilityTraceScene.js removed 🟢 -130.1 KiB (-100.0%)
exporter/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene.js removed 🟢 -119.7 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/AIObservabilityScene.js removed 🟢 -115.3 KiB (-100.0%)
exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene.js removed 🟢 -100.7 KiB (-100.0%)
exporter/_parent/products/tracing/frontend/TracingScene.js removed 🟢 -88.9 KiB (-100.0%)
toolbar/src/toolbar/surveys/chunk-SurveySidebar.js 86.2 KiB 🔺 +86.2 KiB (new)
exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner.js removed 🟢 -70.2 KiB (-100.0%)
exporter/_parent/products/workflows/frontend/WorkflowsScene.js removed 🟢 -60.7 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation.js removed 🟢 -59.8 KiB (-100.0%)
exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene.js removed 🟢 -59.1 KiB (-100.0%)
exporter/_parent/products/endpoints/frontend/EndpointScene.js removed 🟢 -56.5 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene.js removed 🟢 -53.1 KiB (-100.0%)
exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene.js removed 🟢 -53.0 KiB (-100.0%)
exporter/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene.js removed 🟢 -48.8 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene.js removed 🟢 -47.0 KiB (-100.0%)
exporter/_parent/products/posthog_ai/frontend/scenes/TaskTracker/TaskTracker.js removed 🟢 -43.3 KiB (-100.0%)
exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene.js removed 🟢 -42.7 KiB (-100.0%)
toolbar/src/toolbar/stats/chunk-HeatmapToolbarMenu.js 37.7 KiB 🔺 +37.7 KiB (new)
exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptScene.js removed 🟢 -37.5 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene.js removed 🟢 -37.1 KiB (-100.0%)
exporter/_parent/products/growth/frontend/IdentityMatchingScene.js removed 🟢 -35.5 KiB (-100.0%)
exporter/_parent/products/metrics/frontend/MetricsScene.js removed 🟢 -34.4 KiB (-100.0%)
exporter/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene.js removed 🟢 -34.0 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene.js removed 🟢 -32.7 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTag.js removed 🟢 -32.0 KiB (-100.0%)
exporter/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene.js removed 🟢 -29.9 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene.js removed 🟢 -28.8 KiB (-100.0%)
exporter/_parent/products/actions/frontend/pages/Action.js removed 🟢 -28.7 KiB (-100.0%)
exporter/_parent/products/data_warehouse/DataWarehouseScene.js removed 🟢 -28.4 KiB (-100.0%)
exporter/_parent/products/endpoints/frontend/EndpointsScene.js removed 🟢 -27.5 KiB (-100.0%)
exporter/_parent/products/links/frontend/LinkScene.js removed 🟢 -25.2 KiB (-100.0%)
exporter/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene.js removed 🟢 -24.6 KiB (-100.0%)
exporter/_parent/products/session_summaries/frontend/SessionGroupSummaryScene.js removed 🟢 -23.6 KiB (-100.0%)
exporter/_parent/products/logs/frontend/LogsScene.js removed 🟢 -23.2 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene.js removed 🟢 -22.7 KiB (-100.0%)
exporter/src/scenes/data-pipelines/event-filtering/EventFilterScene.js removed 🟢 -22.6 KiB (-100.0%)
exporter/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene.js removed 🟢 -21.8 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene.js removed 🟢 -21.7 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/observations/ReplayObservation.js removed 🟢 -21.5 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene.js removed 🟢 -20.6 KiB (-100.0%)
exporter/src/scenes/models/ModelsScene.js removed 🟢 -20.0 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene.js removed 🟢 -19.7 KiB (-100.0%)
exporter/_parent/products/live_debugger/frontend/LiveDebugger.js removed 🟢 -19.5 KiB (-100.0%)
exporter/_parent/products/subscriptions/frontend/scenes/SubscriptionScene.js removed 🟢 -19.2 KiB (-100.0%)
exporter/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene.js removed 🟢 -18.5 KiB (-100.0%)
toolbar/src/toolbar/debug/chunk-EventDebugMenu.js 18.5 KiB 🔺 +18.5 KiB (new)
exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene.js removed 🟢 -17.8 KiB (-100.0%)
exporter/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate.js removed 🟢 -17.2 KiB (-100.0%)
toolbar/src/toolbar/actions/chunk-ActionsToolbarMenu.js 16.8 KiB 🔺 +16.8 KiB (new)
exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail.js removed 🟢 -16.3 KiB (-100.0%)
exporter/_parent/products/managed_migrations/frontend/ManagedMigration.js removed 🟢 -15.8 KiB (-100.0%)
exporter/src/scenes/models/NodeDetailScene.js removed 🟢 -14.9 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/replay_scanners/ActionEditorScene.js removed 🟢 -14.8 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene.js removed 🟢 -14.3 KiB (-100.0%)
toolbar/src/toolbar/product-tours/chunk-ProductToursSidebar.js 14.1 KiB 🔺 +14.1 KiB (new)
exporter/_parent/products/ai_gateway/frontend/AIGatewayScene.js removed 🟢 -13.3 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene.js removed 🟢 -12.2 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene.js removed 🟢 -11.7 KiB (-100.0%)
toolbar/src/toolbar/experiments/chunk-ExperimentsToolbarMenu.js 11.2 KiB 🔺 +11.2 KiB (new)
exporter/_parent/products/tracing/frontend/TracingOperationScene.js removed 🟢 -10.9 KiB (-100.0%)
exporter/_parent/products/user_interviews/frontend/UserInterview.js removed 🟢 -10.6 KiB (-100.0%)
posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner.js 82.1 KiB 🔺 +10.2 KiB (+14.2%)
exporter/_parent/products/feature_flags/frontend/staff/FeatureFlagsStaffToolsScene.js removed 🟢 -9.8 KiB (-100.0%)
exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene.js removed 🟢 -9.6 KiB (-100.0%)
exporter/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene.js removed 🟢 -9.2 KiB (-100.0%)
exporter/_parent/products/tasks/frontend/SlackTaskContextScene.js removed 🟢 -9.2 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene.js removed 🟢 -8.4 KiB (-100.0%)
exporter/src/scenes/data-pipelines/TransformationsScene.js removed 🟢 -8.4 KiB (-100.0%)
exporter/_parent/products/user_interviews/frontend/UserInterviewResponse.js removed 🟢 -8.3 KiB (-100.0%)
exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene.js removed 🟢 -8.1 KiB (-100.0%)
exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene.js removed 🟢 -8.0 KiB (-100.0%)
exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene.js removed 🟢 -8.0 KiB (-100.0%)
exporter/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene.js removed 🟢 -8.0 KiB (-100.0%)
exporter/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene.js removed 🟢 -7.5 KiB (-100.0%)
posthog-app/src/scenes/App.js 26.9 KiB 🔺 +7.3 KiB (+37.1%)
exporter/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene.js removed 🟢 -7.2 KiB (-100.0%)
exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene.js removed 🟢 -7.0 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/replay_scanners/VisionActionRunScene.js removed 🟢 -6.9 KiB (-100.0%)
exporter/_parent/products/subscriptions/frontend/scenes/SubscriptionsScene.js removed 🟢 -6.8 KiB (-100.0%)
exporter/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene.js removed 🟢 -6.8 KiB (-100.0%)
exporter/_parent/products/user_interviews/frontend/UserInterviews.js removed 🟢 -6.7 KiB (-100.0%)
exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene.js removed 🟢 -6.6 KiB (-100.0%)
exporter/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene.js removed 🟢 -6.4 KiB (-100.0%)
exporter/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene.js removed 🟢 -6.4 KiB (-100.0%)
exporter/_parent/products/actions/frontend/pages/Actions.js removed 🟢 -6.3 KiB (-100.0%)
exporter/_parent/products/early_access_features/frontend/EarlyAccessFeature.js removed 🟢 -6.2 KiB (-100.0%)
posthog-app/src/scenes/insights/InsightScene.js 37.4 KiB 🟢 -6.2 KiB (-14.1%)
exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene.js removed 🟢 -6.1 KiB (-100.0%)
exporter/_parent/products/replay_vision/frontend/replay_scanners/VisionActionScene.js removed 🟢 -6.0 KiB (-100.0%)
exporter/_parent/products/session_summaries/frontend/SessionGroupSummariesTable.js removed 🟢 -5.7 KiB (-100.0%)
toolbar/src/toolbar/flags/chunk-FlagsToolbarMenu.js 5.6 KiB 🔺 +5.6 KiB (new)
exporter/_parent/products/games/FlappyHog/FlappyHog.js removed 🟢 -5.6 KiB (-100.0%)
exporter/_parent/products/posthog_ai/frontend/components/tool/builtinToolRenderers.js removed 🟢 -5.6 KiB (-100.0%)
exporter/_parent/products/links/frontend/LinksScene.js removed 🟢 -5.5 KiB (-100.0%)
exporter/_parent/products/games/368Hedgehogs/368Hedgehogs.js removed 🟢 -5.2 KiB (-100.0%)
posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene.js 58.7 KiB 🔺 +4.9 KiB (+9.0%)
exporter/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay.js removed 🟢 -4.7 KiB (-100.0%)
posthog-app/_parent/products/replay_vision/frontend/observations/ReplayObservation.js 19.3 KiB 🟢 -4.5 KiB (-18.9%)
toolbar/src/toolbar/web-vitals/chunk-WebVitalsToolbarMenu.js 4.4 KiB 🔺 +4.4 KiB (new)
exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene.js removed 🟢 -4.4 KiB (-100.0%)
exporter/_parent/products/early_access_features/frontend/EarlyAccessFeatures.js removed 🟢 -4.2 KiB (-100.0%)
exporter/_parent/products/posthog_ai/frontend/components/tool/posthogCodeToolRenderers.js removed 🟢 -4.2 KiB (-100.0%)
exporter/_parent/products/ai_observability/frontend/AIObservabilityUsers.js removed 🟢 -4.0 KiB (-100.0%)
exporter/src/exporter/scenes/ExporterRecordingScene.js 2.5 KiB 🟢 -3.8 KiB (-60.4%)
exporter/_parent/products/customer_analytics/frontend/components/AccountRelationshipsInput/CyclotronJobInputAccountRelationships.js removed 🟢 -3.7 KiB (-100.0%)
posthog-app/_parent/products/alerts/frontend/views/EditAlertModal.js 3.5 KiB 🔺 +3.5 KiB (new)
exporter/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene.js removed 🟢 -3.5 KiB (-100.0%)
posthog-app/_parent/products/metrics/frontend/MetricsScene.js 38.9 KiB 🔺 +3.5 KiB (+9.8%)
exporter/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene.js removed 🟢 -3.4 KiB (-100.0%)
exporter/_parent/products/posthog_ai/frontend/components/tool/EditDiffRenderer.js removed 🟢 -3.4 KiB (-100.0%)
exporter/_parent/products/customer_analytics/frontend/components/AccountPropertiesInput/CyclotronJobInputAccountProperties.js removed 🟢 -3.3 KiB (-100.0%)
exporter/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene.js removed 🟢 -3.3 KiB (-100.0%)
exporter/src/queries/nodes/WebVitals/WebVitals.js 8.7 KiB 🟢 -3.2 KiB (-27.0%)
exporter/_parent/products/ai_observability/frontend/AIObservabilitySessionScene.js removed 🟢 -3.2 KiB (-100.0%)
exporter/src/exporter/scenes/ExporterInsightScene.js 4.6 KiB 🟢 -3.2 KiB (-41.2%)
exporter/src/queries/Query/Query.js 2.5 KiB 🟢 -3.2 KiB (-56.6%)
toolbar/src/toolbar/surveys/chunk-SurveysToolbarMenu.js 3.2 KiB 🔺 +3.2 KiB (new)
exporter/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene.js removed 🟢 -3.1 KiB (-100.0%)
posthog-app/src/scenes/instance/QueryPerformance/QueryPerformance.js 31.9 KiB 🔺 +2.9 KiB (+9.9%)
exporter/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours.js removed 🟢 -2.6 KiB (-100.0%)
toolbar/src/toolbar/field-notes/chunk-FieldNotesOverlay.js 2.6 KiB 🔺 +2.6 KiB (new)
exporter/src/queries/schema.js 1.01 MiB 🔺 +2.4 KiB (+0.2%)
posthog-app/src/queries/schema.js 1.01 MiB 🔺 +2.4 KiB (+0.2%)
toolbar/src/toolbar/field-notes/chunk-FieldNotesToolbarMenu.js 2.3 KiB 🔺 +2.3 KiB (new)
posthog-app/src/scenes/inbox/InboxScene.js 637.4 KiB 🔺 +2.1 KiB (+0.3%)
exporter/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene.js removed 🟢 -2.1 KiB (-100.0%)
exporter/_parent/products/skills/frontend/LLMSkillsScene.js removed 🟢 -1.8 KiB (-100.0%)
exporter/_parent/products/skills/frontend/LLMSkillScene.js removed 🟢 -1.8 KiB (-100.0%)
exporter/_parent/products/posthog_ai/frontend/components/QuestionRenderer.js removed 🟢 -1.7 KiB (-100.0%)
toolbar/src/toolbar/product-tours/chunk-ProductToursToolbarMenu.js 1.7 KiB 🔺 +1.7 KiB (new)
exporter/_parent/products/alerts/frontend/views/EditAlertModal.js 1.4 KiB 🔺 +1.4 KiB (new)
exporter/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee.js removed 🟢 -1.3 KiB (-100.0%)
exporter/src/lib/components/ActivityLog/describers.js 127.2 KiB 🟢 -1.3 KiB (-1.0%)
posthog-app/_parent/products/dashboards/frontend/widgets/experiments/ExperimentsListWidget.js 5.7 KiB 🔺 +1.2 KiB (+27.2%)
posthog-app/_parent/products/dashboards/frontend/widgets/experiments/ExperimentResultsWidget.js 7.3 KiB 🔺 +1.2 KiB (+20.0%)

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.21 MiB · 22 files 🔺 +726 B (+0.1%) ███░░░░░░░ 28.2% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.09 MiB · 2,970 files 🔺 +12.4 KiB (+0.1%) █████████░ 87.5% of 9.25 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
668 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
278.6 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/rrweb.js
266.9 KiB ../node_modules/.pnpm/@posthog+icons@0.37.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
234.9 KiB src/taxonomy/core-filter-definitions-by-group.json
221.5 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/module.js
164.0 KiB src/queries/validators.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
105.9 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

Dist folder size — 🟢 -157.15 MiB (-10.9%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1280.79 MiB · 🟢 -157.15 MiB (-10.9%)

Playwright — all passed

All tests passed.

View test results →

@trunk-io

trunk-io Bot commented Jul 10, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

Dedupe the per-field optimistic-update triplet in signalTeamConfigLogic
into a single patchTeamConfig(patch), reuse the POST response instead of
refetching after every update, share the Slack card header markup, and
skip duplicate channel fetches when multiple pickers mount for the same
workspace.
Mirror the per-user card's switch: toggling off clears the team channel,
toggling on reveals the picker. The picker now only renders while
enabled or picking.
The Connections rail widget only checked the personal reviewer channel,
so a team with only the team-wide channel configured was nagged to set
up notifications it already had. Either channel now marks it done, and
the status names each configured target (Team #a · You #b).
@VojtechBartos
VojtechBartos requested a review from a team July 13, 2026 08:44
@VojtechBartos
VojtechBartos marked this pull request as ready for review July 13, 2026 08:44
@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ❌ build failed

The preview didn't come up for commit 8d4317c. See the build log for the failing step. It'll retry on the next push.

@greptile-apps

greptile-apps Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Security Review

The team-wide Slack channel is saved without binding it to the Slack integration used for delivery. In teams with multiple Slack workspaces, this can cross the workspace boundary and route notifications through the wrong integration.

Reviews (1): Last reviewed commit: "feat(signals): count team channel in the..." | Re-trigger Greptile

useMountedLogic(userAutonomyLogic)
const { slackIntegrations, integrationsLoading } = useValues(integrationsLogic)
const { autonomyConfig } = useValues(userAutonomyLogic)
const { teamConfig } = useValues(signalTeamConfigLogic)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Team Config Never Loads

NotificationsWidget reads teamConfig, but this component tree does not mount signalTeamConfigLogic, so the logic's afterMount fetch may never run here. When a team has only default_slack_notification_channel configured, the widget can keep teamChannel as null and show Not connected even though team-wide Slack notifications are enabled.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like it's false positive useValues(logic) mounts it

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, my mistake. In Kea, useValues(logic) mounts the logic automatically if it isn't already mounted, which triggers afterMount and the fetch. The comment was a false positive.

Tip: You can customize Greptile's behavior for this repo with .greptile/rules.md and .greptile/config.json.


return (
<div className="flex flex-col gap-3">
<TeamChannelCard integration={integrations[0]} />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 security Workspace Selection Can Diverge

TeamChannelCard always uses integrations[0], but delivery uses the backend's own first Slack integration lookup. For teams with multiple Slack workspaces, the frontend can save a channel ID from one workspace while the backend posts through another, so a valid selected channel fails at Slack delivery time.

Rule Used: When implementing new features, ensure that owners... (source)

Learned From
PostHog/posthog#31236

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

true, but not security issue, it would just end up with channel not found, it requires some DB model changes, will do a follow up PR

@VojtechBartos
VojtechBartos merged commit 8b420aa into master Jul 13, 2026
323 of 328 checks passed
@VojtechBartos
VojtechBartos deleted the vojtab/signals-team-channel-ui branch July 13, 2026 15:30
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-13 15:59 UTC Run
prod-us ✅ Deployed 2026-07-13 16:18 UTC Run
prod-eu ✅ Deployed 2026-07-13 16:23 UTC Run

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.

2 participants