From 958a3c10ebfd85367570bc84d166b958c8bb904d Mon Sep 17 00:00:00 2001 From: Haileyesus Date: Sun, 5 Apr 2026 09:32:06 +0300 Subject: [PATCH] feat: remove project dependency from settings and mcp form modal --- src/components/onboarding/view/Onboarding.tsx | 4 +- src/components/onboarding/view/utils.ts | 7 - .../sidebar/hooks/useSidebarModals.ts | 12 ++ .../refactored/sidebar/view/Sidebar.tsx | 86 +++++++----- .../refactored/sidebar/view/SidebarFooter.tsx | 123 ++++++++++++++++++ .../settings/hooks/useSettingsController.ts | 22 +--- src/components/settings/types/types.ts | 6 - src/components/settings/view/Settings.tsx | 17 ++- .../view/modals/ClaudeMcpFormModal.tsx | 73 ++++++++++- src/constants/config.ts | 15 ++- 10 files changed, 285 insertions(+), 80 deletions(-) create mode 100644 src/components/refactored/sidebar/view/SidebarFooter.tsx diff --git a/src/components/onboarding/view/Onboarding.tsx b/src/components/onboarding/view/Onboarding.tsx index 58627c4c..a5830826 100644 --- a/src/components/onboarding/view/Onboarding.tsx +++ b/src/components/onboarding/view/Onboarding.tsx @@ -11,8 +11,8 @@ import { createInitialProviderStatuses, gitEmailPattern, readErrorMessageFromResponse, - selectedProject, } from './utils'; +import { DEFAULT_PROJECT_FOR_EMPTY_SHELL } from '@/constants/config.js'; type OnboardingProps = { onComplete?: () => void | Promise; @@ -279,7 +279,7 @@ export default function Onboarding({ onComplete }: OnboardingProps) { isOpen={Boolean(activeLoginProvider)} onClose={() => setActiveLoginProvider(null)} provider={activeLoginProvider} - project={selectedProject} + project={DEFAULT_PROJECT_FOR_EMPTY_SHELL} onComplete={handleLoginComplete} /> )} diff --git a/src/components/onboarding/view/utils.ts b/src/components/onboarding/view/utils.ts index adb3c4bc..d6d5601a 100644 --- a/src/components/onboarding/view/utils.ts +++ b/src/components/onboarding/view/utils.ts @@ -1,16 +1,9 @@ -import { IS_PLATFORM } from '../../../constants/config'; import type { CliProvider, ProviderStatusMap } from './types'; export const cliProviders: CliProvider[] = ['claude', 'cursor', 'codex', 'gemini']; export const gitEmailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; -export const selectedProject = { - name: 'default', - displayName: 'default', - fullPath: IS_PLATFORM ? '/workspace' : '', - path: IS_PLATFORM ? '/workspace' : '', -}; export const createInitialProviderStatuses = (): ProviderStatusMap => ({ claude: { authenticated: false, email: null, loading: true, error: null }, diff --git a/src/components/refactored/sidebar/hooks/useSidebarModals.ts b/src/components/refactored/sidebar/hooks/useSidebarModals.ts index 7d70b291..186541c3 100644 --- a/src/components/refactored/sidebar/hooks/useSidebarModals.ts +++ b/src/components/refactored/sidebar/hooks/useSidebarModals.ts @@ -6,13 +6,25 @@ import { useState } from 'react'; */ export const useSidebarModals = () => { const [showNewProject, setShowNewProject] = useState(false); + const [showSettingsModal, setShowSettingsModal] = useState(false); + const [showVersionModal, setShowVersionModal] = useState(false); const openNewProject = () => setShowNewProject(true); const closeNewProject = () => setShowNewProject(false); + const openSettingsModal = () => setShowSettingsModal(true); + const closeSettingsModal = () => setShowSettingsModal(false); + const openVersionModal = () => setShowVersionModal(true); + const closeVersionModal = () => setShowVersionModal(false); return { showNewProject, openNewProject, closeNewProject, + showSettingsModal, + openSettingsModal, + closeSettingsModal, + showVersionModal, + openVersionModal, + closeVersionModal, }; }; diff --git a/src/components/refactored/sidebar/view/Sidebar.tsx b/src/components/refactored/sidebar/view/Sidebar.tsx index 6c60c0fe..4691a78d 100644 --- a/src/components/refactored/sidebar/view/Sidebar.tsx +++ b/src/components/refactored/sidebar/view/Sidebar.tsx @@ -1,4 +1,5 @@ import { PanelRightOpen } from 'lucide-react'; +import SidebarFooter from './SidebarFooter'; import { useSidebarSettings } from '@/components/refactored/sidebar/hooks/useSidebarSettings'; import { useSidebarModals } from '@/components/refactored/sidebar/hooks/useSidebarModals'; import { useWorkspaces } from '@/components/refactored/sidebar/hooks/useWorkspaces'; @@ -8,6 +9,8 @@ import { SidebarWorkspaceList } from '@/components/refactored/sidebar/view/Sideb import { cn } from '@/lib/utils'; import { Button } from '@/shared/view/ui'; import ProjectCreationWizard from '@/components/project-creation-wizard'; +import VersionUpgradeModal from '@/components/version-upgrade/view'; +import Settings from '@/components/settings/view/Settings'; export function Sidebar() { const { isCollapsed, toggleCollapse, setCollapsed } = useSidebarSettings(); @@ -50,7 +53,18 @@ export function Sidebar() { cancelSessionDelete, confirmSessionDelete, } = useWorkspaces(); - const { showNewProject, openNewProject, closeNewProject } = useSidebarModals(); + + const { + showNewProject, + openNewProject, + closeNewProject, + showSettingsModal, + openSettingsModal, + closeSettingsModal, + showVersionModal, + openVersionModal, + closeVersionModal, + } = useSidebarModals(); const handleSessionDeleteRequest = (workspacePath: string, sessionId: string) => { const workspace = workspaces.find( @@ -77,7 +91,7 @@ export function Sidebar() {