Skip to content

[Feat] Announce primary-branch pushes across source-control providers - #1845

Merged
mrubens merged 7 commits into
developfrom
feature/merge-announcer-0jy7dz1ck4vd8
Aug 29, 2026
Merged

[Feat] Announce primary-branch pushes across source-control providers#1845
mrubens merged 7 commits into
developfrom
feature/merge-announcer-0jy7dz1ck4vd8

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

​Opened on behalf of @mrubens. Follow up by mentioning @roomote-roomote, in the web UI, or in Slack.

What changed

  • Add Merge announcer as a configurable built-in automation for GitHub, GitLab, Azure DevOps, Bitbucket, and Gitea.
  • Normalize provider push payloads into one shared commit event, filter against each active repository's stored default branch, summarize commits with the deployment helper model, and include pusher and author attribution.
  • Reuse provider-scoped webhook delivery IDs to suppress duplicate announcements and report delivery failures in webhook run state.
  • Deliver through the standard automation destination picker: choose Slack, Teams, Telegram, or Discord, then a channel or DM me; choose Default for the Manager Channel or primary-conversation fallback.
  • Persist destinations only as canonical AutomationTarget channel/user kinds. Existing saved targets populate the standard picker, while the unshipped Merge-announcer-specific Slack/Discord request fields and fallback save path are removed.
  • Scope Merge announcer destination and frequency writes to its own settings save so unrelated or stale form submissions cannot overwrite a newer destination.
  • Update settings, run status, telemetry, documentation, provider subscriptions, and focused provider, deduplication, destination, persistence, UI, and CI coverage.

Why this change was made

Teams need a concise notification when commits land on primary branches, including direct pushes that do not arrive through a merged pull request. Reusing Roomote's existing webhook, helper-model, canonical destination, and communication abstractions keeps behavior consistent across providers without creating a second event or notification system.

Impact

Admins can enable Merge announcer and use the same provider plus Channel/DM destination control as custom automations. Once enabled, primary-branch pushes produce one attributed summary per provider delivery; feature branches, branch deletions, inactive repositories, and duplicate deliveries remain silent. Existing canonical channel or user targets remain readable, and unrelated automation saves preserve the current Merge announcer configuration.

Screenshots

Merge announcer using the standard Discord provider and channel destination picker

@roomote-community

roomote-community Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

No code issues found. See task

  • Unrelated automation saves can overwrite a Merge announcer destination from a stale form snapshot. (apps/web/src/trpc/commands/automations/settings-update.ts:929)

Reviewed ff7f574

@roomote-roomote

roomote-roomote Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

Resolved the Test check failures, replaced Merge announcer's provisional Slack/Discord controls with the shared provider plus Channel/DM picker, removed the unshipped legacy request fields, and fixed the unrelated-save race from the latest review. The final reviewed head is ff7f574; the PR description now contains current behavior and fresh visual proof.

Comment thread apps/web/src/trpc/commands/automations/settings-update.ts
@mrubens
mrubens marked this pull request as ready for review August 29, 2026 18:38
@mrubens
mrubens merged commit 7dd7768 into develop Aug 29, 2026
18 checks passed
@mrubens
mrubens deleted the feature/merge-announcer-0jy7dz1ck4vd8 branch August 29, 2026 18:38
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