diff --git a/docs/development.md b/docs/development.md index de90076fd..b0f824396 100644 --- a/docs/development.md +++ b/docs/development.md @@ -37,6 +37,12 @@ PASEO_DEV_RESET_HOME=1 npm run dev # clear and reseed the derived wor In any worktree-style or portless setup, never assume default ports. +### Desktop renderer profiling + +`npm run dev:desktop` starts Electron with Chromium remote debugging enabled on +`http://127.0.0.1:9223` so renderer CPU profiles can be captured through CDP. +Override the port with `PASEO_ELECTRON_REMOTE_DEBUGGING_PORT` when `9223` is busy. + ### Daemon logs Check `$PASEO_HOME/daemon.log` for daemon logs. The default level is `info`; set diff --git a/packages/desktop/scripts/dev.ps1 b/packages/desktop/scripts/dev.ps1 index d6a7eefaf..3b08bcae7 100644 --- a/packages/desktop/scripts/dev.ps1 +++ b/packages/desktop/scripts/dev.ps1 @@ -15,6 +15,18 @@ $env:EXPO_PORT = (npx get-port-cli 8081 8082 8083 8084 8085).Trim() # Set EXPO_DEV_URL in the environment so Electron inherits it $env:EXPO_DEV_URL = "http://localhost:$($env:EXPO_PORT)" +$RemoteDebuggingPort = if ($env:PASEO_ELECTRON_REMOTE_DEBUGGING_PORT) { + $env:PASEO_ELECTRON_REMOTE_DEBUGGING_PORT +} else { + "9223" +} +$ExistingElectronFlags = if ($env:PASEO_ELECTRON_FLAGS) { + "$($env:PASEO_ELECTRON_FLAGS) " +} else { + "" +} +$env:PASEO_ELECTRON_FLAGS = "$($ExistingElectronFlags)--remote-debugging-port=$RemoteDebuggingPort" + # Allow any origin in dev so Electron on random ports works. # SECURITY: wildcard CORS is unsafe in production — only acceptable here because # the daemon binds to localhost and this script is never used for production. @@ -25,6 +37,7 @@ Write-Host @" Paseo Desktop Dev (Windows) ====================================================== Metro: http://localhost:$($env:EXPO_PORT) + CDP: http://127.0.0.1:$RemoteDebuggingPort ====================================================== "@ diff --git a/packages/desktop/scripts/dev.sh b/packages/desktop/scripts/dev.sh index 3505168c2..d6f45a448 100755 --- a/packages/desktop/scripts/dev.sh +++ b/packages/desktop/scripts/dev.sh @@ -14,6 +14,9 @@ npm run build:main EXPO_PORT=$("$ROOT_DIR/node_modules/.bin/get-port" 8081 8082 8083 8084 8085) export EXPO_PORT +REMOTE_DEBUGGING_PORT="${PASEO_ELECTRON_REMOTE_DEBUGGING_PORT:-9223}" +export PASEO_ELECTRON_FLAGS="${PASEO_ELECTRON_FLAGS:+$PASEO_ELECTRON_FLAGS }--remote-debugging-port=$REMOTE_DEBUGGING_PORT" + # Allow any origin in dev so Electron on random localhost ports can reach # the daemon websocket. Safe here because this script is development-only # and the daemon still binds to localhost. @@ -23,6 +26,7 @@ echo "════════════════════════ echo " Paseo Desktop Dev" echo "══════════════════════════════════════════════════════" echo " Metro: http://localhost:${EXPO_PORT}" +echo " CDP: http://127.0.0.1:${REMOTE_DEBUGGING_PORT}" echo "══════════════════════════════════════════════════════" # Launch Metro + Electron together, kill both on exit