8be0e6ff1a
* feat(sentry): add anonymous error reporting with privacy controls Integrate @sentry/electron for crash reporting in both main and renderer processes. Key features: - Enabled by default with clear privacy messaging during onboarding - Mid-session toggle via beforeSend hooks (no restart required) - Comprehensive path masking for macOS, Windows, and Linux usernames - Complete event sanitization: stack traces, breadcrumbs, tags, contexts, extra data, request info, and user info (cleared entirely) - Race condition prevention: events dropped until settings are loaded - Shared privacy utilities to eliminate code duplication - Settings toggle in Debug & Logs section with i18n support (en/fr) - New PrivacyStep in onboarding wizard explaining data collection Privacy approach: usernames masked from all paths, project paths remain visible for debugging (documented as intentional behavior). * feat(sentry): move DSN to environment variable for fork protection Previously the Sentry DSN was hardcoded, which caused forks to send errors to the original project's Sentry account. This created cost concerns and data pollution. Changes: - Remove hardcoded DSN from sentry-privacy.ts - Main process reads DSN from SENTRY_DSN env var - Add IPC handler to expose DSN to renderer process - Renderer fetches DSN via IPC (async initialization) - Add SENTRY_DSN and SENTRY_DEV documentation to .env.example Now forks without the env var have Sentry disabled, while official builds can inject it via CI/CD secrets. * fix(sentry): address PR review findings and add sample rate env vars PR Review fixes: - Fix path masking regex to handle paths at end of strings (lookahead) - Add error handling to PrivacyStep when save fails - Add user feedback when Sentry toggle fails in DebugSettings - Add .catch() handler for async Sentry initialization in main.tsx New features: - Add SENTRY_TRACES_SAMPLE_RATE env var (0.0-1.0, default 0.1) - Add SENTRY_PROFILES_SAMPLE_RATE env var (0.0-1.0, default 0.1) - Add getSentryConfig IPC to share config with renderer This allows controlling Sentry sampling via environment variables to prevent filling up error logs with duplicate issues. * fix(sentry): only mark settings loaded on successful load Fixes privacy violation where Sentry would send error reports even if user had opted out. Previously, markSettingsLoaded() was called in finally block regardless of success, causing the store to retain DEFAULT_APP_SETTINGS (sentryEnabled: true) on load failure while marking settings as "loaded". Now markSettingsLoaded() is only called inside the success condition, so if settings fail to load, Sentry's beforeSend drops all events (safe default).
436 lines
17 KiB
JSON
436 lines
17 KiB
JSON
{
|
|
"title": "Settings",
|
|
"tabs": {
|
|
"app": "App Settings",
|
|
"project": "Project Settings"
|
|
},
|
|
"sections": {
|
|
"appearance": {
|
|
"title": "Appearance",
|
|
"description": "Customize how Auto Claude looks"
|
|
},
|
|
"display": {
|
|
"title": "Display",
|
|
"description": "Adjust the size of UI elements"
|
|
},
|
|
"language": {
|
|
"title": "Language",
|
|
"description": "Choose your preferred language"
|
|
},
|
|
"devtools": {
|
|
"title": "Developer Tools",
|
|
"description": "IDE and terminal preferences"
|
|
},
|
|
"agent": {
|
|
"title": "Agent Settings",
|
|
"description": "Default model and framework"
|
|
},
|
|
"paths": {
|
|
"title": "Paths",
|
|
"description": "CLI tools and framework paths"
|
|
},
|
|
"integrations": {
|
|
"title": "Integrations",
|
|
"description": "API keys & Claude accounts"
|
|
},
|
|
"api-profiles": {
|
|
"title": "API Profiles",
|
|
"description": "Custom API endpoint profiles"
|
|
},
|
|
"updates": {
|
|
"title": "Updates",
|
|
"description": "Auto Claude updates"
|
|
},
|
|
"notifications": {
|
|
"title": "Notifications",
|
|
"description": "Alert preferences"
|
|
},
|
|
"debug": {
|
|
"title": "Debug & Logs",
|
|
"description": "Troubleshooting tools"
|
|
}
|
|
},
|
|
"language": {
|
|
"label": "Interface Language",
|
|
"description": "Select the language for the application interface"
|
|
},
|
|
"scale": {
|
|
"presets": "Scale Presets",
|
|
"presetsDescription": "Quick scale options for common preferences",
|
|
"fineTune": "Fine-tune Scale",
|
|
"fineTuneDescription": "Adjust from 75% to 200% in 5% increments",
|
|
"default": "Default",
|
|
"comfortable": "Comfortable",
|
|
"large": "Large"
|
|
},
|
|
"general": {
|
|
"otherAgentSettings": "Other Agent Settings",
|
|
"otherAgentSettingsDescription": "Additional agent configuration options",
|
|
"agentFramework": "Agent Framework",
|
|
"agentFrameworkDescription": "The coding framework used for autonomous tasks",
|
|
"agentFrameworkAutoClaude": "Auto Claude",
|
|
"aiTerminalNaming": "AI Terminal Naming",
|
|
"aiTerminalNamingDescription": "Automatically name terminals based on commands (uses Haiku)",
|
|
"featureModelSettings": "Feature Model Settings",
|
|
"featureModelSettingsDescription": "Model and thinking level for Insights, Ideation, and Roadmap",
|
|
"model": "Model",
|
|
"thinkingLevel": "Thinking Level",
|
|
"paths": "Paths",
|
|
"pathsDescription": "Configure executable and framework paths",
|
|
"pythonPath": "Python Path",
|
|
"pythonPathDescription": "Path to Python executable (leave empty for auto-detection)",
|
|
"pythonPathPlaceholder": "python3 (default)",
|
|
"gitPath": "Git Path",
|
|
"gitPathDescription": "Path to Git executable (leave empty for auto-detection)",
|
|
"gitPathPlaceholder": "git (default)",
|
|
"githubCLIPath": "GitHub CLI Path",
|
|
"githubCLIPathDescription": "Path to GitHub CLI (gh) executable (leave empty for auto-detection)",
|
|
"githubCLIPathPlaceholder": "gh (default)",
|
|
"claudePath": "Claude CLI Path",
|
|
"claudePathDescription": "Path to Claude CLI executable (leave empty for auto-detection)",
|
|
"claudePathPlaceholder": "claude (default)",
|
|
"detectedPath": "Auto-detected",
|
|
"detectedVersion": "Version",
|
|
"detectedSource": "Source",
|
|
"sourceUserConfig": "User Configuration",
|
|
"sourceVenv": "Virtual Environment",
|
|
"sourceHomebrew": "Homebrew",
|
|
"sourceSystemPath": "System PATH",
|
|
"sourceBundled": "Bundled",
|
|
"sourceFallback": "Fallback",
|
|
"notDetected": "Not detected",
|
|
"autoClaudePath": "Auto Claude Path",
|
|
"autoClaudePathDescription": "Relative path to auto-claude directory in projects",
|
|
"autoClaudePathPlaceholder": "auto-claude (default)",
|
|
"autoNameTerminals": "Automatically name terminals",
|
|
"autoNameTerminalsDescription": "Use AI to generate descriptive names for terminal tabs based on their activity"
|
|
},
|
|
"theme": {
|
|
"title": "Appearance",
|
|
"description": "Customize how Auto Claude looks",
|
|
"mode": "Mode",
|
|
"modeDescription": "Choose between light and dark themes",
|
|
"light": "Light",
|
|
"dark": "Dark",
|
|
"system": "System",
|
|
"colorTheme": "Color Theme",
|
|
"colorThemeDescription": "Choose your preferred color palette"
|
|
},
|
|
"devtools": {
|
|
"title": "Developer Tools",
|
|
"description": "Configure your preferred IDE and terminal for working with worktrees",
|
|
"detecting": "Detecting installed tools...",
|
|
"detectAgain": "Detect Again",
|
|
"ide": {
|
|
"label": "Preferred IDE",
|
|
"description": "Auto Claude will open worktrees in this editor",
|
|
"placeholder": "Select IDE...",
|
|
"customPath": "Custom IDE Path",
|
|
"customPathPlaceholder": "/path/to/your/ide"
|
|
},
|
|
"terminal": {
|
|
"label": "Preferred Terminal",
|
|
"description": "Auto Claude will open terminal sessions here",
|
|
"placeholder": "Select terminal...",
|
|
"customPath": "Custom Terminal Path",
|
|
"customPathPlaceholder": "/path/to/your/terminal"
|
|
},
|
|
"detected": "Detected",
|
|
"notInstalled": "Not installed",
|
|
"detectedSummary": "Detected on your system:",
|
|
"noToolsDetected": "No additional tools detected (VS Code and system terminal will be used)"
|
|
},
|
|
"updates": {
|
|
"title": "Updates",
|
|
"description": "Manage Auto Claude updates",
|
|
"appUpdateReady": "App Update Ready",
|
|
"newVersion": "New Version",
|
|
"released": "Released",
|
|
"downloading": "Downloading...",
|
|
"updateDownloaded": "Update downloaded! Click Install to restart and apply the update.",
|
|
"installAndRestart": "Install and Restart",
|
|
"downloadUpdate": "Download Update",
|
|
"version": "Version",
|
|
"loading": "Loading...",
|
|
"checkingForUpdates": "Checking for updates...",
|
|
"newVersionAvailable": "New version available:",
|
|
"latestVersion": "You're running the latest version.",
|
|
"viewRelease": "View full release on GitHub",
|
|
"unableToCheck": "Unable to check for updates",
|
|
"checkForUpdates": "Check for Updates",
|
|
"autoUpdateProjects": "Auto-Update Projects",
|
|
"autoUpdateProjectsDescription": "Automatically update Auto Claude in projects when a new version is available",
|
|
"betaUpdates": "Beta Updates",
|
|
"betaUpdatesDescription": "Receive pre-release beta versions with new features (may be less stable)"
|
|
},
|
|
"notifications": {
|
|
"title": "Notifications",
|
|
"description": "Configure default notification preferences",
|
|
"onTaskComplete": "On Task Complete",
|
|
"onTaskCompleteDescription": "Notify when a task finishes successfully",
|
|
"onTaskFailed": "On Task Failed",
|
|
"onTaskFailedDescription": "Notify when a task encounters an error",
|
|
"onReviewNeeded": "On Review Needed",
|
|
"onReviewNeededDescription": "Notify when QA requires your review",
|
|
"sound": "Sound",
|
|
"soundDescription": "Play sound with notifications"
|
|
},
|
|
"actions": {
|
|
"save": "Save Settings",
|
|
"rerunWizard": "Re-run Wizard",
|
|
"rerunWizardDescription": "Start the setup wizard again"
|
|
},
|
|
"projectSections": {
|
|
"general": {
|
|
"title": "General",
|
|
"description": "Auto-Build and agent config",
|
|
"useClaudeMd": "Use CLAUDE.md",
|
|
"useClaudeMdDescription": "Include CLAUDE.md instructions in agent context"
|
|
},
|
|
"claude": {
|
|
"title": "Claude Auth",
|
|
"description": "Claude authentication"
|
|
},
|
|
"linear": {
|
|
"title": "Linear",
|
|
"description": "Linear integration",
|
|
"integrationTitle": "Linear Integration",
|
|
"integrationDescription": "Connect to Linear for issue tracking and task import",
|
|
"syncDescription": "Sync with Linear for issue tracking"
|
|
},
|
|
"github": {
|
|
"title": "GitHub",
|
|
"description": "GitHub issues sync",
|
|
"integrationTitle": "GitHub Integration",
|
|
"integrationDescription": "Connect to GitHub for issue tracking",
|
|
"syncDescription": "Sync with GitHub Issues"
|
|
},
|
|
"gitlab": {
|
|
"title": "GitLab",
|
|
"description": "GitLab issues sync",
|
|
"integrationTitle": "GitLab Integration",
|
|
"integrationDescription": "Connect to GitLab for issue tracking",
|
|
"syncDescription": "Sync with GitLab Issues"
|
|
},
|
|
"memory": {
|
|
"title": "Memory",
|
|
"description": "Graphiti memory backend",
|
|
"integrationTitle": "Memory",
|
|
"integrationDescription": "Configure persistent cross-session memory for agents",
|
|
"syncDescription": "Configure persistent memory"
|
|
}
|
|
},
|
|
"agentProfile": {
|
|
"label": "Agent Profile",
|
|
"title": "Default Agent Profile",
|
|
"sectionDescription": "Select a preset configuration for model and thinking level",
|
|
"profilesInfo": "Agent profiles provide preset configurations for Claude model and thinking level. When you create a new task, these settings will be used as defaults. You can always override them in the task creation wizard.",
|
|
"custom": "Custom",
|
|
"customConfiguration": "Custom Configuration",
|
|
"customDescription": "Choose model & thinking level",
|
|
"phaseConfiguration": "Phase Configuration",
|
|
"phaseConfigurationDescription": "Customize model and thinking level for each phase",
|
|
"clickToCustomize": "Click to customize",
|
|
"model": "Model",
|
|
"thinking": "Thinking",
|
|
"thinkingLevel": "Thinking Level",
|
|
"selectModel": "Select model",
|
|
"selectThinkingLevel": "Select thinking level",
|
|
"perPhaseOptimization": "(per-phase optimization)",
|
|
"resetToDefaults": "Reset to defaults",
|
|
"phaseConfigNote": "These settings will be used as defaults when creating new tasks with the Auto profile. You can override them per-task in the task creation wizard.",
|
|
"phases": {
|
|
"spec": {
|
|
"label": "Spec Creation",
|
|
"description": "Discovery, requirements, context gathering"
|
|
},
|
|
"planning": {
|
|
"label": "Planning",
|
|
"description": "Implementation planning and architecture"
|
|
},
|
|
"coding": {
|
|
"label": "Coding",
|
|
"description": "Actual code implementation"
|
|
},
|
|
"qa": {
|
|
"label": "QA Review",
|
|
"description": "Quality assurance and validation"
|
|
}
|
|
}
|
|
},
|
|
"workspace": {
|
|
"roles": {
|
|
"backend": "Backend",
|
|
"frontend": "Frontend",
|
|
"mobile": "Mobile",
|
|
"shared": "Shared",
|
|
"apiGateway": "API Gateway",
|
|
"worker": "Worker",
|
|
"other": "Other"
|
|
}
|
|
},
|
|
"integrations": {
|
|
"title": "Integrations",
|
|
"description": "Manage Claude accounts and API keys",
|
|
"claudeAccounts": "Claude Accounts",
|
|
"claudeAccountsDescription": "Add multiple Claude subscriptions to automatically switch between them when you hit rate limits.",
|
|
"noAccountsYet": "No accounts configured yet",
|
|
"default": "Default",
|
|
"active": "Active",
|
|
"authenticated": "Authenticated",
|
|
"needsAuth": "Needs Auth",
|
|
"authenticate": "Authenticate",
|
|
"setActive": "Set Active",
|
|
"manualTokenEntry": "Manual Token Entry",
|
|
"runSetupToken": "Run claude setup-token to get your token",
|
|
"tokenPlaceholder": "sk-ant-oat01-...",
|
|
"emailPlaceholder": "Email (optional, for display)",
|
|
"saveToken": "Save Token",
|
|
"accountNamePlaceholder": "Account name (e.g., Work, Personal)",
|
|
"autoSwitching": "Automatic Account Switching",
|
|
"autoSwitchingDescription": "Automatically switch between Claude accounts to avoid interruptions. Configure proactive monitoring to switch before hitting limits.",
|
|
"enableAutoSwitching": "Enable automatic switching",
|
|
"masterSwitch": "Master switch for all auto-swap features",
|
|
"proactiveMonitoring": "Proactive Monitoring",
|
|
"proactiveDescription": "Check usage regularly and swap before hitting limits",
|
|
"checkUsageEvery": "Check usage every",
|
|
"seconds15": "15 seconds",
|
|
"seconds30": "30 seconds (recommended)",
|
|
"minute1": "1 minute",
|
|
"disabled": "Disabled",
|
|
"sessionThreshold": "Session usage threshold",
|
|
"sessionThresholdDescription": "Switch when session usage reaches this level (recommended: 95%)",
|
|
"weeklyThreshold": "Weekly usage threshold",
|
|
"weeklyThresholdDescription": "Switch when weekly usage reaches this level (recommended: 99%)",
|
|
"reactiveRecovery": "Reactive Recovery",
|
|
"reactiveDescription": "Auto-swap when unexpected rate limit is hit",
|
|
"apiKeys": "API Keys",
|
|
"apiKeysInfo": "Keys set here are used as defaults. Individual projects can override these in their settings.",
|
|
"openaiKey": "OpenAI API Key",
|
|
"openaiKeyDescription": "Required for Graphiti memory backend (embeddings)"
|
|
},
|
|
"debug": {
|
|
"title": "Debug & Logs",
|
|
"description": "Access logs and debug information for troubleshooting",
|
|
"errorReporting": {
|
|
"label": "Anonymous Error Reporting",
|
|
"description": "Send crash reports to help improve Auto Claude. No personal data or code is collected."
|
|
},
|
|
"openLogsFolder": "Open Logs Folder",
|
|
"copyDebugInfo": "Copy Debug Info",
|
|
"copied": "Copied!",
|
|
"loadInfo": "Load Debug Info",
|
|
"systemInfo": "System Information",
|
|
"logsLocation": "Logs Location",
|
|
"recentErrors": "Recent Errors",
|
|
"noRecentErrors": "No recent errors",
|
|
"helpTitle": "Reporting Issues",
|
|
"helpText": "When reporting bugs, click \"Copy Debug Info\" to get system information and recent errors that help us diagnose the issue."
|
|
},
|
|
"projectSettings": {
|
|
"noProjectSelected": {
|
|
"title": "No Project Selected",
|
|
"description": "Select a project from the sidebar to configure its settings."
|
|
}
|
|
},
|
|
"mcp": {
|
|
"title": "MCP Server Overview",
|
|
"titleWithProject": "MCP Server Overview for {{projectName}}",
|
|
"description": "Configure which MCP servers are available for agents in this project",
|
|
"descriptionNoProject": "Select a project to configure MCP servers",
|
|
"serversEnabled": "{{count}} servers enabled",
|
|
"configuration": "MCP Server Configuration",
|
|
"configurationHint": "Disabled servers reduce context usage and startup time",
|
|
"noProjectSelected": "No Project Selected",
|
|
"noProjectSelectedDescription": "Select a project from the dropdown to view and configure MCP servers.",
|
|
"projectNotInitialized": "Project Not Initialized",
|
|
"projectNotInitializedDescription": "Initialize Auto Claude for this project to configure MCP servers.",
|
|
"browserAutomation": "Browser Automation (QA agents only)",
|
|
"alwaysEnabled": "always enabled",
|
|
"addServer": "Add Server",
|
|
"addMcpTo": "Add MCP Server to {{agent}}",
|
|
"addMcpDescription": "Select an MCP server to add to this agent",
|
|
"allMcpsAdded": "All available MCP servers are already added",
|
|
"added": "added",
|
|
"removed": "removed",
|
|
"remove": "Remove",
|
|
"restore": "Restore",
|
|
"noMcpServers": "No MCP servers",
|
|
"cannotRemove": "Cannot remove (required)",
|
|
"servers": {
|
|
"context7": {
|
|
"name": "Context7",
|
|
"description": "Documentation lookup for libraries"
|
|
},
|
|
"graphiti": {
|
|
"name": "Graphiti Memory",
|
|
"description": "Knowledge graph for cross-session context",
|
|
"notConfigured": "Requires memory configuration (see Memory settings)"
|
|
},
|
|
"linear": {
|
|
"name": "Linear",
|
|
"description": "Project management integration",
|
|
"notConfigured": "Requires Linear integration (see Linear settings)"
|
|
},
|
|
"electron": {
|
|
"name": "Electron",
|
|
"description": "Desktop app automation via Chrome DevTools"
|
|
},
|
|
"puppeteer": {
|
|
"name": "Puppeteer",
|
|
"description": "Web browser automation for testing"
|
|
},
|
|
"autoClaude": {
|
|
"name": "Auto-Claude Tools",
|
|
"description": "Build progress tracking"
|
|
}
|
|
},
|
|
"customServers": "Custom Servers",
|
|
"addCustomServer": "Add Custom Server",
|
|
"editCustomServer": "Edit Custom Server",
|
|
"customServerDescription": "Add a command-based or HTTP-based MCP server",
|
|
"serverType": "Server Type",
|
|
"typeCommand": "Command (npx/npm)",
|
|
"typeHttp": "HTTP",
|
|
"serverName": "Name",
|
|
"serverNamePlaceholder": "My MCP Server",
|
|
"serverDescription": "Description",
|
|
"serverDescriptionPlaceholder": "What this server does",
|
|
"command": "Command",
|
|
"args": "Arguments",
|
|
"argsHint": "Space-separated arguments",
|
|
"url": "URL",
|
|
"headers": "Headers",
|
|
"headerName": "Header Name",
|
|
"headerValue": "Header Value",
|
|
"noCustomServers": "No custom servers configured. Add one to use with your agents.",
|
|
"errorNameRequired": "Server name is required",
|
|
"errorIdExists": "A server with this ID already exists",
|
|
"errorCommandRequired": "Command is required for command-based servers",
|
|
"errorUrlRequired": "URL is required for HTTP-based servers",
|
|
"testConnection": "Test",
|
|
"testing": "Testing...",
|
|
"authToken": "Authentication Token",
|
|
"authTokenPlaceholder": "Paste your API token or PAT here",
|
|
"authTokenHint": "Used as Bearer token in the Authorization header",
|
|
"advancedHeaders": "Additional Headers",
|
|
"status": {
|
|
"healthy": "Server is responding",
|
|
"unhealthy": "Server is not responding",
|
|
"needsAuth": "Authentication required",
|
|
"checking": "Checking...",
|
|
"unknown": "Status unknown"
|
|
},
|
|
"hints": {
|
|
"github": "This looks like a GitHub MCP server. You'll need a Personal Access Token with appropriate scopes.",
|
|
"createGithubPat": "Create GitHub PAT",
|
|
"google": "This looks like a Google API. You'll need an OAuth token or API key.",
|
|
"createGoogleToken": "Create Google Credentials",
|
|
"anthropic": "This looks like an Anthropic API. You'll need an API key.",
|
|
"createAnthropicKey": "Create Anthropic API Key",
|
|
"openai": "This looks like an OpenAI API. You'll need an API key.",
|
|
"createOpenaiKey": "Create OpenAI API Key"
|
|
}
|
|
}
|
|
}
|