diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/usePaneRegistry.tsx b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/usePaneRegistry.tsx
index 88d8e394878..2d9e5373828 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/usePaneRegistry.tsx
+++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/usePaneRegistry.tsx
@@ -1,9 +1,6 @@
import type { PaneRegistry, RendererContext } from "@superset/panes";
import { FileCode2, Globe, MessageSquare, TerminalSquare } from "lucide-react";
import { useMemo } from "react";
-import { ChatPane } from "./components/ChatPane";
-import { WorkspaceFilePreview } from "./components/FilesPane/components/WorkspaceFilePreview/WorkspaceFilePreview";
-import { TerminalPane } from "./components/TerminalPane";
import type {
BrowserPaneData,
ChatPaneData,
@@ -11,6 +8,9 @@ import type {
FilePaneData,
PaneViewerData,
} from "../../types";
+import { ChatPane } from "./components/ChatPane";
+import { WorkspaceFilePreview } from "./components/FilesPane/components/WorkspaceFilePreview/WorkspaceFilePreview";
+import { TerminalPane } from "./components/TerminalPane";
function getFileTitle(filePath: string): string {
return filePath.split("/").pop() ?? filePath;
@@ -40,9 +40,7 @@ export function usePaneRegistry(
terminal: {
getIcon: () => ,
getTitle: () => "Terminal",
- renderPane: () => (
-
- ),
+ renderPane: () => ,
},
browser: {
getIcon: () => ,
diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/useV2WorkspacePaneLayout/useV2WorkspacePaneLayout.ts b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/useV2WorkspacePaneLayout/useV2WorkspacePaneLayout.ts
index 6e4debee6bb..088c332ccda 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/useV2WorkspacePaneLayout/useV2WorkspacePaneLayout.ts
+++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/useV2WorkspacePaneLayout/useV2WorkspacePaneLayout.ts
@@ -1,7 +1,4 @@
-import {
- createWorkspaceStore,
- type WorkspaceState,
-} from "@superset/panes";
+import { createWorkspaceStore, type WorkspaceState } from "@superset/panes";
import { eq } from "@tanstack/db";
import { useLiveQuery } from "@tanstack/react-db";
import { useEffect, useMemo, useRef, useState } from "react";
diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/page.tsx b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/page.tsx
index bc7dddc3bb4..fedbe7a2b74 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/page.tsx
+++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/page.tsx
@@ -1,10 +1,11 @@
-import { Workspace, type PaneActionConfig } from "@superset/panes";
+import { type PaneActionConfig, Workspace } from "@superset/panes";
import { eq } from "@tanstack/db";
import { useLiveQuery } from "@tanstack/react-db";
import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useCallback, useMemo } from "react";
import { HiMiniXMark } from "react-icons/hi2";
import { TbLayoutColumns, TbLayoutRows } from "react-icons/tb";
+import { HotkeyTooltipContent } from "renderer/components/HotkeyTooltipContent";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { useCollections } from "renderer/routes/_authenticated/providers/CollectionsProvider";
import {
@@ -12,7 +13,6 @@ import {
useCommandPalette,
} from "renderer/screens/main/components/CommandPalette";
import { PresetsBar } from "renderer/screens/main/components/WorkspaceView/ContentView/components/PresetsBar";
-import { HotkeyTooltipContent } from "renderer/components/HotkeyTooltipContent";
import { useAppHotkey } from "renderer/stores/hotkeys";
import { AddTabMenu } from "./components/AddTabMenu";
import { WorkspaceEmptyState } from "./components/WorkspaceEmptyState";
@@ -79,22 +79,24 @@ function WorkspaceContent({
const utils = electronTrpc.useUtils();
const { data: showPresetsBar, isLoading: isLoadingPresetsBar } =
electronTrpc.settings.getShowPresetsBar.useQuery();
- const setShowPresetsBar = electronTrpc.settings.setShowPresetsBar.useMutation({
- onMutate: async ({ enabled }) => {
- await utils.settings.getShowPresetsBar.cancel();
- const previous = utils.settings.getShowPresetsBar.getData();
- utils.settings.getShowPresetsBar.setData(undefined, enabled);
- return { previous };
- },
- onError: (_error, _variables, context) => {
- if (context?.previous !== undefined) {
- utils.settings.getShowPresetsBar.setData(undefined, context.previous);
- }
- },
- onSettled: () => {
- utils.settings.getShowPresetsBar.invalidate();
+ const setShowPresetsBar = electronTrpc.settings.setShowPresetsBar.useMutation(
+ {
+ onMutate: async ({ enabled }) => {
+ await utils.settings.getShowPresetsBar.cancel();
+ const previous = utils.settings.getShowPresetsBar.getData();
+ utils.settings.getShowPresetsBar.setData(undefined, enabled);
+ return { previous };
+ },
+ onError: (_error, _variables, context) => {
+ if (context?.previous !== undefined) {
+ utils.settings.getShowPresetsBar.setData(undefined, context.previous);
+ }
+ },
+ onSettled: () => {
+ utils.settings.getShowPresetsBar.invalidate();
+ },
},
- });
+ );
const openFilePane = useCallback(
(filePath: string) => {
@@ -206,10 +208,7 @@ function WorkspaceContent({
key: "close",
icon: ,
tooltip: (
-
+
),
onClick: (ctx) => ctx.actions.close(),
},
diff --git a/apps/desktop/src/renderer/routes/_authenticated/hooks/useDashboardSidebarState/useDashboardSidebarState.ts b/apps/desktop/src/renderer/routes/_authenticated/hooks/useDashboardSidebarState/useDashboardSidebarState.ts
index cf55cd37fe7..1ab72fb083a 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/hooks/useDashboardSidebarState/useDashboardSidebarState.ts
+++ b/apps/desktop/src/renderer/routes/_authenticated/hooks/useDashboardSidebarState/useDashboardSidebarState.ts
@@ -62,7 +62,11 @@ function ensureSidebarWorkspaceRecord(
tabOrder: getNextTabOrder(topLevelOrders),
sectionId: null,
},
- paneLayout: { version: 1, tabs: [], activeTabId: null } satisfies WorkspaceState,
+ paneLayout: {
+ version: 1,
+ tabs: [],
+ activeTabId: null,
+ } satisfies WorkspaceState,
});
}
diff --git a/apps/desktop/src/renderer/stores/tabs/store.ts b/apps/desktop/src/renderer/stores/tabs/store.ts
index 8fc0f13a086..cd53cc86535 100644
--- a/apps/desktop/src/renderer/stores/tabs/store.ts
+++ b/apps/desktop/src/renderer/stores/tabs/store.ts
@@ -756,19 +756,18 @@ export const useTabsStore = create()(
const tabPaneIds = extractPaneIdsFromLayout(activeTab.layout);
const reuseExisting = options.reuseExisting ?? "workspace";
- const canReuseExistingPane =
- !options.openInNewTab && reuseExisting !== "none";
- const existingFileViewerPane = canReuseExistingPane
- ? findReusableFileViewerPane({
- workspaceId,
- activeTabId: activeTab.id,
- tabs: state.tabs,
- panes: state.panes,
- tabHistoryStacks: state.tabHistoryStacks,
- reuseExisting,
- options,
- })
- : null;
+ const existingFileViewerPane =
+ reuseExisting !== "none"
+ ? findReusableFileViewerPane({
+ workspaceId,
+ activeTabId: activeTab.id,
+ tabs: state.tabs,
+ panes: state.panes,
+ tabHistoryStacks: state.tabHistoryStacks,
+ reuseExisting,
+ options,
+ })
+ : null;
if (existingFileViewerPane) {
const nextPane = applyFileViewerOpenOptionsToPane(
@@ -828,7 +827,11 @@ export const useTabsStore = create()(
// If we found an unpinned (preview) file-viewer pane, reuse it
// (skip reuse when explicitly requesting a new tab, e.g. cmd+click)
- if (fileViewerPanes.length > 0 && canReuseExistingPane) {
+ if (
+ fileViewerPanes.length > 0 &&
+ !options.openInNewTab &&
+ reuseExisting !== "none"
+ ) {
const paneToReuse = fileViewerPanes[0];
const existingFileViewer = paneToReuse.fileViewer;
if (!existingFileViewer) {