diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bde118e65a..b7f747b7f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.3.3 + bun-version: 1.3.6 - name: Cache dependencies uses: actions/cache@v4 @@ -41,7 +41,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.3.3 + bun-version: 1.3.6 - name: Cache dependencies uses: actions/cache@v4 @@ -65,7 +65,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.3.3 + bun-version: 1.3.6 - name: Cache dependencies uses: actions/cache@v4 @@ -89,7 +89,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.3.3 + bun-version: 1.3.6 - name: Cache dependencies uses: actions/cache@v4 @@ -113,7 +113,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.3.3 + bun-version: 1.3.6 - name: Cache dependencies uses: actions/cache@v4 diff --git a/apps/desktop/src/lib/trpc/routers/external/helpers.ts b/apps/desktop/src/lib/trpc/routers/external/helpers.ts index a887e977de..0e47acf6f8 100644 --- a/apps/desktop/src/lib/trpc/routers/external/helpers.ts +++ b/apps/desktop/src/lib/trpc/routers/external/helpers.ts @@ -1,6 +1,6 @@ import { spawn } from "node:child_process"; import nodePath from "node:path"; -import { EXTERNAL_APPS, type ExternalApp } from "@superset/local-db"; +import type { ExternalApp } from "@superset/local-db"; /** Map of app IDs to their macOS application names */ const APP_NAMES: Record = { @@ -277,4 +277,4 @@ export function spawnAsync(command: string, args: string[]): Promise { }); } -export { EXTERNAL_APPS, type ExternalApp }; +export type { ExternalApp }; diff --git a/apps/desktop/src/lib/trpc/routers/external/index.ts b/apps/desktop/src/lib/trpc/routers/external/index.ts index 459fd5f391..f35bca75df 100644 --- a/apps/desktop/src/lib/trpc/routers/external/index.ts +++ b/apps/desktop/src/lib/trpc/routers/external/index.ts @@ -1,11 +1,10 @@ -import { settings } from "@superset/local-db"; +import { EXTERNAL_APPS, settings } from "@superset/local-db"; import { TRPCError } from "@trpc/server"; import { clipboard, shell } from "electron"; import { localDb } from "main/lib/local-db"; import { z } from "zod"; import { publicProcedure, router } from "../.."; import { - EXTERNAL_APPS, type ExternalApp, getAppCommand, resolvePath, diff --git a/apps/desktop/src/lib/trpc/routers/terminal/terminal.stream.test.ts b/apps/desktop/src/lib/trpc/routers/terminal/terminal.stream.test.ts index 579574de50..bbf243a294 100644 --- a/apps/desktop/src/lib/trpc/routers/terminal/terminal.stream.test.ts +++ b/apps/desktop/src/lib/trpc/routers/terminal/terminal.stream.test.ts @@ -85,6 +85,16 @@ mock.module("main/lib/workspace-runtime", () => ({ }), })); +// Mock @superset/local-db to avoid drizzle-orm resolution failures in CI. +mock.module("@superset/local-db", () => ({ + projects: { id: "id" }, + workspaces: { id: "id" }, + worktrees: { id: "id" }, + settings: { id: "id" }, + EXTERNAL_APPS: [], + EXECUTION_MODES: ["sequential", "parallel"], +})); + // Avoid importing Electron/local-db during test bootstrap. mock.module("main/lib/local-db", () => ({ localDb: { diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/NavigationControls/components/HistoryDropdown/HistoryDropdown.tsx b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/NavigationControls/components/HistoryDropdown/HistoryDropdown.tsx index 11a38d0246..7bf1c177ae 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/NavigationControls/components/HistoryDropdown/HistoryDropdown.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/NavigationControls/components/HistoryDropdown/HistoryDropdown.tsx @@ -167,7 +167,16 @@ export function HistoryDropdown() { [collections], ); - if (recentEntries.length === 0) { + const filteredEntries = recentEntries.filter((entry) => { + if (entry.type === "workspace") { + return workspaceData.some((w) => w.id === entry.entityId); + } + return (taskData ?? []).some( + (t) => t.id === entry.entityId || t.slug === entry.entityId, + ); + }); + + if (filteredEntries.length === 0) { return ( @@ -202,7 +211,7 @@ export function HistoryDropdown() { Recently Viewed - {recentEntries.map((entry) => + {filteredEntries.map((entry) => entry.type === "task" ? ( ({ shutdown: mock(() => Promise.resolve()), })); +// ============================================================================= +// @superset/local-db Schema Mock (drizzle-orm/sqlite-core not available in Bun tests) +// ============================================================================= + +const mockTable = (name: string) => ({ id: `${name}_id` }); + +const localDbMock = () => ({ + projects: mockTable("projects"), + workspaces: mockTable("workspaces"), + worktrees: mockTable("worktrees"), + settings: mockTable("settings"), + users: mockTable("users"), + organizations: mockTable("organizations"), + organizationMembers: mockTable("organization_members"), + tasks: mockTable("tasks"), + EXTERNAL_APPS: [], + EXECUTION_MODES: ["sequential", "parallel"], + BRANCH_PREFIX_MODES: ["none", "github", "author", "custom"], + TERMINAL_LINK_BEHAVIORS: ["external-editor", "file-viewer"], + FILE_OPEN_MODES: ["split-pane", "new-tab"], +}); + +// Mock both the package name and the resolved source path to handle +// bun's workspace package resolution in different versions. +mock.module("@superset/local-db", localDbMock); +mock.module("@superset/local-db/schema", localDbMock); + // ============================================================================= // Local DB Mock (better-sqlite3 not supported in Bun tests) // ============================================================================= diff --git a/bun.lock b/bun.lock index 202ae2ec48..381ec75723 100644 --- a/bun.lock +++ b/bun.lock @@ -105,7 +105,7 @@ }, "apps/desktop": { "name": "@superset/desktop", - "version": "0.0.72", + "version": "0.0.73", "dependencies": { "@better-auth/stripe": "1.4.18", "@dnd-kit/core": "^6.3.1",