mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-05 21:39:54 +02:00
* feat(desktop): isolate pnpm dev:desktop per worktree (MUL-3724) Two worktrees could not run pnpm dev:desktop at once: both grabbed the renderer port 5173 and the single-instance lock keyed by the app name "Multica Canary". The env hooks to override each already existed (DESKTOP_RENDERER_PORT in electron.vite.config.ts, DESKTOP_APP_SUFFIX in src/main/index.ts) but nothing derived per-worktree values. A new dev launcher (scripts/dev.mjs) derives both from the worktree path for linked worktrees only — reusing the same cksum%1000 offset as scripts/init-worktree-env.sh, so renderer port is 5173+offset and the app becomes "Multica Canary <folder>" with its own userData/lock. The primary checkout is untouched; explicit env vars still win. Backend targeting is unchanged (apps/desktop/.env*). Also: brand-dev-electron honors the suffix, turbo globalEnv passes it through, and CONTRIBUTING documents the flow. Co-authored-by: multica-agent <github@multica.ai> * fix(desktop): make worktree dev port/suffix collision-safe (MUL-3724) Addresses code review on #4598: - Renderer port base 5173 → 5174 so a worktree whose offset is 0 (e.g. cksum("/tmp/multica-3494") % 1000 === 0) no longer collides with the primary checkout's default 5173. - DESKTOP_APP_SUFFIX is now "<folder>-<offset>" instead of just the folder name, so worktrees that share a basename at different paths (or names that slug to the same fallback) get distinct single-instance locks. Without it the second Electron was still blocked by the shared lock. - Tests: offset-0 port guard, and same-basename-different-path disambiguation. Co-authored-by: multica-agent <github@multica.ai> --------- Co-authored-by: Lambda <agent@multica.ai> Co-authored-by: multica-agent <github@multica.ai>
43 lines
891 B
JSON
43 lines
891 B
JSON
{
|
|
"$schema": "https://turbo.build/schema.json",
|
|
"globalEnv": [
|
|
"DATABASE_URL",
|
|
"PORT",
|
|
"FRONTEND_PORT",
|
|
"FRONTEND_ORIGIN",
|
|
"NEXT_PUBLIC_API_URL",
|
|
"NEXT_PUBLIC_WS_URL",
|
|
"MULTICA_SERVER_URL",
|
|
"DOCS_URL",
|
|
"COMPOSE_PROJECT_NAME",
|
|
"POSTGRES_DB",
|
|
"POSTGRES_PORT",
|
|
"DESKTOP_RENDERER_PORT",
|
|
"DESKTOP_APP_SUFFIX"
|
|
],
|
|
"tasks": {
|
|
"build": {
|
|
"dependsOn": ["^build"],
|
|
"inputs": ["src/**", "app/**", "**/*.ts", "**/*.tsx", "**/*.css"],
|
|
"outputs": [".next/**", "!.next/cache/**", "dist/**", "out/**"]
|
|
},
|
|
"dev": {
|
|
"cache": false,
|
|
"persistent": true
|
|
},
|
|
"dev:staging": {
|
|
"cache": false,
|
|
"persistent": true
|
|
},
|
|
"typecheck": {
|
|
"dependsOn": ["^typecheck"]
|
|
},
|
|
"test": {
|
|
"dependsOn": ["^typecheck"]
|
|
},
|
|
"lint": {
|
|
"dependsOn": ["^typecheck"]
|
|
}
|
|
}
|
|
}
|