Skip to content

fix extension selector not displaying the correct enabled extensions#7290

Merged
zanesq merged 1 commit intomainfrom
zane/fix-extension-selector-syncing
Feb 18, 2026
Merged

fix extension selector not displaying the correct enabled extensions#7290
zanesq merged 1 commit intomainfrom
zane/fix-extension-selector-syncing

Conversation

@zanesq
Copy link
Collaborator

@zanesq zanesq commented Feb 18, 2026

Summary

The extension selector count in the bottom menu was showing wrong numbers
when starting a new chat — for example showing 3 instead of 4 — even though
all extensions loaded successfully in the agent.

Two problems were causing this:

On the backend, when a new session starts, all extensions load concurrently.
Each one was individually persisting the extension state to the session
database after it finished loading, snapshotting whatever extensions happened
to exist in the manager at that moment. Since they finish at different times,
the last persist to complete could miss extensions that other concurrent
futures hadn't yet registered, corrupting the session's extension list. The
fix extracts the shared logic into add_extension_inner, has add_extension
(used by user-initiated actions) call it then persist, and has
load_extensions_from_session call it directly for each concurrent extension
then do a single persist after all of them complete.

On the frontend, the extension selector was eagerly fetching the session's
extension list from the API the moment the session ID changed, before the
backend had finished loading extensions. This returned stale data and caused
a brief wrong count before the correct data arrived. The fix separates the
session ID reset into its own effect and gates the fetch effect so it only
runs after the SESSION_EXTENSIONS_LOADED event fires or the dropdown opens —
never on a bare session ID change. That event is now also dispatched for
cached sessions so the selector gets the signal when resuming an existing
chat too.

@zanesq zanesq changed the title change to not persist after all extensions loaded fix extension selector not displaying the correct enabled extensions Feb 18, 2026
@zanesq zanesq merged commit e303820 into main Feb 18, 2026
17 of 19 checks passed
@zanesq zanesq deleted the zane/fix-extension-selector-syncing branch February 18, 2026 02:11
jh-block added a commit that referenced this pull request Feb 18, 2026
* origin/main: (49 commits)
  chore: show important keys for provider configuration (#7265)
  fix: subrecipe relative path with summon (#7295)
  fix extension selector not displaying the correct enabled extensions (#7290)
  Use the working dir from the session (#7285)
  Fix: Minor logging uplift for debugging of prompt injection mitigation (#7195)
  feat(otel): make otel logging level configurable (#7271)
  docs: add documentation for Top Of Mind extension (#7283)
  Document gemini 3 thinking levels (#7282)
  docs: stream subagent tool calls (#7280)
  Docs: delete custom provider in desktop (#7279)
  Everything is streaming (#7247)
  openai: responses models and hardens event streaming handling (#6831)
  docs: disable ai session naming (#7194)
  Added cmd to validate bundled extensions json (#7217)
  working_dir usage more clear in add_extension (#6958)
  Use Canonical Models to set context window sizes (#6723)
  Set up direnv and update flake inputs (#6526)
  fix: restore subagent tool call notifications after summon refactor (#7243)
  fix(ui): preserve server config values on partial provider config save (#7248)
  fix(claude-code): allow goose to run inside a Claude Code session (#7232)
  ...
aharvard added a commit that referenced this pull request Feb 18, 2026
* origin/main:
  feat: add GOOSE_SUBAGENT_MODEL and GOOSE_SUBAGENT_PROVIDER config options (#7277)
  fix(openai): support "reasoning" field alias in streaming deltas (#7294)
  fix(ui): revert app-driven iframe width and send containerDimensions per ext-apps spec (#7300)
  New OpenAI event (#7301)
  ci: add fork guards to scheduled workflows (#7292)
  fix: allow ollama input limit override (#7281)
  chore: show important keys for provider configuration (#7265)
  fix: subrecipe relative path with summon (#7295)
  fix extension selector not displaying the correct enabled extensions (#7290)
  Use the working dir from the session (#7285)
  Fix: Minor logging uplift for debugging of prompt injection mitigation (#7195)
  feat(otel): make otel logging level configurable (#7271)
  docs: add documentation for Top Of Mind extension (#7283)
  Document gemini 3 thinking levels (#7282)
  docs: stream subagent tool calls (#7280)
  Docs: delete custom provider in desktop (#7279)

# Conflicts:
#	ui/desktop/src/components/McpApps/McpAppRenderer.tsx
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.

2 participants

Comments