Repository navigation
fix(web): a deleted default provider leaves the provider list - #541
Merged
Merged
Conversation
Deleting Codex or Claude saved a disabled entry marked with config.enabled: false, but settings normalization folds that flag into the envelope and drops it, so the provider stayed listed as Disabled. Mark the entry with its own config key instead, and clear it when the provider is edited or re-enabled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deleting a default provider (Codex or Claude) in Settings › Providers left it in the list as "Disabled" instead of removing it. The panel saved a disabled entry with
config: { enabled: false }as its "removed" marker, but server settings normalization (upstream'sfoldProviderInstanceEnabledFlags, pingdotgg#7459) foldsconfig.enabledinto the envelope and drops it, so the stored entry became{ enabled: false, config: {} }and the panel no longer recognised it. This is an existing fork bug onmain, found while testing the upstream sync in a real web client.The marker now lives in its own config key (
removedFromProviderList), which normalization leaves alone. The marker and its check moved topackages/contractsso the server test can use them. Editing or re-enabling a removed entry clears the marker, so a provider that is turned back on and later switched off stays listed. Upstream's server folding is unchanged.Found after the upstream sync (#538) merged; based on
main.Existing entries already saved as
{ enabled: false, config: {} }keep showing as "Disabled". That shape can't be told apart from a provider that was only switched off, so they are not migrated.Verification
keeps a removed default provider marked until it is editedpasses. With the oldconfig.enabled: falsemarker it fails (expected false to be true).serverSettings.test.ts(70 tests) andProviderSettingsPanel.environment.browser.test.tsx(15 tests) pass. Typecheck passes for contracts, web and server, and format, lint and knip pass.settings.jsonstores{ driver: "codex", enabled: false, config: { removedFromProviderList: true } }, and it stays gone after a reload. Before the fix it stayed listed as "Disabled".Merge with Create a merge commit.
Model: claude-opus-5-5. Harness: Claude Code in T3 Code.
🤖 Generated with Claude Code