diff --git a/apps/web/src/i18n/en/task-board.ts b/apps/web/src/i18n/en/task-board.ts index 6760f3363d..3f05f1d2e6 100644 --- a/apps/web/src/i18n/en/task-board.ts +++ b/apps/web/src/i18n/en/task-board.ts @@ -14,6 +14,10 @@ export const taskBoard = { "taskBoard.taskBoard.assignedToSuperAgentBy": "Assigned to Super Agent by {name}", "taskBoard.taskBoard.autoFix": "Auto-fix", + "taskBoard.taskBoard.autoMergeLabel": "Auto-merge", + "taskBoard.taskBoard.autoMergeTitle": + "Merge a task's pull request and move the card to Done as soon as every enabled reviewer approves", + "taskBoard.taskBoard.autoMergeUpdateError": "Couldn't update auto-merge", "taskBoard.taskBoard.rerun": "Re-run", "taskBoard.taskBoard.blockedBadgeTitle": "The agent is waiting for your input", diff --git a/apps/web/src/i18n/pt-br/task-board.ts b/apps/web/src/i18n/pt-br/task-board.ts index 91bf40e19d..e720383c7b 100644 --- a/apps/web/src/i18n/pt-br/task-board.ts +++ b/apps/web/src/i18n/pt-br/task-board.ts @@ -16,6 +16,11 @@ export const taskBoard = { "taskBoard.taskBoard.assignedToSuperAgentBy": "Atribuído ao Super Agent por {name}", "taskBoard.taskBoard.autoFix": "Auto-correção", + "taskBoard.taskBoard.autoMergeLabel": "Auto-merge", + "taskBoard.taskBoard.autoMergeTitle": + "Faz o merge do pull request da tarefa e move o card para Concluído assim que todos os revisores ativos aprovarem", + "taskBoard.taskBoard.autoMergeUpdateError": + "Não foi possível atualizar o auto-merge", "taskBoard.taskBoard.rerun": "Executar de novo", "taskBoard.taskBoard.blockedBadgeTitle": "O agente está aguardando sua entrada", diff --git a/apps/web/src/layouts/task-board/index.tsx b/apps/web/src/layouts/task-board/index.tsx index de204bdf62..bf44c78940 100644 --- a/apps/web/src/layouts/task-board/index.tsx +++ b/apps/web/src/layouts/task-board/index.tsx @@ -38,6 +38,7 @@ import { ChevronRight, Columns03, DotsHorizontal, + GitMerge, HelpCircle, Lightning01, List, @@ -116,6 +117,8 @@ import { } from "./config"; import { useTags } from "@/hooks/use-tags"; import { usePreferences } from "@/hooks/use-preferences"; +import { Switch } from "@decocms/ui/components/switch.tsx"; +import { useOrgFlag, useSetOrgFlag } from "@/hooks/use-organization-settings"; import { TaskBoardItemDialog, threadStatusStyle, @@ -168,6 +171,38 @@ function formatDueDate(iso: string): { label: string; overdue: boolean } { const PILL = "inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-2 py-1 text-xs font-medium text-muted-foreground"; +/** + * Board-header switch for the org's `auto_merge` flag: when on, a task's PR is + * merged (and the card moved to Done) as soon as every enabled reviewer + * approves. Same flag as Settings → Review, surfaced here because it's the + * knob you flip while watching In Review cards. + */ +function AutoMergeToggle() { + const t = useT(); + const enabled = useOrgFlag("auto_merge"); + const setFlag = useSetOrgFlag(); + return ( + + ); +} + /** Card flag for a task whose agent is paused waiting on human input. */ function BlockedBadge() { const t = useT(); @@ -609,6 +644,7 @@ export function TaskBoardPage() { )}
+