feat: add repository cloning to project setup

Add project can clone repositories into a chosen folder
Command palette now opens the add project flow
Clone flow supports selecting Git identities
This commit is contained in:
Bohdan Triapitsyn
2026-05-07 01:10:17 +03:00
parent fd3557e5c3
commit d764ad6872
13 changed files with 419 additions and 126 deletions
+8 -4
View File
@@ -423,7 +423,7 @@ export const dict: Record<I18nKey, string> = {
'gitView.commit.addGitmoji': 'gitmoji 추가',
'gitView.commit.aiHighlights.insertAria': '커밋 메시지에 삽입',
'gitView.commit.aiHighlights.insertTooltip': '커밋 메시지에 삽입',
'gitView.commit.aiHighlights.title': '제목',
'gitView.commit.aiHighlights.title': '주요 내용',
'gitView.commit.commit': '커밋',
'gitView.commit.commitAria': '커밋 생성',
'gitView.commit.committing': '커밋 중…',
@@ -1105,13 +1105,17 @@ export const dict: Record<I18nKey, string> = {
'directoryExplorerDialog.description': '프로젝트로 추가할 폴더를 선택하세요.',
'directoryExplorerDialog.toggle.showHidden': '숨김 항목 표시',
'directoryExplorerDialog.pathInput.placeholder': '경로를 입력하거나 트리에서 선택…',
'directoryExplorerDialog.actions.cancel': '취소',
'directoryExplorerDialog.actions.openingFinder': '여는 중...',
'directoryExplorerDialog.actions.openInFinder': 'Finder에서 열기',
'directoryExplorerDialog.actions.adding': '추가 중…',
'directoryExplorerDialog.actions.addProject': '프로젝트 추가',
'directoryExplorerDialog.actions.addLocalProject': '로컬 프로젝트 추가',
'directoryExplorerDialog.actions.cloneRepository': '저장소 복제',
'directoryExplorerDialog.actions.cloneAndAdd': '복제하고 추가',
'directoryExplorerDialog.actions.cloning': '복제 중...',
'directoryExplorerDialog.actions.createAndAdd': '생성하고 추가',
'directoryExplorerDialog.actions.alreadyAdded': '이미 추가됨',
'directoryExplorerDialog.clone.remoteUrlPlaceholder': '저장소 URL (HTTPS 또는 SSH)',
'directoryExplorerDialog.browse.directories': '디렉터리',
'directoryExplorerDialog.browse.loading': '디렉터리 로드 중...',
'directoryExplorerDialog.browse.empty': '일치하는 디렉터리가 없습니다.',
@@ -1120,13 +1124,13 @@ export const dict: Record<I18nKey, string> = {
'directoryExplorerDialog.footer.navigate': '탐색',
'directoryExplorerDialog.footer.select': '선택',
'directoryExplorerDialog.footer.add': '추가',
'directoryExplorerDialog.footer.close': '닫기',
'directoryExplorerDialog.shortcut.enter': 'Enter',
'directoryExplorerDialog.toast.unableToAccessDirectory': '디렉터리에 접근할 수 없음',
'directoryExplorerDialog.toast.desktopDeniedAccess': '데스크톱에서 디렉터리 접근이 거부되었습니다.',
'directoryExplorerDialog.toast.failedToOpenDirectory': '디렉터리를 열지 못했습니다',
'directoryExplorerDialog.toast.desktopCouldNotGrantAccess': '데스크톱에서 파일 접근 권한을 부여하지 못했습니다.',
'directoryExplorerDialog.toast.failedToAddProject': '프로젝트 추가 실패',
'directoryExplorerDialog.toast.cloneUrlRequired': '복제하기 전에 저장소 URL을 입력하세요.',
'directoryExplorerDialog.toast.selectValidDirectoryPath': '유효한 디렉터리 경로를 선택하세요.',
'directoryExplorerDialog.toast.failedToSelectDirectory': '디렉터리 선택 실패',
'directoryExplorerDialog.toast.unknownError': '알 수 없는 오류가 발생했습니다.',
@@ -1142,7 +1146,6 @@ export const dict: Record<I18nKey, string> = {
'directoryTree.section.pinned': '고정됨',
'directoryTree.section.browse': '찾아보기',
'aboutDialog.versionLabel': '버전 {version}',
'aboutDialog.tagline': '워크스페이스에서 에이전트와 함께 코딩하세요.',
'aboutDialog.actions.copyDiagnostics': '진단 정보 복사',
'aboutDialog.actions.preparingDiagnostics': '진단 정보 준비 중…',
'aboutDialog.actions.diagnosticsCopied': '진단 정보 복사됨',
@@ -1649,6 +1652,7 @@ export const dict: Record<I18nKey, string> = {
'commandPalette.empty.searchingFiles': '파일 검색 중…',
'commandPalette.item.newSession': '새 세션',
'commandPalette.item.newWorktreeDraft': '새 워크트리 드래프트',
'commandPalette.item.addProject': '프로젝트 추가',
'commandPalette.item.showSessionSwitcher': '세션 전환기 표시',
'commandPalette.item.toggleSidebar': '토글 사이드바',
'commandPalette.item.toggleRightSidebar': '오른쪽 사이드바 전환',