diff --git a/packages/ui/src/components/sections/openchamber/OpenChamberPage.tsx b/packages/ui/src/components/sections/openchamber/OpenChamberPage.tsx
index 9cd9ffd6..c216a62e 100644
--- a/packages/ui/src/components/sections/openchamber/OpenChamberPage.tsx
+++ b/packages/ui/src/components/sections/openchamber/OpenChamberPage.tsx
@@ -10,7 +10,7 @@ import { NotificationSettings } from './NotificationSettings';
import { GitHubSettings } from './GitHubSettings';
import { ScrollableOverlay } from '@/components/ui/ScrollableOverlay';
import { useDeviceInfo } from '@/lib/device';
-import { isWebRuntime } from '@/lib/desktop';
+import { isVSCodeRuntime, isWebRuntime } from '@/lib/desktop';
import type { OpenChamberSection } from './OpenChamberSidebar';
interface OpenChamberPageProps {
@@ -122,6 +122,9 @@ const GitSectionContent: React.FC = () => {
// GitHub section: Connect account for PR/issue workflows
const GitHubSectionContent: React.FC = () => {
+ if (isVSCodeRuntime()) {
+ return null;
+ }
return ;
};
diff --git a/packages/ui/src/components/sections/openchamber/OpenChamberSidebar.tsx b/packages/ui/src/components/sections/openchamber/OpenChamberSidebar.tsx
index c9a15ba2..15984202 100644
--- a/packages/ui/src/components/sections/openchamber/OpenChamberSidebar.tsx
+++ b/packages/ui/src/components/sections/openchamber/OpenChamberSidebar.tsx
@@ -46,6 +46,7 @@ const OPENCHAMBER_SECTION_GROUPS: SectionGroup[] = [
id: 'github',
label: 'GitHub',
items: ['Connect', 'PRs', 'Issues'],
+ hideInVSCode: true,
},
{
id: 'notifications',
diff --git a/packages/ui/src/components/session/GitHubIssuePickerDialog.tsx b/packages/ui/src/components/session/GitHubIssuePickerDialog.tsx
index 11934cb8..c26ca1fd 100644
--- a/packages/ui/src/components/session/GitHubIssuePickerDialog.tsx
+++ b/packages/ui/src/components/session/GitHubIssuePickerDialog.tsx
@@ -24,6 +24,7 @@ import { useSessionStore } from '@/stores/useSessionStore';
import { useConfigStore } from '@/stores/useConfigStore';
import { useMessageStore } from '@/stores/messageStore';
import { useContextStore } from '@/stores/contextStore';
+import { useUIStore } from '@/stores/useUIStore';
import { opencodeClient } from '@/lib/opencode/client';
import { createWorktreeSessionForNewBranch } from '@/lib/worktreeSessionCreator';
import { generateBranchSlug } from '@/lib/git/branchNameGenerator';
@@ -69,6 +70,8 @@ export function GitHubIssuePickerDialog({
onOpenChange: (open: boolean) => void;
}) {
const { github } = useRuntimeAPIs();
+ const setSettingsDialogOpen = useUIStore((state) => state.setSettingsDialogOpen);
+ const setSidebarSection = useUIStore((state) => state.setSidebarSection);
const activeProject = useProjectsStore((state) => state.getActiveProject());
const projectDirectory = activeProject?.path ?? null;
@@ -156,6 +159,11 @@ export function GitHubIssuePickerDialog({
const connected = Boolean(result?.connected);
const repoUrl = result?.repo?.url ?? null;
+ const openGitHubSettings = React.useCallback(() => {
+ setSidebarSection('settings');
+ setSettingsDialogOpen(true);
+ }, [setSettingsDialogOpen, setSidebarSection]);
+
const filtered = React.useMemo(() => {
const q = query.trim().toLowerCase();
if (!q) return issues;
@@ -458,7 +466,14 @@ Do not implement changes until I confirm; end with: “Next actions: <1 sentence
) : null}
{connected === false ? (
-
GitHub not connected.
+
+
GitHub not connected. Connect your GitHub account in settings.
+
+
+
+
) : null}
{error ? (
diff --git a/packages/ui/src/components/session/GitHubPullRequestPickerDialog.tsx b/packages/ui/src/components/session/GitHubPullRequestPickerDialog.tsx
index f49a8c83..3fb00c35 100644
--- a/packages/ui/src/components/session/GitHubPullRequestPickerDialog.tsx
+++ b/packages/ui/src/components/session/GitHubPullRequestPickerDialog.tsx
@@ -24,6 +24,7 @@ import { useSessionStore } from '@/stores/useSessionStore';
import { useConfigStore } from '@/stores/useConfigStore';
import { useMessageStore } from '@/stores/messageStore';
import { useContextStore } from '@/stores/contextStore';
+import { useUIStore } from '@/stores/useUIStore';
import { opencodeClient } from '@/lib/opencode/client';
import { createWorktreeSessionForNewBranchExact } from '@/lib/worktreeSessionCreator';
import { gitFetch } from '@/lib/gitApi';
@@ -60,6 +61,8 @@ export function GitHubPullRequestPickerDialog({
onOpenChange: (open: boolean) => void;
}) {
const { github } = useRuntimeAPIs();
+ const setSettingsDialogOpen = useUIStore((state) => state.setSettingsDialogOpen);
+ const setSidebarSection = useUIStore((state) => state.setSidebarSection);
const activeProject = useProjectsStore((state) => state.getActiveProject());
const projectDirectory = activeProject?.path ?? null;
@@ -148,6 +151,11 @@ export function GitHubPullRequestPickerDialog({
const connected = Boolean(result?.connected);
const repoUrl = result?.repo?.url ?? null;
+ const openGitHubSettings = React.useCallback(() => {
+ setSidebarSection('settings');
+ setSettingsDialogOpen(true);
+ }, [setSettingsDialogOpen, setSidebarSection]);
+
const filtered = React.useMemo(() => {
const q = query.trim().toLowerCase();
if (!q) return prs;
@@ -468,7 +476,14 @@ Nice-to-have:
) : null}
{connected === false ? (
- GitHub not connected.
+
+
GitHub not connected. Connect your GitHub account in settings.
+
+
+
+
) : null}
{error ? (
diff --git a/packages/ui/src/components/views/git/PullRequestSection.tsx b/packages/ui/src/components/views/git/PullRequestSection.tsx
index 57354bd8..a05ba0fe 100644
--- a/packages/ui/src/components/views/git/PullRequestSection.tsx
+++ b/packages/ui/src/components/views/git/PullRequestSection.tsx
@@ -18,6 +18,7 @@ import {
} from '@/components/ui/collapsible';
import { generatePullRequestDescription } from '@/lib/gitApi';
import { useRuntimeAPIs } from '@/hooks/useRuntimeAPIs';
+import { useUIStore } from '@/stores/useUIStore';
import type {
GitHubPullRequest,
GitHubPullRequestStatus,
@@ -73,6 +74,13 @@ export const PullRequestSection: React.FC<{
baseBranch: string;
}> = ({ directory, branch, baseBranch }) => {
const { github } = useRuntimeAPIs();
+ const setSettingsDialogOpen = useUIStore((state) => state.setSettingsDialogOpen);
+ const setSidebarSection = useUIStore((state) => state.setSidebarSection);
+
+ const openGitHubSettings = React.useCallback(() => {
+ setSidebarSection('settings');
+ setSettingsDialogOpen(true);
+ }, [setSettingsDialogOpen, setSidebarSection]);
const [isOpen, setIsOpen] = React.useState(true);
const [isLoading, setIsLoading] = React.useState(false);
@@ -263,8 +271,13 @@ export const PullRequestSection: React.FC<{
{!isConnected ? (
-
- GitHub not connected. Connect in Settings to create and merge PRs.
+
+
+ GitHub not connected. Connect your GitHub account in settings.
+
+
) : null}