Skip to content

Commit bcbb5e0

Browse files
authored
fix(web): Prompt anonymous users to login if they want to use connectors in Ask (#1274)
* Prompt anonymous users to login if they want to use connectors in Ask Sourcebot * Updating changelog --------- Co-authored-by: Jack Minnetian <270441393+BlueBottleLatte@users.noreply.github.com>
1 parent 358d481 commit bcbb5e0

8 files changed

Lines changed: 153 additions & 82 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Fixed
11+
- Guest users will now be prompted to login when trying to view their connects on the Ask Sourcebot page. [#1274](https://github.com/sourcebot-dev/sourcebot/pull/1274)
12+
1013
## [5.0.0] - 2026-06-04
1114

1215
Checkout the [migration guide](https://docs.sourcebot.dev/docs/upgrade/v4-to-v5-guide) for details on upgrading your instance to v5.

packages/web/src/app/(app)/askgh/[owner]/[repo]/components/landingPage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export const LandingPage = ({
9595
onContextSelectorOpenChanged={setIsContextSelectorOpen}
9696
disabledMcpServerIds={disabledMcpServerIds}
9797
onDisabledMcpServerIdsChange={setDisabledMcpServerIds}
98+
isAuthenticated={isAuthenticated}
9899
/>
99100
<SearchModeSelector
100101
searchMode="agentic"

packages/web/src/app/(app)/chat/components/landingPageChatBox.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export const LandingPageChatBox = ({
6262
onContextSelectorOpenChanged={setIsContextSelectorOpen}
6363
disabledMcpServerIds={disabledMcpServerIds}
6464
onDisabledMcpServerIdsChange={setDisabledMcpServerIds}
65+
isAuthenticated={isAuthenticated}
6566
/>
6667
<SearchModeSelector
6768
searchMode="agentic"

packages/web/src/ee/features/chat/components/chatThread/chatThread.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,7 @@ export const ChatThread = ({
496496
onContextSelectorOpenChanged={setIsContextSelectorOpen}
497497
disabledMcpServerIds={disabledMcpServerIds}
498498
onDisabledMcpServerIdsChange={onDisabledMcpServerIdsChange}
499+
isAuthenticated={isAuthenticated}
499500
/>
500501
</div>
501502
</CustomSlateEditor>

packages/web/src/ee/features/chat/mcp/components/connectorsMenu.test.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { describe, expect, test } from 'vitest';
2-
import { splitMcpServersForChatMenu } from './connectorsMenu';
2+
import { ErrorCode } from '@/lib/errorCodes';
3+
import { McpServersLoadError, shouldRetryMcpServersLoad, splitMcpServersForChatMenu } from './connectorsMenu';
34

45
describe('splitMcpServersForChatMenu', () => {
56
test('keeps connected and expired servers separate from connectable approved servers', () => {
@@ -15,3 +16,23 @@ describe('splitMcpServersForChatMenu', () => {
1516
expect(connectableServers.map((server) => server.id)).toEqual(['approved']);
1617
});
1718
});
19+
20+
describe('shouldRetryMcpServersLoad', () => {
21+
test('does not retry authentication failures', () => {
22+
const error = new McpServersLoadError({
23+
statusCode: 401,
24+
errorCode: ErrorCode.NOT_AUTHENTICATED,
25+
message: 'Not authenticated',
26+
});
27+
28+
expect(shouldRetryMcpServersLoad(0, error)).toBe(false);
29+
});
30+
31+
test('retries other failures up to the default react-query cap', () => {
32+
const error = new Error('network down');
33+
34+
expect(shouldRetryMcpServersLoad(0, error)).toBe(true);
35+
expect(shouldRetryMcpServersLoad(2, error)).toBe(true);
36+
expect(shouldRetryMcpServersLoad(3, error)).toBe(false);
37+
});
38+
});

packages/web/src/ee/features/chat/mcp/components/connectorsMenu.tsx

Lines changed: 121 additions & 81 deletions
Large diffs are not rendered by default.

packages/web/src/features/chat/components/chatBox/chatBoxPlusButton.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ interface ChatBoxPlusButtonProps {
1010
onSelectedSearchScopesChange: (items: SearchScope[]) => void;
1111
disabledMcpServerIds: string[];
1212
onDisabledMcpServerIdsChange: (ids: string[]) => void;
13+
isAuthenticated: boolean;
1314
}
1415

1516
/**

packages/web/src/features/chat/components/chatBox/chatBoxToolbar.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export interface ChatBoxToolbarProps {
1919
onContextSelectorOpenChanged: (isOpen: boolean) => void;
2020
disabledMcpServerIds?: string[];
2121
onDisabledMcpServerIdsChange?: (ids: string[]) => void;
22+
isAuthenticated: boolean;
2223
}
2324

2425
export const ChatBoxToolbar = ({
@@ -31,6 +32,7 @@ export const ChatBoxToolbar = ({
3132
onContextSelectorOpenChanged,
3233
disabledMcpServerIds,
3334
onDisabledMcpServerIdsChange,
35+
isAuthenticated,
3436
}: ChatBoxToolbarProps) => {
3537
const { selectedLanguageModel, setSelectedLanguageModel } = useSelectedLanguageModel({
3638
languageModels,
@@ -45,6 +47,7 @@ export const ChatBoxToolbar = ({
4547
onSelectedSearchScopesChange={onSelectedSearchScopesChange}
4648
disabledMcpServerIds={disabledMcpServerIds}
4749
onDisabledMcpServerIdsChange={onDisabledMcpServerIdsChange}
50+
isAuthenticated={isAuthenticated}
4851
/>
4952
<Separator orientation="vertical" className="h-3 mx-1" />
5053
</>

0 commit comments

Comments
 (0)