mirror of
https://github.com/cline/cline.git
synced 2026-09-19 10:13:34 +08:00
* fix(cli): Fix config set overwriting all settings instead of merging ENG-1115 This fix resolves the issue where 'cline config set' would overwrite all settings instead of merging with existing values. Changes: 1. CLI (cli/pkg/cli/config.go): Changed setCommand to use UpdateSettingsPartial() instead of UpdateSettings() 2. Server (src/core/controller/state/updateSettingsCli.ts): Added defensive checks for defaultTerminalProfile to prevent undefined errors 3. Added merge.go with proper settings merge logic The fix follows git-style behavior where 'cline config set key=value' merges with existing settings, preserving all other values. Tested and verified: - Setting max-requests to 999 works - Setting edit-files-externally preserves max-requests - Multiple successive config sets preserve all previous values * fix: use optional proto bools to fix config set field overwrite Root cause: Non-optional bool fields in AutoApprovalSettings proto were transmitting zero values (false) even when not set by user, causing the server-side merge to overwrite existing settings. Solution: Made 'enabled' and 'enableNotifications' fields optional in proto, matching the pattern used by AutoApprovalActions fields. This allows proper server-side merge detection using 'field !== undefined' checks. Changes: - proto/cline/state.proto: Added optional keyword to two bool fields - cli/pkg/cli/task/settings_parser.go: Use boolPtr() for optional fields - cli/pkg/cli/task/manager.go: Fix UpdateTaskAutoApprovalAction to use boolPtr() - Removed client-side merge logic (merge.go, UpdateSettingsPartial method) - Simplified config.go to use UpdateSettings() directly This approach is simpler and more maintainable than the previous client-side merge solution, relying on the existing server-side merge logic that already handles undefined values correctly. * fix: Address celestial-vault feedback on proto optional fields - Remove unnecessary error suppression in updateSettingsCli.ts - Make max_requests optional in AutoApprovalSettings proto - Update Go parser to use int32Ptr() for optional max_requests - Remove hardcoded MaxRequests default in UpdateTaskAutoApprovalAction This prevents the CLI from overwriting user-configured maxRequests values and maintains consistency with other optional fields (enabled, enableNotifications). * fix: Remove error suppression for missing terminal manager in updateSettingsCli Addresses celestial-vault's feedback on ENG-1115 PR. Previously, the check 'if (controller.task && controller.task.terminalManager)' silently suppressed errors when a task existed but terminalManager was missing. Now properly throws an error if task exists without terminalManager (error case), while allowing terminal profile updates when no task is running (normal case).