Revamp Settings Providers tab & fix multiple bugs#220
Open
caezium wants to merge 6 commits intoJerryZLiu:mainfrom
Open
Revamp Settings Providers tab & fix multiple bugs#220caezium wants to merge 6 commits intoJerryZLiu:mainfrom
caezium wants to merge 6 commits intoJerryZLiu:mainfrom
Conversation
…tale defaults Add refreshFromPersistence() to reload all provider config from UserDefaults/Keychain when the settings window becomes key. Fixes closing and reopening the window (without quitting) showing stale or default values.
… setup wizard Remove early persistLocalSettings() and persistGeminiAPIKey() calls from intermediate setup steps. Config is now only saved on final saveConfiguration(), preventing the onboarding wizard from mutating provider state when users click through without completing setup.
Rewrite the Providers settings tab with a clearer card-based layout: - ProviderCardView: compact card showing provider status with contextual actions - ProviderConfigEditor: lightweight sheet for editing provider config without re-running the full onboarding wizard - SettingsProvidersTabView: reorganized into Primary, Backup, Health, and Available Providers sections Removes the confusing onboarding-style routing matrix. Forces light color scheme on the editor sheet to match the app's light-mode-only design.
…ctive Trigger refreshActivitiesTrigger and updateCardsToReviewCount() in the existing didBecomeActiveNotification handler. Fixes timeline cards disappearing after the app is backgrounded and brought back without a full quit-and-relaunch.
Set popover window collection behavior to canJoinAllSpaces, moveToActiveSpace, and fullScreenAuxiliary. Also activate the app and make the popover window key so it appears above fullscreen windows.
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.
Summary
Overhauls the Settings → Providers tab with a card-based UI and fixes several bugs related to window lifecycle, onboarding state, and macOS fullscreen behavior.
Changes
Settings Providers Tab Revamp
ProviderCardView— Compact, reusable card component with provider icon, name, status badge, summary, and contextual action buttons (Configure / Set as Primary / Set as Backup / Remove).ProviderConfigEditor— Sheet-based form editor for each provider type (Gemini, Ollama, ChatGPT/Claude), replacing the wizard flow for configuration changes.Bug Fixes
SettingsView.swift,ProvidersSettingsViewModel.swift)LLMProviderSetupView.swift)Layout.swift)canJoinAllSpaces,moveToActiveSpace, andfullScreenAuxiliarycollection behaviors so it appears over fullscreen apps. (StatusBarController.swift).roundedBordertext fields from rendering with dark backgrounds. (SettingsProvidersTabView.swift)Files Changed (8 files, +653 / -253)
ProviderCardView.swiftProviderConfigEditor.swiftSettingsProvidersTabView.swiftProvidersSettingsViewModel.swiftSettingsView.swiftLLMProviderSetupView.swiftLayout.swiftStatusBarController.swiftTesting
xcodebuild(Debug, no code signing)