Skip to content

guide users to connect a model provider when Goose needs one#8537

Open
morgmart wants to merge 2 commits intomainfrom
guide-connect-model-provider
Open

guide users to connect a model provider when Goose needs one#8537
morgmart wants to merge 2 commits intomainfrom
guide-connect-model-provider

Conversation

@morgmart
Copy link
Copy Markdown
Collaborator

@morgmart morgmart commented Apr 14, 2026

Category: improvement
User Impact: When no model provider is connected, Goose's agent card now guides users to the model providers section instead of appearing ready to use. Credential changes surface a floating notification card below the settings modal.

Problem: When a user had no model provider configured, the Goose agent card still showed a green checkmark — implying everything was ready — even though Goose can't function without a model provider. The restart banner was inline and included a restart button that wasn't needed.

Solution: Added a needs_model status that shows a "+" button with a tooltip on the Goose card when no model provider is connected. Clicking it smooth-scrolls to the model providers section. Replaced the inline restart banner with a floating card below the settings modal (message only, no restart button). The card fades in on credential changes and dismisses when navigating away from providers.

Known limitation: Local providers (Ollama, local_inference) don't save credentials, so configuredIds won't include them — users running only a local provider will still see the "+" indicator on Goose. This exists because the Tauri app has its own provider config layer (goose_config.rs / provider_defs.rs) that checks status independently from the goosed backend. The backend's check_provider_configured in crates/goose-server/src/routes/utils.rs already handles local providers correctly (returns true for zero-config providers), but the Tauri frontend doesn't use it. Resolving this will likely need engineering support to consolidate the two provider systems so the frontend routes through the backend API.

File changes

ui/goose2/src/shared/types/providers.ts
Added needs_model to the ProviderSetupStatus union type so agent cards can express that they need a model provider to function.

ui/goose2/src/features/providers/hooks/useCredentials.ts
Removed the restart callback and restartApp import since the floating card no longer has a restart button.

ui/goose2/src/features/settings/ui/AgentProviderCard.tsx
Added tooltip-wrapped "+" button that appears when the agent's status is needs_model, calling onScrollToModels to guide the user to the model providers section.

ui/goose2/src/features/settings/ui/ModelProviderRow.tsx
Removed the preserveSetupLayout state that was preventing the connected panel from rendering after saving — the layout now always reflects the current connection state.

ui/goose2/src/features/settings/ui/ProvidersSettings.tsx
Added scrollToModels callback with custom eased scroll animation targeting the model providers section. Computes hasModelProvider from configured IDs to drive the needs_model status for Goose. Signals onNeedsRestart to the parent when credentials change. Accepts scrollContainerRef prop for accurate scroll targeting within the settings modal.

ui/goose2/src/features/settings/ui/SettingsModal.tsx
Added contentScrollRef on the scrollable content container and passes it to ProvidersSettings. Wraps the modal in a stacked layout container to accommodate the floating restart card below the modal. The card fades in when credentials change and auto-dismisses when navigating away from providers.

ui/goose2/src/shared/ui/tooltip.tsx
Added optional showArrow prop (defaults to true) so consumers can hide the tooltip arrow when it doesn't suit the context.

ui/goose2/src/shared/i18n/locales/en/settings.json
Updated section titles to "Agent Providers" / "Model Providers" for clarity. Revised descriptions to explain the relationship between Goose and model providers. Added connectModelLabel and connectModelTooltip keys. Removed restartButton key.

ui/goose2/src/shared/i18n/locales/es/settings.json
Spanish translations matching the revised English copy.

How to verify

  1. Open Settings > Providers with no model providers connected.
  2. The Goose agent card should show a "+" icon instead of a green checkmark.
  3. Hover the "+" to see the "Connect a model provider" tooltip.
  4. Click the "+" — the view should smooth-scroll to the Model Providers section.
  5. Connect a model provider (e.g. expand one and enter an API key).
  6. The Goose card should now show a green checkmark.
  7. A floating card should fade in below the settings modal saying "Restart to apply credential changes." — no restart button, just the message.
  8. Navigate to a different settings section (e.g. Appearance) — the card should disappear.
  9. Return to Providers — the card should not reappear.

When no model provider is connected, Goose's agent card now shows a "+"
button that smooth-scrolls to the model providers section. Credential
changes surface a floating notification card below the settings modal
instead of an inline restart banner. Local providers (Ollama,
local_inference) are now correctly marked as configured.

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a5204b668e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Reset the dismissed ref when navigating back to Providers so new
credential changes surface the restart notice again.

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant