#!/usr/bin/env bash # Launch the full dev stack, respecting SSL= from .env set -e DIR="$(cd "$(dirname "$0")" && pwd)" # Load .env if [ -f "$DIR/.env" ]; then set -a source "$DIR/.env" set +a fi SSL="${SSL:-false}" LIVE_RELOAD="${LIVE_RELOAD:-true}" # Suspending the machine tears down the dev-server connection. The live-reload client # answers the reconnect by reloading the page, which destroys the very session under # test (voice call, peer connections, console state). Set LIVE_RELOAD=false to keep the # renderer alive across a suspend. Editing client files then has no effect until restart. NG_RELOAD_FLAG="" if [ "$LIVE_RELOAD" != "true" ]; then NG_RELOAD_FLAG=" --live-reload=false" echo "Live reload disabled: client edits will NOT reach the running window." fi if [ "$SSL" = "true" ]; then # Ensure certs exist if [ ! -f "$DIR/.certs/localhost.crt" ]; then echo "SSL=true but no certs found. Generating..." "$DIR/generate-cert.sh" fi NG_SERVE="cd toju-app && npx ng serve --host=0.0.0.0 --ssl --ssl-cert=../.certs/localhost.crt --ssl-key=../.certs/localhost.key$NG_RELOAD_FLAG" # Use 127.0.0.1 so wait-on does not hit a stale HTTP listener on localhost (::1). WAIT_URL="https://127.0.0.1:4200" HEALTH_URL="https://127.0.0.1:3001/api/health" export NODE_TLS_REJECT_UNAUTHORIZED=0 else NG_SERVE="cd toju-app && npx ng serve --host=0.0.0.0$NG_RELOAD_FLAG" WAIT_URL="http://127.0.0.1:4200" HEALTH_URL="http://127.0.0.1:3001/api/health" fi exec npx concurrently --kill-others \ "cd server && npm run dev" \ "$NG_SERVE" \ "wait-on $WAIT_URL $HEALTH_URL && cross-env NODE_ENV=development SSL=$SSL node tools/launch-electron.js . --no-sandbox --disable-dev-shm-usage"