mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
feat: expand settingDefaults to include ALL settings with defaults
IMPORTANT: Every setting with a default value is now in settingDefaults. This enables clearDefaultSettings() to properly clear ALL default values from storage on every startup, ensuring defaults are never persisted. Added settings: - Auto-approval: autoApprovalEnabled, alwaysAllowReadOnly, alwaysAllowWrite, alwaysAllowBrowser, alwaysAllowMcp, alwaysAllowModeSwitch, alwaysAllowSubtasks, alwaysAllowExecute, requestDelaySeconds, followupAutoApproveTimeoutMs, etc. - Terminal: terminalShellIntegrationDisabled, terminalCommandDelay, terminalPowershellCounter, terminalZsh*, terminalCompressProgressBar - Other: diagnosticsEnabled, historyPreviewCollapsed, hasOpenedModeSelector, enableMcpServerCreation, rateLimitSeconds Removed settings: - diffEnabled, fuzzyMatchThreshold (removed from schema) Updated test expectations to match new comprehensive defaults list.
This commit is contained in:
parent
28ab2e77f2
commit
9a82299c48
2 changed files with 105 additions and 29 deletions
|
|
@ -1,9 +1,29 @@
|
|||
import { describe, expect, it } from "vitest"
|
||||
import { settingDefaults, getSettingWithDefault } from "../defaults.js"
|
||||
import { DEFAULT_CHECKPOINT_TIMEOUT_SECONDS } from "../global-settings.js"
|
||||
import { DEFAULT_CHECKPOINT_TIMEOUT_SECONDS, DEFAULT_WRITE_DELAY_MS } from "../global-settings.js"
|
||||
|
||||
describe("settingDefaults", () => {
|
||||
it("should have all expected default values", () => {
|
||||
// Auto-approval settings (all default to false for safety)
|
||||
expect(settingDefaults.autoApprovalEnabled).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowReadOnly).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowReadOnlyOutsideWorkspace).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowWrite).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowWriteOutsideWorkspace).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowWriteProtected).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowBrowser).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowMcp).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowModeSwitch).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowSubtasks).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowExecute).toBe(false)
|
||||
expect(settingDefaults.alwaysAllowFollowupQuestions).toBe(false)
|
||||
expect(settingDefaults.requestDelaySeconds).toBe(0)
|
||||
expect(settingDefaults.followupAutoApproveTimeoutMs).toBe(0)
|
||||
expect(settingDefaults.commandExecutionTimeout).toBe(0)
|
||||
expect(settingDefaults.preventCompletionWithOpenTodos).toBe(false)
|
||||
expect(settingDefaults.autoCondenseContext).toBe(false)
|
||||
expect(settingDefaults.autoCondenseContextPercent).toBe(50)
|
||||
|
||||
// Browser settings
|
||||
expect(settingDefaults.browserToolEnabled).toBe(true)
|
||||
expect(settingDefaults.browserViewportSize).toBe("900x600")
|
||||
|
|
@ -16,10 +36,6 @@ describe("settingDefaults", () => {
|
|||
expect(settingDefaults.ttsEnabled).toBe(true)
|
||||
expect(settingDefaults.ttsSpeed).toBe(1.0)
|
||||
|
||||
// Diff/Editor settings
|
||||
expect(settingDefaults.diffEnabled).toBe(true)
|
||||
expect(settingDefaults.fuzzyMatchThreshold).toBe(1.0)
|
||||
|
||||
// Checkpoint settings
|
||||
expect(settingDefaults.enableCheckpoints).toBe(false)
|
||||
expect(settingDefaults.checkpointTimeout).toBe(DEFAULT_CHECKPOINT_TIMEOUT_SECONDS)
|
||||
|
|
@ -28,6 +44,14 @@ describe("settingDefaults", () => {
|
|||
expect(settingDefaults.terminalOutputLineLimit).toBe(500)
|
||||
expect(settingDefaults.terminalOutputCharacterLimit).toBe(50_000)
|
||||
expect(settingDefaults.terminalShellIntegrationTimeout).toBe(30_000)
|
||||
expect(settingDefaults.terminalShellIntegrationDisabled).toBe(false)
|
||||
expect(settingDefaults.terminalCommandDelay).toBe(0)
|
||||
expect(settingDefaults.terminalPowershellCounter).toBe(false)
|
||||
expect(settingDefaults.terminalZshClearEolMark).toBe(false)
|
||||
expect(settingDefaults.terminalZshOhMy).toBe(false)
|
||||
expect(settingDefaults.terminalZshP10k).toBe(false)
|
||||
expect(settingDefaults.terminalZdotdir).toBe(false)
|
||||
expect(settingDefaults.terminalCompressProgressBar).toBe(false)
|
||||
|
||||
// Context management settings
|
||||
expect(settingDefaults.maxOpenTabsContext).toBe(20)
|
||||
|
|
@ -40,18 +64,19 @@ describe("settingDefaults", () => {
|
|||
expect(settingDefaults.maxConcurrentFileReads).toBe(5)
|
||||
|
||||
// Diagnostic settings
|
||||
expect(settingDefaults.diagnosticsEnabled).toBe(false)
|
||||
expect(settingDefaults.includeDiagnosticMessages).toBe(true)
|
||||
expect(settingDefaults.maxDiagnosticMessages).toBe(50)
|
||||
|
||||
// Auto-approval settings
|
||||
expect(settingDefaults.alwaysAllowFollowupQuestions).toBe(false)
|
||||
expect(settingDefaults.writeDelayMs).toBe(DEFAULT_WRITE_DELAY_MS)
|
||||
|
||||
// Prompt enhancement settings
|
||||
expect(settingDefaults.includeTaskHistoryInEnhance).toBe(true)
|
||||
|
||||
// UI settings
|
||||
expect(settingDefaults.reasoningBlockCollapsed).toBe(true)
|
||||
expect(settingDefaults.historyPreviewCollapsed).toBe(false)
|
||||
expect(settingDefaults.enterBehavior).toBe("send")
|
||||
expect(settingDefaults.hasOpenedModeSelector).toBe(false)
|
||||
|
||||
// Environment details settings
|
||||
expect(settingDefaults.includeCurrentTime).toBe(true)
|
||||
|
|
@ -63,6 +88,24 @@ describe("settingDefaults", () => {
|
|||
|
||||
// MCP settings
|
||||
expect(settingDefaults.mcpEnabled).toBe(true)
|
||||
expect(settingDefaults.enableMcpServerCreation).toBe(false)
|
||||
|
||||
// Rate limiting
|
||||
expect(settingDefaults.rateLimitSeconds).toBe(0)
|
||||
|
||||
// Indexing settings
|
||||
expect(settingDefaults.codebaseIndexEnabled).toBe(false)
|
||||
expect(settingDefaults.codebaseIndexQdrantUrl).toBe("http://localhost:6333")
|
||||
expect(settingDefaults.codebaseIndexEmbedderProvider).toBe("openai")
|
||||
expect(settingDefaults.codebaseIndexEmbedderBaseUrl).toBe("")
|
||||
expect(settingDefaults.codebaseIndexEmbedderModelId).toBe("")
|
||||
expect(settingDefaults.codebaseIndexEmbedderModelDimension).toBe(1536)
|
||||
expect(settingDefaults.codebaseIndexOpenAiCompatibleBaseUrl).toBe("")
|
||||
expect(settingDefaults.codebaseIndexBedrockRegion).toBe("us-east-1")
|
||||
expect(settingDefaults.codebaseIndexBedrockProfile).toBe("")
|
||||
expect(settingDefaults.codebaseIndexSearchMaxResults).toBe(100)
|
||||
expect(settingDefaults.codebaseIndexSearchMinScore).toBe(0.4)
|
||||
expect(settingDefaults.codebaseIndexOpenRouterSpecificProvider).toBe("")
|
||||
})
|
||||
|
||||
it("should be immutable (readonly)", () => {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
* - On read: apply defaults using `value ?? settingDefaults.settingName`
|
||||
*/
|
||||
|
||||
import { DEFAULT_CHECKPOINT_TIMEOUT_SECONDS } from "./global-settings.js"
|
||||
import { DEFAULT_CHECKPOINT_TIMEOUT_SECONDS, DEFAULT_WRITE_DELAY_MS } from "./global-settings.js"
|
||||
|
||||
/**
|
||||
* Default values for all settings that can be reset to default.
|
||||
|
|
@ -20,34 +20,63 @@ import { DEFAULT_CHECKPOINT_TIMEOUT_SECONDS } from "./global-settings.js"
|
|||
* These values are the source of truth for defaults throughout the application.
|
||||
* When a setting is undefined in storage, these defaults should be applied
|
||||
* at consumption time.
|
||||
*
|
||||
* IMPORTANT: Every setting that has a default value MUST be listed here.
|
||||
* The clearDefaultSettings() function uses this registry to remove default
|
||||
* values from storage on every startup.
|
||||
*/
|
||||
export const settingDefaults = {
|
||||
// Browser settings
|
||||
// ===== Auto-approval settings =====
|
||||
// All auto-approval settings default to false for safety
|
||||
autoApprovalEnabled: false,
|
||||
alwaysAllowReadOnly: false,
|
||||
alwaysAllowReadOnlyOutsideWorkspace: false,
|
||||
alwaysAllowWrite: false,
|
||||
alwaysAllowWriteOutsideWorkspace: false,
|
||||
alwaysAllowWriteProtected: false,
|
||||
alwaysAllowBrowser: false,
|
||||
alwaysAllowMcp: false,
|
||||
alwaysAllowModeSwitch: false,
|
||||
alwaysAllowSubtasks: false,
|
||||
alwaysAllowExecute: false,
|
||||
alwaysAllowFollowupQuestions: false,
|
||||
requestDelaySeconds: 0,
|
||||
followupAutoApproveTimeoutMs: 0,
|
||||
commandExecutionTimeout: 0,
|
||||
preventCompletionWithOpenTodos: false,
|
||||
autoCondenseContext: false,
|
||||
autoCondenseContextPercent: 50,
|
||||
|
||||
// ===== Browser settings =====
|
||||
browserToolEnabled: true,
|
||||
browserViewportSize: "900x600",
|
||||
remoteBrowserEnabled: false,
|
||||
screenshotQuality: 75,
|
||||
|
||||
// Audio/TTS settings
|
||||
// ===== Audio/TTS settings =====
|
||||
soundEnabled: true,
|
||||
soundVolume: 0.5,
|
||||
ttsEnabled: true,
|
||||
ttsSpeed: 1.0,
|
||||
|
||||
// Diff/Editor settings
|
||||
diffEnabled: true,
|
||||
fuzzyMatchThreshold: 1.0,
|
||||
|
||||
// Checkpoint settings
|
||||
// ===== Checkpoint settings =====
|
||||
enableCheckpoints: false,
|
||||
checkpointTimeout: DEFAULT_CHECKPOINT_TIMEOUT_SECONDS,
|
||||
|
||||
// Terminal settings
|
||||
// ===== Terminal settings =====
|
||||
terminalOutputLineLimit: 500,
|
||||
terminalOutputCharacterLimit: 50_000,
|
||||
terminalShellIntegrationTimeout: 30_000,
|
||||
terminalShellIntegrationDisabled: false,
|
||||
terminalCommandDelay: 0,
|
||||
terminalPowershellCounter: false,
|
||||
terminalZshClearEolMark: false,
|
||||
terminalZshOhMy: false,
|
||||
terminalZshP10k: false,
|
||||
terminalZdotdir: false,
|
||||
terminalCompressProgressBar: false,
|
||||
|
||||
// Context management settings
|
||||
// ===== Context management settings =====
|
||||
maxOpenTabsContext: 20,
|
||||
maxWorkspaceFiles: 200,
|
||||
showRooIgnoredFiles: false,
|
||||
|
|
@ -57,33 +86,37 @@ export const settingDefaults = {
|
|||
maxTotalImageSize: 20,
|
||||
maxConcurrentFileReads: 5,
|
||||
|
||||
// Diagnostic settings
|
||||
// ===== Diagnostic settings =====
|
||||
diagnosticsEnabled: false,
|
||||
includeDiagnosticMessages: true,
|
||||
maxDiagnosticMessages: 50,
|
||||
writeDelayMs: 1000,
|
||||
writeDelayMs: DEFAULT_WRITE_DELAY_MS,
|
||||
|
||||
// Auto-approval settings
|
||||
alwaysAllowFollowupQuestions: false,
|
||||
|
||||
// Prompt enhancement settings
|
||||
// ===== Prompt enhancement settings =====
|
||||
includeTaskHistoryInEnhance: true,
|
||||
|
||||
// UI settings
|
||||
// ===== UI settings =====
|
||||
reasoningBlockCollapsed: true,
|
||||
historyPreviewCollapsed: false,
|
||||
enterBehavior: "send" as const,
|
||||
hasOpenedModeSelector: false,
|
||||
|
||||
// Environment details settings
|
||||
// ===== Environment details settings =====
|
||||
includeCurrentTime: true,
|
||||
includeCurrentCost: true,
|
||||
maxGitStatusFiles: 0,
|
||||
|
||||
// Language settings
|
||||
// ===== Language settings =====
|
||||
language: "en" as const,
|
||||
|
||||
// MCP settings
|
||||
// ===== MCP settings =====
|
||||
mcpEnabled: true,
|
||||
enableMcpServerCreation: false,
|
||||
|
||||
// Indexing settings
|
||||
// ===== Rate limiting =====
|
||||
rateLimitSeconds: 0,
|
||||
|
||||
// ===== Indexing settings =====
|
||||
codebaseIndexEnabled: false,
|
||||
codebaseIndexQdrantUrl: "http://localhost:6333",
|
||||
codebaseIndexEmbedderProvider: "openai" as const,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue