diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ChangesContent/components/FileDiffSection/FileDiffSection.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ChangesContent/components/FileDiffSection/FileDiffSection.tsx
index bd05016e592..4493fd939ec 100644
--- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ChangesContent/components/FileDiffSection/FileDiffSection.tsx
+++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ChangesContent/components/FileDiffSection/FileDiffSection.tsx
@@ -8,7 +8,7 @@ import type { ChangeCategory, ChangedFile } from "shared/changes-types";
import {
getStatusColor,
getStatusIndicator,
-} from "../../../Sidebar/ChangesView/utils";
+} from "../../../RightSidebar/ChangesView/utils";
import { createFileKey, useScrollContext } from "../../context";
import { DiffViewer } from "../DiffViewer";
import { FileDiffHeader } from "./components/FileDiffHeader";
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/ChangesView.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/ChangesView.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/ChangesView.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/ChangesView.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CategorySection/CategorySection.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CategorySection/CategorySection.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CategorySection/CategorySection.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CategorySection/CategorySection.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CategorySection/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CategorySection/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CategorySection/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CategorySection/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx
similarity index 81%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx
index edbc4deb96e..378ea736fa5 100644
--- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx
+++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ChangesHeader/ChangesHeader.tsx
@@ -10,20 +10,12 @@ import {
import { Tooltip, TooltipContent, TooltipTrigger } from "@superset/ui/tooltip";
import { useEffect, useRef, useState } from "react";
import { HiArrowPath, HiCheck } from "react-icons/hi2";
-import {
- LuExpand,
- LuGitBranch,
- LuLoaderCircle,
- LuShrink,
- LuX,
-} from "react-icons/lu";
+import { LuGitBranch, LuLoaderCircle } from "react-icons/lu";
import { VscGitStash, VscGitStashApply } from "react-icons/vsc";
-import { HotkeyTooltipContent } from "renderer/components/HotkeyTooltipContent";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { PRIcon } from "renderer/screens/main/components/PRIcon";
import { usePRStatus } from "renderer/screens/main/hooks";
import { useChangesStore } from "renderer/stores/changes";
-import { SidebarMode, useSidebarStore } from "renderer/stores/sidebar-state";
import type { ChangesViewMode } from "../../types";
import { ViewModeToggle } from "../ViewModeToggle";
@@ -235,13 +227,6 @@ export function ChangesHeader({
onStashPop,
isStashPending,
}: ChangesHeaderProps) {
- const { toggleSidebar, currentMode, setMode } = useSidebarStore();
- const isExpanded = currentMode === SidebarMode.Changes;
-
- const handleExpandToggle = () => {
- setMode(isExpanded ? SidebarMode.Tabs : SidebarMode.Changes);
- };
-
return (
@@ -254,47 +239,6 @@ export function ChangesHeader({
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
);
}
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ChangesHeader/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ChangesHeader/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ChangesHeader/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ChangesHeader/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CollapsibleRow/CollapsibleRow.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CollapsibleRow/CollapsibleRow.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CollapsibleRow/CollapsibleRow.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CollapsibleRow/CollapsibleRow.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CollapsibleRow/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CollapsibleRow/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CollapsibleRow/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CollapsibleRow/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitInput/CommitInput.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitInput/CommitInput.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitInput/CommitInput.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitInput/CommitInput.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitInput/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitInput/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitInput/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitInput/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitItem/CommitItem.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitItem/CommitItem.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitItem/CommitItem.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitItem/CommitItem.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitItem/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitItem/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/CommitItem/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/CommitItem/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileItem/FileItem.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileItem/FileItem.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileItem/FileItem.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileItem/FileItem.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileItem/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileItem/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileItem/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileItem/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileList.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileList.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileList.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileList.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileListGrouped.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileListGrouped.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileListGrouped.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileListGrouped.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileListTree.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileListTree.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/FileListTree.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/FileListTree.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FileList/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FileList/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FolderRow/FolderRow.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FolderRow/FolderRow.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FolderRow/FolderRow.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FolderRow/FolderRow.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FolderRow/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FolderRow/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/FolderRow/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/FolderRow/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ViewModeToggle/ViewModeToggle.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ViewModeToggle/ViewModeToggle.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ViewModeToggle/ViewModeToggle.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ViewModeToggle/ViewModeToggle.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ViewModeToggle/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ViewModeToggle/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/components/ViewModeToggle/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ViewModeToggle/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/hooks/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/hooks/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/hooks/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/hooks/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/hooks/usePathActions.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/hooks/usePathActions.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/hooks/usePathActions.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/hooks/usePathActions.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/types.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/types.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/types.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/types.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/date.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/date.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/date.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/date.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/index.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/index.ts
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/index.ts
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/index.ts
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/status.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/status.tsx
similarity index 100%
rename from apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/ChangesView/utils/status.tsx
rename to apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/utils/status.tsx
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/index.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/index.tsx
new file mode 100644
index 00000000000..b7ebf528d47
--- /dev/null
+++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/index.tsx
@@ -0,0 +1,189 @@
+import { Button } from "@superset/ui/button";
+import { Tooltip, TooltipContent, TooltipTrigger } from "@superset/ui/tooltip";
+import { useParams } from "@tanstack/react-router";
+import { useCallback } from "react";
+import { LuExpand, LuFile, LuGitCompareArrows, LuShrink, LuX } from "react-icons/lu";
+import { HotkeyTooltipContent } from "renderer/components/HotkeyTooltipContent";
+import { electronTrpc } from "renderer/lib/electron-trpc";
+import {
+ RightSidebarTab,
+ SidebarMode,
+ useSidebarStore,
+} from "renderer/stores/sidebar-state";
+import { useTabsStore } from "renderer/stores/tabs/store";
+import type { ChangeCategory, ChangedFile } from "shared/changes-types";
+import { useScrollContext } from "../ChangesContent";
+import { ChangesView } from "./ChangesView";
+
+function TabButton({
+ isActive,
+ onClick,
+ icon,
+ label,
+}: {
+ isActive: boolean;
+ onClick: () => void;
+ icon: React.ReactNode;
+ label: string;
+}) {
+ return (
+
+ );
+}
+
+function FilesView() {
+ return (
+
+ Files view coming soon
+
+ );
+}
+
+export function RightSidebar() {
+ const { workspaceId } = useParams({ strict: false });
+ const { data: workspace } = electronTrpc.workspaces.get.useQuery(
+ { id: workspaceId ?? "" },
+ { enabled: !!workspaceId },
+ );
+ const worktreePath = workspace?.worktreePath;
+ const {
+ currentMode,
+ rightSidebarTab,
+ setRightSidebarTab,
+ toggleSidebar,
+ setMode,
+ } = useSidebarStore();
+ const isExpanded = currentMode === SidebarMode.Changes;
+
+ const handleExpandToggle = () => {
+ setMode(isExpanded ? SidebarMode.Tabs : SidebarMode.Changes);
+ };
+
+ const addFileViewerPane = useTabsStore((s) => s.addFileViewerPane);
+ const trpcUtils = electronTrpc.useUtils();
+ const { scrollToFile } = useScrollContext();
+
+ const invalidateFileContent = useCallback(
+ (filePath: string) => {
+ if (!worktreePath) return;
+
+ Promise.all([
+ trpcUtils.changes.readWorkingFile.invalidate({
+ worktreePath,
+ filePath,
+ }),
+ trpcUtils.changes.getFileContents.invalidate({
+ worktreePath,
+ filePath,
+ }),
+ ]).catch((error) => {
+ console.error(
+ "[RightSidebar/invalidateFileContent] Failed to invalidate file content queries:",
+ { worktreePath, filePath, error },
+ );
+ });
+ },
+ [worktreePath, trpcUtils],
+ );
+
+ const handleFileOpenPane = useCallback(
+ (file: ChangedFile, category: ChangeCategory, commitHash?: string) => {
+ if (!workspaceId || !worktreePath) return;
+ addFileViewerPane(workspaceId, {
+ filePath: file.path,
+ diffCategory: category,
+ commitHash,
+ oldPath: file.oldPath,
+ });
+ invalidateFileContent(file.path);
+ },
+ [workspaceId, worktreePath, addFileViewerPane, invalidateFileContent],
+ );
+
+ const handleFileScrollTo = useCallback(
+ (file: ChangedFile, category: ChangeCategory, commitHash?: string) => {
+ scrollToFile(file, category, commitHash);
+ },
+ [scrollToFile],
+ );
+
+ const handleFileOpen =
+ workspaceId && worktreePath
+ ? isExpanded
+ ? handleFileScrollTo
+ : handleFileOpenPane
+ : undefined;
+
+ return (
+
+ );
+}
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/index.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/index.tsx
deleted file mode 100644
index d024bbcffbc..00000000000
--- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/Sidebar/index.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import { useParams } from "@tanstack/react-router";
-import { useCallback } from "react";
-import { electronTrpc } from "renderer/lib/electron-trpc";
-import { SidebarMode, useSidebarStore } from "renderer/stores/sidebar-state";
-import { useTabsStore } from "renderer/stores/tabs/store";
-import type { ChangeCategory, ChangedFile } from "shared/changes-types";
-import { useScrollContext } from "../ChangesContent";
-import { ChangesView } from "./ChangesView";
-
-export function Sidebar() {
- const { workspaceId } = useParams({ strict: false });
- const { data: workspace } = electronTrpc.workspaces.get.useQuery(
- { id: workspaceId ?? "" },
- { enabled: !!workspaceId },
- );
- const worktreePath = workspace?.worktreePath;
- const { currentMode } = useSidebarStore();
- const isExpanded = currentMode === SidebarMode.Changes;
-
- const addFileViewerPane = useTabsStore((s) => s.addFileViewerPane);
- const trpcUtils = electronTrpc.useUtils();
- const { scrollToFile } = useScrollContext();
-
- const invalidateFileContent = useCallback(
- (filePath: string) => {
- if (!worktreePath) return;
-
- Promise.all([
- trpcUtils.changes.readWorkingFile.invalidate({
- worktreePath,
- filePath,
- }),
- trpcUtils.changes.getFileContents.invalidate({
- worktreePath,
- filePath,
- }),
- ]).catch((error) => {
- console.error(
- "[Sidebar/invalidateFileContent] Failed to invalidate file content queries:",
- { worktreePath, filePath, error },
- );
- });
- },
- [worktreePath, trpcUtils],
- );
-
- const handleFileOpenPane = useCallback(
- (file: ChangedFile, category: ChangeCategory, commitHash?: string) => {
- if (!workspaceId || !worktreePath) return;
- addFileViewerPane(workspaceId, {
- filePath: file.path,
- diffCategory: category,
- commitHash,
- oldPath: file.oldPath,
- });
- invalidateFileContent(file.path);
- },
- [workspaceId, worktreePath, addFileViewerPane, invalidateFileContent],
- );
-
- const handleFileScrollTo = useCallback(
- (file: ChangedFile, category: ChangeCategory, commitHash?: string) => {
- scrollToFile(file, category, commitHash);
- },
- [scrollToFile],
- );
-
- const handleFileOpen =
- workspaceId && worktreePath
- ? isExpanded
- ? handleFileScrollTo
- : handleFileOpenPane
- : undefined;
-
- return (
-
- );
-}
diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceLayout/WorkspaceLayout.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceLayout/WorkspaceLayout.tsx
index 7fe3f269c14..deeef9089ec 100644
--- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceLayout/WorkspaceLayout.tsx
+++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceLayout/WorkspaceLayout.tsx
@@ -7,7 +7,7 @@ import {
import { ResizablePanel } from "../../ResizablePanel";
import { ChangesContent, ScrollProvider } from "../ChangesContent";
import { ContentView } from "../ContentView";
-import { Sidebar } from "../Sidebar";
+import { RightSidebar } from "../RightSidebar";
export function WorkspaceLayout() {
const {
@@ -37,7 +37,7 @@ export function WorkspaceLayout() {
handleSide="left"
className={isExpanded ? "border-l-0" : undefined}
>
-
+
)}
diff --git a/apps/desktop/src/renderer/stores/sidebar-state.ts b/apps/desktop/src/renderer/stores/sidebar-state.ts
index ea9c43f76c2..b198741e3aa 100644
--- a/apps/desktop/src/renderer/stores/sidebar-state.ts
+++ b/apps/desktop/src/renderer/stores/sidebar-state.ts
@@ -6,6 +6,11 @@ export enum SidebarMode {
Changes = "changes",
}
+export enum RightSidebarTab {
+ Changes = "changes",
+ Files = "files",
+}
+
const DEFAULT_SIDEBAR_WIDTH = 250;
export const MIN_SIDEBAR_WIDTH = 200;
export const MAX_SIDEBAR_WIDTH = 500;
@@ -17,11 +22,13 @@ interface SidebarState {
currentMode: SidebarMode;
lastMode: SidebarMode;
isResizing: boolean;
+ rightSidebarTab: RightSidebarTab;
toggleSidebar: () => void;
setSidebarOpen: (open: boolean) => void;
setSidebarWidth: (width: number) => void;
setMode: (mode: SidebarMode) => void;
setIsResizing: (isResizing: boolean) => void;
+ setRightSidebarTab: (tab: RightSidebarTab) => void;
}
export const useSidebarStore = create()(
@@ -34,6 +41,7 @@ export const useSidebarStore = create()(
currentMode: SidebarMode.Tabs,
lastMode: SidebarMode.Tabs,
isResizing: false,
+ rightSidebarTab: RightSidebarTab.Changes,
toggleSidebar: () => {
const { isSidebarOpen, lastOpenSidebarWidth, currentMode, lastMode } =
@@ -102,6 +110,10 @@ export const useSidebarStore = create()(
setIsResizing: (isResizing) => {
set({ isResizing });
},
+
+ setRightSidebarTab: (tab) => {
+ set({ rightSidebarTab: tab });
+ },
}),
{
name: "sidebar-store",