From 7b65fe8ddc2530a3fb7eafd716381f7678a28a68 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Sun, 8 Mar 2026 08:42:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E8=BE=B9=E6=A0=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=BF=AB=E6=8D=B7=E6=93=8D=E4=BD=9C=E2=80=9C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=BB=A3=E7=A0=81=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/aux-panel-file-tree-tab.tsx | 27 ++++++++++++ .../layout/aux-panel-git-changes-tab.tsx | 41 +++++++++++++++++++ src/i18n/messages/en.json | 4 ++ src/i18n/messages/zh-CN.json | 4 ++ src/i18n/messages/zh-TW.json | 4 ++ 5 files changed, 80 insertions(+) diff --git a/src/components/layout/aux-panel-file-tree-tab.tsx b/src/components/layout/aux-panel-file-tree-tab.tsx index 2d6271e..25f4228 100644 --- a/src/components/layout/aux-panel-file-tree-tab.tsx +++ b/src/components/layout/aux-panel-file-tree-tab.tsx @@ -29,6 +29,7 @@ import { gitStatus, readFileForEdit, readFilePreview, + openCommitWindow, renameFileTreeEntry, saveFileCopy, startFileTreeWatch, @@ -410,6 +411,7 @@ interface RenderNodeProps { onOpenFilePreview: (path: string) => void onOpenFileDiff: (path: string) => void onOpenDirDiff: (path: string) => void + onOpenCommitWindow: () => void onRequestCompareWithBranch: (target: FileActionTarget) => void onRequestRollback: (target: FileActionTarget) => void onOpenDirInTerminal: (dirPath: string, fileName: string) => Promise @@ -432,6 +434,7 @@ function RenderNode({ onOpenFilePreview, onOpenFileDiff, onOpenDirDiff, + onOpenCommitWindow, onRequestCompareWithBranch, onRequestRollback, onOpenDirInTerminal, @@ -507,6 +510,12 @@ function RenderNode({ {t("git")} + onOpenCommitWindow()} + disabled={isGitMenuDisabled} + > + {t("actions.commitCode")} + onRequestAddToVcs(node)} disabled={ @@ -614,6 +623,7 @@ function RenderNode({ onOpenFilePreview={onOpenFilePreview} onOpenFileDiff={onOpenFileDiff} onOpenDirDiff={onOpenDirDiff} + onOpenCommitWindow={onOpenCommitWindow} onRequestCompareWithBranch={onRequestCompareWithBranch} onRequestRollback={onRequestRollback} onOpenDirInTerminal={onOpenDirInTerminal} @@ -632,6 +642,12 @@ function RenderNode({ {t("git")} + onOpenCommitWindow()} + disabled={isGitMenuDisabled} + > + {t("actions.commitCode")} + onRequestAddToVcs(node)} disabled={isGitMenuDisabled} @@ -1114,6 +1130,16 @@ export function FileTreeTab() { [createTerminalInDirectory, t] ) + const handleOpenCommitWindow = useCallback(() => { + if (!folder) return + openCommitWindow(folder.id).catch((error) => { + const message = error instanceof Error ? error.message : String(error) + toast.error(t("toasts.openCommitWindowFailed"), { + description: message, + }) + }) + }, [folder, t]) + const handleRequestRename = useCallback((target: FileActionTarget) => { setRenameTarget(target) setRenameValue(target.name) @@ -2012,6 +2038,7 @@ export function FileTreeTab() { onOpenDirDiff={(path) => { void openWorkingTreeDiff(path, { mode: "overview" }) }} + onOpenCommitWindow={handleOpenCommitWindow} onRequestCompareWithBranch={ handleRequestCompareWithBranch } diff --git a/src/components/layout/aux-panel-git-changes-tab.tsx b/src/components/layout/aux-panel-git-changes-tab.tsx index 82da7a6..1c95a43 100644 --- a/src/components/layout/aux-panel-git-changes-tab.tsx +++ b/src/components/layout/aux-panel-git-changes-tab.tsx @@ -42,6 +42,7 @@ import { gitAddFiles, gitRollbackFile, gitStatus, + openCommitWindow, startFileTreeWatch, stopFileTreeWatch, } from "@/lib/tauri" @@ -682,6 +683,16 @@ export function GitChangesTab() { setExpandedUntrackedPaths(new Set()) }, [allUntrackedDirectoryPaths, untrackedCanExpand]) + const handleOpenCommitWindow = useCallback(() => { + if (!folder) return + openCommitWindow(folder.id).catch((error) => { + const message = error instanceof Error ? error.message : String(error) + toast.error(t("toasts.openCommitWindowFailed"), { + description: message, + }) + }) + }, [folder, t]) + const resetDirectoryGitActionDialog = useCallback(() => { setDirectoryGitActionType(null) setDirectoryGitActionTarget(null) @@ -902,6 +913,13 @@ export function GitChangesTab() { + { + handleOpenCommitWindow() + }} + > + {t("actions.commitCode")} + { void openWorkingTreeDiff(node.path, { mode: "overview" }) @@ -966,6 +984,13 @@ export function GitChangesTab() { + { + handleOpenCommitWindow() + }} + > + {t("actions.commitCode")} + { @@ -1002,6 +1027,7 @@ export function GitChangesTab() { ) }, [ + handleOpenCommitWindow, handleAddToVcs, handleRequestRollback, openFilePreview, @@ -1034,6 +1060,13 @@ export function GitChangesTab() { + { + handleOpenCommitWindow() + }} + > + {t("actions.commitCode")} + { void openWorkingTreeDiff(node.path, { mode: "overview" }) @@ -1090,6 +1123,13 @@ export function GitChangesTab() { + { + handleOpenCommitWindow() + }} + > + {t("actions.commitCode")} + { void openFilePreview(file.path) @@ -1124,6 +1164,7 @@ export function GitChangesTab() { ) }, [ + handleOpenCommitWindow, handleAddToVcs, handleRequestRollback, openFilePreview, diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 1693df8..cd8887a 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -895,6 +895,7 @@ "expandUntracked": "Expand untracked files", "collapseUntracked": "Collapse untracked files", "actions": { + "commitCode": "Commit code", "rollback": "Rollback", "addToVcs": "Add to VCS" }, @@ -903,6 +904,7 @@ "noRollbackFilesInDir": "No changed files in this directory can be rolled back", "addedToVcs": "Added {name} to VCS", "addToVcsFailed": "Failed to add to VCS", + "openCommitWindowFailed": "Failed to open commit window", "rolledBack": "Rolled back {name}", "rollbackFailed": "Rollback failed", "addedFilesToVcs": "Added {count, plural, one {# file} other {# files}} to VCS", @@ -946,6 +948,7 @@ "actions": { "select": "Select", "unselect": "Unselect", + "commitCode": "Commit code", "rollback": "Rollback", "addToVcs": "Add to VCS" }, @@ -955,6 +958,7 @@ "toasts": { "openDirectoryFailed": "Failed to open directory", "openBuiltinTerminalFailed": "Unable to open built-in terminal", + "openCommitWindowFailed": "Failed to open commit window", "noAddableFilesInDir": "No changed files in this directory can be added to VCS", "noRollbackFilesInDir": "No changed files in this directory can be rolled back", "addedToVcs": "Added {name} to VCS", diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index c5d5efb..e7c97a8 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -895,6 +895,7 @@ "expandUntracked": "展开未跟踪文件", "collapseUntracked": "折叠未跟踪文件", "actions": { + "commitCode": "提交代码", "rollback": "回滚", "addToVcs": "添加到 VCS" }, @@ -903,6 +904,7 @@ "noRollbackFilesInDir": "该目录下没有可回滚的变更文件", "addedToVcs": "已添加 {name} 到 VCS", "addToVcsFailed": "添加到 VCS 失败", + "openCommitWindowFailed": "打开提交窗口失败", "rolledBack": "已回滚 {name}", "rollbackFailed": "回滚失败", "addedFilesToVcs": "已添加 {count} 个文件到 VCS", @@ -946,6 +948,7 @@ "actions": { "select": "选择", "unselect": "取消选择", + "commitCode": "提交代码", "rollback": "回滚", "addToVcs": "添加到 VCS" }, @@ -955,6 +958,7 @@ "toasts": { "openDirectoryFailed": "打开目录失败", "openBuiltinTerminalFailed": "无法打开内置终端", + "openCommitWindowFailed": "打开提交窗口失败", "noAddableFilesInDir": "该目录下没有可添加到 VCS 的变更文件", "noRollbackFilesInDir": "该目录下没有可回滚的变更文件", "addedToVcs": "已添加 {name} 到 VCS", diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json index 2ee9d73..d336126 100644 --- a/src/i18n/messages/zh-TW.json +++ b/src/i18n/messages/zh-TW.json @@ -895,6 +895,7 @@ "expandUntracked": "展開未追蹤檔案", "collapseUntracked": "折疊未追蹤檔案", "actions": { + "commitCode": "提交程式碼", "rollback": "回滾", "addToVcs": "加入到 VCS" }, @@ -903,6 +904,7 @@ "noRollbackFilesInDir": "該目錄下沒有可回滾的變更檔案", "addedToVcs": "已加入 {name} 到 VCS", "addToVcsFailed": "加入到 VCS 失敗", + "openCommitWindowFailed": "打開提交視窗失敗", "rolledBack": "已回滾 {name}", "rollbackFailed": "回滾失敗", "addedFilesToVcs": "已加入 {count} 個檔案到 VCS", @@ -946,6 +948,7 @@ "actions": { "select": "選擇", "unselect": "取消選擇", + "commitCode": "提交程式碼", "rollback": "回滾", "addToVcs": "加入到 VCS" }, @@ -955,6 +958,7 @@ "toasts": { "openDirectoryFailed": "開啟目錄失敗", "openBuiltinTerminalFailed": "無法開啟內建終端", + "openCommitWindowFailed": "打開提交視窗失敗", "noAddableFilesInDir": "該目錄下沒有可加入到 VCS 的變更檔案", "noRollbackFilesInDir": "該目錄下沒有可回滾的變更檔案", "addedToVcs": "已加入 {name} 到 VCS",