refactor(workspace): migrate from per-folder windows to single-window workspace

Replace the legacy folder + welcome routes with a unified /workspace route
that hosts all folders, conversations, tabs, and terminals in one window.

- Persist opened tabs to the database (opened_tabs entity + migration)
  so tab layout survives restarts and deep-link bootstrap restores state
- Replace FolderContext shim with AppWorkspaceProvider, ActiveFolderProvider,
  and TabProvider; expose both opened (folders) and full DB (allFolders)
  listings via list_all_folder_details
- Return conversations across all non-deleted folders from list_all when
  no folder filter is given, so the sidebar can show every folder's history
- Add ConversationContextBar above the chat input with folder picker
  (auto-opens unopened folders on select), branch picker, and commit /
  push / merge / stash entries to restore BranchDropdown functionality
- Rework sidebar with stats header, search, flat / folder-grouped view
  modes (localStorage-persisted), reveal-in-sidebar event subscriber,
  and per-folder context menu (focus, close tabs, remove from workspace);
  indent conversations under folder headers in grouped mode
- Gate terminal creation on active folder and show folder context
- Remove deprecated BranchDropdown, FolderNameDropdown, welcome route,
  and per-folder window commands
- Localize all new strings across 10 locales
This commit is contained in:
xintaofei
2026-04-20 21:22:36 +08:00
parent 10801bf393
commit d9323d7399
89 changed files with 3701 additions and 2743 deletions

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "لم يتم العثور على جلسات جديدة (تم تخطي {skipped})",
"importFailed": "فشل الاستيراد: {message}",
"reviewCompleted": "تم وضع علامة مكتمل على {count, plural, one {# جلسة مراجعة} other {# جلسات مراجعة}}",
"completeReviewFailed": "فشل إكمال جلسات المراجعة: {message}"
"completeReviewFailed": "فشل إكمال جلسات المراجعة: {message}",
"folderOpened": "تم فتح المجلد {name}",
"folderRemoved": "تمت إزالة المجلد {name}",
"openFolderFailed": "فشل فتح المجلد",
"removeFolderFailed": "فشل إزالة المجلد: {message}"
},
"statsLabel": "{folders} مجلدات · {convos} محادثة",
"openFolder": "فتح مجلد",
"searchPlaceholder": "بحث عن محادثات...",
"viewFlat": "عرض مسطح",
"viewGrouped": "تجميع حسب المجلد",
"noMatchingConversations": "لا توجد محادثات مطابقة",
"removeFolderConfirmTitle": "إزالة المجلد من مساحة العمل؟",
"removeFolderConfirmDescription": "إزالة \"{name}\" من مساحة العمل؟ سيتم إغلاق علامات التبويب والمحطات المرتبطة.",
"folderHeaderMenu": {
"focus": "تركيز",
"closeFolderTabs": "إغلاق جميع علامات تبويب هذا المجلد",
"removeFromWorkspace": "إزالة من مساحة العمل"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "إغلاق البقية",
"closeAll": "إغلاق الكل",
"tileDisplay": "عرض متجانب",
"untileDisplay": "إلغاء التجانب"
"untileDisplay": "إلغاء التجانب",
"closeFolderTabs": "إغلاق جميع علامات التبويب لـ {folder}",
"revealInSidebar": "إظهار في الشريط الجانبي"
},
"fileWorkspace": {
"files": "الملفات",
@@ -976,7 +995,8 @@
"close": "إغلاق",
"closeOthers": "إغلاق البقية",
"closeAll": "إغلاق الكل",
"hideTerminal": "إخفاء الطرفية ({shortcut})"
"hideTerminal": "إخفاء الطرفية ({shortcut})",
"openFolderFirst": "افتح مجلدا أولا"
},
"sessionFiles": {
"currentResponse": "الاستجابة الحالية",
@@ -1792,6 +1812,25 @@
"hunkLabel": "مقطع {index}",
"loadingHunk": "جارٍ تحميل hunk...",
"noDiffData": "لا توجد بيانات diff"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "Keine neuen Sitzungen gefunden ({skipped} übersprungen)",
"importFailed": "Import fehlgeschlagen: {message}",
"reviewCompleted": "{count, plural, one {# Review-Sitzung} other {# Review-Sitzungen}} als abgeschlossen markiert",
"completeReviewFailed": "Review-Sitzungen konnten nicht abgeschlossen werden: {message}"
"completeReviewFailed": "Review-Sitzungen konnten nicht abgeschlossen werden: {message}",
"folderOpened": "Ordner {name} geöffnet",
"folderRemoved": "Ordner {name} entfernt",
"openFolderFailed": "Ordner konnte nicht geöffnet werden",
"removeFolderFailed": "Ordner konnte nicht entfernt werden: {message}"
},
"statsLabel": "{folders} Ordner · {convos} Konversationen",
"openFolder": "Ordner öffnen",
"searchPlaceholder": "Konversationen suchen...",
"viewFlat": "Flache Ansicht",
"viewGrouped": "Nach Ordner gruppieren",
"noMatchingConversations": "Keine passenden Konversationen",
"removeFolderConfirmTitle": "Ordner aus Arbeitsbereich entfernen?",
"removeFolderConfirmDescription": "\"{name}\" aus dem Arbeitsbereich entfernen? Zugehörige Tabs und Terminals werden geschlossen.",
"folderHeaderMenu": {
"focus": "Fokussieren",
"closeFolderTabs": "Alle Tabs dieses Ordners schließen",
"removeFromWorkspace": "Aus Arbeitsbereich entfernen"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "Andere schließen",
"closeAll": "Alle schließen",
"tileDisplay": "Kachelansicht",
"untileDisplay": "Kachel beenden"
"untileDisplay": "Kachel beenden",
"closeFolderTabs": "Alle Tabs von {folder} schließen",
"revealInSidebar": "In Seitenleiste anzeigen"
},
"fileWorkspace": {
"files": "Dateien",
@@ -976,7 +995,8 @@
"close": "Schließen",
"closeOthers": "Andere schließen",
"closeAll": "Alle schließen",
"hideTerminal": "Terminal ausblenden ({shortcut})"
"hideTerminal": "Terminal ausblenden ({shortcut})",
"openFolderFirst": "Öffnen Sie zuerst einen Ordner"
},
"sessionFiles": {
"currentResponse": "Aktuelle Antwort",
@@ -1792,6 +1812,25 @@
"hunkLabel": "Block {index}",
"loadingHunk": "Hunk wird geladen...",
"noDiffData": "Keine Diff-Daten"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "No new sessions found (skipped {skipped})",
"importFailed": "Import failed: {message}",
"reviewCompleted": "Marked {count, plural, one {# review session} other {# review sessions}} as completed",
"completeReviewFailed": "Failed to complete review sessions: {message}"
"completeReviewFailed": "Failed to complete review sessions: {message}",
"folderOpened": "Opened folder {name}",
"folderRemoved": "Removed folder {name}",
"openFolderFailed": "Failed to open folder",
"removeFolderFailed": "Failed to remove folder: {message}"
},
"statsLabel": "{folders} folders · {convos} conversations",
"openFolder": "Open Folder",
"searchPlaceholder": "Search conversations...",
"viewFlat": "Flat view",
"viewGrouped": "Grouped by folder",
"noMatchingConversations": "No matching conversations",
"removeFolderConfirmTitle": "Remove folder from workspace?",
"removeFolderConfirmDescription": "Remove \"{name}\" from the workspace? Its tabs and terminals will close.",
"folderHeaderMenu": {
"focus": "Focus",
"closeFolderTabs": "Close all tabs of this folder",
"removeFromWorkspace": "Remove from workspace"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "Close Others",
"closeAll": "Close All",
"tileDisplay": "Tile Display",
"untileDisplay": "Exit Tile"
"untileDisplay": "Exit Tile",
"closeFolderTabs": "Close all tabs of {folder}",
"revealInSidebar": "Reveal in sidebar"
},
"fileWorkspace": {
"files": "Files",
@@ -976,7 +995,8 @@
"close": "Close",
"closeOthers": "Close Others",
"closeAll": "Close All",
"hideTerminal": "Hide Terminal ({shortcut})"
"hideTerminal": "Hide Terminal ({shortcut})",
"openFolderFirst": "Open a folder first"
},
"sessionFiles": {
"currentResponse": "Current response",
@@ -1792,6 +1812,25 @@
"hunkLabel": "Hunk {index}",
"loadingHunk": "Loading hunk...",
"noDiffData": "No diff data"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "No se encontraron sesiones nuevas (omitidas {skipped})",
"importFailed": "Error al importar: {message}",
"reviewCompleted": "Se marcaron como completadas {count, plural, one {# sesión en revisión} other {# sesiones en revisión}}",
"completeReviewFailed": "Error al completar sesiones en revisión: {message}"
"completeReviewFailed": "Error al completar sesiones en revisión: {message}",
"folderOpened": "Carpeta {name} abierta",
"folderRemoved": "Carpeta {name} eliminada",
"openFolderFailed": "Error al abrir carpeta",
"removeFolderFailed": "Error al eliminar carpeta: {message}"
},
"statsLabel": "{folders} carpetas · {convos} conversaciones",
"openFolder": "Abrir carpeta",
"searchPlaceholder": "Buscar conversaciones...",
"viewFlat": "Vista plana",
"viewGrouped": "Agrupar por carpeta",
"noMatchingConversations": "No hay conversaciones coincidentes",
"removeFolderConfirmTitle": "¿Eliminar carpeta del espacio de trabajo?",
"removeFolderConfirmDescription": "¿Eliminar \"{name}\" del espacio de trabajo? Sus pestañas y terminales se cerrarán.",
"folderHeaderMenu": {
"focus": "Enfocar",
"closeFolderTabs": "Cerrar todas las pestañas de esta carpeta",
"removeFromWorkspace": "Quitar del espacio de trabajo"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "Cerrar otros",
"closeAll": "Cerrar todo",
"tileDisplay": "Vista en mosaico",
"untileDisplay": "Salir de mosaico"
"untileDisplay": "Salir de mosaico",
"closeFolderTabs": "Cerrar todas las pestañas de {folder}",
"revealInSidebar": "Mostrar en la barra lateral"
},
"fileWorkspace": {
"files": "Archivos",
@@ -976,7 +995,8 @@
"close": "Cerrar",
"closeOthers": "Cerrar otros",
"closeAll": "Cerrar todo",
"hideTerminal": "Ocultar terminal ({shortcut})"
"hideTerminal": "Ocultar terminal ({shortcut})",
"openFolderFirst": "Abre primero una carpeta"
},
"sessionFiles": {
"currentResponse": "Respuesta actual",
@@ -1792,6 +1812,25 @@
"hunkLabel": "Bloque {index}",
"loadingHunk": "Cargando hunk...",
"noDiffData": "Sin datos de diff"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "Aucune nouvelle session trouvée ({skipped} ignorée(s))",
"importFailed": "Échec de limport : {message}",
"reviewCompleted": "{count, plural, one {# session en revue} other {# sessions en revue}} marquée(s) comme terminée(s)",
"completeReviewFailed": "Échec de la finalisation des sessions en revue : {message}"
"completeReviewFailed": "Échec de la finalisation des sessions en revue : {message}",
"folderOpened": "Dossier {name} ouvert",
"folderRemoved": "Dossier {name} retiré",
"openFolderFailed": "Échec de l'ouverture du dossier",
"removeFolderFailed": "Échec de la suppression du dossier : {message}"
},
"statsLabel": "{folders} dossiers · {convos} conversations",
"openFolder": "Ouvrir le dossier",
"searchPlaceholder": "Rechercher des conversations...",
"viewFlat": "Vue à plat",
"viewGrouped": "Grouper par dossier",
"noMatchingConversations": "Aucune conversation correspondante",
"removeFolderConfirmTitle": "Retirer le dossier de l'espace de travail ?",
"removeFolderConfirmDescription": "Retirer \"{name}\" de l'espace de travail ? Les onglets et terminaux associés seront fermés.",
"folderHeaderMenu": {
"focus": "Focaliser",
"closeFolderTabs": "Fermer tous les onglets de ce dossier",
"removeFromWorkspace": "Retirer de l'espace de travail"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "Fermer les autres",
"closeAll": "Tout fermer",
"tileDisplay": "Affichage en mosaïque",
"untileDisplay": "Quitter la mosaïque"
"untileDisplay": "Quitter la mosaïque",
"closeFolderTabs": "Fermer tous les onglets de {folder}",
"revealInSidebar": "Afficher dans la barre latérale"
},
"fileWorkspace": {
"files": "Fichiers",
@@ -976,7 +995,8 @@
"close": "Fermer",
"closeOthers": "Fermer les autres",
"closeAll": "Tout fermer",
"hideTerminal": "Masquer le terminal ({shortcut})"
"hideTerminal": "Masquer le terminal ({shortcut})",
"openFolderFirst": "Ouvrez d'abord un dossier"
},
"sessionFiles": {
"currentResponse": "Réponse actuelle",
@@ -1792,6 +1812,25 @@
"hunkLabel": "Bloc {index}",
"loadingHunk": "Chargement du hunk...",
"noDiffData": "Aucune donnée diff"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "新しいセッションは見つかりませんでした({skipped} 件をスキップ)",
"importFailed": "インポートに失敗しました: {message}",
"reviewCompleted": "{count, plural, one {# 件のレビューセッション} other {# 件のレビューセッション}} を完了にしました",
"completeReviewFailed": "レビューセッションの完了処理に失敗しました: {message}"
"completeReviewFailed": "レビューセッションの完了処理に失敗しました: {message}",
"folderOpened": "フォルダ {name} を開きました",
"folderRemoved": "フォルダ {name} を削除しました",
"openFolderFailed": "フォルダを開けませんでした",
"removeFolderFailed": "フォルダの削除に失敗しました: {message}"
},
"statsLabel": "{folders} フォルダ · {convos} 会話",
"openFolder": "フォルダを開く",
"searchPlaceholder": "会話を検索...",
"viewFlat": "フラット表示",
"viewGrouped": "フォルダでグループ化",
"noMatchingConversations": "一致する会話がありません",
"removeFolderConfirmTitle": "このフォルダをワークスペースから削除しますか?",
"removeFolderConfirmDescription": "\"{name}\" をワークスペースから削除しますか?関連するタブとターミナルが閉じられます。",
"folderHeaderMenu": {
"focus": "フォーカス",
"closeFolderTabs": "このフォルダのすべてのタブを閉じる",
"removeFromWorkspace": "ワークスペースから削除"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "他を閉じる",
"closeAll": "すべて閉じる",
"tileDisplay": "タイル表示",
"untileDisplay": "タイル解除"
"untileDisplay": "タイル解除",
"closeFolderTabs": "{folder} のすべてのタブを閉じる",
"revealInSidebar": "サイドバーで表示"
},
"fileWorkspace": {
"files": "ファイル",
@@ -976,7 +995,8 @@
"close": "閉じる",
"closeOthers": "他を閉じる",
"closeAll": "すべて閉じる",
"hideTerminal": "ターミナルを隠す ({shortcut})"
"hideTerminal": "ターミナルを隠す ({shortcut})",
"openFolderFirst": "先にフォルダを開いてください"
},
"sessionFiles": {
"currentResponse": "現在の応答",
@@ -1792,6 +1812,25 @@
"hunkLabel": "ハンク {index}",
"loadingHunk": "Hunk を読み込み中...",
"noDiffData": "Diff データがありません"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "새 세션이 없습니다 ({skipped}개 건너뜀)",
"importFailed": "가져오기 실패: {message}",
"reviewCompleted": "{count, plural, one {#개 검토 세션} other {#개 검토 세션}}을 완료로 표시했습니다",
"completeReviewFailed": "검토 세션 완료 처리 실패: {message}"
"completeReviewFailed": "검토 세션 완료 처리 실패: {message}",
"folderOpened": "폴더 {name}을(를) 열었습니다",
"folderRemoved": "폴더 {name}을(를) 제거했습니다",
"openFolderFailed": "폴더를 열 수 없습니다",
"removeFolderFailed": "폴더 제거 실패: {message}"
},
"statsLabel": "{folders}개 폴더 · {convos}개 대화",
"openFolder": "폴더 열기",
"searchPlaceholder": "대화 검색...",
"viewFlat": "평면 보기",
"viewGrouped": "폴더별 그룹",
"noMatchingConversations": "일치하는 대화가 없습니다",
"removeFolderConfirmTitle": "이 폴더를 워크스페이스에서 제거하시겠습니까?",
"removeFolderConfirmDescription": "워크스페이스에서 \"{name}\"을(를) 제거하시겠습니까? 관련 탭과 터미널이 닫힙니다.",
"folderHeaderMenu": {
"focus": "포커스",
"closeFolderTabs": "이 폴더의 모든 탭 닫기",
"removeFromWorkspace": "워크스페이스에서 제거"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"tileDisplay": "타일 표시",
"untileDisplay": "타일 해제"
"untileDisplay": "타일 해제",
"closeFolderTabs": "{folder}의 모든 탭 닫기",
"revealInSidebar": "사이드바에서 표시"
},
"fileWorkspace": {
"files": "파일",
@@ -976,7 +995,8 @@
"close": "닫기",
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"hideTerminal": "터미널 숨기기 ({shortcut})"
"hideTerminal": "터미널 숨기기 ({shortcut})",
"openFolderFirst": "먼저 폴더를 여세요"
},
"sessionFiles": {
"currentResponse": "현재 응답",
@@ -1792,6 +1812,25 @@
"hunkLabel": "청크 {index}",
"loadingHunk": "Hunk 로딩 중...",
"noDiffData": "Diff 데이터 없음"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "Nenhuma nova sessão encontrada (ignoradas {skipped})",
"importFailed": "Falha na importação: {message}",
"reviewCompleted": "Marcadas {count, plural, one {# sessão em revisão} other {# sessões em revisão}} como concluídas",
"completeReviewFailed": "Falha ao concluir sessões em revisão: {message}"
"completeReviewFailed": "Falha ao concluir sessões em revisão: {message}",
"folderOpened": "Pasta {name} aberta",
"folderRemoved": "Pasta {name} removida",
"openFolderFailed": "Falha ao abrir pasta",
"removeFolderFailed": "Falha ao remover pasta: {message}"
},
"statsLabel": "{folders} pastas · {convos} conversas",
"openFolder": "Abrir pasta",
"searchPlaceholder": "Buscar conversas...",
"viewFlat": "Visualização plana",
"viewGrouped": "Agrupar por pasta",
"noMatchingConversations": "Nenhuma conversa correspondente",
"removeFolderConfirmTitle": "Remover pasta do espaço de trabalho?",
"removeFolderConfirmDescription": "Remover \"{name}\" do espaço de trabalho? As abas e terminais relacionados serão fechados.",
"folderHeaderMenu": {
"focus": "Focar",
"closeFolderTabs": "Fechar todas as abas desta pasta",
"removeFromWorkspace": "Remover do espaço de trabalho"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "Fechar outros",
"closeAll": "Fechar tudo",
"tileDisplay": "Exibição em mosaico",
"untileDisplay": "Sair do mosaico"
"untileDisplay": "Sair do mosaico",
"closeFolderTabs": "Fechar todas as abas de {folder}",
"revealInSidebar": "Mostrar na barra lateral"
},
"fileWorkspace": {
"files": "Arquivos",
@@ -976,7 +995,8 @@
"close": "Fechar",
"closeOthers": "Fechar outros",
"closeAll": "Fechar tudo",
"hideTerminal": "Ocultar terminal ({shortcut})"
"hideTerminal": "Ocultar terminal ({shortcut})",
"openFolderFirst": "Abra primeiro uma pasta"
},
"sessionFiles": {
"currentResponse": "Resposta atual",
@@ -1792,6 +1812,25 @@
"hunkLabel": "Bloco {index}",
"loadingHunk": "Carregando hunk...",
"noDiffData": "Sem dados de diff"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "没有新会话(已跳过 {skipped} 个)",
"importFailed": "导入失败:{message}",
"reviewCompleted": "已将 {count} 个复查会话标记为已完成",
"completeReviewFailed": "批量完成复查会话失败:{message}"
"completeReviewFailed": "批量完成复查会话失败:{message}",
"folderOpened": "已打开文件夹 {name}",
"folderRemoved": "已移除文件夹 {name}",
"openFolderFailed": "打开文件夹失败",
"removeFolderFailed": "移除文件夹失败:{message}"
},
"statsLabel": "{folders} 个文件夹 · {convos} 个会话",
"openFolder": "打开文件夹",
"searchPlaceholder": "搜索会话...",
"viewFlat": "平铺视图",
"viewGrouped": "按文件夹分组",
"noMatchingConversations": "未找到匹配的会话",
"removeFolderConfirmTitle": "从工作区移除该文件夹?",
"removeFolderConfirmDescription": "从工作区移除 \"{name}\"?其相关 Tab 与终端将会关闭。",
"folderHeaderMenu": {
"focus": "聚焦到此",
"closeFolderTabs": "关闭此文件夹的所有 Tab",
"removeFromWorkspace": "从工作区移除"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "关闭其它",
"closeAll": "关闭所有",
"tileDisplay": "平铺显示",
"untileDisplay": "取消平铺"
"untileDisplay": "取消平铺",
"closeFolderTabs": "关闭 {folder} 的所有标签",
"revealInSidebar": "在侧边栏中定位"
},
"fileWorkspace": {
"files": "文件",
@@ -976,7 +995,8 @@
"close": "关闭",
"closeOthers": "关闭其它",
"closeAll": "关闭所有",
"hideTerminal": "隐藏终端({shortcut}"
"hideTerminal": "隐藏终端({shortcut}",
"openFolderFirst": "请先打开一个文件夹"
},
"sessionFiles": {
"currentResponse": "当前响应",
@@ -1792,6 +1812,25 @@
"hunkLabel": "代码块 {index}",
"loadingHunk": "正在加载代码块...",
"noDiffData": "无差异数据"
},
"conversationContextBar": {
"searchFolder": "搜索文件夹...",
"searchBranch": "搜索分支...",
"noFolders": "暂无文件夹",
"noBranches": "暂无分支",
"noBranch": "(无分支)",
"openNewFolder": "从磁盘打开文件夹...",
"cancel": "取消",
"create": "创建",
"commit": "提交",
"push": "推送",
"merge": "合并",
"toasts": {
"folderChanged": "已切换到 {name}",
"openFolderFailed": "打开文件夹失败",
"openStashFailed": "打开贮藏窗口失败",
"openMergeFailed": "打开合并窗口失败"
}
}
},
"ProjectBoot": {

View File

@@ -825,7 +825,24 @@
"noNewSessionsFound": "沒有新會話(已跳過 {skipped} 個)",
"importFailed": "匯入失敗:{message}",
"reviewCompleted": "已將 {count} 個複查會話標記為已完成",
"completeReviewFailed": "批次完成複查會話失敗:{message}"
"completeReviewFailed": "批次完成複查會話失敗:{message}",
"folderOpened": "已開啟資料夾 {name}",
"folderRemoved": "已移除資料夾 {name}",
"openFolderFailed": "開啟資料夾失敗",
"removeFolderFailed": "移除資料夾失敗:{message}"
},
"statsLabel": "{folders} 個資料夾 · {convos} 個對話",
"openFolder": "開啟資料夾",
"searchPlaceholder": "搜尋對話...",
"viewFlat": "平鋪視圖",
"viewGrouped": "依資料夾分組",
"noMatchingConversations": "找不到符合的對話",
"removeFolderConfirmTitle": "從工作區移除此資料夾?",
"removeFolderConfirmDescription": "從工作區移除 \"{name}\"?相關分頁與終端機將會關閉。",
"folderHeaderMenu": {
"focus": "聚焦至此",
"closeFolderTabs": "關閉此資料夾的所有分頁",
"removeFromWorkspace": "從工作區移除"
}
},
"conversation": {
@@ -960,7 +977,9 @@
"closeOthers": "關閉其它",
"closeAll": "關閉所有",
"tileDisplay": "平鋪顯示",
"untileDisplay": "取消平鋪"
"untileDisplay": "取消平鋪",
"closeFolderTabs": "關閉 {folder} 的所有標籤",
"revealInSidebar": "在側邊欄中定位"
},
"fileWorkspace": {
"files": "檔案",
@@ -976,7 +995,8 @@
"close": "關閉",
"closeOthers": "關閉其它",
"closeAll": "關閉所有",
"hideTerminal": "隱藏終端({shortcut}"
"hideTerminal": "隱藏終端({shortcut}",
"openFolderFirst": "請先開啟一個資料夾"
},
"sessionFiles": {
"currentResponse": "目前回應",
@@ -1792,6 +1812,25 @@
"hunkLabel": "區塊 {index}",
"loadingHunk": "正在載入區塊...",
"noDiffData": "無差異資料"
},
"conversationContextBar": {
"searchFolder": "Search folder...",
"searchBranch": "Search branch...",
"noFolders": "No folders",
"noBranches": "No branches",
"noBranch": "(no branch)",
"openNewFolder": "Open folder from disk...",
"cancel": "Cancel",
"create": "Create",
"commit": "Commit",
"push": "Push",
"merge": "Merge",
"toasts": {
"folderChanged": "Switched to {name}",
"openFolderFailed": "Failed to open folder",
"openStashFailed": "Failed to open stash window",
"openMergeFailed": "Failed to open merge window"
}
}
},
"ProjectBoot": {