-
Stefy Lanza (nextime / spora ) authored
The CLI credentials upload stored claude_config.cli_credentials_file server-side, but the path was then lost and CLI mode fell back to the OAuth2 credentials file: - uploadClaudeCliFile() only showed a toast; unlike its sibling uploadFileChunked(), it never mirrored the stored path into providersData. - saveProvider() posts providersData wholesale, and api_provider_save replaced the provider config outright, so a page loaded before the upload wiped the key on the next save. - There was no field for cli_credentials_file — it appeared only in help text — so the value was invisible and unrecoverable once lost. Preserve keys inside *_config blocks the client did not send, which fixes the whole class rather than this one key: any server-set key would have been dropped the same way. Only merges into a block the client actually sent, so a provider type change still drops the old block and nothing is resurrected. A key the client does send always wins, including falsy values like use_cli_mode=false. Add the missing text field (admin only — DB users keep CLI credentials in user_oauth2_credentials, not in claude_config), and mirror the upload result into providersData. The chunk endpoint now also returns config_path, the tilde form actually written to providers.json; file_path is absolute, so mirroring it would post back a value that disagrees with what the server stored. Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
294a7273