Skip to content

fix(gui): allow the onboarding card to be reopened after dismissal - #13123

Open
WhoamiI00 wants to merge 1 commit into
continuedev:mainfrom
WhoamiI00:12582-reopen-onboarding-card
Open

fix(gui): allow the onboarding card to be reopened after dismissal#13123
WhoamiI00 wants to merge 1 commit into
continuedev:mainfrom
WhoamiI00:12582-reopen-onboarding-card

Conversation

@WhoamiI00

Copy link
Copy Markdown

Description

Fixes #12582 — once the onboarding card is closed, there is no way to get it back.

close writes hasDismissedOnboardingCard: true to localStorage, but nothing in the codebase ever clears it. The redux onboardingCard.show flag isn't persisted (the ui slice only persists toolSettings, toolGroupSettings, ruleSettings and reasoningSettings), so the existing Help → Quickstart row re-showed the card for the current session only — after a webview reload, show was recomputed from localStorage and the card was suppressed again:

show = onboardingStatus !== "Completed" && !hasDismissedOnboardingCard;

The only escape was opening webview devtools and running localStorage.removeItem("hasDismissedOnboardingCard").

Change: open now clears the flag, mirroring close which sets it. Every call site of open (Layout.tsx setupLocalConfig/setupApiKey, the new-user auto-open, and the Quickstart row) is an explicit request to show the card, so clearing the dismissal there is safe.

The Quickstart row now calls onboardingCard.open() instead of dispatching setOnboardingCard directly, so it goes through that same path. This is behaviour-preserving: it previously passed activeTab: undefined, and the card already defaults to API_KEY when activeTab is unset (OnboardingCard.tsx).

Scope note

This intentionally leaves one case alone: a user whose onboardingStatus is "Completed" is still suppressed after a reload by the first half of the condition above. Quickstart re-shows the card for that session, which seems like the intended behaviour for someone who has finished onboarding — happy to widen this if you'd prefer open to reset the status too.

Checklist

  • I've read the contributing guide
  • The relevant docs, if any, have been updated or created — no user-facing docs describe this flag
  • The relevant tests, if any, have been updated or created

Screen recording or screenshot

Not included — this is a state-persistence fix with no visual change to the card itself. It reproduces as follows:

  1. Configure a chat model (the close button only renders once config.modelsByRole.chat.length > 0).
  2. Open the chat panel and dismiss the onboarding card with the x.
  3. Help → Quickstart — card reappears.
  4. Reload the webview.

On main the card is gone again at step 4 with no way to restore it; with this change it persists.

Tests

Added gui/src/components/OnboardingCard/hooks/useOnboardingCard.test.tsx (4 cases):

Both regression cases fail on main (expected true to be false, expected 'false' to be 'true') and pass with this change. Full gui suite: 38 files / 376 tests passing; tsc --noEmit and Prettier clean.

Closing the onboarding card writes `hasDismissedOnboardingCard` to
localStorage, but nothing ever clears it. The redux `onboardingCard.show`
flag is not persisted (the `ui` slice only persists tool/rule settings),
so the existing "Quickstart" row in Help re-showed the card for the
current session only - after a reload the localStorage flag suppressed it
again, leaving no way to bring the card back.

`open` now clears the flag, mirroring `close` which sets it. Every call
site of `open` is an explicit request to show the card, so clearing the
dismissal there is safe. The Quickstart row now goes through `open`
instead of dispatching `setOnboardingCard` directly, so it benefits from
the same handling; `activeTab: undefined` was already equivalent to
API_KEY, which the card defaults to.

Fixes continuedev#12582
@WhoamiI00
WhoamiI00 requested a review from a team as a code owner August 12, 2026 07:58
@WhoamiI00
WhoamiI00 requested review from sestinj and removed request for a team August 12, 2026 07:58
@github-actions

Copy link
Copy Markdown
Contributor


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

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.

Unable to reopen the account/settings bar after closing it

1 participant