diff --git a/src/renderer/src/pages/home/ChatNavbar.tsx b/src/renderer/src/pages/home/ChatNavbar.tsx index 2986788d5e..1685c7d237 100644 --- a/src/renderer/src/pages/home/ChatNavbar.tsx +++ b/src/renderer/src/pages/home/ChatNavbar.tsx @@ -67,7 +67,7 @@ const HeaderNavbar: FC = ({ activeAssistant, setActiveAssistant, activeTo } return ( - +
{isTopNavbar && showAssistants && ( diff --git a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx index c96468db15..c935f1fb20 100644 --- a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx @@ -6,6 +6,7 @@ import styled from 'styled-components' const StyledButton = styled(Button)` height: 36px; + min-height: 36px; width: calc(var(--assistants-width) - 20px); justify-content: flex-start; border-radius: var(--list-item-border-radius); diff --git a/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx b/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx index 08093cf102..f35d9fc267 100644 --- a/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx @@ -9,7 +9,7 @@ import type { MenuProps } from 'antd' import { Dropdown, Tooltip } from 'antd' import { Bot, MoreVertical } from 'lucide-react' import type { FC } from 'react' -import { memo, useCallback, useMemo } from 'react' +import { memo, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' // const logger = loggerService.withContext('AgentItem') @@ -24,6 +24,7 @@ interface AgentItemProps { const AgentItem: FC = ({ agent, isActive, onDelete, onPress }) => { const { t } = useTranslation() const { clickAssistantToShowTopic, topicPosition, assistantIconType } = useSettings() + const [isHovered, setIsHovered] = useState(false) const handlePress = useCallback(() => { // Show session sidebar if setting is enabled (reusing the assistant setting for consistency) @@ -35,13 +36,9 @@ const AgentItem: FC = ({ agent, isActive, onDelete, onPress }) = onPress() }, [clickAssistantToShowTopic, topicPosition, onPress]) - const handleMoreClick = useCallback( - (e: React.MouseEvent) => { - e.stopPropagation() - agent.id && AgentSettingsPopup.show({ agentId: agent.id }) - }, - [agent.id] - ) + const handleMenuButtonClick = useCallback((e: React.MouseEvent) => { + e.stopPropagation() + }, []) const menuItems: MenuProps['items'] = useMemo( () => [ @@ -75,17 +72,26 @@ const AgentItem: FC = ({ agent, isActive, onDelete, onPress }) = menu={{ items: menuItems }} trigger={['contextMenu']} popupRender={(menu) =>
e.stopPropagation()}>{menu}
}> - + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)}> - {isActive && ( - - - + {(isActive || isHovered) && ( +
e.stopPropagation()}>{menu}
}> + + + +
)} - {!isActive && assistantIconType !== 'none' && } + {!isActive && !isHovered && assistantIconType !== 'none' && }
diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx index 92d5e88dae..6d952097f7 100644 --- a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx @@ -69,6 +69,7 @@ const AssistantItem: FC = ({ const { assistants, updateAssistants } = useAssistants() const [isPending, setIsPending] = useState(false) + const [isHovered, setIsHovered] = useState(false) const dispatch = useAppDispatch() useEffect(() => { @@ -148,20 +149,20 @@ const AssistantItem: FC = ({ [assistant.emoji, assistantName] ) - const handleMoreClick = useCallback( - (e: React.MouseEvent) => { - e.stopPropagation() - AssistantSettingsPopup.show({ assistant }) - }, - [assistant] - ) + const handleMenuButtonClick = useCallback((e: React.MouseEvent) => { + e.stopPropagation() + }, []) return (
e.stopPropagation()}>{menu}
}> - + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)}> = ({ /> {assistantName} - {isActive && ( - - - + {(isActive || isHovered) && ( +
e.stopPropagation()}>{menu}
}> + + + +
)}
diff --git a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx index 2ec754d23b..ae33906cca 100644 --- a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx +++ b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx @@ -104,9 +104,11 @@ const Sessions: React.FC = ({ agentId }) => { scrollerStyle={{ overflowX: 'hidden' }} autoHideScrollbar header={ - - {t('agent.session.add.title')} - +
+ + {t('agent.session.add.title')} + +
}> {(session) => ( { + const trimmedPath = path.replace(/[/\\]+$/, '') + const parts = trimmedPath.split(/[/\\]/) + return parts[parts.length - 1] || path + } + const infoItems: ReactNode[] = [] const InfoTag = ({ text, + tooltip, className, onClick }: { text: string + tooltip?: string className?: string classNames?: {} onClick?: (e: React.MouseEvent) => void @@ -148,7 +156,7 @@ const SessionWorkspaceMeta: FC<{ agent: AgentEntity; session: AgentSessionEntity onClick !== undefined ? 'cursor-pointer' : undefined, className )} - title={text} + title={tooltip ?? text} onClick={onClick}> {text} @@ -161,7 +169,8 @@ const SessionWorkspaceMeta: FC<{ agent: AgentEntity; session: AgentSessionEntity infoItems.push( { window.api.file