Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ export const AnchorZone: React.FC<AnchorZoneProps> = ({
const startPosRef = useRef(0);
const startSizeRef = useRef(size);

// Do not render when hidden
if (position === 'hidden') {
return null;
}

const isBottom = position === 'bottom';

// Handle resize start
Expand Down Expand Up @@ -96,6 +91,10 @@ export const AnchorZone: React.FC<AnchorZoneProps> = ({
}, [isCollapsed]);

// Toggle position
if (position === 'hidden') {
return null;
}

return (
<div
ref={containerRef}
Expand Down
11 changes: 9 additions & 2 deletions src/web-ui/src/flow_chat/components/FileMentionPicker.scss
Original file line number Diff line number Diff line change
Expand Up @@ -247,10 +247,17 @@
}

&__item--selected {
background: color-mix(in srgb, var(--color-accent-primary) 10%, transparent);
background: color-mix(in srgb, var(--color-accent-primary) 14%, white 86%);
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-accent-primary) 30%, transparent);

.file-mention-picker__item-name {
color: var(--color-text-primary);
color: color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-text-primary));
}

.file-mention-picker__icon,
.file-mention-picker__expand-icon {
color: color-mix(in srgb, var(--color-accent-primary) 70%, var(--color-text-primary));
opacity: 0.92;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,15 @@ export interface TaskDetailPanelProps {
export const TaskDetailPanel: React.FC<TaskDetailPanelProps> = ({ data }) => {
const { t } = useTranslation('flow-chat');
const { toolItem, taskInput, sessionId } = data || {};
const status = toolItem?.status;
const toolResult = toolItem?.toolResult;
const parentTaskToolId = toolItem?.id;

const [subagentItems, setSubagentItems] = useState<FlowItem[]>([]);

const contentRef = useRef<HTMLDivElement>(null);
// Track auto-scroll; disable when the user scrolls up.
const shouldAutoScrollRef = useRef(true);

if (!toolItem) {
return (
<div className="task-detail-panel task-detail-panel--empty">
<div className="task-detail-panel__header">
<span className="task-detail-panel__header-title">
{t('toolCards.taskDetailPanel.untitled')}
</span>
</div>
<div className="task-detail-panel__empty-content">
{t('toolCards.taskDetailPanel.noData', 'Unable to load task data')}
</div>
</div>
);
}

const { status, toolResult } = toolItem;
const parentTaskToolId = toolItem.id;

// Collect subagent items associated with this task.
useEffect(() => {
Expand Down Expand Up @@ -221,6 +206,21 @@ export const TaskDetailPanel: React.FC<TaskDetailPanelProps> = ({ data }) => {
}
}, [sessionId, handleOpenInEditor]);

if (!toolItem) {
return (
<div className="task-detail-panel task-detail-panel--empty">
<div className="task-detail-panel__header">
<span className="task-detail-panel__header-title">
{t('toolCards.taskDetailPanel.untitled')}
</span>
</div>
<div className="task-detail-panel__empty-content">
{t('toolCards.taskDetailPanel.noData', 'Unable to load task data')}
</div>
</div>
);
}

return (
<div className="task-detail-panel">
<div className="task-detail-panel__header">
Expand Down
4 changes: 2 additions & 2 deletions src/web-ui/src/flow_chat/components/modern/ScrollAnchor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,6 @@ export const ScrollAnchor: React.FC<ScrollAnchorProps> = ({
return content.substring(0, maxLength) + '...';
};

if (anchorPoints.length === 0) return null;

const handleContainerMouseEnter = useCallback(() => {
setIsHovering(true);
}, []);
Expand All @@ -153,6 +151,8 @@ export const ScrollAnchor: React.FC<ScrollAnchorProps> = ({
setIsHovering(false);
}, []);

if (anchorPoints.length === 0) return null;

return (
<>
<div
Expand Down
8 changes: 4 additions & 4 deletions src/web-ui/src/flow_chat/tool-cards/GlobSearchDisplay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,6 @@ export const GlobSearchDisplay: React.FC<ToolCardProps> = ({
const hasDetails = status === 'completed' && files.length > 0;
const hasResultData = toolResult?.result !== undefined && toolResult?.result !== null;

if (status === 'error') {
return null;
}

const handleClick = useCallback(() => {
if (hasDetails) {
applyExpandedState(isExpanded, !isExpanded, setIsExpanded, {
Expand Down Expand Up @@ -186,6 +182,10 @@ export const GlobSearchDisplay: React.FC<ToolCardProps> = ({
</>
);

if (status === 'error') {
return null;
}

return (
<div ref={cardRootRef} data-tool-card-id={toolId ?? ''}>
<CompactToolCard
Expand Down
8 changes: 4 additions & 4 deletions src/web-ui/src/flow_chat/tool-cards/GrepSearchDisplay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,6 @@ export const GrepSearchDisplay: React.FC<ToolCardProps> = ({
const hasDetails = status === 'completed' && stats.matches > 0;
const hasResultData = toolResult?.result !== undefined && toolResult?.result !== null;

if (status === 'error') {
return null;
}

const handleClick = useCallback(() => {
if (hasDetails) {
applyExpandedState(isExpanded, !isExpanded, setIsExpanded, {
Expand Down Expand Up @@ -141,6 +137,10 @@ export const GrepSearchDisplay: React.FC<ToolCardProps> = ({
</>
);

if (status === 'error') {
return null;
}

return (
<div ref={cardRootRef} data-tool-card-id={toolId ?? ''}>
<CompactToolCard
Expand Down
8 changes: 4 additions & 4 deletions src/web-ui/src/flow_chat/tool-cards/LSDisplay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,6 @@ export const LSDisplay: React.FC<ToolCardProps> = ({
const hasDetails = status === 'completed' && entries.length > 0;
const hasResultData = toolResult?.result !== undefined && toolResult?.result !== null;

if (status === 'error') {
return null;
}

const handleClick = useCallback(() => {
if (hasDetails) {
applyExpandedState(isExpanded, !isExpanded, setIsExpanded, {
Expand Down Expand Up @@ -182,6 +178,10 @@ export const LSDisplay: React.FC<ToolCardProps> = ({
</>
);

if (status === 'error') {
return null;
}

return (
<div ref={cardRootRef} data-tool-card-id={toolId ?? ''}>
<CompactToolCard
Expand Down
40 changes: 20 additions & 20 deletions src/web-ui/src/flow_chat/tool-cards/TodoWriteDisplay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,26 +58,6 @@ export const TodoWriteDisplay: React.FC<ToolCardProps> = ({

const displayMode = config?.displayMode || 'compact';

if (displayMode === 'compact') {
return (
<div className={`tool-display-compact todo-write-compact status-${status}`}>
<span className="tool-icon">
{isLoading ? (
<Loader2 className="animate-spin" size={14} />
) : (
<ListTodo size={14} />
)}
</span>
{todosToDisplay.length > 0 && (
<>
<span className="todo-count">{t('toolCards.todoWrite.tasksCount', { count: todosToDisplay.length })}</span>
<span className="todo-progress">{t('toolCards.todoWrite.progress', { completed: taskStats.completed, total: taskStats.total })}</span>
</>
)}
</div>
);
}

const renderTrackDot = (todo: any, index: number) => {
const statusClass = `track-dot--${todo.status}`;
return (
Expand Down Expand Up @@ -125,6 +105,26 @@ export const TodoWriteDisplay: React.FC<ToolCardProps> = ({
});
}, [applyExpandedState, isExpanded, todosToDisplay.length]);

if (displayMode === 'compact') {
return (
<div className={`tool-display-compact todo-write-compact status-${status}`}>
<span className="tool-icon">
{isLoading ? (
<Loader2 className="animate-spin" size={14} />
) : (
<ListTodo size={14} />
)}
</span>
{todosToDisplay.length > 0 && (
<>
<span className="todo-count">{t('toolCards.todoWrite.tasksCount', { count: todosToDisplay.length })}</span>
<span className="todo-progress">{t('toolCards.todoWrite.progress', { completed: taskStats.completed, total: taskStats.total })}</span>
</>
)}
</div>
);
}

return (
<div
ref={cardRootRef}
Expand Down
8 changes: 4 additions & 4 deletions src/web-ui/src/flow_chat/tool-cards/WebSearchCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,6 @@ export const WebSearchCard: React.FC<ToolCardProps> = ({
const hasResultData = toolResult?.result !== undefined && toolResult?.result !== null;
const hasResults = searchResults && searchResults.results.length > 0;

if (status === 'error') {
return null;
}

const handleClick = useCallback(() => {
if (status === 'completed' && hasResults) {
applyExpandedState(isExpanded, !isExpanded, setIsExpanded, {
Expand Down Expand Up @@ -141,6 +137,10 @@ export const WebSearchCard: React.FC<ToolCardProps> = ({
</div>
);

if (status === 'error') {
return null;
}

return (
<div ref={cardRootRef} data-tool-card-id={toolId ?? ''}>
<CompactToolCard
Expand Down
Loading