diff --git a/packages/ui/src/components/instance/shell/right-panel/tabs/ChangesTab.tsx b/packages/ui/src/components/instance/shell/right-panel/tabs/ChangesTab.tsx index 2062b1c7..307c5cce 100644 --- a/packages/ui/src/components/instance/shell/right-panel/tabs/ChangesTab.tsx +++ b/packages/ui/src/components/instance/shell/right-panel/tabs/ChangesTab.tsx @@ -1,11 +1,13 @@ -import { For, Show, createMemo, type Accessor, type Component, type JSX } from "solid-js" - -import { MonacoDiffViewer } from "../../../../file-viewer/monaco-diff-viewer" +import { For, Show, Suspense, createMemo, lazy, type Accessor, type Component, type JSX } from "solid-js" import DiffToolbar from "../components/DiffToolbar" import SplitFilePanel from "../components/SplitFilePanel" import type { DiffContextMode, DiffViewMode, DiffWordWrapMode } from "../types" +const LazyMonacoDiffViewer = lazy(() => + import("../../../../file-viewer/monaco-diff-viewer").then((module) => ({ default: module.MonacoDiffViewer })), +) + interface ChangesTabProps { t: (key: string, vars?: Record) => string @@ -113,15 +115,23 @@ const ChangesTab: Component = (props) => { } > {(file) => ( - + + {props.t("instanceInfo.loading")} + + } + > + + )} @@ -220,7 +230,7 @@ const ChangesTab: Component = (props) => { onResizeMouseDown={props.onResizeMouseDown} onResizeTouchStart={props.onResizeTouchStart} isPhoneLayout={props.isPhoneLayout()} - overlayAriaLabel="Changes" + overlayAriaLabel={props.t("instanceShell.rightPanel.tabs.changes")} /> ) } diff --git a/packages/ui/src/components/instance/shell/right-panel/tabs/FilesTab.tsx b/packages/ui/src/components/instance/shell/right-panel/tabs/FilesTab.tsx index f9f949ce..9b7d3c19 100644 --- a/packages/ui/src/components/instance/shell/right-panel/tabs/FilesTab.tsx +++ b/packages/ui/src/components/instance/shell/right-panel/tabs/FilesTab.tsx @@ -79,7 +79,13 @@ const FilesTab: Component = (props) => { } > {(payload) => ( - {props.t("instanceInfo.loading")}}> + + {props.t("instanceInfo.loading")} + + } + > )} diff --git a/packages/ui/src/components/instance/shell/right-panel/tabs/GitChangesTab.tsx b/packages/ui/src/components/instance/shell/right-panel/tabs/GitChangesTab.tsx index 787a8012..5f83d9e6 100644 --- a/packages/ui/src/components/instance/shell/right-panel/tabs/GitChangesTab.tsx +++ b/packages/ui/src/components/instance/shell/right-panel/tabs/GitChangesTab.tsx @@ -84,8 +84,8 @@ const GitChangesTab: Component = (props) => { const emptyViewerMessage = createMemo(() => { if (!hasSession()) return props.t("instanceShell.sessionChanges.noSessionSelected") const currentEntries = entries() - if (currentEntries === null) return props.t("instanceShell.sessionChanges.loading") - if (nonDeleted().length === 0) return props.t("instanceShell.sessionChanges.empty") + if (currentEntries === null) return props.t("instanceShell.gitChanges.loading") + if (nonDeleted().length === 0) return props.t("instanceShell.gitChanges.empty") return props.t("instanceShell.filesShell.viewerEmpty") }) @@ -124,7 +124,13 @@ const GitChangesTab: Component = (props) => { } > {(file) => ( - {props.t("instanceShell.sessionChanges.loading")}}> + + {props.t("instanceInfo.loading")} + + } + > = (props) => {
- deleted + {props.t("instanceShell.gitChanges.deleted")} <> @@ -204,7 +210,7 @@ const GitChangesTab: Component = (props) => {
- deleted + {props.t("instanceShell.gitChanges.deleted")} <> diff --git a/packages/ui/src/lib/i18n/messages/en/instance.ts b/packages/ui/src/lib/i18n/messages/en/instance.ts index 0fddda91..83af3eaf 100644 --- a/packages/ui/src/lib/i18n/messages/en/instance.ts +++ b/packages/ui/src/lib/i18n/messages/en/instance.ts @@ -114,6 +114,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "{count} files changed", "instanceShell.sessionChanges.actions.show": "Show changes", + "instanceShell.gitChanges.loading": "Loading git changes...", + "instanceShell.gitChanges.empty": "No git changes yet.", + "instanceShell.gitChanges.deleted": "Deleted", + "instanceShell.filesShell.fileListTitle": "File list", "instanceShell.filesShell.mobileSelectorLabel": "Select file", "instanceShell.filesShell.mobileSelectorEmpty": "Select a file", diff --git a/packages/ui/src/lib/i18n/messages/es/instance.ts b/packages/ui/src/lib/i18n/messages/es/instance.ts index ee19126b..42836ff9 100644 --- a/packages/ui/src/lib/i18n/messages/es/instance.ts +++ b/packages/ui/src/lib/i18n/messages/es/instance.ts @@ -90,6 +90,7 @@ export const instanceMessages = { "instanceShell.rightPanel.title": "Panel de estado", "instanceShell.rightPanel.tabs.changes": "Cambios", + "instanceShell.rightPanel.tabs.gitChanges": "Cambios de Git", "instanceShell.rightPanel.tabs.files": "Archivos", "instanceShell.rightPanel.tabs.status": "Estado", "instanceShell.rightPanel.tabs.ariaLabel": "Pestañas del panel derecho", @@ -112,6 +113,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "{count} archivos cambiados", "instanceShell.sessionChanges.actions.show": "Mostrar cambios", + "instanceShell.gitChanges.loading": "Cargando cambios de Git...", + "instanceShell.gitChanges.empty": "Aún no hay cambios de Git.", + "instanceShell.gitChanges.deleted": "Eliminado", + "instanceShell.filesShell.fileListTitle": "Lista de archivos", "instanceShell.filesShell.mobileSelectorLabel": "Seleccionar archivo", "instanceShell.filesShell.mobileSelectorEmpty": "Selecciona un archivo", diff --git a/packages/ui/src/lib/i18n/messages/fr/instance.ts b/packages/ui/src/lib/i18n/messages/fr/instance.ts index 42c56026..e0427f6a 100644 --- a/packages/ui/src/lib/i18n/messages/fr/instance.ts +++ b/packages/ui/src/lib/i18n/messages/fr/instance.ts @@ -90,6 +90,7 @@ export const instanceMessages = { "instanceShell.rightPanel.title": "Panneau d'état", "instanceShell.rightPanel.tabs.changes": "Modifications", + "instanceShell.rightPanel.tabs.gitChanges": "Changements Git", "instanceShell.rightPanel.tabs.files": "Fichiers", "instanceShell.rightPanel.tabs.status": "Statut", "instanceShell.rightPanel.tabs.ariaLabel": "Onglets du panneau droit", @@ -112,6 +113,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "{count} fichiers modifiés", "instanceShell.sessionChanges.actions.show": "Afficher les changements", + "instanceShell.gitChanges.loading": "Chargement des changements Git...", + "instanceShell.gitChanges.empty": "Aucun changement Git pour l'instant.", + "instanceShell.gitChanges.deleted": "Supprimé", + "instanceShell.filesShell.fileListTitle": "Liste des fichiers", "instanceShell.filesShell.mobileSelectorLabel": "Sélectionner un fichier", "instanceShell.filesShell.mobileSelectorEmpty": "Sélectionnez un fichier", diff --git a/packages/ui/src/lib/i18n/messages/ja/instance.ts b/packages/ui/src/lib/i18n/messages/ja/instance.ts index 17ceb639..c17cad4a 100644 --- a/packages/ui/src/lib/i18n/messages/ja/instance.ts +++ b/packages/ui/src/lib/i18n/messages/ja/instance.ts @@ -90,6 +90,7 @@ export const instanceMessages = { "instanceShell.rightPanel.title": "ステータスパネル", "instanceShell.rightPanel.tabs.changes": "変更", + "instanceShell.rightPanel.tabs.gitChanges": "Git 変更", "instanceShell.rightPanel.tabs.files": "ファイル", "instanceShell.rightPanel.tabs.status": "ステータス", "instanceShell.rightPanel.tabs.ariaLabel": "右パネルのタブ", @@ -112,6 +113,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "{count} 個のファイルが変更されました", "instanceShell.sessionChanges.actions.show": "変更を表示", + "instanceShell.gitChanges.loading": "Git の変更を読み込み中...", + "instanceShell.gitChanges.empty": "Git の変更はまだありません。", + "instanceShell.gitChanges.deleted": "削除済み", + "instanceShell.filesShell.fileListTitle": "ファイル一覧", "instanceShell.filesShell.mobileSelectorLabel": "ファイルを選択", "instanceShell.filesShell.mobileSelectorEmpty": "ファイルを選択してください", diff --git a/packages/ui/src/lib/i18n/messages/ru/instance.ts b/packages/ui/src/lib/i18n/messages/ru/instance.ts index 9db069e6..490cfce7 100644 --- a/packages/ui/src/lib/i18n/messages/ru/instance.ts +++ b/packages/ui/src/lib/i18n/messages/ru/instance.ts @@ -90,6 +90,7 @@ export const instanceMessages = { "instanceShell.rightPanel.title": "Панель состояния", "instanceShell.rightPanel.tabs.changes": "Изменения", + "instanceShell.rightPanel.tabs.gitChanges": "Изменения Git", "instanceShell.rightPanel.tabs.files": "Файлы", "instanceShell.rightPanel.tabs.status": "Статус", "instanceShell.rightPanel.tabs.ariaLabel": "Вкладки правой панели", @@ -112,6 +113,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "Изменено файлов: {count}", "instanceShell.sessionChanges.actions.show": "Показать изменения", + "instanceShell.gitChanges.loading": "Загрузка изменений Git...", + "instanceShell.gitChanges.empty": "Изменений Git пока нет.", + "instanceShell.gitChanges.deleted": "Удалено", + "instanceShell.filesShell.fileListTitle": "Список файлов", "instanceShell.filesShell.mobileSelectorLabel": "Выбрать файл", "instanceShell.filesShell.mobileSelectorEmpty": "Выберите файл", diff --git a/packages/ui/src/lib/i18n/messages/zh-Hans/instance.ts b/packages/ui/src/lib/i18n/messages/zh-Hans/instance.ts index 2b68f3c1..012c9024 100644 --- a/packages/ui/src/lib/i18n/messages/zh-Hans/instance.ts +++ b/packages/ui/src/lib/i18n/messages/zh-Hans/instance.ts @@ -90,6 +90,7 @@ export const instanceMessages = { "instanceShell.rightPanel.title": "状态面板", "instanceShell.rightPanel.tabs.changes": "更改", + "instanceShell.rightPanel.tabs.gitChanges": "Git 更改", "instanceShell.rightPanel.tabs.files": "文件", "instanceShell.rightPanel.tabs.status": "状态", "instanceShell.rightPanel.tabs.ariaLabel": "右侧面板标签页", @@ -112,6 +113,10 @@ export const instanceMessages = { "instanceShell.sessionChanges.filesChanged": "已更改 {count} 个文件", "instanceShell.sessionChanges.actions.show": "显示更改", + "instanceShell.gitChanges.loading": "正在加载 Git 更改...", + "instanceShell.gitChanges.empty": "暂无 Git 更改。", + "instanceShell.gitChanges.deleted": "已删除", + "instanceShell.filesShell.fileListTitle": "文件列表", "instanceShell.filesShell.mobileSelectorLabel": "选择文件", "instanceShell.filesShell.mobileSelectorEmpty": "请选择文件", diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index 40f54879..ae2e2537 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -116,7 +116,6 @@ export default defineConfig({ resolve: { alias: { "@": resolve(__dirname, "./src"), - "@git-diff-view/lowlight": resolve(__dirname, "./src/lib/git-diff-lowlight.ts"), }, }, optimizeDeps: { @@ -135,6 +134,34 @@ export default defineConfig({ main: resolve(__dirname, "./src/renderer/index.html"), loading: resolve(__dirname, "./src/renderer/loading.html"), }, + output: { + manualChunks(id) { + const normalizedId = id.replace(/\\/g, "/") + + if (normalizedId.includes("/node_modules/@git-diff-view/")) { + return "git-diff-vendor" + } + + if (normalizedId.includes("/node_modules/highlight.js/") || normalizedId.includes("/node_modules/lowlight/")) { + return "highlight-vendor" + } + + if (normalizedId.includes("/node_modules/fast-diff/")) { + return "fast-diff-vendor" + } + + if (normalizedId.includes("/node_modules/monaco-editor/")) { + return "monaco-vendor" + } + + if ( + normalizedId.includes("/src/components/file-viewer/") || + normalizedId.includes("/src/lib/monaco/") + ) { + return "monaco-viewer" + } + }, + }, }, }, })