diff --git a/apps/desktop/src/stores/queryStore.ts b/apps/desktop/src/stores/queryStore.ts index bf67db43cd..5009893eac 100644 --- a/apps/desktop/src/stores/queryStore.ts +++ b/apps/desktop/src/stores/queryStore.ts @@ -95,7 +95,6 @@ import { createSavedSqlEditorPosition, initSavedSqlEditorPositions, restoreSaved import { isDetachedWindow, resolveWindowContext } from "@/lib/app/windowContext"; import { normalizeDetachedTabRuntime, type DetachedTabHandoff, type DetachedTabRuntimeState } from "@/lib/app/detachedTabHandoff"; import { isTauriRuntime } from "@/lib/backend/tauriRuntime"; -import { ensureSqlExtension } from "@/lib/savedSql/savedSqlFileName"; import { resolveSavedSqlExecutionTarget, savedSqlExecutionTargetFromTab, type SavedSqlExecutionTarget, type SavedSqlOpenTargetMode } from "@/lib/savedSql/savedSqlExecutionTarget"; import { safeLocalStorageGet, safeLocalStorageRemove } from "@/lib/backend/safeStorage"; import { sqlTextFingerprint } from "@/lib/sql/sqlTextFingerprint"; @@ -5098,20 +5097,8 @@ export const useQueryStore = defineStore("query", () => { if (!trimmed) return false; const tab = tabs.value.find((t) => t.id === id); if (!tab || tab.mode !== "query") return false; - const normalizedTitle = tab.savedSqlId ? ensureSqlExtension(trimmed) : trimmed; - const previousTitle = tab.title; - tab.title = normalizedTitle; + tab.title = trimmed; tab.customTitle = true; - if (tab.savedSqlId) { - const savedSqlStore = useSavedSqlStore(); - const existing = savedSqlStore.getFile(tab.savedSqlId); - if (existing && existing.name !== normalizedTitle) { - void savedSqlStore.renameFile(tab.savedSqlId, normalizedTitle).catch((error) => { - console.warn("[DBX][saved-sql:rename:error]", error); - tab.title = previousTitle; - }); - } - } return true; } diff --git a/packages/app-tests/savedSqlStore.test.ts b/packages/app-tests/savedSqlStore.test.ts index 7fce7ad690..3d7afabfb6 100644 --- a/packages/app-tests/savedSqlStore.test.ts +++ b/packages/app-tests/savedSqlStore.test.ts @@ -883,7 +883,7 @@ test("usage updates do not invalidate the saved SQL database tree", async () => assert.ok(store.version > contentVersion); }); -test("renaming a saved SQL tab syncs the library file name", async () => { +test("renaming a saved SQL tab keeps the library file name independent", async () => { const file: SavedSqlFile = { id: "sql-1", connectionId: "conn-1", @@ -905,9 +905,9 @@ test("renaming a saved SQL tab syncs the library file name", async () => { assert.equal(queryStore.renameTab(tabId, " Revenue checks "), true); await Promise.resolve(); - assert.equal(queryStore.tabs.find((item) => item.id === tabId)?.title, "Revenue checks.sql"); - assert.equal(savedSqlStore.getFile("sql-1")?.name, "Revenue checks.sql"); - assert.equal(apiMock.saveSavedSqlFile.mock.calls.at(-1)?.[0].name, "Revenue checks.sql"); + assert.equal(queryStore.tabs.find((item) => item.id === tabId)?.title, "Revenue checks"); + assert.equal(savedSqlStore.getFile("sql-1")?.name, "draft.sql"); + assert.equal(apiMock.saveSavedSqlFile.mock.calls.length, 0); }); test("renaming a saved SQL tab keeps uppercase .SQL extension without double-appending", async () => { @@ -937,30 +937,17 @@ test("renaming a saved SQL tab keeps uppercase .SQL extension without double-app assert.equal(apiMock.saveSavedSqlFile.mock.calls.length, 0); }); -test("renaming a saved SQL tab reverts title when persistence fails", async () => { - const file: SavedSqlFile = { - id: "sql-1", - connectionId: "conn-1", - name: "draft.sql", - database: "db", - sql: "SELECT 1;", - sqlLoaded: true, - createdAt: "2026-06-27T00:00:00.000Z", - updatedAt: "2026-06-27T00:00:00.000Z", - }; +test("renaming a saved SQL tab does not persist or revert the library file", async () => { + const file: SavedSqlFile = { id: "sql-1", connectionId: "conn-1", name: "draft.sql", database: "db", sql: "SELECT 1;", sqlLoaded: true, createdAt: "2026-06-27T00:00:00.000Z", updatedAt: "2026-06-27T00:00:00.000Z" }; apiMock.loadSavedSqlLibrary.mockResolvedValue({ folders: [], files: [file] }); - const savedSqlStore = useSavedSqlStore(); await savedSqlStore.initFromStorage(); - const queryStore = useQueryStore(); const tabId = queryStore.openSavedSql(file); - - apiMock.saveSavedSqlFile.mockRejectedValueOnce(new Error("disk full")); assert.equal(queryStore.renameTab(tabId, "broken"), true); - await vi.waitFor(() => queryStore.tabs.find((item) => item.id === tabId)?.title === "draft.sql"); - + assert.equal(queryStore.tabs.find((item) => item.id === tabId)?.title, "broken"); assert.equal(savedSqlStore.getFile("sql-1")?.name, "draft.sql"); + assert.equal(apiMock.saveSavedSqlFile.mock.calls.length, 0); }); test.each([