diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
index e4ce0c1a..0c957ad7 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
@@ -20,7 +20,7 @@ import { VOID_OPEN_SETTINGS_ACTION_ID } from '../../../voidSettingsPane.js';
import { ChatMode, displayInfoOfProviderName, FeatureName, isFeatureNameDisabled } from '../../../../../../../workbench/contrib/void/common/voidSettingsTypes.js';
import { WarningBox } from '../void-settings-tsx/WarningBox.js';
import { getModelCapabilities, getIsReasoningEnabledState } from '../../../../common/modelCapabilities.js';
-import { AlertTriangle, Ban, Check, ChevronRight, Dot, FileIcon, Pencil, Undo, Undo2, X, Flag, Copy as CopyIcon, Info } from 'lucide-react';
+import { AlertTriangle, Ban, Check, ChevronRight, Dot, FileIcon, Pencil, Undo, Undo2, X, Flag, Copy as CopyIcon, Info, CirclePlus, Ellipsis, CircleEllipsis } from 'lucide-react';
import { ChatMessage, CheckpointEntry, StagingSelectionItem, ToolMessage } from '../../../../common/chatThreadServiceTypes.js';
import { approvalTypeOfToolName, LintErrorItem, ToolApprovalType, toolApprovalTypes, ToolCallParams } from '../../../../common/toolsServiceTypes.js';
import { ApplyButtonsHTML, CopyButton, IconShell1, JumpToFileButton, JumpToTerminalButton, StatusIndicator, StatusIndicatorForApplyButton, useApplyButtonState } from '../markdown/ApplyBlockHoverButtons.js';
@@ -734,7 +734,8 @@ const ToolHeaderWrapper = ({
{...desc1Info ? {
'data-tooltip-id': 'void-tooltip',
'data-tooltip-content': desc1Info,
- 'data-tooltip-place': 'top-end',
+ 'data-tooltip-place': 'top',
+ 'data-tooltip-delay-show': 1000,
} : {}}
>{desc1}
@@ -742,12 +743,20 @@ const ToolHeaderWrapper = ({
{/* right */}
+ {info &&
}
{isError &&
}
{isRejected &&
)}
- {info && }
@@ -1591,7 +1593,7 @@ const toolNameToComponent: { [T in ToolName]: { resultWrapper: ResultWrapper,
if (params.uri) {
const rel = getRelative(params.uri, accessor)
- if (rel) componentParams.info = `Only in ${rel}`
+ if (rel) componentParams.info = `Only search in ${rel}`
}
if (toolMessage.type === 'success') {
@@ -1639,7 +1641,7 @@ const toolNameToComponent: { [T in ToolName]: { resultWrapper: ResultWrapper,
if (params.uri) {
const rel = getRelative(params.uri, accessor)
- if (rel) componentParams.info = `Only in ${rel}`
+ if (rel) componentParams.info = `Only search in ${rel}`
}
if (toolMessage.type === 'success') {
@@ -1691,7 +1693,7 @@ const toolNameToComponent: { [T in ToolName]: { resultWrapper: ResultWrapper,
const componentParams: ToolHeaderParams = { title, desc1, desc1Info, isError, icon, }
if (params.includePattern)
- componentParams.info = `Only in ${params.includePattern}`
+ componentParams.info = `Only search in ${params.includePattern}`
if (toolMessage.type === 'success') {
const { result, rawParams } = toolMessage
@@ -1740,7 +1742,7 @@ const toolNameToComponent: { [T in ToolName]: { resultWrapper: ResultWrapper,
if (params.searchInFolder) {
const rel = getRelative(params.searchInFolder, accessor)
- if (rel) componentParams.desc1Info = `Only in ${rel}`
+ if (rel) componentParams.info = `Only search in ${rel}`
}
if (toolMessage.type === 'success') {
@@ -1918,8 +1920,6 @@ const toolNameToComponent: { [T in ToolName]: { resultWrapper: ResultWrapper,
const { rawParams, params } = toolMessage
const componentParams: ToolHeaderParams = { title, desc1, desc1Info, isError, icon, isRejected, }
- componentParams.info = getRelative(params.uri, accessor) // full path
-
if (toolMessage.type === 'running_now' || toolMessage.type === 'tool_request') {
componentParams.children =
{
@@ -155,9 +155,10 @@ export const PastThreadsList = ({ className = '' }: { className?: string }) => {
const streamState = useFullChatThreadsStreamState()
- const runningThreadIds = new Set()
+ const runningThreadIds: { [threadId: string]: IsRunningType | undefined } = {}
for (const threadId in streamState) {
- if (streamState[threadId]?.isRunning) { runningThreadIds.add(threadId) }
+ const isRunning = streamState[threadId]?.isRunning
+ if (isRunning) { runningThreadIds[threadId] = isRunning }
}
if (!allThreads) {
@@ -190,7 +191,7 @@ export const PastThreadsList = ({ className = '' }: { className?: string }) => {
idx={i}
hoveredIdx={hoveredIdx}
setHoveredIdx={setHoveredIdx}
- isRunning={runningThreadIds.has(pastThread.id)}
+ isRunning={runningThreadIds[pastThread.id]}
/>
);
})
@@ -289,7 +290,7 @@ const PastThreadElement = ({ pastThread, idx, hoveredIdx, setHoveredIdx, isRunni
idx: number,
hoveredIdx: number | null,
setHoveredIdx: (idx: number | null) => void,
- isRunning: boolean,
+ isRunning: IsRunningType | undefined,
}
) => {
@@ -361,7 +362,11 @@ const PastThreadElement = ({ pastThread, idx, hoveredIdx, setHoveredIdx, isRunni
{/* spinner */}
- {isRunning ? : null}
+ {isRunning === 'LLM' || isRunning === 'tool' ?
+ :
+ isRunning === 'awaiting_user' ?
+ :
+ null}
{/* name */}
{firstMsg}