From f4fb0bfdea8c71213e6a161eb1f99f7955a314d6 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Tue, 17 Jun 2025 21:03:43 +0100 Subject: [PATCH 01/35] Makes it possible to hide typeahead search in dropdowns --- .../src/components/chat/ChatTextArea.tsx | 2 + .../src/components/ui/select-dropdown.tsx | 46 ++++++++++--------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 19f6c8a995..18a146b641 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -1000,6 +1000,7 @@ const ChatTextArea = forwardRef( ( value={currentConfigId} disabled={selectApiConfigDisabled} title={t("chat:selectApiConfig")} + disableSearch={false} placeholder={displayName} options={[ // Pinned items first. diff --git a/webview-ui/src/components/ui/select-dropdown.tsx b/webview-ui/src/components/ui/select-dropdown.tsx index 3f1906b81e..7fcc6884b7 100644 --- a/webview-ui/src/components/ui/select-dropdown.tsx +++ b/webview-ui/src/components/ui/select-dropdown.tsx @@ -37,6 +37,7 @@ export interface SelectDropdownProps { placeholder?: string shortcutText?: string renderItem?: (option: DropdownOption) => React.ReactNode + disableSearch?: boolean } export const SelectDropdown = React.memo( @@ -56,6 +57,7 @@ export const SelectDropdown = React.memo( placeholder = "", shortcutText = "", renderItem, + disableSearch = false, }, ref, ) => { @@ -117,8 +119,8 @@ export const SelectDropdown = React.memo( // Filter options based on search value using memoized Fzf instance const filteredOptions = React.useMemo(() => { - // If no search value, return all options without filtering - if (!searchValue) return options + // If search is disabled or no search value, return all options without filtering + if (disableSearch || !searchValue) return options // Get fuzzy matching items - only perform search if we have a search value const matchingItems = fzfInstance.find(searchValue).map((result) => result.item.original) @@ -132,7 +134,7 @@ export const SelectDropdown = React.memo( // Include if it's in the matching items return matchingItems.some((item) => item.value === option.value) }) - }, [options, searchValue, fzfInstance]) + }, [options, searchValue, fzfInstance, disableSearch]) // Group options by type and handle separators const groupedOptions = React.useMemo(() => { @@ -209,24 +211,26 @@ export const SelectDropdown = React.memo( className={cn("p-0 overflow-hidden", contentClassName)}>
{/* Search input */} -
- setSearchValue(e.target.value)} - placeholder={t("common:ui.search_placeholder")} - className="w-full h-8 px-2 py-1 text-xs bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border rounded focus:outline-0" - /> - {searchValue.length > 0 && ( -
- -
- )} -
+ {!disableSearch && ( +
+ setSearchValue(e.target.value)} + placeholder={t("common:ui.search_placeholder")} + className="w-full h-8 px-2 py-1 text-xs bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border rounded focus:outline-0" + /> + {searchValue.length > 0 && ( +
+ +
+ )} +
+ )} {/* Dropdown items - Use windowing for large lists */}
From 18374008a774f6c003b0cea71b73ce529ef54ba7 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Tue, 17 Jun 2025 23:05:05 +0100 Subject: [PATCH 02/35] Redesigns the mode selector --- .../src/components/chat/ChatTextArea.tsx | 32 +---- .../src/components/chat/ModeSelector.tsx | 121 ++++++++++++++++++ .../src/components/ui/select-dropdown.tsx | 36 +++++- 3 files changed, 159 insertions(+), 30 deletions(-) create mode 100644 webview-ui/src/components/chat/ModeSelector.tsx diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 18a146b641..09456fbc80 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -22,6 +22,7 @@ import { convertToMentionPath } from "@/utils/path-mentions" import { SelectDropdown, DropdownOptionType, Button } from "@/components/ui" import Thumbnails from "../common/Thumbnails" +import ModeSelector from "./ModeSelector" import { MAX_IMAGES_PER_MESSAGE } from "./ChatView" import ContextMenu from "./ContextMenu" import { VolumeX, Pin, Check } from "lucide-react" @@ -997,39 +998,16 @@ const ChatTextArea = forwardRef(
- ({ - value: mode.slug, - label: mode.name, - type: DropdownOptionType.ITEM, - })), - { - value: "sep-1", - label: t("chat:separator"), - type: DropdownOptionType.SEPARATOR, - }, - { - value: "promptsButtonClicked", - label: t("chat:edit"), - type: DropdownOptionType.ACTION, - }, - ]} onChange={(value) => { - setMode(value as Mode) + setMode(value) vscode.postMessage({ type: "mode", text: value }) }} - shortcutText={modeShortcutText} triggerClassName="w-full" + modeShortcutText={modeShortcutText} + customModes={customModes} />
diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx new file mode 100644 index 0000000000..1499497930 --- /dev/null +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -0,0 +1,121 @@ +import React from "react" +import { ChevronsUpDown, Check } from "lucide-react" +import { Mode, getAllModes } from "@roo/modes" +import { cn } from "@/lib/utils" +import { useRooPortal } from "@/components/ui/hooks/useRooPortal" +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" +import { IconButton } from "./IconButton" +import { vscode } from "@/utils/vscode" + +interface ModeSelectorProps { + value: Mode + onChange: (value: Mode) => void + disabled?: boolean + title?: string + triggerClassName?: string + modeShortcutText: string + customModes?: any[] +} + +export const ModeSelector: React.FC = ({ + value, + onChange, + disabled = false, + title = "", + triggerClassName = "", + modeShortcutText, + customModes, +}) => { + const [open, setOpen] = React.useState(false) + const portalContainer = useRooPortal("roo-portal") + + // Get all available modes + const modes = React.useMemo(() => getAllModes(customModes), [customModes]) + + // Find the selected mode + const selectedMode = React.useMemo(() => modes.find((mode) => mode.slug === value), [modes, value]) + + return ( + + + + {selectedMode?.name || ""} + + + +
+
+
+

Modes

+
+ + { + vscode.postMessage({ + type: "switchTab", + tab: "modes", + }) + setOpen(false) + }} + /> +
+
+

+ Specialized personas that tailor Roo's behavior. +
+ {modeShortcutText} +

+
+ + {/* Mode List */} +
+ {modes.map((mode) => ( +
{ + onChange(mode.slug as Mode) + setOpen(false) + }} + data-testid="mode-selector-item"> +
+

{mode.name}

+

+ {mode.roleDefinition} +

+
+ {mode.slug === value && } +
+ ))} +
+
+
+
+ ) +} + +export default ModeSelector diff --git a/webview-ui/src/components/ui/select-dropdown.tsx b/webview-ui/src/components/ui/select-dropdown.tsx index 7fcc6884b7..556ea91022 100644 --- a/webview-ui/src/components/ui/select-dropdown.tsx +++ b/webview-ui/src/components/ui/select-dropdown.tsx @@ -13,6 +13,7 @@ export enum DropdownOptionType { SEPARATOR = "separator", SHORTCUT = "shortcut", ACTION = "action", + COMPONENT = "component", } export interface DropdownOption { @@ -21,6 +22,7 @@ export interface DropdownOption { disabled?: boolean type?: DropdownOptionType pinned?: boolean + component?: React.ReactNode } export interface SelectDropdownProps { @@ -102,7 +104,10 @@ export const SelectDropdown = React.memo( return options .filter( (option) => - option.type !== DropdownOptionType.SEPARATOR && option.type !== DropdownOptionType.SHORTCUT, + option.type !== DropdownOptionType.SEPARATOR && + option.type !== DropdownOptionType.SHORTCUT && + // Only include COMPONENT type if it has a label or value to search by + !(option.type === DropdownOptionType.COMPONENT && !option.label && !option.value), ) .map((option) => ({ original: option, @@ -125,9 +130,13 @@ export const SelectDropdown = React.memo( // Get fuzzy matching items - only perform search if we have a search value const matchingItems = fzfInstance.find(searchValue).map((result) => result.item.original) - // Always include separators and shortcuts + // Always include separators, shortcuts, and components without searchable text return options.filter((option) => { - if (option.type === DropdownOptionType.SEPARATOR || option.type === DropdownOptionType.SHORTCUT) { + if ( + option.type === DropdownOptionType.SEPARATOR || + option.type === DropdownOptionType.SHORTCUT || + (option.type === DropdownOptionType.COMPONENT && !option.label && !option.value) + ) { return true } @@ -263,6 +272,27 @@ export const SelectDropdown = React.memo( ) } + if (option.type === DropdownOptionType.COMPONENT && option.component) { + return ( +
!option.disabled && handleSelect(option.value)} + className={cn( + "px-3 py-1.5 text-sm cursor-pointer", + option.disabled + ? "opacity-50 cursor-not-allowed" + : "hover:bg-vscode-list-hoverBackground", + option.value === value + ? "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground" + : "", + itemClassName, + )} + data-testid="dropdown-component-item"> + {option.component} +
+ ) + } + // Use stable keys for better reconciliation const itemKey = `item-${option.value || option.label || index}` From 5ac5a4e0669e9b89cfe0ef54e4398841591fec5f Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Thu, 19 Jun 2025 09:38:59 +0100 Subject: [PATCH 03/35] Only shows the mode marketplace button if the setting is enabled --- webview-ui/src/components/chat/ModeSelector.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 1499497930..6c563f5dd4 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -6,6 +6,7 @@ import { useRooPortal } from "@/components/ui/hooks/useRooPortal" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" +import { useExtensionState } from "@/context/ExtensionStateContext" interface ModeSelectorProps { value: Mode @@ -28,6 +29,7 @@ export const ModeSelector: React.FC = ({ }) => { const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") + const { experiments } = useExtensionState() // Get all available modes const modes = React.useMemo(() => getAllModes(customModes), [customModes]) @@ -64,7 +66,9 @@ export const ModeSelector: React.FC = ({

Modes

- + {experiments.marketplace && ( + + )} Date: Thu, 19 Jun 2025 10:23:57 +0100 Subject: [PATCH 04/35] Opens the marketplace from the mode selector --- webview-ui/src/components/chat/ModeSelector.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 6c563f5dd4..217afc6184 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -67,7 +67,18 @@ export const ModeSelector: React.FC = ({

Modes

{experiments.marketplace && ( - + { + vscode.postMessage({ + type: "switchTab", + tab: "marketplace", + }) + + setOpen(false) + }} + /> )} Date: Thu, 19 Jun 2025 10:26:07 +0100 Subject: [PATCH 05/35] Only show mode description is available --- webview-ui/src/components/chat/ModeSelector.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 217afc6184..a226d5ede2 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -119,9 +119,11 @@ export const ModeSelector: React.FC = ({ data-testid="mode-selector-item">

{mode.name}

-

- {mode.roleDefinition} -

+ {mode.description && ( +

+ {mode.roleDefinition} +

+ )}
{mode.slug === value && }
From 489d4a2b30ba87d2554ba13afb54c4e4571b6995 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Thu, 19 Jun 2025 20:19:00 +0100 Subject: [PATCH 06/35] Adds short descriptions to default modes --- packages/types/src/mode.ts | 1 + src/shared/modes.ts | 5 +++++ webview-ui/src/components/chat/ModeSelector.tsx | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/types/src/mode.ts b/packages/types/src/mode.ts index dfe95f8d7e..3fd08221ec 100644 --- a/packages/types/src/mode.ts +++ b/packages/types/src/mode.ts @@ -66,6 +66,7 @@ export const modeConfigSchema = z.object({ name: z.string().min(1, "Name is required"), roleDefinition: z.string().min(1, "Role definition is required"), whenToUse: z.string().optional(), + description: z.string().optional(), customInstructions: z.string().optional(), groups: groupEntryArraySchema, source: z.enum(["global", "project"]).optional(), diff --git a/src/shared/modes.ts b/src/shared/modes.ts index 56d41f3c73..53e44dea84 100644 --- a/src/shared/modes.ts +++ b/src/shared/modes.ts @@ -68,6 +68,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.", whenToUse: "Use this mode when you need to write, modify, or refactor code. Ideal for implementing features, fixing bugs, creating new files, or making code improvements across any programming language or framework.", + description: "Write, modify, and refactor code", groups: ["read", "edit", "browser", "command", "mcp"], }, { @@ -77,6 +78,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, an experienced technical leader who is inquisitive and an excellent planner. Your goal is to gather information and get context to create a detailed plan for accomplishing the user's task, which the user will review and approve before they switch into another mode to implement the solution.", whenToUse: "Use this mode when you need to plan, design, or strategize before implementation. Perfect for breaking down complex problems, creating technical specifications, designing system architecture, or brainstorming solutions before coding.", + description: "Plan and design before implementation", groups: ["read", ["edit", { fileRegex: "\\.md$", description: "Markdown files only" }], "browser", "mcp"], customInstructions: "1. Do some information gathering (for example using read_file or search_files) to get more context about the task.\n\n2. You should also ask the user clarifying questions to get a better understanding of the task.\n\n3. Once you've gained more context about the user's request, you should create a detailed plan for how to accomplish the task. Include Mermaid diagrams if they help make your plan clearer.\n\n4. Ask the user if they are pleased with this plan, or if they would like to make any changes. Think of this as a brainstorming session where you can discuss the task and plan the best way to accomplish it.\n\n5. Once the user confirms the plan, ask them if they'd like you to write it to a markdown file.\n\n6. Use the switch_mode tool to request that the user switch to another mode to implement the solution.", @@ -88,6 +90,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a knowledgeable technical assistant focused on answering questions and providing information about software development, technology, and related topics.", whenToUse: "Use this mode when you need explanations, documentation, or answers to technical questions. Best for understanding concepts, analyzing existing code, getting recommendations, or learning about technologies without making changes.", + description: "Get answers and explanations", groups: ["read", "browser", "mcp"], customInstructions: "You can analyze code, explain concepts, and access external resources. Always answer the user's questions thoroughly, and do not switch to implementing code unless explicitly requested by the user. Include Mermaid diagrams when they clarify your response.", @@ -99,6 +102,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, an expert software debugger specializing in systematic problem diagnosis and resolution.", whenToUse: "Use this mode when you're troubleshooting issues, investigating errors, or diagnosing problems. Specialized in systematic debugging, adding logging, analyzing stack traces, and identifying root causes before applying fixes.", + description: "Diagnose and fix software issues", groups: ["read", "edit", "browser", "command", "mcp"], customInstructions: "Reflect on 5-7 different possible sources of the problem, distill those down to 1-2 most likely sources, and then add logs to validate your assumptions. Explicitly ask the user to confirm the diagnosis before fixing the problem.", @@ -110,6 +114,7 @@ export const modes: readonly ModeConfig[] = [ "You are Roo, a strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized modes. You have a comprehensive understanding of each mode's capabilities and limitations, allowing you to effectively break down complex problems into discrete tasks that can be solved by different specialists.", whenToUse: "Use this mode for complex, multi-step projects that require coordination across different specialties. Ideal when you need to break down large tasks into subtasks, manage workflows, or coordinate work that spans multiple domains or expertise areas.", + description: "Coordinate tasks across multiple modes", groups: [], customInstructions: "Your role is to coordinate complex workflows by delegating tasks to specialized modes. As an orchestrator, you should:\n\n1. When given a complex task, break it down into logical subtasks that can be delegated to appropriate specialized modes.\n\n2. For each subtask, use the `new_task` tool to delegate. Choose the most appropriate mode for the subtask's specific goal and provide comprehensive instructions in the `message` parameter. These instructions must include:\n * All necessary context from the parent task or previous subtasks required to complete the work.\n * A clearly defined scope, specifying exactly what the subtask should accomplish.\n * An explicit statement that the subtask should *only* perform the work outlined in these instructions and not deviate.\n * An instruction for the subtask to signal completion by using the `attempt_completion` tool, providing a concise yet thorough summary of the outcome in the `result` parameter, keeping in mind that this summary will be the source of truth used to keep track of what was completed on this project.\n * A statement that these specific instructions supersede any conflicting general instructions the subtask's mode might have.\n\n3. Track and manage the progress of all subtasks. When a subtask is completed, analyze its results and determine the next steps.\n\n4. Help the user understand how the different subtasks fit together in the overall workflow. Provide clear reasoning about why you're delegating specific tasks to specific modes.\n\n5. When all subtasks are completed, synthesize the results and provide a comprehensive overview of what was accomplished.\n\n6. Ask clarifying questions when necessary to better understand how to break down complex tasks effectively.\n\n7. Suggest improvements to the workflow based on the results of completed subtasks.\n\nUse subtasks to maintain clarity. If a request significantly shifts focus or requires a different expertise (mode), consider creating a subtask rather than overloading the current one.", diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index a226d5ede2..39800998b1 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -121,7 +121,7 @@ export const ModeSelector: React.FC = ({

{mode.name}

{mode.description && (

- {mode.roleDefinition} + {mode.description}

)}
From 52c5e9568b1ffd2d5baaf5751875d9dcb42110bb Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Thu, 19 Jun 2025 21:05:03 +0100 Subject: [PATCH 07/35] Conditionally highlights the mode selector button until the user clicks it for the first time --- .../src/components/chat/ModeSelector.tsx | 19 +++++++++-- .../chat/hooks/useModeSelectorTracking.ts | 34 +++++++++++++++++++ webview-ui/src/utils/TelemetryClient.ts | 22 ++++++++++++ 3 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 webview-ui/src/components/chat/hooks/useModeSelectorTracking.ts diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 39800998b1..c2d8589276 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -1,5 +1,5 @@ import React from "react" -import { ChevronsUpDown, Check } from "lucide-react" +import { ChevronUp, Check } from "lucide-react" import { Mode, getAllModes } from "@roo/modes" import { cn } from "@/lib/utils" import { useRooPortal } from "@/components/ui/hooks/useRooPortal" @@ -7,6 +7,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" +import { useModeSelectorTracking } from "./hooks/useModeSelectorTracking" interface ModeSelectorProps { value: Mode @@ -30,6 +31,7 @@ export const ModeSelector: React.FC = ({ const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") const { experiments } = useExtensionState() + const { hasOpenedModeSelector, trackModeSelectorOpened } = useModeSelectorTracking() // Get all available modes const modes = React.useMemo(() => getAllModes(customModes), [customModes]) @@ -38,7 +40,15 @@ export const ModeSelector: React.FC = ({ const selectedMode = React.useMemo(() => modes.find((mode) => mode.slug === value), [modes, value]) return ( - + { + if (isOpen) { + trackModeSelectorOpened() + } + setOpen(isOpen) + }} + data-testid="mode-selector-root"> = ({ ? "opacity-50 cursor-not-allowed" : "opacity-90 hover:opacity-100 hover:bg-[rgba(255,255,255,0.03)] hover:border-[rgba(255,255,255,0.15)] cursor-pointer", triggerClassName, + !disabled && !hasOpenedModeSelector + ? "bg-primary opacity-90 hover:bg-primary-hover text-vscode-button-foreground" + : null, )}> - + {selectedMode?.name || ""} diff --git a/webview-ui/src/components/chat/hooks/useModeSelectorTracking.ts b/webview-ui/src/components/chat/hooks/useModeSelectorTracking.ts new file mode 100644 index 0000000000..e30524af54 --- /dev/null +++ b/webview-ui/src/components/chat/hooks/useModeSelectorTracking.ts @@ -0,0 +1,34 @@ +import { useState, useEffect } from "react" +import { telemetryClient } from "@/utils/TelemetryClient" +import { useExtensionState } from "@/context/ExtensionStateContext" + +export function useModeSelectorTracking() { + const { telemetrySetting } = useExtensionState() + const [hasOpenedModeSelector, setHasOpenedModeSelector] = useState(true) + + // Check if the user has opened the ModeSelector before + useEffect(() => { + // If telemetry is disabled, assume the property is set to true + if (telemetrySetting !== "enabled") { + setHasOpenedModeSelector(true) + return + } + + // Try to get the property from PostHog + const userProperty = telemetryClient.getPeopleProperty("openedModeSelector") + setHasOpenedModeSelector(userProperty === true) + }, [telemetrySetting]) + + // Function to track when the ModeSelector is opened + const trackModeSelectorOpened = () => { + if (!hasOpenedModeSelector && telemetrySetting === "enabled") { + // Set the property in PostHog + telemetryClient.setPeopleProperty("openedModeSelector", true) + + // Update local state + setHasOpenedModeSelector(true) + } + } + + return { hasOpenedModeSelector, trackModeSelectorOpened } +} diff --git a/webview-ui/src/utils/TelemetryClient.ts b/webview-ui/src/utils/TelemetryClient.ts index cf2bfc54a5..b219dcde9f 100644 --- a/webview-ui/src/utils/TelemetryClient.ts +++ b/webview-ui/src/utils/TelemetryClient.ts @@ -42,6 +42,28 @@ class TelemetryClient { } } } + + public setPeopleProperty(propertyName: string, value: any) { + if (TelemetryClient.telemetryEnabled) { + try { + posthog.people.set({ [propertyName]: value }) + } catch (_error) { + // Silently fail if there's an error setting a property. + } + } + } + + public getPeopleProperty(propertyName: string): any { + if (TelemetryClient.telemetryEnabled) { + try { + return posthog.get_property(propertyName) + } catch (_error) { + // Silently fail if there's an error getting a property. + return null + } + } + return null + } } export const telemetryClient = TelemetryClient.getInstance() From 5835621332d111df3e3248c57f2b6ef77c664a22 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Thu, 19 Jun 2025 21:47:09 +0100 Subject: [PATCH 08/35] Refactors the way to track whether the user has opened the mode selector --- packages/types/src/global-settings.ts | 1 + src/core/webview/webviewMessageHandler.ts | 4 +++ src/shared/ExtensionMessage.ts | 1 + src/shared/WebviewMessage.ts | 1 + .../src/components/chat/ModeSelector.tsx | 17 ++++++---- .../chat/hooks/useModeSelectorTracking.ts | 34 ------------------- .../src/context/ExtensionStateContext.tsx | 4 +++ .../__tests__/ExtensionStateContext.spec.tsx | 1 + 8 files changed, 22 insertions(+), 41 deletions(-) delete mode 100644 webview-ui/src/components/chat/hooks/useModeSelectorTracking.ts diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index 5b729a125f..18bf7e7cc6 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -103,6 +103,7 @@ export const globalSettingsSchema = z.object({ customSupportPrompts: customSupportPromptsSchema.optional(), enhancementApiConfigId: z.string().optional(), historyPreviewCollapsed: z.boolean().optional(), + hasOpenedModeSelector: z.boolean().optional(), }) export type GlobalSettings = z.infer diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 720e5cda0d..34ed6321f2 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -993,6 +993,10 @@ export const webviewMessageHandler = async ( await updateGlobalState("showRooIgnoredFiles", message.bool ?? true) await provider.postStateToWebview() break + case "hasOpenedModeSelector": + await updateGlobalState("hasOpenedModeSelector", message.bool ?? true) + await provider.postStateToWebview() + break case "maxReadFileLine": await updateGlobalState("maxReadFileLine", message.value) await provider.postStateToWebview() diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index ac19ba0ef2..eec4159196 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -250,6 +250,7 @@ export type ExtensionState = Pick< autoCondenseContextPercent: number marketplaceItems?: MarketplaceItem[] marketplaceInstalledMetadata?: { project: Record; global: Record } + hasOpenedModeSelector: boolean } export interface ClineSayTool { diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index cbcf0c10e3..55ef599856 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -147,6 +147,7 @@ export interface WebviewMessage { | "searchFiles" | "toggleApiConfigPin" | "setHistoryPreviewCollapsed" + | "hasOpenedModeSelector" | "accountButtonClicked" | "rooCloudSignIn" | "rooCloudSignOut" diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index c2d8589276..66e569d270 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -7,7 +7,6 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" -import { useModeSelectorTracking } from "./hooks/useModeSelectorTracking" interface ModeSelectorProps { value: Mode @@ -30,8 +29,14 @@ export const ModeSelector: React.FC = ({ }) => { const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") - const { experiments } = useExtensionState() - const { hasOpenedModeSelector, trackModeSelectorOpened } = useModeSelectorTracking() + const { experiments, hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() + + const trackModeSelectorOpened = () => { + if (!hasOpenedModeSelector) { + setHasOpenedModeSelector(true) + vscode.postMessage({ type: "hasOpenedModeSelector", bool: true }) + } + } // Get all available modes const modes = React.useMemo(() => getAllModes(customModes), [customModes]) @@ -43,9 +48,7 @@ export const ModeSelector: React.FC = ({ { - if (isOpen) { - trackModeSelectorOpened() - } + if (isOpen) trackModeSelectorOpened() setOpen(isOpen) }} data-testid="mode-selector-root"> @@ -79,7 +82,7 @@ export const ModeSelector: React.FC = ({

Modes

- {experiments.marketplace && ( + {experiments?.marketplace && ( { - // If telemetry is disabled, assume the property is set to true - if (telemetrySetting !== "enabled") { - setHasOpenedModeSelector(true) - return - } - - // Try to get the property from PostHog - const userProperty = telemetryClient.getPeopleProperty("openedModeSelector") - setHasOpenedModeSelector(userProperty === true) - }, [telemetrySetting]) - - // Function to track when the ModeSelector is opened - const trackModeSelectorOpened = () => { - if (!hasOpenedModeSelector && telemetrySetting === "enabled") { - // Set the property in PostHog - telemetryClient.setPeopleProperty("openedModeSelector", true) - - // Update local state - setHasOpenedModeSelector(true) - } - } - - return { hasOpenedModeSelector, trackModeSelectorOpened } -} diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 456ae02671..6a53a523ad 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -38,6 +38,8 @@ export interface ExtensionStateContextType extends ExtensionState { sharingEnabled: boolean maxConcurrentFileReads?: number mdmCompliant?: boolean + hasOpenedModeSelector: boolean // New property to track if user has opened mode selector + setHasOpenedModeSelector: (value: boolean) => void // Setter for the new property condensingApiConfigId?: string setCondensingApiConfigId: (value: string) => void customCondensingPrompt?: string @@ -176,6 +178,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode enhancementApiConfigId: "", condensingApiConfigId: "", // Default empty string for condensing API config ID customCondensingPrompt: "", // Default empty string for custom condensing prompt + hasOpenedModeSelector: false, // Default to false (not opened yet) autoApprovalEnabled: false, customModes: [], maxOpenTabsContext: 20, @@ -398,6 +401,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode }), setHistoryPreviewCollapsed: (value) => setState((prevState) => ({ ...prevState, historyPreviewCollapsed: value })), + setHasOpenedModeSelector: (value) => setState((prevState) => ({ ...prevState, hasOpenedModeSelector: value })), setAutoCondenseContext: (value) => setState((prevState) => ({ ...prevState, autoCondenseContext: value })), setAutoCondenseContextPercent: (value) => setState((prevState) => ({ ...prevState, autoCondenseContextPercent: value })), diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index b8d67741bb..8e0d6f9246 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -207,6 +207,7 @@ describe("mergeExtensionState", () => { autoCondenseContextPercent: 100, cloudIsAuthenticated: false, sharingEnabled: false, + hasOpenedModeSelector: false, // Add the new required property } const prevState: ExtensionState = { From 1da0fd8a403ce46a9f5cbab2370ba74892ecb7b0 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Thu, 19 Jun 2025 21:55:05 +0100 Subject: [PATCH 09/35] Localizes ModeSelector strings --- webview-ui/src/components/chat/ModeSelector.tsx | 4 +++- webview-ui/src/i18n/locales/ca/chat.json | 6 ++++++ webview-ui/src/i18n/locales/de/chat.json | 6 ++++++ webview-ui/src/i18n/locales/en/chat.json | 6 ++++++ webview-ui/src/i18n/locales/es/chat.json | 6 ++++++ webview-ui/src/i18n/locales/fr/chat.json | 6 ++++++ webview-ui/src/i18n/locales/hi/chat.json | 6 ++++++ webview-ui/src/i18n/locales/id/chat.json | 6 ++++++ webview-ui/src/i18n/locales/it/chat.json | 6 ++++++ webview-ui/src/i18n/locales/ja/chat.json | 6 ++++++ webview-ui/src/i18n/locales/ko/chat.json | 6 ++++++ webview-ui/src/i18n/locales/nl/chat.json | 6 ++++++ webview-ui/src/i18n/locales/pl/chat.json | 6 ++++++ webview-ui/src/i18n/locales/pt-BR/chat.json | 6 ++++++ webview-ui/src/i18n/locales/ru/chat.json | 6 ++++++ webview-ui/src/i18n/locales/tr/chat.json | 6 ++++++ webview-ui/src/i18n/locales/vi/chat.json | 6 ++++++ webview-ui/src/i18n/locales/zh-CN/chat.json | 6 ++++++ webview-ui/src/i18n/locales/zh-TW/chat.json | 6 ++++++ 19 files changed, 111 insertions(+), 1 deletion(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 66e569d270..c2b37b5056 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -7,6 +7,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" +import { useAppTranslation } from "@/i18n/TranslationContext" interface ModeSelectorProps { value: Mode @@ -30,6 +31,7 @@ export const ModeSelector: React.FC = ({ const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") const { experiments, hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() + const { t } = useAppTranslation() const trackModeSelectorOpened = () => { if (!hasOpenedModeSelector) { @@ -80,7 +82,7 @@ export const ModeSelector: React.FC = ({
-

Modes

+

{t("chat:modeSelector.title")}

{experiments?.marketplace && ( Date: Thu, 19 Jun 2025 22:10:32 +0100 Subject: [PATCH 10/35] Makes Marketplace icon not conditional on dead experiment --- .../src/components/chat/ModeSelector.tsx | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index c2b37b5056..7d71a36d0d 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -30,7 +30,7 @@ export const ModeSelector: React.FC = ({ }) => { const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") - const { experiments, hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() + const { hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() const { t } = useAppTranslation() const trackModeSelectorOpened = () => { @@ -84,20 +84,18 @@ export const ModeSelector: React.FC = ({

{t("chat:modeSelector.title")}

- {experiments?.marketplace && ( - { - vscode.postMessage({ - type: "switchTab", - tab: "marketplace", - }) + { + vscode.postMessage({ + type: "switchTab", + tab: "marketplace", + }) - setOpen(false) - }} - /> - )} + setOpen(false) + }} + /> Date: Thu, 19 Jun 2025 22:24:42 +0100 Subject: [PATCH 11/35] Fixes type errors --- src/core/webview/ClineProvider.ts | 1 + src/core/webview/__tests__/ClineProvider.spec.ts | 1 + src/core/webview/webviewMessageHandler.ts | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index d99aa644b2..003e4c2421 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1451,6 +1451,7 @@ export class ClineProvider codebaseIndexEmbedderModelId: "", }, mdmCompliant: this.checkMdmCompliance(), + hasOpenedModeSelector: this.getGlobalState("hasOpenedModeSelector") ?? false, } } diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index de4f34a12a..8a5cec605e 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -522,6 +522,7 @@ describe("ClineProvider", () => { autoCondenseContextPercent: 100, cloudIsAuthenticated: false, sharingEnabled: false, + hasOpenedModeSelector: false, } const message: ExtensionMessage = { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 34ed6321f2..2b86fbdc20 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -856,7 +856,11 @@ export const webviewMessageHandler = async ( const updatedPrompts = { ...existingPrompts, [message.promptMode]: message.customPrompt } await updateGlobalState("customModePrompts", updatedPrompts) const currentState = await provider.getStateToPostToWebview() - const stateWithPrompts = { ...currentState, customModePrompts: updatedPrompts } + const stateWithPrompts = { + ...currentState, + customModePrompts: updatedPrompts, + hasOpenedModeSelector: currentState.hasOpenedModeSelector ?? false, + } provider.postMessageToWebview({ type: "state", state: stateWithPrompts }) } break From fdb92d99d3c17ecdcdaaaaab16f4548ea6d945cb Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Fri, 20 Jun 2025 09:37:36 +0100 Subject: [PATCH 12/35] Internationalizes ModeSelector strings once again --- webview-ui/src/components/chat/ModeSelector.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 7d71a36d0d..b6a5e1f8fa 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -86,7 +86,7 @@ export const ModeSelector: React.FC = ({
{ vscode.postMessage({ type: "switchTab", @@ -98,7 +98,7 @@ export const ModeSelector: React.FC = ({ /> { vscode.postMessage({ type: "switchTab", @@ -110,7 +110,7 @@ export const ModeSelector: React.FC = ({

- Specialized personas that tailor Roo's behavior. + {t("chat:modeSelector.description")}
{modeShortcutText}

From c903eb8a82556c33ecf454b40c1044490a37e898 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Fri, 20 Jun 2025 09:38:03 +0100 Subject: [PATCH 13/35] Removes unnecessary Telemetry code --- webview-ui/src/utils/TelemetryClient.ts | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/webview-ui/src/utils/TelemetryClient.ts b/webview-ui/src/utils/TelemetryClient.ts index b219dcde9f..cf2bfc54a5 100644 --- a/webview-ui/src/utils/TelemetryClient.ts +++ b/webview-ui/src/utils/TelemetryClient.ts @@ -42,28 +42,6 @@ class TelemetryClient { } } } - - public setPeopleProperty(propertyName: string, value: any) { - if (TelemetryClient.telemetryEnabled) { - try { - posthog.people.set({ [propertyName]: value }) - } catch (_error) { - // Silently fail if there's an error setting a property. - } - } - } - - public getPeopleProperty(propertyName: string): any { - if (TelemetryClient.telemetryEnabled) { - try { - return posthog.get_property(propertyName) - } catch (_error) { - // Silently fail if there's an error getting a property. - return null - } - } - return null - } } export const telemetryClient = TelemetryClient.getInstance() From dcb2cab18c4a09f75c50e931a8ac5320fdeb3f30 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Fri, 20 Jun 2025 10:00:37 +0100 Subject: [PATCH 14/35] Enables deep linking into subtabs of MarketplaceView and uses it to link from ModeSelector to the Modes subtab --- webview-ui/src/App.tsx | 11 +++- .../src/components/chat/ModeSelector.tsx | 12 +++-- .../MarketplaceDeepLinkExample.tsx | 42 +++++++++++++++ .../marketplace/MarketplaceDeepLinkTest.tsx | 51 +++++++++++++++++++ .../marketplace/MarketplaceView.tsx | 9 +++- .../MarketplaceViewStateManager.ts | 12 +++++ .../components/MarketplaceInstallModal.tsx | 21 +++++++- 7 files changed, 150 insertions(+), 8 deletions(-) create mode 100644 webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx create mode 100644 webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx index e63d8d0f4f..b122198f63 100644 --- a/webview-ui/src/App.tsx +++ b/webview-ui/src/App.tsx @@ -74,6 +74,7 @@ const App = () => { } setCurrentSection(undefined) + setCurrentMarketplaceTab(undefined) if (settingsRef.current?.checkUnsaveChanges) { settingsRef.current.checkUnsaveChanges(() => setTab(newTab)) @@ -85,6 +86,7 @@ const App = () => { ) const [currentSection, setCurrentSection] = useState(undefined) + const [currentMarketplaceTab, setCurrentMarketplaceTab] = useState(undefined) const onMessage = useCallback( (e: MessageEvent) => { @@ -96,14 +98,17 @@ const App = () => { const targetTab = message.tab as Tab switchTab(targetTab) setCurrentSection(undefined) + setCurrentMarketplaceTab(undefined) } else { // Handle other actions using the mapping const newTab = tabsByMessageAction[message.action] const section = message.values?.section as string | undefined + const marketplaceTab = message.values?.marketplaceTab as string | undefined if (newTab) { switchTab(newTab) setCurrentSection(section) + setCurrentMarketplaceTab(marketplaceTab) } } } @@ -171,7 +176,11 @@ const App = () => { setTab("chat")} targetSection={currentSection} /> )} {tab === "marketplace" && ( - switchTab("chat")} /> + switchTab("chat")} + targetTab={currentMarketplaceTab as "mcp" | "mode" | undefined} + /> )} {tab === "account" && ( = ({ iconClass="codicon-extensions" title={t("chat:modeSelector.marketplace")} onClick={() => { - vscode.postMessage({ - type: "switchTab", - tab: "marketplace", - }) + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mode" }, + }, + "*", + ) setOpen(false) }} diff --git a/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx b/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx new file mode 100644 index 0000000000..36f670ed54 --- /dev/null +++ b/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx @@ -0,0 +1,42 @@ +import React from "react" +import { Button } from "@/components/ui/button" + +/** + * Example component demonstrating how to deep link to specific tabs in the MarketplaceView + * + * This component provides buttons that navigate directly to either the MCP or Mode tabs + * within the Marketplace view. + */ +export function MarketplaceDeepLinkExample() { + const openMcpMarketplace = () => { + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mcp" }, + }, + "*", + ) + } + + const openModeMarketplace = () => { + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mode" }, + }, + "*", + ) + } + + return ( +
+

Marketplace Deep Links

+
+ + +
+
+ ) +} diff --git a/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx b/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx new file mode 100644 index 0000000000..af7b173f0b --- /dev/null +++ b/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx @@ -0,0 +1,51 @@ +import React from "react" +import { Button } from "@/components/ui/button" + +/** + * Test component for verifying the MarketplaceView deep linking functionality + * + * This component provides buttons that navigate directly to either the MCP or Mode tabs + * within the Marketplace view, demonstrating the deep linking capability. + */ +export function MarketplaceDeepLinkTest() { + // Function to open the MCP tab in the marketplace + const openMcpMarketplace = () => { + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mcp" }, + }, + "*", + ) + } + + // Function to open the Mode tab in the marketplace + const openModeMarketplace = () => { + window.postMessage( + { + type: "action", + action: "marketplaceButtonClicked", + values: { marketplaceTab: "mode" }, + }, + "*", + ) + } + + return ( +
+

MarketplaceView Deep Linking Test

+

+ Click the buttons below to test deep linking to specific tabs in the MarketplaceView. +

+
+ + +
+
+ ) +} diff --git a/webview-ui/src/components/marketplace/MarketplaceView.tsx b/webview-ui/src/components/marketplace/MarketplaceView.tsx index 8d831d8674..07b47b48bd 100644 --- a/webview-ui/src/components/marketplace/MarketplaceView.tsx +++ b/webview-ui/src/components/marketplace/MarketplaceView.tsx @@ -12,8 +12,9 @@ import { TooltipProvider } from "@/components/ui/tooltip" interface MarketplaceViewProps { onDone?: () => void stateManager: MarketplaceViewStateManager + targetTab?: "mcp" | "mode" } -export function MarketplaceView({ stateManager, onDone }: MarketplaceViewProps) { +export function MarketplaceView({ stateManager, onDone, targetTab }: MarketplaceViewProps) { const { t } = useAppTranslation() const [state, manager] = useStateManager(stateManager) const [hasReceivedInitialState, setHasReceivedInitialState] = useState(false) @@ -26,6 +27,12 @@ export function MarketplaceView({ stateManager, onDone }: MarketplaceViewProps) } }, [state.allItems, hasReceivedInitialState]) + useEffect(() => { + if (targetTab && (targetTab === "mcp" || targetTab === "mode")) { + manager.transition({ type: "SET_ACTIVE_TAB", payload: { tab: targetTab } }) + } + }, [targetTab, manager]) + // Ensure marketplace state manager processes messages when component mounts useEffect(() => { // When the marketplace view first mounts, we need to trigger a state update diff --git a/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts b/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts index 7f7324f581..672635ab33 100644 --- a/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts +++ b/webview-ui/src/components/marketplace/MarketplaceViewStateManager.ts @@ -337,6 +337,18 @@ export class MarketplaceViewStateManager { // Error case void this.transition({ type: "FETCH_ERROR" }) } else { + // Check if a specific tab is requested + if ( + message.values?.marketplaceTab && + (message.values.marketplaceTab === "mcp" || message.values.marketplaceTab === "mode") + ) { + // Set the active tab + void this.transition({ + type: "SET_ACTIVE_TAB", + payload: { tab: message.values.marketplaceTab }, + }) + } + // Refresh request void this.transition({ type: "FETCH_ITEMS" }) } diff --git a/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx b/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx index 4333db50f4..c5d275ea41 100644 --- a/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx +++ b/webview-ui/src/components/marketplace/components/MarketplaceInstallModal.tsx @@ -190,8 +190,25 @@ export const MarketplaceInstallModal: React.FC = ( } const handlePostInstallAction = (tab: "mcp" | "modes") => { - // Send message to switch to the appropriate tab - vscode.postMessage({ type: "switchTab", tab }) + if (tab === "mcp") { + // Navigate to MCP tab + window.postMessage( + { + type: "action", + action: "mcpButtonClicked", + }, + "*", + ) + } else { + // Navigate to Modes tab + window.postMessage( + { + type: "action", + action: "promptsButtonClicked", + }, + "*", + ) + } // Close the modal onClose() } From df5574faabdfdd7c4b35cdf3dc798dbf330aed7a Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Fri, 20 Jun 2025 13:37:05 +0100 Subject: [PATCH 15/35] Uses short mode description by default in the slash command picker --- webview-ui/src/utils/context-mentions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webview-ui/src/utils/context-mentions.ts b/webview-ui/src/utils/context-mentions.ts index 5df3404b23..3299bc4e08 100644 --- a/webview-ui/src/utils/context-mentions.ts +++ b/webview-ui/src/utils/context-mentions.ts @@ -143,7 +143,7 @@ export function getContextMenuOptions( type: ContextMenuOptionType.Mode, value: mode.slug, label: mode.name, - description: (mode.whenToUse || mode.roleDefinition).split("\n")[0], + description: (mode.description || mode.whenToUse || mode.roleDefinition).split("\n")[0], })) return matchingModes.length > 0 ? matchingModes : [{ type: ContextMenuOptionType.NoResults }] From b0d714fd07699d95f8a93f026624a9534aca4e36 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 07:31:40 +0100 Subject: [PATCH 16/35] Removes the Modes settings icon from the top bar, deferring to the one in the ModeSelector --- src/package.json | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/package.json b/src/package.json index 4c2df62ddd..cb85623a0e 100644 --- a/src/package.json +++ b/src/package.json @@ -80,11 +80,6 @@ "title": "%command.mcpServers.title%", "icon": "$(server)" }, - { - "command": "roo-cline.promptsButtonClicked", - "title": "%command.prompts.title%", - "icon": "$(organization)" - }, { "command": "roo-cline.historyButtonClicked", "title": "%command.history.title%", @@ -219,39 +214,34 @@ "group": "navigation@1", "when": "view == roo-cline.SidebarProvider" }, - { - "command": "roo-cline.promptsButtonClicked", - "group": "navigation@2", - "when": "view == roo-cline.SidebarProvider" - }, { "command": "roo-cline.mcpButtonClicked", - "group": "navigation@3", + "group": "navigation@2", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.historyButtonClicked", - "group": "navigation@5", + "group": "navigation@4", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.popoutButtonClicked", - "group": "navigation@6", + "group": "navigation@5", "when": "view == roo-cline.SidebarProvider" }, { "command": "roo-cline.accountButtonClicked", - "group": "navigation@7", + "group": "navigation@6", "when": "view == roo-cline.SidebarProvider && config.roo-cline.rooCodeCloudEnabled" }, { "command": "roo-cline.settingsButtonClicked", - "group": "navigation@8", + "group": "navigation@7", "when": "view == roo-cline.SidebarProvider" } ], @@ -261,34 +251,29 @@ "group": "navigation@1", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, - { - "command": "roo-cline.promptsButtonClicked", - "group": "navigation@2", - "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" - }, { "command": "roo-cline.mcpButtonClicked", - "group": "navigation@3", + "group": "navigation@2", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.marketplaceButtonClicked", - "group": "navigation@4", + "group": "navigation@3", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.historyButtonClicked", - "group": "navigation@5", + "group": "navigation@4", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" }, { "command": "roo-cline.accountButtonClicked", - "group": "navigation@6", + "group": "navigation@5", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider && config.roo-cline.rooCodeCloudEnabled" }, { "command": "roo-cline.settingsButtonClicked", - "group": "navigation@7", + "group": "navigation@6", "when": "activeWebviewPanelId == roo-cline.TabPanelProvider" } ] From 3dc4df6a32de6590099e6f554de69c22538e1e2d Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 08:21:51 +0100 Subject: [PATCH 17/35] Makes mode short descriptions editable --- .../src/components/chat/ModeSelector.tsx | 16 +++-- webview-ui/src/components/modes/ModesView.tsx | 60 ++++++++++++++++++- .../modes/__tests__/ModesView.spec.tsx | 52 +++++++++++++++- webview-ui/src/i18n/locales/en/prompts.json | 7 ++- 4 files changed, 126 insertions(+), 9 deletions(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 64bcddbfd1..ccf24b5a2f 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -78,7 +78,7 @@ export const ModeSelector: React.FC = ({ align="start" sideOffset={4} container={portalContainer} - className="p-0 overflow-hidden w-[320px]"> + className="p-0 overflow-hidden min-w-80 max-w-9/10">
@@ -113,7 +113,7 @@ export const ModeSelector: React.FC = ({ />
-

+

{t("chat:modeSelector.description")}
{modeShortcutText} @@ -137,15 +137,19 @@ export const ModeSelector: React.FC = ({ setOpen(false) }} data-testid="mode-selector-item"> -

+

{mode.name}

{mode.description && ( -

- {mode.description} +

+ {mode.description || mode.whenToUse}

)}
- {mode.slug === value && } + {mode.slug === value ? ( + + ) : ( +
+ )}
))}
diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 18f4bdf3d2..818ecbdea9 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -386,7 +386,10 @@ const ModesView = ({ onDone }: ModesViewProps) => { return () => window.removeEventListener("message", handler) }, []) - const handleAgentReset = (modeSlug: string, type: "roleDefinition" | "whenToUse" | "customInstructions") => { + const handleAgentReset = ( + modeSlug: string, + type: "roleDefinition" | "description" | "whenToUse" | "customInstructions", + ) => { // Only reset for built-in modes const existingPrompt = customModePrompts?.[modeSlug] as PromptComponent const updatedPrompt = { ...existingPrompt } @@ -705,6 +708,61 @@ const ModesView = ({ onDone }: ModesViewProps) => { />
+ {/* Description section */} +
+
+
{t("prompts:description.title")}
+ {!findModeBySlug(visualMode, customModes) && ( + + )} +
+
+ {t("prompts:description.description")} +
+ { + const customMode = findModeBySlug(visualMode, customModes) + const prompt = customModePrompts?.[visualMode] as PromptComponent + return customMode?.description ?? prompt?.description ?? "" + })()} + onChange={(e) => { + const value = + (e as unknown as CustomEvent)?.detail?.target?.value || + ((e as any).target as HTMLTextAreaElement).value + const customMode = findModeBySlug(visualMode, customModes) + if (customMode) { + // For custom modes, update the JSON file + updateCustomMode(visualMode, { + ...customMode, + description: value.trim() || undefined, + source: customMode.source || "global", + }) + } else { + // For built-in modes, update the prompts + updateAgentPrompt(visualMode, { + description: value.trim() || undefined, + }) + } + }} + className="w-full" + rows={2} + data-testid={`${getCurrentMode()?.slug || "code"}-description-textarea`} + /> +
+ {/* When to Use section */}
diff --git a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx index 47ff05613c..190b11150d 100644 --- a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx +++ b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx @@ -138,10 +138,13 @@ describe("PromptsView", () => { await fireEvent.click(resetButton) // Verify it only resets role definition + // When resetting a built-in mode's role definition, the field should be removed entirely + // from the customPrompt object, not set to undefined. + // This allows the default role definition from the built-in mode to be used instead. expect(vscode.postMessage).toHaveBeenCalledWith({ type: "updatePrompt", promptMode: "code", - customPrompt: { roleDefinition: undefined }, + customPrompt: {}, // Empty object because the role definition field is removed entirely }) // Cleanup before testing custom mode @@ -159,6 +162,53 @@ describe("PromptsView", () => { expect(screen.queryByTestId("role-definition-reset")).not.toBeInTheDocument() }) + it("resets description only for built-in modes", async () => { + const customMode = { + slug: "custom-mode", + name: "Custom Mode", + roleDefinition: "Custom role", + description: "Custom description", + groups: [], + } + + // Test with built-in mode (code) + const { unmount } = render( + + + , + ) + + // Find and click the description reset button + const resetButton = screen.getByTestId("description-reset") + expect(resetButton).toBeInTheDocument() + await fireEvent.click(resetButton) + + // Verify it only resets description + // When resetting a built-in mode's description, the field should be removed entirely + // from the customPrompt object, not set to undefined. + // This allows the default description from the built-in mode to be used instead. + expect(vscode.postMessage).toHaveBeenCalledWith({ + type: "updatePrompt", + promptMode: "code", + customPrompt: {}, // Empty object because the description field is removed entirely + }) + + // Cleanup before testing custom mode + unmount() + + // Test with custom mode + render( + + + , + ) + + // Verify reset button is not present for custom mode + expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() + }) + it("handles clearing custom instructions correctly", async () => { const setCustomInstructions = vitest.fn() renderPromptsView({ diff --git a/webview-ui/src/i18n/locales/en/prompts.json b/webview-ui/src/i18n/locales/en/prompts.json index f03d48ca92..2e9c96b9a0 100644 --- a/webview-ui/src/i18n/locales/en/prompts.json +++ b/webview-ui/src/i18n/locales/en/prompts.json @@ -34,9 +34,14 @@ "resetToDefault": "Reset to default", "description": "Define Roo's expertise and personality for this mode. This description shapes how Roo presents itself and approaches tasks." }, + "description": { + "title": "Short description (for humans)", + "resetToDefault": "Reset to default description", + "description": "A brief description of this mode that appears in the mode selector dropdown." + }, "whenToUse": { "title": "When to Use (optional)", - "description": "Describe when this mode should be used. This helps the Orchestrator choose the right mode for a task.", + "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task.", "resetToDefault": "Reset to default 'When to Use' description" }, "customInstructions": { From 3afab13590fd8e52d0574dec840e45967b384a39 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 08:30:40 +0100 Subject: [PATCH 18/35] Some visual cleanup of ModesView, as I add yet another section --- webview-ui/src/components/modes/ModesView.tsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 818ecbdea9..408a0f6935 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -7,7 +7,7 @@ import { VSCodeLink, } from "@vscode/webview-ui-toolkit/react" import { Trans } from "react-i18next" -import { ChevronsUpDown, X } from "lucide-react" +import { ChevronDown, X } from "lucide-react" import { ModeConfig, GroupEntry, PromptComponent, ToolGroup, modeConfigSchema } from "@roo-code/types" @@ -496,10 +496,10 @@ const ModesView = ({ onDone }: ModesViewProps) => { variant="combobox" role="combobox" aria-expanded={open} - className="grow justify-between" + className="justify-between w-60" data-testid="mode-select-trigger">
{getCurrentMode()?.name || t("prompts:modes.selectMode")}
- + @@ -585,6 +585,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { {/* API Configuration - Moved Here */}
{t("prompts:apiConfiguration.title")}
+
+ {t("prompts:apiConfiguration.select")} +
-
- {t("prompts:apiConfiguration.select")} -
@@ -703,7 +703,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={4} + rows={5} data-testid={`${getCurrentMode()?.slug || "code"}-prompt-textarea`} />
@@ -758,7 +758,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={2} + rows={1} data-testid={`${getCurrentMode()?.slug || "code"}-description-textarea`} />
@@ -813,7 +813,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={3} + rows={4} data-testid={`${getCurrentMode()?.slug || "code"}-when-to-use-textarea`} />
@@ -970,7 +970,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { }) } }} - rows={4} + rows={10} className="w-full" data-testid={`${getCurrentMode()?.slug || "code"}-custom-instructions-textarea`} /> From df7a9c333b65aa51bac523b2d771e5acd2ae6993 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 10:00:42 +0100 Subject: [PATCH 19/35] Properly loads short descriptions in settings --- src/shared/modes.ts | 17 +++++++++++++++++ webview-ui/src/components/modes/ModesView.tsx | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/shared/modes.ts b/src/shared/modes.ts index 53e44dea84..e3c90a7784 100644 --- a/src/shared/modes.ts +++ b/src/shared/modes.ts @@ -193,10 +193,12 @@ export function getModeSelection(mode: string, promptComponent?: PromptComponent const roleDefinition = modeToUse?.roleDefinition || "" const baseInstructions = modeToUse?.customInstructions || "" + const description = (customMode || builtInMode)?.description || "" return { roleDefinition, baseInstructions, + description, } } @@ -287,6 +289,7 @@ export const defaultPrompts: Readonly = Object.freeze( roleDefinition: mode.roleDefinition, whenToUse: mode.whenToUse, customInstructions: mode.customInstructions, + // Note: description is not included here as it's not part of the PromptComponent interface }, ]), ), @@ -303,6 +306,7 @@ export async function getAllModesWithPrompts(context: vscode.ExtensionContext): roleDefinition: customModePrompts[mode.slug]?.roleDefinition ?? mode.roleDefinition, whenToUse: customModePrompts[mode.slug]?.whenToUse ?? mode.whenToUse, customInstructions: customModePrompts[mode.slug]?.customInstructions ?? mode.customInstructions, + // description is not overridable via customModePrompts, so we keep the original })) } @@ -326,6 +330,8 @@ export async function getFullModeDetails( // Get the base custom instructions const baseCustomInstructions = promptComponent?.customInstructions || baseMode.customInstructions || "" const baseWhenToUse = promptComponent?.whenToUse || baseMode.whenToUse || "" + // Description is not part of PromptComponent, so we use it directly from the mode + const baseDescription = baseMode.description || "" // If we have cwd, load and combine all custom instructions let fullCustomInstructions = baseCustomInstructions @@ -344,6 +350,7 @@ export async function getFullModeDetails( ...baseMode, roleDefinition: promptComponent?.roleDefinition || baseMode.roleDefinition, whenToUse: baseWhenToUse, + description: baseDescription, customInstructions: fullCustomInstructions, } } @@ -358,6 +365,16 @@ export function getRoleDefinition(modeSlug: string, customModes?: ModeConfig[]): return mode.roleDefinition } +// Helper function to safely get description +export function getDescription(modeSlug: string, customModes?: ModeConfig[]): string { + const mode = getModeBySlug(modeSlug, customModes) + if (!mode) { + console.warn(`No mode found for slug: ${modeSlug}`) + return "" + } + return mode.description ?? "" +} + // Helper function to safely get whenToUse export function getWhenToUse(modeSlug: string, customModes?: ModeConfig[]): string { const mode = getModeBySlug(modeSlug, customModes) diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 408a0f6935..c0d9ab817a 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -15,6 +15,7 @@ import { Mode, getRoleDefinition, getWhenToUse, + getDescription, getCustomInstructions, getAllModes, findModeBySlug as findCustomModeBySlug, @@ -736,7 +737,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { value={(() => { const customMode = findModeBySlug(visualMode, customModes) const prompt = customModePrompts?.[visualMode] as PromptComponent - return customMode?.description ?? prompt?.description ?? "" + return customMode?.description ?? prompt?.description ?? getDescription(visualMode) })()} onChange={(e) => { const value = From 5dc5c317961d0cd32e4ff6a586f8a7027da71808 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 10:38:30 +0100 Subject: [PATCH 20/35] Fixes saving of description when creating and editing modes --- packages/types/src/mode.ts | 1 + webview-ui/src/components/modes/ModesView.tsx | 26 ++++++++++++++++--- webview-ui/src/i18n/locales/en/prompts.json | 8 ++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/packages/types/src/mode.ts b/packages/types/src/mode.ts index 3fd08221ec..175ec095fc 100644 --- a/packages/types/src/mode.ts +++ b/packages/types/src/mode.ts @@ -107,6 +107,7 @@ export type CustomModesSettings = z.infer export const promptComponentSchema = z.object({ roleDefinition: z.string().optional(), whenToUse: z.string().optional(), + description: z.string().optional(), customInstructions: z.string().optional(), }) diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index c0d9ab817a..f4899d8308 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -5,6 +5,7 @@ import { VSCodeRadio, VSCodeTextArea, VSCodeLink, + VSCodeTextField, } from "@vscode/webview-ui-toolkit/react" import { Trans } from "react-i18next" import { ChevronDown, X } from "lucide-react" @@ -106,6 +107,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { if (updatedPrompt.roleDefinition === getRoleDefinition(mode)) { delete updatedPrompt.roleDefinition } + if (updatedPrompt.description === getDescription(mode)) { + delete updatedPrompt.description + } if (updatedPrompt.whenToUse === getWhenToUse(mode)) { delete updatedPrompt.whenToUse } @@ -195,6 +199,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // State for create mode dialog const [newModeName, setNewModeName] = useState("") const [newModeSlug, setNewModeSlug] = useState("") + const [newModeDescription, setNewModeDescription] = useState("") const [newModeRoleDefinition, setNewModeRoleDefinition] = useState("") const [newModeWhenToUse, setNewModeWhenToUse] = useState("") const [newModeCustomInstructions, setNewModeCustomInstructions] = useState("") @@ -212,6 +217,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Reset form fields setNewModeName("") setNewModeSlug("") + setNewModeDescription("") setNewModeGroups(availableGroups) setNewModeRoleDefinition("") setNewModeWhenToUse("") @@ -732,8 +738,7 @@ const ModesView = ({ onDone }: ModesViewProps) => {
{t("prompts:description.description")}
- { const customMode = findModeBySlug(visualMode, customModes) const prompt = customModePrompts?.[visualMode] as PromptComponent @@ -759,8 +764,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } }} className="w-full" - rows={1} - data-testid={`${getCurrentMode()?.slug || "code"}-description-textarea`} + data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} />
@@ -1248,6 +1252,20 @@ const ModesView = ({ onDone }: ModesViewProps) => { )}
+
+
{t("prompts:createModeDialog.description.label")}
+
+ {t("prompts:createModeDialog.description.description")} +
+ { + setNewModeDescription((e.target as HTMLInputElement).value) + }} + className="w-full" + /> +
+
{t("prompts:createModeDialog.whenToUse.label")}
diff --git a/webview-ui/src/i18n/locales/en/prompts.json b/webview-ui/src/i18n/locales/en/prompts.json index 2e9c96b9a0..3614d79872 100644 --- a/webview-ui/src/i18n/locales/en/prompts.json +++ b/webview-ui/src/i18n/locales/en/prompts.json @@ -37,7 +37,7 @@ "description": { "title": "Short description (for humans)", "resetToDefault": "Reset to default description", - "description": "A brief description of this mode that appears in the mode selector dropdown." + "description": "A brief description shown in the mode selector dropdown." }, "whenToUse": { "title": "When to Use (optional)", @@ -142,9 +142,13 @@ "label": "Role Definition", "description": "Define Roo's expertise and personality for this mode." }, + "description": { + "label": "Short description (for humans)", + "description": "A brief description shown in the mode selector dropdown." + }, "whenToUse": { "label": "When to Use (optional)", - "description": "Provide a clear description of when this mode is most effective and what types of tasks it excels at." + "description": "Guidance for Roo for when this mode should be used. This helps the Orchestrator choose the right mode for a task." }, "tools": { "label": "Available Tools", From a5018d5bf8c1894fc43f3d164bb93c9eaa303005 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 11:07:38 +0100 Subject: [PATCH 21/35] Only allow for customizing shoprt descriptions of custom modes, leaving built-in ones intact --- src/shared/modes.ts | 5 +- webview-ui/src/components/modes/ModesView.tsx | 115 ++++++++++-------- 2 files changed, 67 insertions(+), 53 deletions(-) diff --git a/src/shared/modes.ts b/src/shared/modes.ts index e3c90a7784..53bc2369db 100644 --- a/src/shared/modes.ts +++ b/src/shared/modes.ts @@ -289,7 +289,7 @@ export const defaultPrompts: Readonly = Object.freeze( roleDefinition: mode.roleDefinition, whenToUse: mode.whenToUse, customInstructions: mode.customInstructions, - // Note: description is not included here as it's not part of the PromptComponent interface + description: mode.description, }, ]), ), @@ -330,8 +330,7 @@ export async function getFullModeDetails( // Get the base custom instructions const baseCustomInstructions = promptComponent?.customInstructions || baseMode.customInstructions || "" const baseWhenToUse = promptComponent?.whenToUse || baseMode.whenToUse || "" - // Description is not part of PromptComponent, so we use it directly from the mode - const baseDescription = baseMode.description || "" + const baseDescription = promptComponent?.description || baseMode.description || "" // If we have cwd, load and combine all custom instructions let fullCustomInstructions = baseCustomInstructions diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index f4899d8308..62c88b3c5f 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -209,6 +209,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Field-specific error states const [nameError, setNameError] = useState("") const [slugError, setSlugError] = useState("") + const [descriptionError, setDescriptionError] = useState("") const [roleDefinitionError, setRoleDefinitionError] = useState("") const [groupsError, setGroupsError] = useState("") @@ -226,6 +227,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Reset error states setNameError("") setSlugError("") + setDescriptionError("") setRoleDefinitionError("") setGroupsError("") }, []) @@ -259,6 +261,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { // Clear previous errors setNameError("") setSlugError("") + setDescriptionError("") setRoleDefinitionError("") setGroupsError("") @@ -289,6 +292,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { case "slug": setSlugError(message) break + case "description": + setDescriptionError(message) + break case "roleDefinition": setRoleDefinitionError(message) break @@ -619,6 +625,7 @@ const ModesView = ({ onDone }: ModesViewProps) => {
+ {/* Name section */}
{/* Only show name and delete for custom modes */} {visualMode && findModeBySlug(visualMode, customModes) && ( @@ -657,6 +664,8 @@ const ModesView = ({ onDone }: ModesViewProps) => {
)} + + {/* Role Definition section */}
{t("prompts:roleDefinition.title")}
@@ -716,57 +725,60 @@ const ModesView = ({ onDone }: ModesViewProps) => {
{/* Description section */} -
-
-
{t("prompts:description.title")}
- {!findModeBySlug(visualMode, customModes) && ( - - )} -
-
- {t("prompts:description.description")} + {/* Only show description for custom modes */} + {visualMode && findModeBySlug(visualMode, customModes) && ( +
+
+
{t("prompts:description.title")}
+ {!findModeBySlug(visualMode, customModes) && ( + + )} +
+
+ {t("prompts:description.description")} +
+ { + const customMode = findModeBySlug(visualMode, customModes) + const prompt = customModePrompts?.[visualMode] as PromptComponent + return customMode?.description ?? prompt?.description ?? getDescription(visualMode) + })()} + onChange={(e) => { + const value = + (e as unknown as CustomEvent)?.detail?.target?.value || + ((e as any).target as HTMLTextAreaElement).value + const customMode = findModeBySlug(visualMode, customModes) + if (customMode) { + // For custom modes, update the JSON file + updateCustomMode(visualMode, { + ...customMode, + description: value.trim() || undefined, + source: customMode.source || "global", + }) + } else { + // For built-in modes, update the prompts + updateAgentPrompt(visualMode, { + description: value.trim() || undefined, + }) + } + }} + className="w-full" + data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} + />
- { - const customMode = findModeBySlug(visualMode, customModes) - const prompt = customModePrompts?.[visualMode] as PromptComponent - return customMode?.description ?? prompt?.description ?? getDescription(visualMode) - })()} - onChange={(e) => { - const value = - (e as unknown as CustomEvent)?.detail?.target?.value || - ((e as any).target as HTMLTextAreaElement).value - const customMode = findModeBySlug(visualMode, customModes) - if (customMode) { - // For custom modes, update the JSON file - updateCustomMode(visualMode, { - ...customMode, - description: value.trim() || undefined, - source: customMode.source || "global", - }) - } else { - // For built-in modes, update the prompts - updateAgentPrompt(visualMode, { - description: value.trim() || undefined, - }) - } - }} - className="w-full" - data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} - /> -
+ )} {/* When to Use section */}
@@ -1264,6 +1276,9 @@ const ModesView = ({ onDone }: ModesViewProps) => { }} className="w-full" /> + {descriptionError && ( +
{descriptionError}
+ )}
From 9f126dc131d4de68d136756ffbf6301338dac26d Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 11:13:03 +0100 Subject: [PATCH 22/35] Updates strings to reflect there's no Modes tab anymore, but settings --- webview-ui/src/i18n/locales/ca/marketplace.json | 2 +- webview-ui/src/i18n/locales/de/marketplace.json | 2 +- webview-ui/src/i18n/locales/en/marketplace.json | 2 +- webview-ui/src/i18n/locales/es/marketplace.json | 2 +- webview-ui/src/i18n/locales/fr/marketplace.json | 2 +- webview-ui/src/i18n/locales/hi/marketplace.json | 2 +- webview-ui/src/i18n/locales/id/marketplace.json | 2 +- webview-ui/src/i18n/locales/it/marketplace.json | 2 +- webview-ui/src/i18n/locales/ja/marketplace.json | 2 +- webview-ui/src/i18n/locales/ko/marketplace.json | 2 +- webview-ui/src/i18n/locales/nl/marketplace.json | 2 +- webview-ui/src/i18n/locales/pl/marketplace.json | 2 +- webview-ui/src/i18n/locales/pt-BR/marketplace.json | 2 +- webview-ui/src/i18n/locales/ru/marketplace.json | 2 +- webview-ui/src/i18n/locales/tr/marketplace.json | 2 +- webview-ui/src/i18n/locales/vi/marketplace.json | 2 +- webview-ui/src/i18n/locales/zh-CN/marketplace.json | 2 +- webview-ui/src/i18n/locales/zh-TW/marketplace.json | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/webview-ui/src/i18n/locales/ca/marketplace.json b/webview-ui/src/i18n/locales/ca/marketplace.json index 8653762d4f..5af3d1eee6 100644 --- a/webview-ui/src/i18n/locales/ca/marketplace.json +++ b/webview-ui/src/i18n/locales/ca/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ara pots utilitzar aquest mode. Feu clic a la icona Modes de la barra lateral per canviar de pestanya.", "done": "Fet", "goToMcp": "Anar a la pestanya MCP", - "goToModes": "Anar a la pestanya Modes", + "goToModes": "Anar a la configuració de Modes", "moreInfoMcp": "Veure documentació MCP de {{name}}", "validationRequired": "Si us plau, proporciona un valor per a {{paramName}}", "prerequisites": "Prerequisits" diff --git a/webview-ui/src/i18n/locales/de/marketplace.json b/webview-ui/src/i18n/locales/de/marketplace.json index c9bc9f9c43..4632ce5fea 100644 --- a/webview-ui/src/i18n/locales/de/marketplace.json +++ b/webview-ui/src/i18n/locales/de/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Du kannst diesen Modus jetzt verwenden. Klicke auf das Modi-Symbol in der Seitenleiste, um die Tabs zu wechseln.", "done": "Fertig", "goToMcp": "Zum MCP-Tab gehen", - "goToModes": "Zum Modi-Tab gehen", + "goToModes": "Zu den Modi-Einstellungen gehen", "moreInfoMcp": "{{name}} MCP-Dokumentation anzeigen", "validationRequired": "Bitte gib einen Wert für {{paramName}} an", "prerequisites": "Voraussetzungen" diff --git a/webview-ui/src/i18n/locales/en/marketplace.json b/webview-ui/src/i18n/locales/en/marketplace.json index 6a5e877b2a..c8c9a2f11a 100644 --- a/webview-ui/src/i18n/locales/en/marketplace.json +++ b/webview-ui/src/i18n/locales/en/marketplace.json @@ -92,7 +92,7 @@ "whatNextMode": "You can now use this mode. Click the Modes icon in the sidebar to switch tabs.", "done": "Done", "goToMcp": "Go to MCP Tab", - "goToModes": "Go to Modes Tab", + "goToModes": "Go to Modes Settings", "moreInfoMcp": "View {{name}} MCP documentation", "validationRequired": "Please provide a value for {{paramName}}" }, diff --git a/webview-ui/src/i18n/locales/es/marketplace.json b/webview-ui/src/i18n/locales/es/marketplace.json index 38056f32ea..918d10ef8d 100644 --- a/webview-ui/src/i18n/locales/es/marketplace.json +++ b/webview-ui/src/i18n/locales/es/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ahora puedes usar este modo. Haz clic en el icono Modos en la barra lateral para cambiar de pestaña.", "done": "Hecho", "goToMcp": "Ir a la pestaña MCP", - "goToModes": "Ir a la pestaña Modos", + "goToModes": "Ir a la configuración de Modos", "moreInfoMcp": "Ver documentación MCP de {{name}}", "validationRequired": "Por favor proporciona un valor para {{paramName}}", "prerequisites": "Requisitos previos" diff --git a/webview-ui/src/i18n/locales/fr/marketplace.json b/webview-ui/src/i18n/locales/fr/marketplace.json index cabac260ef..942d06aa49 100644 --- a/webview-ui/src/i18n/locales/fr/marketplace.json +++ b/webview-ui/src/i18n/locales/fr/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Vous pouvez maintenant utiliser ce mode. Cliquez sur l'icône Modes dans la barre latérale pour changer d'onglet.", "done": "Terminé", "goToMcp": "Aller à l'onglet MCP", - "goToModes": "Aller à l'onglet Modes", + "goToModes": "Aller aux paramètres des Modes", "moreInfoMcp": "Voir la documentation MCP de {{name}}", "validationRequired": "Veuillez fournir une valeur pour {{paramName}}", "prerequisites": "Prérequis" diff --git a/webview-ui/src/i18n/locales/hi/marketplace.json b/webview-ui/src/i18n/locales/hi/marketplace.json index 34924d3686..b9c9857b54 100644 --- a/webview-ui/src/i18n/locales/hi/marketplace.json +++ b/webview-ui/src/i18n/locales/hi/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "अब आप इस मोड का उपयोग कर सकते हैं। टैब स्विच करने के लिए साइडबार में मोड आइकन पर क्लिक करें।", "done": "पूर्ण", "goToMcp": "MCP टैब पर जाएं", - "goToModes": "मोड टैब पर जाएं", + "goToModes": "मोड सेटिंग्स पर जाएं", "moreInfoMcp": "{{name}} MCP दस्तावेज़ देखें", "validationRequired": "कृपया {{paramName}} के लिए एक मान प्रदान करें", "prerequisites": "आवश्यकताएं" diff --git a/webview-ui/src/i18n/locales/id/marketplace.json b/webview-ui/src/i18n/locales/id/marketplace.json index 9d80ebe326..153747fdf8 100644 --- a/webview-ui/src/i18n/locales/id/marketplace.json +++ b/webview-ui/src/i18n/locales/id/marketplace.json @@ -92,7 +92,7 @@ "whatNextMode": "Anda sekarang dapat menggunakan mode ini. Klik ikon Mode di sidebar untuk beralih tab.", "done": "Selesai", "goToMcp": "Ke Tab MCP", - "goToModes": "Ke Tab Mode", + "goToModes": "Ke Pengaturan Mode", "moreInfoMcp": "Lihat dokumentasi MCP {{name}}", "validationRequired": "Silakan berikan nilai untuk {{paramName}}" }, diff --git a/webview-ui/src/i18n/locales/it/marketplace.json b/webview-ui/src/i18n/locales/it/marketplace.json index 875db2685c..ea9845277b 100644 --- a/webview-ui/src/i18n/locales/it/marketplace.json +++ b/webview-ui/src/i18n/locales/it/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Ora puoi utilizzare questa modalità. Clicca sull'icona delle modalità nella barra laterale per cambiare scheda.", "done": "Fatto", "goToMcp": "Vai alla scheda MCP", - "goToModes": "Vai alla scheda Modalità", + "goToModes": "Vai alle impostazioni Modalità", "moreInfoMcp": "Visualizza documentazione MCP {{name}}", "validationRequired": "Fornisci un valore per {{paramName}}", "prerequisites": "Prerequisiti" diff --git a/webview-ui/src/i18n/locales/ja/marketplace.json b/webview-ui/src/i18n/locales/ja/marketplace.json index c8fe42d8cf..d3343eee22 100644 --- a/webview-ui/src/i18n/locales/ja/marketplace.json +++ b/webview-ui/src/i18n/locales/ja/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "このモードを使用できるようになりました。サイドバーのモードアイコンをクリックしてタブを切り替えてください。", "done": "完了", "goToMcp": "MCPタブに移動", - "goToModes": "モードタブに移動", + "goToModes": "モード設定に移動", "moreInfoMcp": "{{name}} MCPドキュメントを表示", "validationRequired": "{{paramName}}の値を入力してください", "prerequisites": "前提条件" diff --git a/webview-ui/src/i18n/locales/ko/marketplace.json b/webview-ui/src/i18n/locales/ko/marketplace.json index 004b90cb31..b4a0b64980 100644 --- a/webview-ui/src/i18n/locales/ko/marketplace.json +++ b/webview-ui/src/i18n/locales/ko/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "이제 이 모드를 사용할 수 있습니다. 사이드바의 모드 아이콘을 클릭하여 탭을 전환하세요.", "done": "완료", "goToMcp": "MCP 탭으로 이동", - "goToModes": "모드 탭으로 이동", + "goToModes": "모드 설정으로 이동", "moreInfoMcp": "{{name}} MCP 문서 보기", "validationRequired": "{{paramName}}에 대한 값을 입력해주세요", "prerequisites": "전제 조건" diff --git a/webview-ui/src/i18n/locales/nl/marketplace.json b/webview-ui/src/i18n/locales/nl/marketplace.json index b9effed30f..c2fe7cd610 100644 --- a/webview-ui/src/i18n/locales/nl/marketplace.json +++ b/webview-ui/src/i18n/locales/nl/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Je kunt deze modus nu gebruiken. Klik op het modi-pictogram in de zijbalk om van tabblad te wisselen.", "done": "Gereed", "goToMcp": "Ga naar MCP-tabblad", - "goToModes": "Ga naar Modi-tabblad", + "goToModes": "Ga naar Modi-instellingen", "moreInfoMcp": "{{name}} MCP-documentatie bekijken", "validationRequired": "Geef een waarde op voor {{paramName}}", "prerequisites": "Vereisten" diff --git a/webview-ui/src/i18n/locales/pl/marketplace.json b/webview-ui/src/i18n/locales/pl/marketplace.json index fe663c7e31..9acb67ed03 100644 --- a/webview-ui/src/i18n/locales/pl/marketplace.json +++ b/webview-ui/src/i18n/locales/pl/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Możesz teraz używać tego trybu. Kliknij ikonę Tryby na pasku bocznym, aby przełączyć zakładki.", "done": "Gotowe", "goToMcp": "Przejdź do zakładki MCP", - "goToModes": "Przejdź do zakładki Tryby", + "goToModes": "Przejdź do ustawień Trybów", "moreInfoMcp": "Zobacz dokumentację MCP {{name}}", "validationRequired": "Podaj wartość dla {{paramName}}", "prerequisites": "Wymagania wstępne" diff --git a/webview-ui/src/i18n/locales/pt-BR/marketplace.json b/webview-ui/src/i18n/locales/pt-BR/marketplace.json index 088adc850a..b634291eeb 100644 --- a/webview-ui/src/i18n/locales/pt-BR/marketplace.json +++ b/webview-ui/src/i18n/locales/pt-BR/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Agora você pode usar este modo. Clique no ícone Modos na barra lateral para trocar de aba.", "done": "Concluído", "goToMcp": "Ir para aba MCP", - "goToModes": "Ir para aba Modos", + "goToModes": "Ir para configurações de Modos", "moreInfoMcp": "Ver documentação MCP do {{name}}", "validationRequired": "Por favor, forneça um valor para {{paramName}}", "prerequisites": "Pré-requisitos" diff --git a/webview-ui/src/i18n/locales/ru/marketplace.json b/webview-ui/src/i18n/locales/ru/marketplace.json index 4f87737722..7a33014cf5 100644 --- a/webview-ui/src/i18n/locales/ru/marketplace.json +++ b/webview-ui/src/i18n/locales/ru/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Теперь вы можете использовать этот режим. Нажмите на иконку Режимы в боковой панели для переключения вкладок.", "done": "Готово", "goToMcp": "Перейти во вкладку MCP", - "goToModes": "Перейти во вкладку Режимы", + "goToModes": "Перейти в настройки Режимов", "moreInfoMcp": "Просмотреть документацию MCP {{name}}", "validationRequired": "Пожалуйста, укажите значение для {{paramName}}", "prerequisites": "Предварительные требования" diff --git a/webview-ui/src/i18n/locales/tr/marketplace.json b/webview-ui/src/i18n/locales/tr/marketplace.json index a034f7876f..6c3f857a5f 100644 --- a/webview-ui/src/i18n/locales/tr/marketplace.json +++ b/webview-ui/src/i18n/locales/tr/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Artık bu modu kullanabilirsiniz. Sekmeleri değiştirmek için kenar çubuğundaki Modlar simgesine tıklayın.", "done": "Tamamlandı", "goToMcp": "MCP Sekmesine Git", - "goToModes": "Modlar Sekmesine Git", + "goToModes": "Modlar Ayarlarına Git", "moreInfoMcp": "{{name}} MCP belgelerini görüntüle", "validationRequired": "Lütfen {{paramName}} için bir değer sağlayın", "prerequisites": "Ön koşullar" diff --git a/webview-ui/src/i18n/locales/vi/marketplace.json b/webview-ui/src/i18n/locales/vi/marketplace.json index 6539177161..d84f2d0e1f 100644 --- a/webview-ui/src/i18n/locales/vi/marketplace.json +++ b/webview-ui/src/i18n/locales/vi/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "Bây giờ bạn có thể sử dụng chế độ này. Nhấp vào biểu tượng Chế độ trong thanh bên để chuyển tab.", "done": "Hoàn thành", "goToMcp": "Đi đến Tab MCP", - "goToModes": "Đi đến Tab Chế độ", + "goToModes": "Đi đến Cài đặt Chế độ", "moreInfoMcp": "Xem tài liệu MCP {{name}}", "validationRequired": "Vui lòng cung cấp giá trị cho {{paramName}}", "prerequisites": "Điều kiện tiên quyết" diff --git a/webview-ui/src/i18n/locales/zh-CN/marketplace.json b/webview-ui/src/i18n/locales/zh-CN/marketplace.json index ccf1873ca6..ff94aaabcc 100644 --- a/webview-ui/src/i18n/locales/zh-CN/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-CN/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "现在您可以使用此模式。点击侧边栏中的模式图标切换标签页。", "done": "完成", "goToMcp": "转到 MCP 标签页", - "goToModes": "转到模式标签页", + "goToModes": "转到模式设置", "moreInfoMcp": "查看 {{name}} MCP 文档", "validationRequired": "请为 {{paramName}} 提供值", "prerequisites": "前置条件" diff --git a/webview-ui/src/i18n/locales/zh-TW/marketplace.json b/webview-ui/src/i18n/locales/zh-TW/marketplace.json index 201d3b2bb0..3ca00585ca 100644 --- a/webview-ui/src/i18n/locales/zh-TW/marketplace.json +++ b/webview-ui/src/i18n/locales/zh-TW/marketplace.json @@ -91,7 +91,7 @@ "whatNextMode": "現在您可以使用此模式。點擊側邊欄中的模式圖示以切換標籤頁。", "done": "完成", "goToMcp": "前往 MCP 標籤頁", - "goToModes": "前往模式標籤頁", + "goToModes": "前往模式設定", "moreInfoMcp": "檢視 {{name}} MCP 文件", "validationRequired": "請為 {{paramName}} 提供值", "prerequisites": "前置條件" From 19ef6f214c10d0d34e0f566c18c33e4d0f2e96d0 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 11:22:00 +0100 Subject: [PATCH 23/35] Localized strings for mode configuration UI --- webview-ui/src/i18n/locales/ca/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/de/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/es/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/fr/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/hi/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/id/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/it/prompts.json | 5 +++++ webview-ui/src/i18n/locales/ja/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/ko/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/nl/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/pl/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/pt-BR/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/ru/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/tr/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/vi/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/zh-CN/prompts.json | 9 +++++++++ webview-ui/src/i18n/locales/zh-TW/prompts.json | 9 +++++++++ 17 files changed, 149 insertions(+) diff --git a/webview-ui/src/i18n/locales/ca/prompts.json b/webview-ui/src/i18n/locales/ca/prompts.json index c9a2be41fb..04359f996a 100644 --- a/webview-ui/src/i18n/locales/ca/prompts.json +++ b/webview-ui/src/i18n/locales/ca/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restablir a valors predeterminats", "description": "Definiu l'experiència i personalitat de Roo per a aquest mode. Aquesta descripció determina com Roo es presenta i aborda les tasques." }, + "description": { + "title": "Descripció curta (per a humans)", + "resetToDefault": "Restablir a la descripció predeterminada", + "description": "Una breu descripció que es mostra al desplegable del selector de mode." + }, "whenToUse": { "title": "Quan utilitzar (opcional)", "description": "Descriviu quan s'hauria d'utilitzar aquest mode. Això ajuda l'Orchestrator a escollir el mode correcte per a una tasca.", @@ -145,6 +150,10 @@ "label": "Eines disponibles", "description": "Seleccioneu quines eines pot utilitzar aquest mode." }, + "description": { + "label": "Descripció curta (per a humans)", + "description": "Una breu descripció que es mostra al desplegable del selector de mode." + }, "customInstructions": { "label": "Instruccions personalitzades (opcional)", "description": "Afegiu directrius de comportament específiques per a aquest mode." diff --git a/webview-ui/src/i18n/locales/de/prompts.json b/webview-ui/src/i18n/locales/de/prompts.json index bab48f876f..6e9fd0f47b 100644 --- a/webview-ui/src/i18n/locales/de/prompts.json +++ b/webview-ui/src/i18n/locales/de/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Auf Standardwerte zurücksetzen", "description": "Definiere Roos Expertise und Persönlichkeit für diesen Modus. Diese Beschreibung prägt, wie Roo sich präsentiert und an Aufgaben herangeht." }, + "description": { + "title": "Kurzbeschreibung (für Menschen)", + "resetToDefault": "Auf Standardbeschreibung zurücksetzen", + "description": "Eine kurze Beschreibung, die im Dropdown-Menü der Modusauswahl angezeigt wird." + }, "whenToUse": { "title": "Wann zu verwenden (optional)", "description": "Beschreibe, wann dieser Modus verwendet werden sollte. Dies hilft dem Orchestrator, den richtigen Modus für eine Aufgabe auszuwählen.", @@ -145,6 +150,10 @@ "label": "Verfügbare Werkzeuge", "description": "Wähle, welche Werkzeuge dieser Modus verwenden kann." }, + "description": { + "label": "Kurzbeschreibung (für Menschen)", + "description": "Eine kurze Beschreibung, die im Dropdown-Menü der Modusauswahl angezeigt wird." + }, "customInstructions": { "label": "Benutzerdefinierte Anweisungen (optional)", "description": "Fügen Sie verhaltensspezifische Richtlinien für diesen Modus hinzu." diff --git a/webview-ui/src/i18n/locales/es/prompts.json b/webview-ui/src/i18n/locales/es/prompts.json index c96fc5a602..54b5c1bd2d 100644 --- a/webview-ui/src/i18n/locales/es/prompts.json +++ b/webview-ui/src/i18n/locales/es/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restablecer a valores predeterminados", "description": "Define la experiencia y personalidad de Roo para este modo. Esta descripción determina cómo Roo se presenta y aborda las tareas." }, + "description": { + "title": "Descripción breve (para humanos)", + "resetToDefault": "Restablecer a la descripción predeterminada", + "description": "Una breve descripción que se muestra en el menú desplegable del selector de modo." + }, "whenToUse": { "title": "Cuándo usar (opcional)", "description": "Describe cuándo se debe usar este modo. Esto ayuda al Orchestrator a elegir el modo correcto para una tarea.", @@ -145,6 +150,10 @@ "label": "Herramientas disponibles", "description": "Selecciona qué herramientas puede usar este modo." }, + "description": { + "label": "Descripción breve (para humanos)", + "description": "Una breve descripción que se muestra en el menú desplegable del selector de modo." + }, "customInstructions": { "label": "Instrucciones personalizadas (opcional)", "description": "Agrega directrices de comportamiento específicas para este modo." diff --git a/webview-ui/src/i18n/locales/fr/prompts.json b/webview-ui/src/i18n/locales/fr/prompts.json index ea9fdd5f3a..39bc67e482 100644 --- a/webview-ui/src/i18n/locales/fr/prompts.json +++ b/webview-ui/src/i18n/locales/fr/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Réinitialiser aux valeurs par défaut", "description": "Définissez l'expertise et la personnalité de Roo pour ce mode. Cette description façonne la manière dont Roo se présente et aborde les tâches." }, + "description": { + "title": "Description courte (pour humains)", + "resetToDefault": "Réinitialiser à la description par défaut", + "description": "Une brève description affichée dans le menu déroulant du sélecteur de mode." + }, "whenToUse": { "title": "Quand utiliser (optionnel)", "description": "Décrivez quand ce mode doit être utilisé. Cela aide l'Orchestrateur à choisir le mode approprié pour une tâche.", @@ -145,6 +150,10 @@ "label": "Outils disponibles", "description": "Sélectionnez quels outils ce mode peut utiliser." }, + "description": { + "label": "Description courte (pour humains)", + "description": "Une brève description affichée dans le menu déroulant du sélecteur de mode." + }, "customInstructions": { "label": "Instructions personnalisées (optionnel)", "description": "Ajoutez des directives comportementales spécifiques à ce mode." diff --git a/webview-ui/src/i18n/locales/hi/prompts.json b/webview-ui/src/i18n/locales/hi/prompts.json index e4f939562e..9633b02953 100644 --- a/webview-ui/src/i18n/locales/hi/prompts.json +++ b/webview-ui/src/i18n/locales/hi/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "डिफ़ॉल्ट पर रीसेट करें", "description": "इस मोड के लिए Roo की विशेषज्ञता और व्यक्तित्व परिभाषित करें। यह विवरण Roo के स्वयं को प्रस्तुत करने और कार्यों से निपटने के तरीके को आकार देता है।" }, + "description": { + "title": "संक्षिप्त विवरण (मनुष्यों के लिए)", + "resetToDefault": "डिफ़ॉल्ट विवरण पर रीसेट करें", + "description": "मोड सेलेक्टर ड्रॉपडाउन में दिखाया गया संक्षिप्त विवरण।" + }, "whenToUse": { "title": "कब उपयोग करें (वैकल्पिक)", "description": "बताएं कि इस मोड का उपयोग कब किया जाना चाहिए। यह Orchestrator को किसी कार्य के लिए सही मोड चुनने में मदद करता है।", @@ -145,6 +150,10 @@ "label": "उपलब्ध टूल्स", "description": "चुनें कि यह मोड कौन से टूल्स उपयोग कर सकता है।" }, + "description": { + "label": "संक्षिप्त विवरण (मनुष्यों के लिए)", + "description": "मोड सेलेक्टर ड्रॉपडाउन में दिखाया गया संक्षिप्त विवरण।" + }, "customInstructions": { "label": "कस्टम निर्देश (वैकल्पिक)", "description": "इस मोड के लिए विशिष्ट व्यवहार दिशानिर्देश जोड़ें।" diff --git a/webview-ui/src/i18n/locales/id/prompts.json b/webview-ui/src/i18n/locales/id/prompts.json index d94c85a8a4..a77a6e5376 100644 --- a/webview-ui/src/i18n/locales/id/prompts.json +++ b/webview-ui/src/i18n/locales/id/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Reset ke default", "description": "Tentukan keahlian dan kepribadian Roo untuk mode ini. Deskripsi ini membentuk bagaimana Roo mempresentasikan dirinya dan mendekati tugas." }, + "description": { + "title": "Deskripsi singkat (untuk manusia)", + "resetToDefault": "Setel ulang ke deskripsi default", + "description": "Deskripsi singkat yang ditampilkan di dropdown pemilih mode." + }, "whenToUse": { "title": "Kapan Menggunakan (opsional)", "description": "Jelaskan kapan mode ini harus digunakan. Ini membantu Orchestrator memilih mode yang tepat untuk suatu tugas.", @@ -145,6 +150,10 @@ "label": "Tools yang Tersedia", "description": "Pilih tools mana yang dapat digunakan mode ini." }, + "description": { + "label": "Deskripsi singkat (untuk manusia)", + "description": "Deskripsi singkat yang ditampilkan di dropdown pemilih mode." + }, "customInstructions": { "label": "Instruksi Kustom (opsional)", "description": "Tambahkan panduan perilaku khusus untuk mode ini." diff --git a/webview-ui/src/i18n/locales/it/prompts.json b/webview-ui/src/i18n/locales/it/prompts.json index 2ac95bf8e2..c994d5b8b5 100644 --- a/webview-ui/src/i18n/locales/it/prompts.json +++ b/webview-ui/src/i18n/locales/it/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Ripristina predefiniti", "description": "Definisci l'esperienza e la personalità di Roo per questa modalità. Questa descrizione modella come Roo si presenta e affronta i compiti." }, + "description": { + "title": "Descrizione breve (per umani)", + "resetToDefault": "Ripristina alla descrizione predefinita", + "description": "Una breve descrizione mostrata nel menu a discesa del selettore di modalità." + }, "whenToUse": { "title": "Quando utilizzare (opzionale)", "description": "Descrivi quando questa modalità dovrebbe essere utilizzata. Questo aiuta l'Orchestrator a scegliere la modalità giusta per un compito.", diff --git a/webview-ui/src/i18n/locales/ja/prompts.json b/webview-ui/src/i18n/locales/ja/prompts.json index 4af25fa11d..8049a82d31 100644 --- a/webview-ui/src/i18n/locales/ja/prompts.json +++ b/webview-ui/src/i18n/locales/ja/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "デフォルトにリセット", "description": "このモードのRooの専門知識と個性を定義します。この説明は、Rooが自身をどのように表現し、タスクにどのように取り組むかを形作ります。" }, + "description": { + "title": "短い説明(人間向け)", + "resetToDefault": "デフォルトの説明にリセット", + "description": "モードセレクタのドロップダウンに表示される簡単な説明。" + }, "whenToUse": { "title": "使用タイミング(オプション)", "description": "このモードをいつ使用すべきかを説明します。これはOrchestratorがタスクに適切なモードを選択するのに役立ちます。", @@ -145,6 +150,10 @@ "label": "利用可能なツール", "description": "このモードが使用できるツールを選択します。" }, + "description": { + "label": "短い説明(人間向け)", + "description": "モードセレクタのドロップダウンに表示される簡単な説明。" + }, "customInstructions": { "label": "カスタム指示(オプション)", "description": "このモードに特化した行動ガイドラインを追加します。" diff --git a/webview-ui/src/i18n/locales/ko/prompts.json b/webview-ui/src/i18n/locales/ko/prompts.json index 6e4eb12c8b..990ee67f03 100644 --- a/webview-ui/src/i18n/locales/ko/prompts.json +++ b/webview-ui/src/i18n/locales/ko/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "기본값으로 재설정", "description": "이 모드에 대한 Roo의 전문성과 성격을 정의하세요. 이 설명은 Roo가 자신을 어떻게 표현하고 작업에 접근하는지 형성합니다." }, + "description": { + "title": "짧은 설명 (사람용)", + "resetToDefault": "기본 설명으로 재설정", + "description": "모드 선택기 드롭다운에 표시되는 간단한 설명입니다." + }, "whenToUse": { "title": "사용 시기 (선택 사항)", "description": "이 모드를 언제 사용해야 하는지 설명합니다. 이는 Orchestrator가 작업에 적합한 모드를 선택하는 데 도움이 됩니다.", @@ -145,6 +150,10 @@ "label": "사용 가능한 도구", "description": "이 모드가 사용할 수 있는 도구를 선택하세요." }, + "description": { + "label": "짧은 설명 (사람용)", + "description": "모드 선택기 드롭다운에 표시되는 간단한 설명입니다." + }, "customInstructions": { "label": "사용자 지정 지침 (선택 사항)", "description": "이 모드에 대한 특정 행동 지침을 추가하세요." diff --git a/webview-ui/src/i18n/locales/nl/prompts.json b/webview-ui/src/i18n/locales/nl/prompts.json index e275f1a5a0..2aa09a5a15 100644 --- a/webview-ui/src/i18n/locales/nl/prompts.json +++ b/webview-ui/src/i18n/locales/nl/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Terugzetten naar standaard", "description": "Definieer Roo's expertise en persoonlijkheid voor deze modus. Deze beschrijving bepaalt hoe Roo zich presenteert en taken benadert." }, + "description": { + "title": "Korte beschrijving (voor mensen)", + "resetToDefault": "Terugzetten naar standaardbeschrijving", + "description": "Een korte beschrijving die wordt getoond in de modusselectie dropdown." + }, "whenToUse": { "title": "Wanneer te gebruiken (optioneel)", "description": "Beschrijf wanneer deze modus gebruikt moet worden. Dit helpt de Orchestrator om de juiste modus voor een taak te kiezen.", @@ -145,6 +150,10 @@ "label": "Beschikbare tools", "description": "Selecteer welke tools deze modus kan gebruiken." }, + "description": { + "label": "Korte beschrijving (voor mensen)", + "description": "Een korte beschrijving die wordt getoond in de modusselectie dropdown." + }, "customInstructions": { "label": "Aangepaste instructies (optioneel)", "description": "Voeg gedragsrichtlijnen toe die specifiek zijn voor deze modus." diff --git a/webview-ui/src/i18n/locales/pl/prompts.json b/webview-ui/src/i18n/locales/pl/prompts.json index 0cd4f665f7..b4a1bdcc50 100644 --- a/webview-ui/src/i18n/locales/pl/prompts.json +++ b/webview-ui/src/i18n/locales/pl/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Przywróć domyślne", "description": "Zdefiniuj wiedzę specjalistyczną i osobowość Roo dla tego trybu. Ten opis kształtuje, jak Roo prezentuje się i podchodzi do zadań." }, + "description": { + "title": "Krótki opis (dla ludzi)", + "resetToDefault": "Przywróć domyślny opis", + "description": "Krótki opis wyświetlany w rozwijanej liście wyboru trybu." + }, "whenToUse": { "title": "Kiedy używać (opcjonalne)", "description": "Opisz, kiedy ten tryb powinien być używany. Pomaga to Orchestratorowi wybrać odpowiedni tryb dla zadania.", @@ -145,6 +150,10 @@ "label": "Dostępne narzędzia", "description": "Wybierz, których narzędzi może używać ten tryb." }, + "description": { + "label": "Krótki opis (dla ludzi)", + "description": "Krótki opis wyświetlany w rozwijanej liście wyboru trybu." + }, "customInstructions": { "label": "Niestandardowe instrukcje (opcjonalne)", "description": "Dodaj wytyczne dotyczące zachowania specyficzne dla tego trybu." diff --git a/webview-ui/src/i18n/locales/pt-BR/prompts.json b/webview-ui/src/i18n/locales/pt-BR/prompts.json index e6abbb6bf6..c2a88d4eaa 100644 --- a/webview-ui/src/i18n/locales/pt-BR/prompts.json +++ b/webview-ui/src/i18n/locales/pt-BR/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Restaurar para padrão", "description": "Defina a expertise e personalidade do Roo para este modo. Esta descrição molda como o Roo se apresenta e aborda tarefas." }, + "description": { + "title": "Descrição curta (para humanos)", + "resetToDefault": "Redefinir para descrição padrão", + "description": "Uma breve descrição exibida no menu suspenso do seletor de modo." + }, "whenToUse": { "title": "Quando usar (opcional)", "description": "Descreva quando este modo deve ser usado. Isso ajuda o Orchestrator a escolher o modo certo para uma tarefa.", @@ -145,6 +150,10 @@ "label": "Ferramentas disponíveis", "description": "Selecione quais ferramentas este modo pode usar." }, + "description": { + "label": "Descrição curta (para humanos)", + "description": "Uma breve descrição exibida no menu suspenso do seletor de modo." + }, "customInstructions": { "label": "Instruções personalizadas (opcional)", "description": "Adicione diretrizes comportamentais específicas para este modo." diff --git a/webview-ui/src/i18n/locales/ru/prompts.json b/webview-ui/src/i18n/locales/ru/prompts.json index 2254f03979..07e9f91db8 100644 --- a/webview-ui/src/i18n/locales/ru/prompts.json +++ b/webview-ui/src/i18n/locales/ru/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Сбросить по умолчанию", "description": "Определите экспертность и личность Roo для этого режима. Это описание формирует, как Roo будет себя вести и выполнять задачи." }, + "description": { + "title": "Краткое описание (для людей)", + "resetToDefault": "Сбросить до описания по умолчанию", + "description": "Краткое описание, отображаемое в выпадающем списке выбора режима." + }, "whenToUse": { "title": "Когда использовать (необязательно)", "description": "Опишите, когда следует использовать этот режим. Это помогает Orchestrator выбрать правильный режим для задачи.", @@ -145,6 +150,10 @@ "label": "Доступные инструменты", "description": "Выберите, какие инструменты может использовать этот режим." }, + "description": { + "label": "Краткое описание (для людей)", + "description": "Краткое описание, отображаемое в выпадающем списке выбора режима." + }, "customInstructions": { "label": "Пользовательские инструкции (необязательно)", "description": "Добавьте рекомендации по поведению, специфичные для этого режима." diff --git a/webview-ui/src/i18n/locales/tr/prompts.json b/webview-ui/src/i18n/locales/tr/prompts.json index e90aa25f65..d091456e43 100644 --- a/webview-ui/src/i18n/locales/tr/prompts.json +++ b/webview-ui/src/i18n/locales/tr/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Varsayılana sıfırla", "description": "Bu mod için Roo'nun uzmanlığını ve kişiliğini tanımlayın. Bu açıklama, Roo'nun kendini nasıl sunduğunu ve görevlere nasıl yaklaştığını şekillendirir." }, + "description": { + "title": "Kısa açıklama (insanlar için)", + "resetToDefault": "Varsayılan açıklamaya sıfırla", + "description": "Mod seçici açılır menüsünde gösterilen kısa bir açıklama." + }, "whenToUse": { "title": "Ne zaman kullanılmalı (isteğe bağlı)", "description": "Bu modun ne zaman kullanılması gerektiğini açıklayın. Bu, Orchestrator'ın bir görev için doğru modu seçmesine yardımcı olur.", @@ -145,6 +150,10 @@ "label": "Kullanılabilir Araçlar", "description": "Bu modun hangi araçları kullanabileceğini seçin." }, + "description": { + "label": "Kısa açıklama (insanlar için)", + "description": "Mod seçici açılır menüsünde gösterilen kısa bir açıklama." + }, "customInstructions": { "label": "Özel Talimatlar (isteğe bağlı)", "description": "Bu mod için özel davranış yönergeleri ekleyin." diff --git a/webview-ui/src/i18n/locales/vi/prompts.json b/webview-ui/src/i18n/locales/vi/prompts.json index e2573711fa..7a0b311a02 100644 --- a/webview-ui/src/i18n/locales/vi/prompts.json +++ b/webview-ui/src/i18n/locales/vi/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "Đặt lại về mặc định", "description": "Xác định chuyên môn và tính cách của Roo cho chế độ này. Mô tả này định hình cách Roo giới thiệu bản thân và tiếp cận nhiệm vụ." }, + "description": { + "title": "Mô tả ngắn (cho con người)", + "resetToDefault": "Đặt lại về mô tả mặc định", + "description": "Mô tả ngắn gọn hiển thị trong menu thả xuống bộ chọn chế độ." + }, "whenToUse": { "title": "Khi nào nên sử dụng (tùy chọn)", "description": "Mô tả khi nào nên sử dụng chế độ này. Điều này giúp Orchestrator chọn chế độ phù hợp cho một nhiệm vụ.", @@ -145,6 +150,10 @@ "label": "Công cụ có sẵn", "description": "Chọn công cụ nào chế độ này có thể sử dụng." }, + "description": { + "label": "Mô tả ngắn (cho con người)", + "description": "Mô tả ngắn gọn hiển thị trong menu thả xuống bộ chọn chế độ." + }, "customInstructions": { "label": "Hướng dẫn tùy chỉnh (tùy chọn)", "description": "Thêm hướng dẫn hành vi dành riêng cho chế độ này." diff --git a/webview-ui/src/i18n/locales/zh-CN/prompts.json b/webview-ui/src/i18n/locales/zh-CN/prompts.json index 2ebc57855d..2abf922b14 100644 --- a/webview-ui/src/i18n/locales/zh-CN/prompts.json +++ b/webview-ui/src/i18n/locales/zh-CN/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "重置为默认值", "description": "设定专业领域和应答风格" }, + "description": { + "title": "简短描述(给人看的)", + "resetToDefault": "重置为默认描述", + "description": "在模式选择下拉菜单中显示的简短描述。" + }, "whenToUse": { "title": "使用场景(可选)", "description": "描述何时应该使用此模式。这有助于 Orchestrator 为任务选择合适的模式。", @@ -145,6 +150,10 @@ "label": "可用工具", "description": "选择可用工具" }, + "description": { + "label": "简短描述(给人看的)", + "description": "在模式选择下拉菜单中显示的简短描述。" + }, "customInstructions": { "label": "自定义指令(可选)", "description": "设置专属规则" diff --git a/webview-ui/src/i18n/locales/zh-TW/prompts.json b/webview-ui/src/i18n/locales/zh-TW/prompts.json index 2620af2caf..e853a5d91d 100644 --- a/webview-ui/src/i18n/locales/zh-TW/prompts.json +++ b/webview-ui/src/i18n/locales/zh-TW/prompts.json @@ -34,6 +34,11 @@ "resetToDefault": "重設為預設值", "description": "定義此模式下 Roo 的專業知識和個性。此描述會形塑 Roo 如何展現自己並處理工作。" }, + "description": { + "title": "簡短描述(給人看的)", + "resetToDefault": "重置為預設描述", + "description": "在模式選擇下拉選單中顯示的簡短描述。" + }, "whenToUse": { "title": "使用時機(選用)", "description": "描述何時應使用此模式。這有助於 Orchestrator 為任務選擇適當的模式。", @@ -145,6 +150,10 @@ "label": "可用工具", "description": "選擇此模式可使用的工具。" }, + "description": { + "label": "簡短描述(給人看的)", + "description": "在模式選擇下拉選單中顯示的簡短描述。" + }, "customInstructions": { "label": "自訂指令(選用)", "description": "為此模式新增特定的行為指南。" From f489b0bfef7baca681d85eecb3150c0b37ab9fe3 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Sun, 22 Jun 2025 18:31:00 +0100 Subject: [PATCH 24/35] Adds telemetry for modes: mode created, mode modified, mode settings opened --- packages/telemetry/src/TelemetryService.ts | 24 +++++++++ packages/types/src/telemetry.ts | 7 +++ src/core/webview/webviewMessageHandler.ts | 51 ++++++++++++++++++- webview-ui/src/components/modes/ModesView.tsx | 4 ++ 4 files changed, 85 insertions(+), 1 deletion(-) diff --git a/packages/telemetry/src/TelemetryService.ts b/packages/telemetry/src/TelemetryService.ts index 728809f8bd..e1ad7508e8 100644 --- a/packages/telemetry/src/TelemetryService.ts +++ b/packages/telemetry/src/TelemetryService.ts @@ -152,6 +152,30 @@ export class TelemetryService { this.captureEvent(TelemetryEventName.CONSECUTIVE_MISTAKE_ERROR, { taskId }) } + /** + * Captures when the ModesView settings UI is shown + */ + public captureModesViewShown(): void { + this.captureEvent(TelemetryEventName.MODE_SETTINGS_SHOWN) + } + + /** + * Captures when a setting is changed in ModesView + * @param settingName The name of the setting that was changed + */ + public captureModeSettingChanged(settingName: string): void { + this.captureEvent(TelemetryEventName.MODE_SETTINGS_CHANGED, { settingName }) + } + + /** + * Captures when a user creates a new custom mode + * @param modeSlug The slug of the custom mode + * @param modeName The name of the custom mode + */ + public captureCustomModeCreated(modeSlug: string, modeName: string): void { + this.captureEvent(TelemetryEventName.CUSTOM_MODE_CREATED, { modeSlug, modeName }) + } + /** * Captures a marketplace item installation event * @param itemId The unique identifier of the marketplace item diff --git a/packages/types/src/telemetry.ts b/packages/types/src/telemetry.ts index 7ac38cdd86..d042525717 100644 --- a/packages/types/src/telemetry.ts +++ b/packages/types/src/telemetry.ts @@ -31,6 +31,10 @@ export enum TelemetryEventName { CHECKPOINT_RESTORED = "Checkpoint Restored", CHECKPOINT_DIFFED = "Checkpoint Diffed", + MODE_SETTINGS_SHOWN = "Mode Settings Shown", + MODE_SETTINGS_CHANGED = "Mode Setting Changed", + CUSTOM_MODE_CREATED = "Custom Mode Created", + CONTEXT_CONDENSED = "Context Condensed", SLIDING_WINDOW_TRUNCATION = "Sliding Window Truncation", @@ -119,6 +123,9 @@ export const rooCodeTelemetryEventSchema = z.discriminatedUnion("type", [ TelemetryEventName.CONSECUTIVE_MISTAKE_ERROR, TelemetryEventName.CONTEXT_CONDENSED, TelemetryEventName.SLIDING_WINDOW_TRUNCATION, + TelemetryEventName.MODE_SETTINGS_SHOWN, + TelemetryEventName.MODE_SETTINGS_CHANGED, + TelemetryEventName.CUSTOM_MODE_CREATED, ]), properties: telemetryPropertiesSchema, }), diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 2b86fbdc20..8b4427d684 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -862,6 +862,21 @@ export const webviewMessageHandler = async ( hasOpenedModeSelector: currentState.hasOpenedModeSelector ?? false, } provider.postMessageToWebview({ type: "state", state: stateWithPrompts }) + + if (TelemetryService.hasInstance()) { + // Determine which setting was changed by comparing objects + const oldPrompt = existingPrompts[message.promptMode] || {} + const newPrompt = message.customPrompt + const changedSettings = Object.keys(newPrompt).filter( + (key) => + JSON.stringify((oldPrompt as Record)[key]) !== + JSON.stringify((newPrompt as Record)[key]), + ) + + if (changedSettings.length > 0) { + TelemetryService.instance.captureModeSettingChanged(changedSettings[0]) + } + } } break case "deleteMessage": { @@ -1326,12 +1341,41 @@ export const webviewMessageHandler = async ( break case "updateCustomMode": if (message.modeConfig) { + // Check if this is a new mode or an update to an existing mode + const existingModes = await provider.customModesManager.getCustomModes() + const isNewMode = !existingModes.some((mode) => mode.slug === message.modeConfig?.slug) + await provider.customModesManager.updateCustomMode(message.modeConfig.slug, message.modeConfig) // Update state after saving the mode const customModes = await provider.customModesManager.getCustomModes() await updateGlobalState("customModes", customModes) await updateGlobalState("mode", message.modeConfig.slug) await provider.postStateToWebview() + + // Track telemetry for custom mode creation or update + if (TelemetryService.hasInstance()) { + if (isNewMode) { + // This is a new custom mode + TelemetryService.instance.captureCustomModeCreated( + message.modeConfig.slug, + message.modeConfig.name, + ) + } else { + // Determine which setting was changed by comparing objects + const existingMode = existingModes.find((mode) => mode.slug === message.modeConfig?.slug) + const changedSettings = existingMode + ? Object.keys(message.modeConfig).filter( + (key) => + JSON.stringify((existingMode as Record)[key]) !== + JSON.stringify((message.modeConfig as Record)[key]), + ) + : [] + + if (changedSettings.length > 0) { + TelemetryService.instance.captureModeSettingChanged(changedSettings[0]) + } + } + } } break case "deleteCustomMode": @@ -1510,6 +1554,7 @@ export const webviewMessageHandler = async ( ) await provider.postStateToWebview() console.log(`Marketplace item installed and config file opened: ${configFilePath}`) + // Send success message to webview provider.postMessageToWebview({ type: "marketplaceInstallResult", @@ -1562,7 +1607,11 @@ export const webviewMessageHandler = async ( case "switchTab": { if (message.tab) { - // Send a message to the webview to switch to the specified tab + // This could be more generic, but keeping it specific for now + if (message.tab === "modes" && TelemetryService.hasInstance()) { + TelemetryService.instance.captureModesViewShown() + } + await provider.postMessageToWebview({ type: "action", action: "switchTab", tab: message.tab }) } break diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 62c88b3c5f..4cfd0e3021 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -125,6 +125,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { const updateCustomMode = useCallback((slug: string, modeConfig: ModeConfig) => { const source = modeConfig.source || "global" + vscode.postMessage({ type: "updateCustomMode", slug, @@ -269,6 +270,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { const newMode: ModeConfig = { slug: newModeSlug, name: newModeName, + description: newModeDescription.trim() || undefined, roleDefinition: newModeRoleDefinition.trim(), whenToUse: newModeWhenToUse.trim() || undefined, customInstructions: newModeCustomInstructions.trim() || undefined, @@ -314,6 +316,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { }, [ newModeName, newModeSlug, + newModeDescription, newModeRoleDefinition, newModeWhenToUse, // Add whenToUse dependency newModeCustomInstructions, @@ -361,6 +364,7 @@ const ModesView = ({ onDone }: ModesViewProps) => { } if (customMode) { const source = customMode.source || "global" + updateCustomMode(customMode.slug, { ...customMode, groups: newGroups, From 61d1799799d5ef79b64e17ce0e0e3195a3153fad Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Mon, 23 Jun 2025 07:22:21 +0100 Subject: [PATCH 25/35] Better type safety --- webview-ui/src/components/chat/ModeSelector.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index ccf24b5a2f..b6ab5e170c 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -8,6 +8,7 @@ import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" import { useAppTranslation } from "@/i18n/TranslationContext" +import { ModeConfig } from "@roo-code/types" interface ModeSelectorProps { value: Mode @@ -16,7 +17,7 @@ interface ModeSelectorProps { title?: string triggerClassName?: string modeShortcutText: string - customModes?: any[] + customModes?: ModeConfig[] } export const ModeSelector: React.FC = ({ From 7302a3e44fc4661a058c47456010c5e7bdcbce11 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Mon, 23 Jun 2025 07:25:01 +0100 Subject: [PATCH 26/35] Removes unnecessary fallback case --- webview-ui/src/components/chat/ModeSelector.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index b6ab5e170c..3fd50ae8ed 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -142,7 +142,7 @@ export const ModeSelector: React.FC = ({

{mode.name}

{mode.description && (

- {mode.description || mode.whenToUse} + {mode.description}

)}
From 0185d093aab25492e91dc446e7a2f017634e85a6 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Mon, 23 Jun 2025 07:35:31 +0100 Subject: [PATCH 27/35] Removes PR cruft --- .../MarketplaceDeepLinkExample.tsx | 42 --------------- .../marketplace/MarketplaceDeepLinkTest.tsx | 51 ------------------- .../src/components/ui/select-dropdown.tsx | 36 ++----------- 3 files changed, 3 insertions(+), 126 deletions(-) delete mode 100644 webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx delete mode 100644 webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx diff --git a/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx b/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx deleted file mode 100644 index 36f670ed54..0000000000 --- a/webview-ui/src/components/marketplace/MarketplaceDeepLinkExample.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react" -import { Button } from "@/components/ui/button" - -/** - * Example component demonstrating how to deep link to specific tabs in the MarketplaceView - * - * This component provides buttons that navigate directly to either the MCP or Mode tabs - * within the Marketplace view. - */ -export function MarketplaceDeepLinkExample() { - const openMcpMarketplace = () => { - window.postMessage( - { - type: "action", - action: "marketplaceButtonClicked", - values: { marketplaceTab: "mcp" }, - }, - "*", - ) - } - - const openModeMarketplace = () => { - window.postMessage( - { - type: "action", - action: "marketplaceButtonClicked", - values: { marketplaceTab: "mode" }, - }, - "*", - ) - } - - return ( -
-

Marketplace Deep Links

-
- - -
-
- ) -} diff --git a/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx b/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx deleted file mode 100644 index af7b173f0b..0000000000 --- a/webview-ui/src/components/marketplace/MarketplaceDeepLinkTest.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from "react" -import { Button } from "@/components/ui/button" - -/** - * Test component for verifying the MarketplaceView deep linking functionality - * - * This component provides buttons that navigate directly to either the MCP or Mode tabs - * within the Marketplace view, demonstrating the deep linking capability. - */ -export function MarketplaceDeepLinkTest() { - // Function to open the MCP tab in the marketplace - const openMcpMarketplace = () => { - window.postMessage( - { - type: "action", - action: "marketplaceButtonClicked", - values: { marketplaceTab: "mcp" }, - }, - "*", - ) - } - - // Function to open the Mode tab in the marketplace - const openModeMarketplace = () => { - window.postMessage( - { - type: "action", - action: "marketplaceButtonClicked", - values: { marketplaceTab: "mode" }, - }, - "*", - ) - } - - return ( -
-

MarketplaceView Deep Linking Test

-

- Click the buttons below to test deep linking to specific tabs in the MarketplaceView. -

-
- - -
-
- ) -} diff --git a/webview-ui/src/components/ui/select-dropdown.tsx b/webview-ui/src/components/ui/select-dropdown.tsx index 556ea91022..7fcc6884b7 100644 --- a/webview-ui/src/components/ui/select-dropdown.tsx +++ b/webview-ui/src/components/ui/select-dropdown.tsx @@ -13,7 +13,6 @@ export enum DropdownOptionType { SEPARATOR = "separator", SHORTCUT = "shortcut", ACTION = "action", - COMPONENT = "component", } export interface DropdownOption { @@ -22,7 +21,6 @@ export interface DropdownOption { disabled?: boolean type?: DropdownOptionType pinned?: boolean - component?: React.ReactNode } export interface SelectDropdownProps { @@ -104,10 +102,7 @@ export const SelectDropdown = React.memo( return options .filter( (option) => - option.type !== DropdownOptionType.SEPARATOR && - option.type !== DropdownOptionType.SHORTCUT && - // Only include COMPONENT type if it has a label or value to search by - !(option.type === DropdownOptionType.COMPONENT && !option.label && !option.value), + option.type !== DropdownOptionType.SEPARATOR && option.type !== DropdownOptionType.SHORTCUT, ) .map((option) => ({ original: option, @@ -130,13 +125,9 @@ export const SelectDropdown = React.memo( // Get fuzzy matching items - only perform search if we have a search value const matchingItems = fzfInstance.find(searchValue).map((result) => result.item.original) - // Always include separators, shortcuts, and components without searchable text + // Always include separators and shortcuts return options.filter((option) => { - if ( - option.type === DropdownOptionType.SEPARATOR || - option.type === DropdownOptionType.SHORTCUT || - (option.type === DropdownOptionType.COMPONENT && !option.label && !option.value) - ) { + if (option.type === DropdownOptionType.SEPARATOR || option.type === DropdownOptionType.SHORTCUT) { return true } @@ -272,27 +263,6 @@ export const SelectDropdown = React.memo( ) } - if (option.type === DropdownOptionType.COMPONENT && option.component) { - return ( -
!option.disabled && handleSelect(option.value)} - className={cn( - "px-3 py-1.5 text-sm cursor-pointer", - option.disabled - ? "opacity-50 cursor-not-allowed" - : "hover:bg-vscode-list-hoverBackground", - option.value === value - ? "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground" - : "", - itemClassName, - )} - data-testid="dropdown-component-item"> - {option.component} -
- ) - } - // Use stable keys for better reconciliation const itemKey = `item-${option.value || option.label || index}` From 1b308cade75182b54a48f0ad4f328e6a1b4b53b4 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 24 Jun 2025 10:17:10 -0400 Subject: [PATCH 28/35] Reset READMEs --- locales/ca/README.md | 70 ++++++++++++++++++++--------------------- locales/de/README.md | 70 ++++++++++++++++++++--------------------- locales/es/README.md | 70 ++++++++++++++++++++--------------------- locales/fr/README.md | 70 ++++++++++++++++++++--------------------- locales/hi/README.md | 70 ++++++++++++++++++++--------------------- locales/id/README.md | 70 ++++++++++++++++++++--------------------- locales/it/README.md | 70 ++++++++++++++++++++--------------------- locales/ja/README.md | 70 ++++++++++++++++++++--------------------- locales/ko/README.md | 70 ++++++++++++++++++++--------------------- locales/nl/README.md | 70 ++++++++++++++++++++--------------------- locales/pl/README.md | 70 ++++++++++++++++++++--------------------- locales/pt-BR/README.md | 70 ++++++++++++++++++++--------------------- locales/ru/README.md | 70 ++++++++++++++++++++--------------------- locales/tr/README.md | 70 ++++++++++++++++++++--------------------- locales/vi/README.md | 70 ++++++++++++++++++++--------------------- locales/zh-CN/README.md | 70 ++++++++++++++++++++--------------------- locales/zh-TW/README.md | 70 ++++++++++++++++++++--------------------- 17 files changed, 578 insertions(+), 612 deletions(-) diff --git a/locales/ca/README.md b/locales/ca/README.md index 8ac9d5d76b..871c295cac 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -181,42 +181,40 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Llicència diff --git a/locales/de/README.md b/locales/de/README.md index 652f90c12d..c5b19d46af 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -181,42 +181,40 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Lizenz diff --git a/locales/es/README.md b/locales/es/README.md index 9c29e1a169..efd25ae17d 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -181,42 +181,40 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licencia diff --git a/locales/fr/README.md b/locales/fr/README.md index 0053e65835..893e73cfa0 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -181,42 +181,40 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licence diff --git a/locales/hi/README.md b/locales/hi/README.md index 4fc548e4b8..3b99b0d1bd 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -181,42 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## लाइसेंस diff --git a/locales/id/README.md b/locales/id/README.md index c34b0c3f56..dc37028884 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -175,42 +175,40 @@ Kami menyukai kontribusi komunitas! Mulai dengan membaca [CONTRIBUTING.md](CONTR Terima kasih kepada semua kontributor kami yang telah membantu membuat Roo Code lebih baik! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## License diff --git a/locales/it/README.md b/locales/it/README.md index 9909d5142a..e69005f1ca 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -181,42 +181,40 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licenza diff --git a/locales/ja/README.md b/locales/ja/README.md index 010de90e9e..4cabfc4a37 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -181,42 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## ライセンス diff --git a/locales/ko/README.md b/locales/ko/README.md index 21eedcb903..c86eb7d3cb 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -181,42 +181,40 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 라이선스 diff --git a/locales/nl/README.md b/locales/nl/README.md index 8025cb1701..0ccca95ceb 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -181,42 +181,40 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licentie diff --git a/locales/pl/README.md b/locales/pl/README.md index 6b569ca4d3..608fd86170 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -181,42 +181,40 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licencja diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index 839a133805..e75746682a 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -181,42 +181,40 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Licença diff --git a/locales/ru/README.md b/locales/ru/README.md index 09cb15c22c..fba6d2193a 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -181,42 +181,40 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Лицензия diff --git a/locales/tr/README.md b/locales/tr/README.md index 41e443e7f7..a9cb0b5153 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -181,42 +181,40 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Lisans diff --git a/locales/vi/README.md b/locales/vi/README.md index c535e8b291..dceb7c4de1 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -181,42 +181,40 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## Giấy Phép diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index c8bc7147d9..d2303ef31e 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -181,42 +181,40 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 许可证 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 26447ae72a..8e709bacb2 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -182,42 +182,40 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jquanton
jquanton
| nissa-seru
nissa-seru
| NyxJae
NyxJae
| jr
jr
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| monotykamary
monotykamary
| cannuri
cannuri
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| zhangtony239
zhangtony239
| qdaxb
qdaxb
| -| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| vigneshsubbiah16
vigneshsubbiah16
| lloydchang
lloydchang
| dtrugman
dtrugman
| Szpadel
Szpadel
| -| chrarnoldus
chrarnoldus
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| -| kiwina
kiwina
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| afshawnlotfi
afshawnlotfi
| RaySinner
RaySinner
| nbihan-mediware
nbihan-mediware
| -| ChuKhaLi
ChuKhaLi
| hassoncs
hassoncs
| emshvac
emshvac
| kyle-apex
kyle-apex
| noritaka1166
noritaka1166
| pdecat
pdecat
| -| SannidhyaSah
SannidhyaSah
| StevenTCramer
StevenTCramer
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| -| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| -| yt3trees
yt3trees
| benzntech
benzntech
| axkirillov
axkirillov
| anton-otee
anton-otee
| bramburn
bramburn
| olearycrew
olearycrew
| -| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| ross
ross
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| -| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| -| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| -| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| -| tgfjt
tgfjt
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| -| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| -| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| kohii
kohii
| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| -| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| chadgauth
chadgauth
| brunobergher
brunobergher
| thecolorblue
thecolorblue
| -| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| -| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KanTakahiro
KanTakahiro
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| celestial-vault
celestial-vault
| | | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jquanton
jquanton
|nissa-seru
nissa-seru
|NyxJae
NyxJae
|jr
jr
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|monotykamary
monotykamary
|cannuri
cannuri
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|zhangtony239
zhangtony239
|qdaxb
qdaxb
| +|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|vigneshsubbiah16
vigneshsubbiah16
|lloydchang
lloydchang
|dtrugman
dtrugman
|Szpadel
Szpadel
| +|chrarnoldus
chrarnoldus
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
| +|kiwina
kiwina
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
|afshawnlotfi
afshawnlotfi
|RaySinner
RaySinner
|nbihan-mediware
nbihan-mediware
| +|ChuKhaLi
ChuKhaLi
|hassoncs
hassoncs
|emshvac
emshvac
|kyle-apex
kyle-apex
|noritaka1166
noritaka1166
|pdecat
pdecat
| +|SannidhyaSah
SannidhyaSah
|StevenTCramer
StevenTCramer
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
| +|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
| +|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
|olearycrew
olearycrew
| +|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|ross
ross
|philfung
philfung
|napter
napter
|mdp
mdp
| +|SplittyDev
SplittyDev
|jcbdev
jcbdev
|julionav
julionav
|Chenjiayuan195
Chenjiayuan195
|kinandan
kinandan
|jwcraig
jwcraig
| +|shoopapa
shoopapa
|im47cn
im47cn
|hongzio
hongzio
|hatsu38
hatsu38
|GOODBOY008
GOODBOY008
|forestyoo
forestyoo
| +|dqroid
dqroid
|dairui1
dairui1
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|nevermorec
nevermorec
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
| +|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
| +|lightrabbit
lightrabbit
|kohii
kohii
|AlexandruSmirnov
AlexandruSmirnov
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
| +|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
|chadgauth
chadgauth
|brunobergher
brunobergher
| +|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
| +|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|KanTakahiro
KanTakahiro
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|celestial-vault
celestial-vault
|linegel
linegel
| | | | ## 授權 From 03e4fe903e781283b228e68b737d4375d036447c Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 24 Jun 2025 10:18:51 -0400 Subject: [PATCH 29/35] Reset contributor script --- scripts/update-contributors.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/update-contributors.js b/scripts/update-contributors.js index 64ade5bea2..6bd4c35f0c 100644 --- a/scripts/update-contributors.js +++ b/scripts/update-contributors.js @@ -183,14 +183,14 @@ async function readReadme() { * @param {Array} contributors Array of contributor objects from GitHub API * @returns {string} HTML for contributors section */ -const EXCLUDED_LOGIN_SUBSTRINGS = ["[bot]", "R00-B0T"] -const EXCLUDED_LOGIN_EXACTS = ["cursor", "roomote"] +const EXCLUDED_LOGIN_SUBSTRINGS = ['[bot]', 'R00-B0T']; +const EXCLUDED_LOGIN_EXACTS = ['cursor', 'roomote']; function formatContributorsSection(contributors) { // Filter out GitHub Actions bot, cursor, and roomote - const filteredContributors = contributors.filter( - (c) => - !EXCLUDED_LOGIN_SUBSTRINGS.some((sub) => c.login.includes(sub)) && !EXCLUDED_LOGIN_EXACTS.includes(c.login), + const filteredContributors = contributors.filter((c) => + !EXCLUDED_LOGIN_SUBSTRINGS.some(sub => c.login.includes(sub)) && + !EXCLUDED_LOGIN_EXACTS.includes(c.login) ) // Start building with Markdown table format From 07f5f3fc4a138e83bd5319db73c6b5821f94e75d Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 24 Jun 2025 11:54:50 -0400 Subject: [PATCH 30/35] Fix tests --- .../modes/__tests__/ModesView.spec.tsx | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx index 190b11150d..878ad95b11 100644 --- a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx +++ b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx @@ -162,7 +162,7 @@ describe("PromptsView", () => { expect(screen.queryByTestId("role-definition-reset")).not.toBeInTheDocument() }) - it("resets description only for built-in modes", async () => { + it("description section behavior for different mode types", async () => { const customMode = { slug: "custom-mode", name: "Custom Mode", @@ -171,7 +171,7 @@ describe("PromptsView", () => { groups: [], } - // Test with built-in mode (code) + // Test with built-in mode (code) - description section should not be shown const { unmount } = render( @@ -179,25 +179,14 @@ describe("PromptsView", () => { , ) - // Find and click the description reset button - const resetButton = screen.getByTestId("description-reset") - expect(resetButton).toBeInTheDocument() - await fireEvent.click(resetButton) - - // Verify it only resets description - // When resetting a built-in mode's description, the field should be removed entirely - // from the customPrompt object, not set to undefined. - // This allows the default description from the built-in mode to be used instead. - expect(vscode.postMessage).toHaveBeenCalledWith({ - type: "updatePrompt", - promptMode: "code", - customPrompt: {}, // Empty object because the description field is removed entirely - }) + // Verify description reset button is not present for built-in modes + // because the description section is only shown for custom modes + expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() // Cleanup before testing custom mode unmount() - // Test with custom mode + // Test with custom mode - description section should be shown render( @@ -205,8 +194,12 @@ describe("PromptsView", () => { , ) - // Verify reset button is not present for custom mode + // Verify description section is present for custom modes + // but reset button is not present (since it's only for built-in modes) expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() + + // Verify the description text field is present for custom modes + expect(screen.getByTestId("custom-mode-description-textfield")).toBeInTheDocument() }) it("handles clearing custom instructions correctly", async () => { From 57977aa9185e32c3caf62023b436615521444910 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 24 Jun 2025 12:20:01 -0400 Subject: [PATCH 31/35] Track all tab switches in posthog --- packages/telemetry/src/TelemetryService.ts | 7 ++++--- packages/types/src/telemetry.ts | 4 ++-- src/core/webview/webviewMessageHandler.ts | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/telemetry/src/TelemetryService.ts b/packages/telemetry/src/TelemetryService.ts index e1ad7508e8..7a11e3d388 100644 --- a/packages/telemetry/src/TelemetryService.ts +++ b/packages/telemetry/src/TelemetryService.ts @@ -153,10 +153,11 @@ export class TelemetryService { } /** - * Captures when the ModesView settings UI is shown + * Captures when a tab is shown due to user action + * @param tab The tab that was shown */ - public captureModesViewShown(): void { - this.captureEvent(TelemetryEventName.MODE_SETTINGS_SHOWN) + public captureTabShown(tab: string): void { + this.captureEvent(TelemetryEventName.TAB_SHOWN, { tab }) } /** diff --git a/packages/types/src/telemetry.ts b/packages/types/src/telemetry.ts index d042525717..231bf11e3f 100644 --- a/packages/types/src/telemetry.ts +++ b/packages/types/src/telemetry.ts @@ -31,7 +31,7 @@ export enum TelemetryEventName { CHECKPOINT_RESTORED = "Checkpoint Restored", CHECKPOINT_DIFFED = "Checkpoint Diffed", - MODE_SETTINGS_SHOWN = "Mode Settings Shown", + TAB_SHOWN = "Tab Shown", MODE_SETTINGS_CHANGED = "Mode Setting Changed", CUSTOM_MODE_CREATED = "Custom Mode Created", @@ -123,7 +123,7 @@ export const rooCodeTelemetryEventSchema = z.discriminatedUnion("type", [ TelemetryEventName.CONSECUTIVE_MISTAKE_ERROR, TelemetryEventName.CONTEXT_CONDENSED, TelemetryEventName.SLIDING_WINDOW_TRUNCATION, - TelemetryEventName.MODE_SETTINGS_SHOWN, + TelemetryEventName.TAB_SHOWN, TelemetryEventName.MODE_SETTINGS_CHANGED, TelemetryEventName.CUSTOM_MODE_CREATED, ]), diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 77f9217475..0c622eacc0 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -1703,9 +1703,9 @@ export const webviewMessageHandler = async ( case "switchTab": { if (message.tab) { - // This could be more generic, but keeping it specific for now - if (message.tab === "modes" && TelemetryService.hasInstance()) { - TelemetryService.instance.captureModesViewShown() + // Capture tab shown event for all switchTab messages (which are user-initiated) + if (TelemetryService.hasInstance()) { + TelemetryService.instance.captureTabShown(message.tab) } await provider.postMessageToWebview({ type: "action", action: "switchTab", tab: message.tab }) From 35e2db242587398165c9dcb4533129413fae39c1 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 24 Jun 2025 12:25:45 -0400 Subject: [PATCH 32/35] Add a missing translation --- webview-ui/src/i18n/locales/it/prompts.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/webview-ui/src/i18n/locales/it/prompts.json b/webview-ui/src/i18n/locales/it/prompts.json index c994d5b8b5..c556a18aac 100644 --- a/webview-ui/src/i18n/locales/it/prompts.json +++ b/webview-ui/src/i18n/locales/it/prompts.json @@ -142,6 +142,10 @@ "label": "Definizione del ruolo", "description": "Definisci l'esperienza e la personalità di Roo per questa modalità." }, + "description": { + "label": "Descrizione breve (per umani)", + "description": "Una breve descrizione mostrata nel menu a discesa del selettore di modalità." + }, "whenToUse": { "label": "Quando utilizzare (opzionale)", "description": "Fornisci una chiara descrizione di quando questa modalità è più efficace e per quali tipi di compiti eccelle." From 4452bdce1338321f417181fd81bb098d29cd345a Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Tue, 24 Jun 2025 12:51:43 -0500 Subject: [PATCH 33/35] fix: streamline description rendering for custom modes --- webview-ui/src/components/modes/ModesView.tsx | 103 +++++++++--------- 1 file changed, 50 insertions(+), 53 deletions(-) diff --git a/webview-ui/src/components/modes/ModesView.tsx b/webview-ui/src/components/modes/ModesView.tsx index 4cfd0e3021..42069de8f8 100644 --- a/webview-ui/src/components/modes/ModesView.tsx +++ b/webview-ui/src/components/modes/ModesView.tsx @@ -729,60 +729,57 @@ const ModesView = ({ onDone }: ModesViewProps) => {
{/* Description section */} - {/* Only show description for custom modes */} - {visualMode && findModeBySlug(visualMode, customModes) && ( -
-
-
{t("prompts:description.title")}
- {!findModeBySlug(visualMode, customModes) && ( - - )} -
-
- {t("prompts:description.description")} -
- { - const customMode = findModeBySlug(visualMode, customModes) - const prompt = customModePrompts?.[visualMode] as PromptComponent - return customMode?.description ?? prompt?.description ?? getDescription(visualMode) - })()} - onChange={(e) => { - const value = - (e as unknown as CustomEvent)?.detail?.target?.value || - ((e as any).target as HTMLTextAreaElement).value - const customMode = findModeBySlug(visualMode, customModes) - if (customMode) { - // For custom modes, update the JSON file - updateCustomMode(visualMode, { - ...customMode, - description: value.trim() || undefined, - source: customMode.source || "global", - }) - } else { - // For built-in modes, update the prompts - updateAgentPrompt(visualMode, { - description: value.trim() || undefined, - }) - } - }} - className="w-full" - data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} - /> +
+
+
{t("prompts:description.title")}
+ {!findModeBySlug(visualMode, customModes) && ( + + )}
- )} +
+ {t("prompts:description.description")} +
+ { + const customMode = findModeBySlug(visualMode, customModes) + const prompt = customModePrompts?.[visualMode] as PromptComponent + return customMode?.description ?? prompt?.description ?? getDescription(visualMode) + })()} + onChange={(e) => { + const value = + (e as unknown as CustomEvent)?.detail?.target?.value || + ((e as any).target as HTMLTextAreaElement).value + const customMode = findModeBySlug(visualMode, customModes) + if (customMode) { + // For custom modes, update the JSON file + updateCustomMode(visualMode, { + ...customMode, + description: value.trim() || undefined, + source: customMode.source || "global", + }) + } else { + // For built-in modes, update the prompts + updateAgentPrompt(visualMode, { + description: value.trim() || undefined, + }) + } + }} + className="w-full" + data-testid={`${getCurrentMode()?.slug || "code"}-description-textfield`} + /> +
{/* When to Use section */}
From 0a0c0dacddd98a47d0248f0be87491d9ce9b1b31 Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Tue, 24 Jun 2025 12:52:25 -0500 Subject: [PATCH 34/35] feat: enhance ModeSelector with custom mode prompts and add tests --- .../src/components/chat/ChatTextArea.tsx | 12 ++-- .../src/components/chat/ModeSelector.tsx | 20 +++++-- .../chat/__tests__/ModeSelector.spec.tsx | 58 +++++++++++++++++++ 3 files changed, 80 insertions(+), 10 deletions(-) create mode 100644 webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 09456fbc80..910b671725 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -75,6 +75,7 @@ const ChatTextArea = forwardRef( currentApiConfigName, listApiConfigMeta, customModes, + customModePrompts, cwd, pinnedApiConfigs, togglePinnedApiConfig, @@ -194,6 +195,8 @@ const ChatTextArea = forwardRef( } }, [inputValue, sendingDisabled, setInputValue, t]) + const allModes = useMemo(() => getAllModes(customModes), [customModes]) + const queryItems = useMemo(() => { return [ { type: ContextMenuOptionType.Problems, value: "problems" }, @@ -323,7 +326,7 @@ const ChatTextArea = forwardRef( selectedType, queryItems, fileSearchResults, - getAllModes(customModes), + allModes, ) const optionsLength = options.length @@ -360,7 +363,7 @@ const ChatTextArea = forwardRef( selectedType, queryItems, fileSearchResults, - getAllModes(customModes), + allModes, )[selectedMenuIndex] if ( selectedOption && @@ -447,7 +450,7 @@ const ChatTextArea = forwardRef( setInputValue, justDeletedSpaceAfterMention, queryItems, - customModes, + allModes, fileSearchResults, handleHistoryNavigation, resetHistoryNavigation, @@ -846,7 +849,7 @@ const ChatTextArea = forwardRef( setSelectedIndex={setSelectedMenuIndex} selectedType={selectedType} queryItems={queryItems} - modes={getAllModes(customModes)} + modes={allModes} loading={searchLoading} dynamicSearchResults={fileSearchResults} /> @@ -1008,6 +1011,7 @@ const ChatTextArea = forwardRef( triggerClassName="w-full" modeShortcutText={modeShortcutText} customModes={customModes} + customModePrompts={customModePrompts} />
diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 3fd50ae8ed..f066dabfa6 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -1,6 +1,5 @@ import React from "react" import { ChevronUp, Check } from "lucide-react" -import { Mode, getAllModes } from "@roo/modes" import { cn } from "@/lib/utils" import { useRooPortal } from "@/components/ui/hooks/useRooPortal" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui" @@ -8,7 +7,8 @@ import { IconButton } from "./IconButton" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" import { useAppTranslation } from "@/i18n/TranslationContext" -import { ModeConfig } from "@roo-code/types" +import { Mode, getAllModes } from "@roo/modes" +import { ModeConfig, CustomModePrompts } from "@roo-code/types" interface ModeSelectorProps { value: Mode @@ -18,9 +18,10 @@ interface ModeSelectorProps { triggerClassName?: string modeShortcutText: string customModes?: ModeConfig[] + customModePrompts?: CustomModePrompts } -export const ModeSelector: React.FC = ({ +export const ModeSelector = ({ value, onChange, disabled = false, @@ -28,7 +29,8 @@ export const ModeSelector: React.FC = ({ triggerClassName = "", modeShortcutText, customModes, -}) => { + customModePrompts, +}: ModeSelectorProps) => { const [open, setOpen] = React.useState(false) const portalContainer = useRooPortal("roo-portal") const { hasOpenedModeSelector, setHasOpenedModeSelector } = useExtensionState() @@ -41,8 +43,14 @@ export const ModeSelector: React.FC = ({ } } - // Get all available modes - const modes = React.useMemo(() => getAllModes(customModes), [customModes]) + // Get all modes including custom modes and merge custom prompt descriptions + const modes = React.useMemo(() => { + const allModes = getAllModes(customModes) + return allModes.map((mode) => ({ + ...mode, + description: customModePrompts?.[mode.slug]?.description ?? mode.description, + })) + }, [customModes, customModePrompts]) // Find the selected mode const selectedMode = React.useMemo(() => modes.find((mode) => mode.slug === value), [modes, value]) diff --git a/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx new file mode 100644 index 0000000000..4d07a6de46 --- /dev/null +++ b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx @@ -0,0 +1,58 @@ +import React from "react" +import { render, screen } from "@testing-library/react" +import { describe, test, expect, vi } from "vitest" +import ModeSelector from "../ModeSelector" +import { Mode } from "@roo/modes" + +// Mock the dependencies +vi.mock("@/utils/vscode", () => ({ + vscode: { + postMessage: vi.fn(), + }, +})) + +vi.mock("@/context/ExtensionStateContext", () => ({ + useExtensionState: () => ({ + hasOpenedModeSelector: false, + setHasOpenedModeSelector: vi.fn(), + }), +})) + +vi.mock("@/i18n/TranslationContext", () => ({ + useAppTranslation: () => ({ + t: (key: string) => key, + }), +})) + +vi.mock("@/components/ui/hooks/useRooPortal", () => ({ + useRooPortal: () => document.body, +})) + +describe("ModeSelector", () => { + test("shows custom description from customModePrompts", () => { + const customModePrompts = { + code: { + description: "Custom code mode description", + }, + } + + render( + , + ) + + // The component should be rendered + expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() + }) + + test("falls back to default description when no custom prompt", () => { + render() + + // The component should be rendered + expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() + }) +}) From 0bbdd321a5edde93ae763fdb476151ba012412f7 Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Tue, 24 Jun 2025 13:19:28 -0500 Subject: [PATCH 35/35] fix: update description section behavior for built-in modes in PromptsView tests --- .../src/components/modes/__tests__/ModesView.spec.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx index 878ad95b11..4ff7f4cf87 100644 --- a/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx +++ b/webview-ui/src/components/modes/__tests__/ModesView.spec.tsx @@ -171,7 +171,7 @@ describe("PromptsView", () => { groups: [], } - // Test with built-in mode (code) - description section should not be shown + // Test with built-in mode (code) - description section should be shown with reset button const { unmount } = render( @@ -179,9 +179,9 @@ describe("PromptsView", () => { , ) - // Verify description reset button is not present for built-in modes - // because the description section is only shown for custom modes - expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() + // Verify description reset button IS present for built-in modes + // because built-in modes can have their descriptions customized and reset + expect(screen.queryByTestId("description-reset")).toBeInTheDocument() // Cleanup before testing custom mode unmount() @@ -195,7 +195,7 @@ describe("PromptsView", () => { ) // Verify description section is present for custom modes - // but reset button is not present (since it's only for built-in modes) + // but reset button is NOT present (since custom modes manage their own descriptions) expect(screen.queryByTestId("description-reset")).not.toBeInTheDocument() // Verify the description text field is present for custom modes