diff --git a/Makefile b/Makefile index 7e5762e..3759424 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,7 @@ package: build resolve-deps ## Build installable app for the current platform @$(PNPM) --dir packages/electron dist package-mac: build resolve-deps ## Build .dmg for macOS (current arch) + @hdiutil detach /Volumes/Dune -force 2>/dev/null || true @$(PNPM) --dir packages/electron dist:mac -- --$(shell uname -m | sed 's/x86_64/x64/') package-linux: build resolve-deps ## Build .AppImage/.deb for Linux diff --git a/packages/backend/src/agents/agent-manager.ts b/packages/backend/src/agents/agent-manager.ts index 4be74bd..a7f4dcd 100644 --- a/packages/backend/src/agents/agent-manager.ts +++ b/packages/backend/src/agents/agent-manager.ts @@ -631,12 +631,13 @@ async function ensureCliInstalled(box: SimpleBox): Promise { console.log('Claude CLI:', check.stdout.trim()) } -/** Read the current backend port from the .port file. - * server.ts writes it to join(__dirname, '../.port') from src/, - * which is packages/backend/.port. From src/agents/, that's ../../.port. */ +/** Returns the agent-facing backend port. + * In packaged mode the sidecar passes PORT via env -> config.port. + * In dev mode we fall back to the .port file written by server.ts. */ function getBackendPort(): number { + if (config.port > 0) return config.port try { - const portFile = join(__dirname, '../../.port') + const portFile = join(__dirname, '../.port') const raw = readFileSync(portFile, 'utf-8').trim() if (raw.startsWith('{')) { const parsed = JSON.parse(raw) diff --git a/packages/backend/test/agent-system-prompt.test.ts b/packages/backend/test/agent-system-prompt.test.ts index 22fb7e0..65f0006 100644 --- a/packages/backend/test/agent-system-prompt.test.ts +++ b/packages/backend/test/agent-system-prompt.test.ts @@ -95,6 +95,6 @@ test('bundled asset resolver falls back from dist to src assets', () => { ) assert.equal( agentManager.__resolveBundledAssetDirForTests('agent-mcp', resolve(backendRoot, 'dist')), - resolve(backendRoot, 'src', 'agent-mcp'), + resolve(backendRoot, 'src', 'agents', 'mcp'), ) }) diff --git a/packages/electron/electron-builder.yml b/packages/electron/electron-builder.yml index 90cda36..2d8c8e5 100644 --- a/packages/electron/electron-builder.yml +++ b/packages/electron/electron-builder.yml @@ -33,7 +33,7 @@ extraResources: filter: - "**/*" - - from: ../backend/src/agent-mcp + - from: ../backend/src/agents/mcp to: backend/agent-mcp filter: - "**/*.py" @@ -53,14 +53,8 @@ npmRebuild: true mac: category: public.app-category.developer-tools target: - - target: dmg - arch: - - arm64 - - x64 - - target: zip - arch: - - arm64 - - x64 + - dmg + - zip icon: assets/icon.icns darkModeSupport: true hardenedRuntime: true @@ -69,6 +63,7 @@ mac: dmg: sign: false title: Dune + backgroundColor: '#ffffff' linux: target: diff --git a/packages/electron/src/util/paths.ts b/packages/electron/src/util/paths.ts index fbeb6d1..f704bb5 100644 --- a/packages/electron/src/util/paths.ts +++ b/packages/electron/src/util/paths.ts @@ -55,7 +55,7 @@ export function getAgentMcpPath(): string { if (isPackaged()) { return join(process.resourcesPath!, 'backend', 'agent-mcp') } - return resolve(getRepoRoot(), 'packages', 'backend', 'src', 'agent-mcp') + return resolve(getRepoRoot(), 'packages', 'backend', 'src', 'agents', 'mcp') } export function getAgentPromptsPath(): string {