From 753638edaf7d73f3dd2c85f2d18a1ed3633fec26 Mon Sep 17 00:00:00 2001 From: code-crusher Date: Fri, 9 Jan 2026 19:04:28 +0530 Subject: [PATCH 1/3] refine read tool + settings cleanup --- apps/storybook/.storybook/theme-variables.css | 2 +- .../main/resources/themes/theme-variables.css | 2 +- .../presentAssistantMessage.ts | 18 ++--- .../prompts/tools/native-tools/read_file.ts | 8 +-- src/core/tools/kilocode.ts | 16 ++++- src/core/tools/readFileTool.ts | 65 ++++++++++++------- .../theme/default-themes/theme-variables.css | 2 +- .../settings/AutoApproveSettings.tsx | 47 +++++++------- .../src/components/settings/SettingsView.tsx | 47 +++++++------- webview-ui/src/components/ui/button.tsx | 6 +- webview-ui/src/components/ui/input.tsx | 2 +- webview-ui/src/index.css | 3 +- 12 files changed, 119 insertions(+), 99 deletions(-) diff --git a/apps/storybook/.storybook/theme-variables.css b/apps/storybook/.storybook/theme-variables.css index 48e538f04f..d3da607603 100644 --- a/apps/storybook/.storybook/theme-variables.css +++ b/apps/storybook/.storybook/theme-variables.css @@ -70,7 +70,7 @@ classes at build time based on the @theme */ --card-foreground: var(--vscode-editor-foreground); --popover: var(--vscode-menu-background, var(--vscode-editor-background)); --popover-foreground: var(--vscode-menu-foreground, var(--vscode-editor-foreground)); ---primary: var(--vscode-button-background); +--primary: var(--color-matterai-green-dark); --primary-foreground: var(--vscode-button-foreground); --secondary: var(--vscode-button-secondaryBackground); --secondary-foreground: var(--vscode-button-secondaryForeground); diff --git a/jetbrains/plugin/src/main/resources/themes/theme-variables.css b/jetbrains/plugin/src/main/resources/themes/theme-variables.css index 48e538f04f..d3da607603 100644 --- a/jetbrains/plugin/src/main/resources/themes/theme-variables.css +++ b/jetbrains/plugin/src/main/resources/themes/theme-variables.css @@ -70,7 +70,7 @@ classes at build time based on the @theme */ --card-foreground: var(--vscode-editor-foreground); --popover: var(--vscode-menu-background, var(--vscode-editor-background)); --popover-foreground: var(--vscode-menu-foreground, var(--vscode-editor-foreground)); ---primary: var(--vscode-button-background); +--primary: var(--color-matterai-green-dark); --primary-foreground: var(--vscode-button-foreground); --secondary: var(--vscode-button-secondaryBackground); --secondary-foreground: var(--vscode-button-secondaryForeground); diff --git a/src/core/assistant-message/presentAssistantMessage.ts b/src/core/assistant-message/presentAssistantMessage.ts index 68481cc694..4694240a85 100644 --- a/src/core/assistant-message/presentAssistantMessage.ts +++ b/src/core/assistant-message/presentAssistantMessage.ts @@ -283,15 +283,15 @@ export async function presentAssistantMessage(cline: Task) { break } - if (cline.didAlreadyUseTool) { - // Ignore any content after a tool has already been used. - pushToolResult_withToolUseId_kilocode({ - type: "text", - text: `Tool [${block.name}] was not executed because a tool has already been used in this message. Only one tool may be used per message. You must assess the first tool's result before proceeding to use the next tool.`, - }) - - break - } + // if (cline.didAlreadyUseTool) { + // // Ignore any content after a tool has already been used. + // pushToolResult_withToolUseId_kilocode({ + // type: "text", + // text: `Tool [${block.name}] was not executed because a tool has already been used in this message. Only one tool may be used per message. You must assess the first tool's result before proceeding to use the next tool.`, + // }) + + // break + // } const pushToolResult = (content: ToolResponse) => { // kilocode_change start diff --git a/src/core/prompts/tools/native-tools/read_file.ts b/src/core/prompts/tools/native-tools/read_file.ts index f0019f82bc..63bf16d907 100644 --- a/src/core/prompts/tools/native-tools/read_file.ts +++ b/src/core/prompts/tools/native-tools/read_file.ts @@ -5,7 +5,7 @@ export const read_file_multi = { function: { name: "read_file", description: - "Read one or more files and return their contents with line numbers. Use offset and limit to read specific portions of files efficiently. By default reads from the beginning with a reasonable limit.", + "Read one or more files and return their contents with line numbers. Use offset and limit to read specific portions of files efficiently. Default and maximum limit is 1000 lines to prevent context overflow.", strict: true, parameters: { type: "object", @@ -28,7 +28,7 @@ export const read_file_multi = { limit: { type: ["number", "null"], description: - "Maximum number of lines to read from offset. If not specified, reads the complete file from offset. Use smaller values for targeted reads.", + "Maximum number of lines to read from offset. Default and maximum limit is 1000 lines. Use smaller values for targeted reads.", }, }, required: ["file_path"], @@ -48,7 +48,7 @@ export const read_file_single = { function: { name: "read_file", description: - "Read a file and return its contents with line numbers. Use offset and limit to read specific portions efficiently.", + "Read a file and return its contents with line numbers. Use offset and limit to read specific portions efficiently. Default and maximum limit is 1000 lines to prevent context overflow.", strict: true, parameters: { type: "object", @@ -64,7 +64,7 @@ export const read_file_single = { limit: { type: ["number", "null"], description: - "Maximum number of lines to read from offset. If not specified, reads the complete file from offset.", + "Maximum number of lines to read from offset. Default and maximum limit is 1000 lines.", }, }, required: ["file_path"], diff --git a/src/core/tools/kilocode.ts b/src/core/tools/kilocode.ts index cc37673e01..cd6e76b1c4 100644 --- a/src/core/tools/kilocode.ts +++ b/src/core/tools/kilocode.ts @@ -56,7 +56,13 @@ type FileEntry = { } export function parseNativeFiles( - nativeFiles: { file_path?: string; path?: string; offset?: number; limit?: number; line_ranges?: string[] }[], + nativeFiles: { + file_path?: string + path?: string + offset?: number | string + limit?: number | string + line_ranges?: string[] + }[], ) { const fileEntries = new Array() for (const file of nativeFiles) { @@ -64,10 +70,14 @@ export function parseNativeFiles( const filePath = file.file_path || file.path if (!filePath) continue + // Parse offset and limit as integers - LLM may send them as strings + const parsedOffset = file.offset !== undefined ? parseInt(String(file.offset), 10) : undefined + const parsedLimit = file.limit !== undefined ? parseInt(String(file.limit), 10) : undefined + const fileEntry: FileEntry = { path: filePath, - offset: file.offset ?? 1, - limit: file.limit, // undefined means read complete file + offset: !isNaN(parsedOffset as number) ? parsedOffset : 1, + limit: !isNaN(parsedLimit as number) ? parsedLimit : undefined, // undefined means read complete file } // Legacy support: convert line_ranges to offset+limit if provided diff --git a/src/core/tools/readFileTool.ts b/src/core/tools/readFileTool.ts index ebd2833b4e..059f24cbd6 100644 --- a/src/core/tools/readFileTool.ts +++ b/src/core/tools/readFileTool.ts @@ -24,6 +24,9 @@ import { ImageMemoryTracker, } from "./helpers/imageHelpers" +// Maximum number of lines to read when limit is not specified - prevents context window overflow +const MAX_READ_FILE_LINES = 1000 + export function getReadFileToolDescription(blockName: string, blockParams: any): string { // Handle both single file_path and multiple files via args // kilocode_change start @@ -95,8 +98,11 @@ export async function readFileTool( const newFilePath: string | undefined = (block.params as any).file_path // New: support file_path directly const legacyStartLineStr: string | undefined = block.params.start_line const legacyEndLineStr: string | undefined = block.params.end_line - const offsetParam: number | undefined = (block.params as any).offset - const limitParam: number | undefined = (block.params as any).limit + // Parse offset and limit as integers - LLM may send them as strings causing string concatenation bugs + const rawOffset = (block.params as any).offset + const rawLimit = (block.params as any).limit + const offsetParam: number | undefined = rawOffset !== undefined ? parseInt(String(rawOffset), 10) : undefined + const limitParam: number | undefined = rawLimit !== undefined ? parseInt(String(rawLimit), 10) : undefined const nativeFiles: any[] | undefined = (block.params as any).files // kilocode_change: Native JSON format from OpenAI-style tool calls @@ -159,10 +165,14 @@ export async function readFileTool( const filePath = file.file_path || file.path if (!filePath) continue // Skip if no path in a file entry + // Parse offset and limit as integers - XML parsing may produce strings + const parsedOffset = file.offset !== undefined ? parseInt(String(file.offset), 10) : undefined + const parsedLimit = file.limit !== undefined ? parseInt(String(file.limit), 10) : undefined + const fileEntry: FileEntry = { path: filePath, - offset: file.offset ?? 1, - limit: file.limit, // undefined means read complete file + offset: !isNaN(parsedOffset as number) ? parsedOffset : 1, + limit: !isNaN(parsedLimit as number) ? parsedLimit : undefined, // undefined means read complete file } // Legacy support: convert line_range to offset+limit @@ -350,10 +360,11 @@ export async function readFileTool( const imageMemoryTracker = new ImageMemoryTracker() const state = await cline.providerRef.deref()?.getState() const { - maxReadFileLine = -1, maxImageFileSize = DEFAULT_MAX_IMAGE_FILE_SIZE_MB, maxTotalImageSize = DEFAULT_MAX_TOTAL_IMAGE_SIZE_MB, } = state ?? {} + // Always use MAX_READ_FILE_LINES - setting will be removed later + const maxReadFileLine = MAX_READ_FILE_LINES // Then process only approved files for (const fileResult of fileResults) { @@ -444,33 +455,37 @@ export async function readFileTool( // Handle offset/limit reads (if limit is specified) if (fileResult.limit !== undefined) { const startLine = fileResult.offset ?? 1 - const endLine = startLine + fileResult.limit - 1 + // Cap limit to MAX_READ_FILE_LINES to prevent context window overflow + const effectiveLimit = Math.min(fileResult.limit, MAX_READ_FILE_LINES) + const endLine = startLine + effectiveLimit - 1 const content = addLineNumbers(await readLines(fullPath, endLine - 1, startLine - 1), startLine) + let xmlContent = content + if (fileResult.limit > MAX_READ_FILE_LINES) { + xmlContent = `[showing ${effectiveLimit} lines, capped from requested ${fileResult.limit} lines to prevent context overflow]\n${content}` + } updateFileResult(relPath, { - xmlContent: content, + xmlContent, }) continue } - // Handle definitions-only mode - if (maxReadFileLine === 0) { - try { - const defResult = await parseSourceCodeDefinitionsForFile(fullPath, cline.rooIgnoreController) - if (defResult) { - // kilocode_change: Return raw definitions without path header - updateFileResult(relPath, { - xmlContent: `[definitions only, ${totalLines} total lines]\n${defResult}`, - }) - } - } catch (error) { - if (error instanceof Error && error.message.startsWith("Unsupported language:")) { - console.warn(`[read_file] Warning: ${error.message}`) - } else { - console.error( - `[read_file] Unhandled error: ${error instanceof Error ? error.message : String(error)}`, - ) - } + // Handle offset-only reads (no limit specified) - cap to MAX_READ_FILE_LINES + if (fileResult.offset !== undefined && fileResult.offset > 1) { + const startLine = fileResult.offset + const endLine = startLine + MAX_READ_FILE_LINES - 1 + const actualEndLine = Math.min(endLine, totalLines) + const linesRead = actualEndLine - startLine + 1 + const content = addLineNumbers( + await readLines(fullPath, actualEndLine - 1, startLine - 1), + startLine, + ) + let xmlContent = content + if (totalLines > actualEndLine) { + xmlContent = `[showing ${linesRead} lines from offset ${startLine}, capped at ${MAX_READ_FILE_LINES} lines. Total file length: ${totalLines} lines]\n${content}` } + updateFileResult(relPath, { + xmlContent, + }) continue } diff --git a/src/integrations/theme/default-themes/theme-variables.css b/src/integrations/theme/default-themes/theme-variables.css index 48e538f04f..d3da607603 100644 --- a/src/integrations/theme/default-themes/theme-variables.css +++ b/src/integrations/theme/default-themes/theme-variables.css @@ -70,7 +70,7 @@ classes at build time based on the @theme */ --card-foreground: var(--vscode-editor-foreground); --popover: var(--vscode-menu-background, var(--vscode-editor-background)); --popover-foreground: var(--vscode-menu-foreground, var(--vscode-editor-foreground)); ---primary: var(--vscode-button-background); +--primary: var(--color-matterai-green-dark); --primary-foreground: var(--vscode-button-foreground); --secondary: var(--vscode-button-secondaryBackground); --secondary-foreground: var(--vscode-button-secondaryForeground); diff --git a/webview-ui/src/components/settings/AutoApproveSettings.tsx b/webview-ui/src/components/settings/AutoApproveSettings.tsx index 70c202112b..aca10ffef3 100644 --- a/webview-ui/src/components/settings/AutoApproveSettings.tsx +++ b/webview-ui/src/components/settings/AutoApproveSettings.tsx @@ -1,21 +1,18 @@ +import { CheckCheck, X } from "lucide-react" import { HTMLAttributes, useState } from "react" -import { X, CheckCheck } from "lucide-react" -import { Trans } from "react-i18next" -import { Package } from "@roo/package" +import { Button, Input } from "@/components/ui" import { useAppTranslation } from "@/i18n/TranslationContext" -import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" import { vscode } from "@/utils/vscode" -import { Button, Input, Slider } from "@/components/ui" +import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" -import { SetCachedStateField } from "./types" -import { SectionHeader } from "./SectionHeader" -import { Section } from "./Section" -import { AutoApproveToggle } from "./AutoApproveToggle" -import { MaxLimitInputs } from "./MaxLimitInputs" import { useExtensionState } from "@/context/ExtensionStateContext" import { useAutoApprovalState } from "@/hooks/useAutoApprovalState" import { useAutoApprovalToggles } from "@/hooks/useAutoApprovalToggles" +import { AutoApproveToggle } from "./AutoApproveToggle" +import { Section } from "./Section" +import { SectionHeader } from "./SectionHeader" +import { SetCachedStateField } from "./types" type AutoApproveSettingsProps = HTMLAttributes & { alwaysAllowReadOnly?: boolean @@ -32,7 +29,7 @@ type AutoApproveSettingsProps = HTMLAttributes & { alwaysAllowExecute?: boolean alwaysAllowFollowupQuestions?: boolean alwaysAllowUpdateTodoList?: boolean - followupAutoApproveTimeoutMs?: number + // followupAutoApproveTimeoutMs?: number allowedCommands?: string[] allowedMaxRequests?: number | undefined allowedMaxCost?: number | undefined @@ -78,7 +75,7 @@ export const AutoApproveSettings = ({ alwaysAllowSubtasks, alwaysAllowExecute, alwaysAllowFollowupQuestions, - followupAutoApproveTimeoutMs = 60000, + // followupAutoApproveTimeoutMs = 60000, alwaysAllowUpdateTodoList, allowedCommands, allowedMaxRequests, @@ -130,7 +127,7 @@ export const AutoApproveSettings = ({ {/* kilocode_change start */} -
+ {/*
-
+
*/} {/* YOLO MODE SECTION */} - {process.env.NODE_ENV === "development" && ( + {/* {process.env.NODE_ENV === "development" && (
@@ -170,9 +167,9 @@ export const AutoApproveSettings = ({
- )} + )} */} - {process.env.NODE_ENV === "development" && yoloMode && ( + {/* {process.env.NODE_ENV === "development" && yoloMode && (
@@ -181,7 +178,7 @@ export const AutoApproveSettings = ({
- )} + )} */} {/* kilocode_change end */}
@@ -196,7 +193,7 @@ export const AutoApproveSettings = ({ }}> {t("settings:autoApprove.enabled")} -
+ {/*

{t("settings:autoApprove.description")}

-
+
*/} setCachedStateField(key, value)} /> - setCachedStateField("allowedMaxRequests", value)} onMaxCostChange={(value) => setCachedStateField("allowedMaxCost", value)} - /> + /> */} {/* ADDITIONAL SETTINGS */} - {alwaysAllowReadOnly && ( + {/* {alwaysAllowReadOnly && (
@@ -356,10 +353,10 @@ export const AutoApproveSettings = ({
- )} + )} */} {alwaysAllowExecute && ( -
+
{t("settings:autoApprove.execute.label")}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 46c69452f6..a791e4723b 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -4,13 +4,10 @@ import { Bot, CheckCheck, CircleUserRound, - Database, GitPullRequest, Info, Languages, LucideIcon, - MapPinCheck, - Monitor, Server, SquareMousePointer, SquareTerminal, @@ -65,10 +62,10 @@ import { About } from "./About" import ApiOptions from "./ApiOptions" import { AutoApproveSettings } from "./AutoApproveSettings" import { BrowserSettings } from "./BrowserSettings" -import { CheckpointSettings } from "./CheckpointSettings" +// import { CheckpointSettings } from "./CheckpointSettings" import { CodeReviewSettings as CodeReviewSettingsComponent } from "./CodeReviewSettings" -import { ContextManagementSettings } from "./ContextManagementSettings" -import { DisplaySettings } from "./DisplaySettings" // kilocode_change +// import { ContextManagementSettings } from "./ContextManagementSettings" +// import { DisplaySettings } from "./DisplaySettings" // kilocode_change import { LanguageSettings } from "./LanguageSettings" import { NotificationSettings } from "./NotificationSettings" import { Section } from "./Section" @@ -92,11 +89,11 @@ const sectionNames = [ "autoApprove", "slashCommands", "browser", - "checkpoints", + // "checkpoints", "ghost", // kilocode_change - "display", // kilocode_change + // "display", // kilocode_change "notifications", - "contextManagement", + // "contextManagement", "terminal", "prompts", "ui", @@ -120,7 +117,7 @@ const SettingsView = forwardRef(({ onDone, t const extensionState = useExtensionState() const { currentApiConfigName, - listApiConfigMeta, + // listApiConfigMeta, uriScheme, kiloCodeWrapperProperties, // kilocode_change settingsImportedAt, @@ -176,7 +173,7 @@ const SettingsView = forwardRef(({ onDone, t autoCondenseContextPercent, browserToolEnabled, browserViewportSize, - enableCheckpoints, + // enableCheckpoints, diffEnabled, experiments, morphApiKey, // kilocode_change @@ -216,7 +213,7 @@ const SettingsView = forwardRef(({ onDone, t maxImageFileSize, maxTotalImageSize, terminalCompressProgressBar, - maxConcurrentFileReads, + // maxConcurrentFileReads, allowVeryLargeReads, // kilocode_change terminalCommandApiConfigId, // kilocode_change condensingApiConfigId, @@ -420,7 +417,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "ttsSpeed", value: ttsSpeed }) vscode.postMessage({ type: "soundVolume", value: soundVolume }) vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) - vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) + // vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) vscode.postMessage({ type: "remoteBrowserEnabled", bool: remoteBrowserEnabled }) @@ -450,7 +447,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "maxReadFileLine", value: maxReadFileLine ?? -1 }) vscode.postMessage({ type: "maxImageFileSize", value: maxImageFileSize ?? 5 }) vscode.postMessage({ type: "maxTotalImageSize", value: maxTotalImageSize ?? 20 }) - vscode.postMessage({ type: "maxConcurrentFileReads", value: cachedState.maxConcurrentFileReads ?? 5 }) + // vscode.postMessage({ type: "maxConcurrentFileReads", value: cachedState.maxConcurrentFileReads ?? 5 }) vscode.postMessage({ type: "allowVeryLargeReads", bool: allowVeryLargeReads }) // kilocode_change vscode.postMessage({ type: "includeDiagnosticMessages", bool: includeDiagnosticMessages }) vscode.postMessage({ type: "maxDiagnosticMessages", value: maxDiagnosticMessages ?? 50 }) @@ -588,11 +585,11 @@ const SettingsView = forwardRef(({ onDone, t { id: "autoApprove", icon: CheckCheck }, // { id: "slashCommands", icon: SquareSlash }, // kilocode_change: needs work to be re-introduced { id: "browser", icon: SquareMousePointer }, - { id: "checkpoints", icon: MapPinCheck }, - { id: "display", icon: Monitor }, // kilocode_change + // { id: "checkpoints", icon: MapPinCheck }, + // { id: "display", icon: Monitor }, // kilocode_change ...(kiloCodeWrapperProperties?.kiloCodeWrapped ? [] : [{ id: "ghost" as const, icon: Bot }]), // kilocode_change { id: "notifications", icon: Bell }, - { id: "contextManagement", icon: Database }, + // { id: "contextManagement", icon: Database }, { id: "terminal", icon: SquareTerminal }, // { id: "prompts", icon: MessageSquare }, // { id: "ui", icon: Glasses }, // kilocode_change: we have our own display section @@ -816,7 +813,7 @@ const SettingsView = forwardRef(({ onDone, t alwaysAllowExecute={alwaysAllowExecute} alwaysAllowFollowupQuestions={alwaysAllowFollowupQuestions} alwaysAllowUpdateTodoList={alwaysAllowUpdateTodoList} - followupAutoApproveTimeoutMs={followupAutoApproveTimeoutMs} + // followupAutoApproveTimeoutMs={followupAutoApproveTimeoutMs} allowedCommands={allowedCommands} allowedMaxRequests={allowedMaxRequests ?? undefined} allowedMaxCost={allowedMaxCost ?? undefined} @@ -841,22 +838,22 @@ const SettingsView = forwardRef(({ onDone, t )} {/* Checkpoints Section */} - {activeTab === "checkpoints" && ( + {/* {activeTab === "checkpoints" && ( - )} + )} */} {/* kilocode_change start display section */} - {activeTab === "display" && ( + {/* {activeTab === "display" && ( - )} + )} */} {activeTab === "ghost" && ( (({ onDone, t )} {/* Context Management Section */} - {activeTab === "contextManagement" && ( + {/* {activeTab === "contextManagement" && ( (({ onDone, t maxImageFileSize={maxImageFileSize} maxTotalImageSize={maxTotalImageSize} maxConcurrentFileReads={maxConcurrentFileReads} - allowVeryLargeReads={allowVeryLargeReads /* kilocode_change */} + allowVeryLargeReads={allowVeryLargeReads} profileThresholds={profileThresholds} includeDiagnosticMessages={includeDiagnosticMessages} maxDiagnosticMessages={maxDiagnosticMessages} writeDelayMs={writeDelayMs} setCachedStateField={setCachedStateField} /> - )} + )} */} {/* Terminal Section */} {activeTab === "terminal" && ( diff --git a/webview-ui/src/components/ui/button.tsx b/webview-ui/src/components/ui/button.tsx index d45bc5ea50..6cdc61b491 100644 --- a/webview-ui/src/components/ui/button.tsx +++ b/webview-ui/src/components/ui/button.tsx @@ -1,15 +1,15 @@ -import * as React from "react" import { Slot } from "@radix-ui/react-slot" import { cva, type VariantProps } from "class-variance-authority" +import * as React from "react" import { cn } from "@/lib/utils" const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xs text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer active:opacity-80 border border-[var(--color-matterai-border)] outline-none rounded-lg", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xs text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer active:opacity-80 border border-[var(--color-matterai-border)] outline-none rounded-md", { variants: { variant: { - default: "border border-vscode-input-border bg-primary text-primary-foreground hover:bg-primary/90", + default: "bg-primary text-primary-foreground hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", outline: "border border-vscode-input-border bg-transparent hover:bg-accent hover:text-accent-foreground", diff --git a/webview-ui/src/components/ui/input.tsx b/webview-ui/src/components/ui/input.tsx index 77bea85dad..68a9e4daa6 100644 --- a/webview-ui/src/components/ui/input.tsx +++ b/webview-ui/src/components/ui/input.tsx @@ -8,7 +8,7 @@ const Input = React.forwardRef>( Date: Fri, 9 Jan 2026 19:06:01 +0530 Subject: [PATCH 2/3] changelog + --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6e1f6a41b..d4e8e7ab7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Changelog -## [v5.0.1] - 2026-01-05 +## [v5.0.2] - 2026-01-09 + +### Changed + +- Minor improvements to file read tool +- Settings UI Cleanup + +--- + +## [v5.0.1] - 2026-01-09 ### Changed From a671377f22be4d203a064cfca4ebe40473891bd2 Mon Sep 17 00:00:00 2001 From: code-crusher Date: Fri, 9 Jan 2026 19:06:47 +0530 Subject: [PATCH 3/3] bump version --- src/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.json b/src/package.json index f404dd3023..67a263c110 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "matterai", - "version": "5.0.1", + "version": "5.0.2", "icon": "assets/icons/matterai-ic.png", "galleryBanner": { "color": "#FFFFFF",