From 7973a571f514f2ceca1c037d6a5731ebad7e21b9 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Fri, 6 Feb 2026 09:11:06 +0000 Subject: [PATCH] fix: rename setting to respectGitIgnore, add restart tracking, remove dead params --- packages/types/src/codebase-index.ts | 2 +- packages/types/src/vscode-extension-host.ts | 2 +- src/core/environment/getEnvironmentDetails.ts | 2 +- src/core/tools/ListFilesTool.ts | 2 +- src/core/webview/ClineProvider.ts | 4 ++-- src/core/webview/webviewMessageHandler.ts | 2 +- src/integrations/workspace/WorkspaceTracker.ts | 2 +- src/services/code-index/config-manager.ts | 9 +++++++++ src/services/code-index/interfaces/config.ts | 1 + src/services/code-index/manager.ts | 2 +- src/services/glob/list-files.ts | 13 ++++++------- webview-ui/src/components/chat/CodeIndexPopover.tsx | 10 +++++----- 12 files changed, 30 insertions(+), 21 deletions(-) diff --git a/packages/types/src/codebase-index.ts b/packages/types/src/codebase-index.ts index 1babc7244d..90bd42a82d 100644 --- a/packages/types/src/codebase-index.ts +++ b/packages/types/src/codebase-index.ts @@ -51,7 +51,7 @@ export const codebaseIndexConfigSchema = z.object({ // OpenRouter specific fields codebaseIndexOpenRouterSpecificProvider: z.string().optional(), // Gitignore behavior - codebaseIndexRespectGitIgnore: z.boolean().optional(), + respectGitIgnore: z.boolean().optional(), }) export type CodebaseIndexConfig = z.infer diff --git a/packages/types/src/vscode-extension-host.ts b/packages/types/src/vscode-extension-host.ts index 5936fa4190..c293150bfa 100644 --- a/packages/types/src/vscode-extension-host.ts +++ b/packages/types/src/vscode-extension-host.ts @@ -695,7 +695,7 @@ export interface WebviewMessage { codebaseIndexSearchMaxResults?: number codebaseIndexSearchMinScore?: number codebaseIndexOpenRouterSpecificProvider?: string // OpenRouter provider routing - codebaseIndexRespectGitIgnore?: boolean // Whether to respect .gitignore when listing files + respectGitIgnore?: boolean // Whether to respect .gitignore when listing files // Secret settings codeIndexOpenAiKey?: string diff --git a/src/core/environment/getEnvironmentDetails.ts b/src/core/environment/getEnvironmentDetails.ts index e829df0050..cb88e00ced 100644 --- a/src/core/environment/getEnvironmentDetails.ts +++ b/src/core/environment/getEnvironmentDetails.ts @@ -270,7 +270,7 @@ export async function getEnvironmentDetails(cline: Task, includeFileDetails: boo if (maxFiles === 0) { details += "(Workspace files context disabled. Use list_files to explore if needed.)" } else { - const respectGitIgnore = state?.codebaseIndexConfig?.codebaseIndexRespectGitIgnore ?? true + const respectGitIgnore = state?.codebaseIndexConfig?.respectGitIgnore ?? true const [files, didHitLimit] = await listFiles(cline.cwd, true, maxFiles, respectGitIgnore) const { showRooIgnoredFiles = false } = state ?? {} diff --git a/src/core/tools/ListFilesTool.ts b/src/core/tools/ListFilesTool.ts index 7d92734ba4..f9e95766a5 100644 --- a/src/core/tools/ListFilesTool.ts +++ b/src/core/tools/ListFilesTool.ts @@ -38,7 +38,7 @@ export class ListFilesTool extends BaseTool<"list_files"> { const isOutsideWorkspace = isPathOutsideWorkspace(absolutePath) const state = await task.providerRef.deref()?.getState() - const respectGitIgnore = state?.codebaseIndexConfig?.codebaseIndexRespectGitIgnore ?? true + const respectGitIgnore = state?.codebaseIndexConfig?.respectGitIgnore ?? true const [files, didHitLimit] = await listFiles(absolutePath, recursive || false, 200, respectGitIgnore) const { showRooIgnoredFiles = false } = state ?? {} diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 2245dd6f5c..153b785d97 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -2211,7 +2211,7 @@ export class ClineProvider codebaseIndexBedrockRegion: codebaseIndexConfig?.codebaseIndexBedrockRegion, codebaseIndexBedrockProfile: codebaseIndexConfig?.codebaseIndexBedrockProfile, codebaseIndexOpenRouterSpecificProvider: codebaseIndexConfig?.codebaseIndexOpenRouterSpecificProvider, - codebaseIndexRespectGitIgnore: codebaseIndexConfig?.codebaseIndexRespectGitIgnore, + respectGitIgnore: codebaseIndexConfig?.respectGitIgnore, }, // Only set mdmCompliant if there's an actual MDM policy // undefined means no MDM policy, true means compliant, false means non-compliant @@ -2451,7 +2451,7 @@ export class ClineProvider codebaseIndexBedrockProfile: stateValues.codebaseIndexConfig?.codebaseIndexBedrockProfile, codebaseIndexOpenRouterSpecificProvider: stateValues.codebaseIndexConfig?.codebaseIndexOpenRouterSpecificProvider, - codebaseIndexRespectGitIgnore: stateValues.codebaseIndexConfig?.codebaseIndexRespectGitIgnore, + respectGitIgnore: stateValues.codebaseIndexConfig?.respectGitIgnore, }, profileThresholds: stateValues.profileThresholds ?? {}, includeDiagnosticMessages: stateValues.includeDiagnosticMessages ?? true, diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index c81b30db04..3d9b7a9267 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -2543,7 +2543,7 @@ export const webviewMessageHandler = async ( codebaseIndexSearchMaxResults: settings.codebaseIndexSearchMaxResults, codebaseIndexSearchMinScore: settings.codebaseIndexSearchMinScore, codebaseIndexOpenRouterSpecificProvider: settings.codebaseIndexOpenRouterSpecificProvider, - codebaseIndexRespectGitIgnore: settings.codebaseIndexRespectGitIgnore, + respectGitIgnore: settings.respectGitIgnore, } // Save global state first diff --git a/src/integrations/workspace/WorkspaceTracker.ts b/src/integrations/workspace/WorkspaceTracker.ts index 46475efd24..6bd2f2aa3d 100644 --- a/src/integrations/workspace/WorkspaceTracker.ts +++ b/src/integrations/workspace/WorkspaceTracker.ts @@ -33,7 +33,7 @@ class WorkspaceTracker { let respectGitIgnore = true try { const state = await this.providerRef.deref()?.getState() - respectGitIgnore = state?.codebaseIndexConfig?.codebaseIndexRespectGitIgnore ?? true + respectGitIgnore = state?.codebaseIndexConfig?.respectGitIgnore ?? true } catch { // Fall back to default (respect .gitignore) if state is not available } diff --git a/src/services/code-index/config-manager.ts b/src/services/code-index/config-manager.ts index e7f239e621..54769e2dfb 100644 --- a/src/services/code-index/config-manager.ts +++ b/src/services/code-index/config-manager.ts @@ -26,6 +26,7 @@ export class CodeIndexConfigManager { private qdrantApiKey?: string private searchMinScore?: number private searchMaxResults?: number + private respectGitIgnore: boolean = true constructor(private readonly contextProxy: ContextProxy) { // Initialize with current configuration to avoid false restart triggers @@ -86,6 +87,7 @@ export class CodeIndexConfigManager { this.qdrantApiKey = qdrantApiKey ?? "" this.searchMinScore = codebaseIndexSearchMinScore this.searchMaxResults = codebaseIndexSearchMaxResults + this.respectGitIgnore = codebaseIndexConfig.respectGitIgnore ?? true // Validate and set model dimension const rawDimension = codebaseIndexConfig.codebaseIndexEmbedderModelDimension @@ -194,6 +196,7 @@ export class CodeIndexConfigManager { openRouterSpecificProvider: this.openRouterOptions?.specificProvider ?? "", qdrantUrl: this.qdrantUrl ?? "", qdrantApiKey: this.qdrantApiKey ?? "", + respectGitIgnore: this.respectGitIgnore, } // Refresh secrets from VSCode storage to ensure we have the latest values @@ -410,6 +413,12 @@ export class CodeIndexConfigManager { return true } + // respectGitIgnore change + const prevRespectGitIgnore = prev?.respectGitIgnore ?? true + if (prevRespectGitIgnore !== this.respectGitIgnore) { + return true + } + return false } diff --git a/src/services/code-index/interfaces/config.ts b/src/services/code-index/interfaces/config.ts index f52f98aaa0..ec2244c8e6 100644 --- a/src/services/code-index/interfaces/config.ts +++ b/src/services/code-index/interfaces/config.ts @@ -45,4 +45,5 @@ export type PreviousConfigSnapshot = { openRouterSpecificProvider?: string qdrantUrl?: string qdrantApiKey?: string + respectGitIgnore?: boolean } diff --git a/src/services/code-index/manager.ts b/src/services/code-index/manager.ts index e606000290..3bcfc395be 100644 --- a/src/services/code-index/manager.ts +++ b/src/services/code-index/manager.ts @@ -316,7 +316,7 @@ export class CodeIndexManager { let respectGitIgnore = true try { const codebaseIndexConfig = this._configManager!.getContextProxy()?.getGlobalState("codebaseIndexConfig") - respectGitIgnore = codebaseIndexConfig?.codebaseIndexRespectGitIgnore ?? true + respectGitIgnore = codebaseIndexConfig?.respectGitIgnore ?? true } catch { // Fall back to default (respect .gitignore) if config proxy is not available } diff --git a/src/services/glob/list-files.ts b/src/services/glob/list-files.ts index bb5da863f4..76ed0067d4 100644 --- a/src/services/glob/list-files.ts +++ b/src/services/glob/list-files.ts @@ -233,20 +233,20 @@ function buildRipgrepArgs(dirPath: string, recursive: boolean, respectGitIgnore: } if (recursive) { - return [...args, ...buildRecursiveArgs(dirPath, respectGitIgnore), dirPath] + return [...args, ...buildRecursiveArgs(dirPath), dirPath] } else { - return [...args, ...buildNonRecursiveArgs(respectGitIgnore), dirPath] + return [...args, ...buildNonRecursiveArgs(), dirPath] } } /** * Build ripgrep arguments for recursive directory traversal */ -function buildRecursiveArgs(dirPath: string, respectGitIgnore: boolean = true): string[] { +function buildRecursiveArgs(dirPath: string): string[] { const args: string[] = [] // In recursive mode, respect .gitignore by default - // (ripgrep does this automatically when respectGitIgnore is true) + // (ripgrep does this automatically; --no-ignore-vcs is added at buildRipgrepArgs level when needed) // Check if we're explicitly targeting a hidden directory // Normalize the path first to handle edge cases @@ -307,7 +307,7 @@ function buildRecursiveArgs(dirPath: string, respectGitIgnore: boolean = true): /** * Build ripgrep arguments for non-recursive directory listing */ -function buildNonRecursiveArgs(respectGitIgnore: boolean = true): string[] { +function buildNonRecursiveArgs(): string[] { const args: string[] = [] // For non-recursive, limit to the current directory level @@ -315,8 +315,7 @@ function buildNonRecursiveArgs(respectGitIgnore: boolean = true): string[] { args.push("--maxdepth", "1") // ripgrep uses maxdepth, not max-depth // Respect .gitignore in non-recursive mode too - // (ripgrep respects .gitignore by default when respectGitIgnore is true; - // --no-ignore-vcs is added at a higher level when respectGitIgnore is false) + // (ripgrep respects .gitignore by default; --no-ignore-vcs is added at buildRipgrepArgs level when needed) // Apply directory exclusions for non-recursive searches for (const dir of DIRS_TO_IGNORE) { diff --git a/webview-ui/src/components/chat/CodeIndexPopover.tsx b/webview-ui/src/components/chat/CodeIndexPopover.tsx index 4bcfadfa31..da51f81dd2 100644 --- a/webview-ui/src/components/chat/CodeIndexPopover.tsx +++ b/webview-ui/src/components/chat/CodeIndexPopover.tsx @@ -81,7 +81,7 @@ interface LocalCodeIndexSettings { codebaseIndexVercelAiGatewayApiKey?: string codebaseIndexOpenRouterApiKey?: string codebaseIndexOpenRouterSpecificProvider?: string - codebaseIndexRespectGitIgnore?: boolean + respectGitIgnore?: boolean } // Validation schema for codebase index settings @@ -226,7 +226,7 @@ export const CodeIndexPopover: React.FC = ({ codebaseIndexVercelAiGatewayApiKey: "", codebaseIndexOpenRouterApiKey: "", codebaseIndexOpenRouterSpecificProvider: "", - codebaseIndexRespectGitIgnore: true, + respectGitIgnore: true, }) // Initial settings state - stores the settings when popover opens @@ -267,7 +267,7 @@ export const CodeIndexPopover: React.FC = ({ codebaseIndexOpenRouterApiKey: "", codebaseIndexOpenRouterSpecificProvider: codebaseIndexConfig.codebaseIndexOpenRouterSpecificProvider || "", - codebaseIndexRespectGitIgnore: codebaseIndexConfig.codebaseIndexRespectGitIgnore ?? true, + respectGitIgnore: codebaseIndexConfig.respectGitIgnore ?? true, } setInitialSettings(settings) setCurrentSettings(settings) @@ -1593,9 +1593,9 @@ export const CodeIndexPopover: React.FC = ({
- updateSetting("codebaseIndexRespectGitIgnore", e.target.checked) + updateSetting("respectGitIgnore", e.target.checked) }> {t("settings:codeIndex.respectGitIgnoreLabel")}