From 5b35203253bb77a87d7efd89a4cfdaeca1b0bafe Mon Sep 17 00:00:00 2001 From: Hiep Le <69354317+hieptl@users.noreply.github.com> Date: Fri, 29 Aug 2025 03:24:48 +0700 Subject: [PATCH] refactor: remove branch dropdown, update title, fix pr_number issue (microagent management) (#10691) --- .../microagent-management-content.tsx | 1 - ...microagent-management-repo-microagents.tsx | 2 +- ...ent-management-upsert-microagent-modal.tsx | 114 +----------------- ...ate-conversation-and-subscribe-multiple.ts | 2 +- frontend/src/i18n/declaration.ts | 2 +- frontend/src/i18n/translation.json | 32 ++--- frontend/src/types/microagent-management.tsx | 1 - openhands/server/routes/mcp.py | 4 +- 8 files changed, 25 insertions(+), 133 deletions(-) diff --git a/frontend/src/components/features/microagent-management/microagent-management-content.tsx b/frontend/src/components/features/microagent-management/microagent-management-content.tsx index 7be9a9df05..315e7b9e67 100644 --- a/frontend/src/components/features/microagent-management/microagent-management-content.tsx +++ b/frontend/src/components/features/microagent-management/microagent-management-content.tsx @@ -240,7 +240,6 @@ export function MicroagentManagementContent() { conversationInstructions, repository: { name: repositoryName, - branch: formData.selectedBranch, gitProvider, }, createMicroagent, diff --git a/frontend/src/components/features/microagent-management/microagent-management-repo-microagents.tsx b/frontend/src/components/features/microagent-management/microagent-management-repo-microagents.tsx index 939eb288fe..7466314512 100644 --- a/frontend/src/components/features/microagent-management/microagent-management-repo-microagents.tsx +++ b/frontend/src/components/features/microagent-management/microagent-management-repo-microagents.tsx @@ -137,7 +137,7 @@ export function MicroagentManagementRepoMicroagents({ {hasConversations && (
- {t(I18nKey.MICROAGENT_MANAGEMENT$OPEN_MICROAGENT_PULL_REQUESTS)} + {t(I18nKey.COMMON$IN_PROGRESS)} {conversations?.map((conversation) => (
diff --git a/frontend/src/components/features/microagent-management/microagent-management-upsert-microagent-modal.tsx b/frontend/src/components/features/microagent-management/microagent-management-upsert-microagent-modal.tsx index 0f9f9494cc..0351b387db 100644 --- a/frontend/src/components/features/microagent-management/microagent-management-upsert-microagent-modal.tsx +++ b/frontend/src/components/features/microagent-management/microagent-management-upsert-microagent-modal.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState, useMemo } from "react"; +import { useEffect, useState, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useSelector } from "react-redux"; import { FaCircleInfo } from "react-icons/fa6"; @@ -11,14 +11,8 @@ import XIcon from "#/icons/x.svg?react"; import { cn, extractRepositoryInfo } from "#/utils/utils"; import { BadgeInput } from "#/components/shared/inputs/badge-input"; import { MicroagentFormData } from "#/types/microagent-management"; -import { Branch, GitRepository } from "#/types/git"; -import { useRepositoryBranches } from "#/hooks/query/use-repository-branches"; +import { GitRepository } from "#/types/git"; import { useRepositoryMicroagentContent } from "#/hooks/query/use-repository-microagent-content"; -import { - BranchDropdown, - BranchLoadingState, - BranchErrorState, -} from "../home/repository-selection"; interface MicroagentManagementUpsertMicroagentModalProps { onConfirm: (formData: MicroagentFormData) => void; @@ -37,7 +31,6 @@ export function MicroagentManagementUpsertMicroagentModal({ const [triggers, setTriggers] = useState([]); const [query, setQuery] = useState(""); - const [selectedBranch, setSelectedBranch] = useState(null); const { selectedRepository } = useSelector( (state: RootState) => state.microagentManagement, @@ -49,9 +42,6 @@ export function MicroagentManagementUpsertMicroagentModal({ const { microagent } = selectedMicroagentItem ?? {}; - // Add a ref to track if the branch was manually cleared by the user - const branchManuallyClearedRef = useRef(false); - // Extract owner and repo from full_name for content API const { owner, repo, filePath } = extractRepositoryInfo( selectedRepository, @@ -70,38 +60,6 @@ export function MicroagentManagementUpsertMicroagentModal({ } }, [isUpdate, microagentContentData]); - const { - data: branches, - isLoading: isLoadingBranches, - isError: isBranchesError, - } = useRepositoryBranches(selectedRepository?.full_name || null); - - const branchesItems = branches?.map((branch) => ({ - key: branch.name, - label: branch.name, - })); - - // Auto-select main or master branch if it exists. - useEffect(() => { - if ( - branches && - branches.length > 0 && - !selectedBranch && - !isLoadingBranches - ) { - // Look for main or master branch - const mainBranch = branches.find((branch) => branch.name === "main"); - const masterBranch = branches.find((branch) => branch.name === "master"); - - // Select main if it exists, otherwise select master if it exists - if (mainBranch) { - setSelectedBranch(mainBranch); - } else if (masterBranch) { - setSelectedBranch(masterBranch); - } - } - }, [branches, isLoadingBranches, selectedBranch]); - const modalTitle = useMemo(() => { if (isUpdate) { return t(I18nKey.MICROAGENT_MANAGEMENT$UPDATE_MICROAGENT); @@ -134,7 +92,6 @@ export function MicroagentManagementUpsertMicroagentModal({ onConfirm({ query: query.trim(), triggers, - selectedBranch: selectedBranch?.name || "", microagentPath: microagent?.path || "", }); }; @@ -147,67 +104,10 @@ export function MicroagentManagementUpsertMicroagentModal({ onConfirm({ query: query.trim(), triggers, - selectedBranch: selectedBranch?.name || "", microagentPath: microagent?.path || "", }); }; - const handleBranchSelection = (key: React.Key | null) => { - const selectedBranchObj = branches?.find((branch) => branch.name === key); - setSelectedBranch(selectedBranchObj || null); - // Reset the manually cleared flag when a branch is explicitly selected - branchManuallyClearedRef.current = false; - }; - - const handleBranchInputChange = (value: string) => { - // Clear the selected branch if the input is empty or contains only whitespace - // This fixes the issue where users can't delete the entire default branch name - if (value === "" || value.trim() === "") { - setSelectedBranch(null); - // Set the flag to indicate that the branch was manually cleared - branchManuallyClearedRef.current = true; - } else { - // Reset the flag when the user starts typing again - branchManuallyClearedRef.current = false; - } - }; - - // Render the appropriate UI for branch selector based on the loading/error state - const renderBranchSelector = () => { - if (!selectedRepository) { - return ( - {}} - onInputChange={() => {}} - isDisabled - wrapperClassName="max-w-full w-full" - label={t(I18nKey.REPOSITORY$SELECT_BRANCH)} - /> - ); - } - - if (isLoadingBranches) { - return ; - } - - if (isBranchesError) { - return ; - } - - return ( - - ); - }; - return ( @@ -236,7 +136,6 @@ export function MicroagentManagementUpsertMicroagentModal({ onSubmit={onSubmit} className="flex flex-col gap-6 w-full" > - {renderBranchSelector()}