#!/bin/bash # ProofLab PDB Bridge - Start server # Double-click to run. Press Ctrl+C to stop. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LOCAL_SERVER="$HOME/Documents/ProofLab-Server" LOCAL_CORE="$HOME/Library/Application Support/ProofLab/core" SOURCE_SERVER="" if [[ "$SCRIPT_DIR" == /Volumes/* ]]; then SOURCE_SERVER="$SCRIPT_DIR" fi # If run from SMB share but local copy exists, use local (avoids read-only issues) if [[ "$SCRIPT_DIR" == /Volumes/* ]] && [ -d "$LOCAL_SERVER" ]; then PROOFLAB_SERVER_SOURCE="$SOURCE_SERVER" exec bash "$LOCAL_SERVER/start-pdb-bridge.command" fi if [[ "$SCRIPT_DIR" == /Volumes/* ]] && [ ! -d "$LOCAL_SERVER" ]; then echo "Local server copy not found at:" echo " $LOCAL_SERVER" echo "" echo "Run setup-pdb-bridge.command first." read -p "Press Enter to close." exit 1 fi cd "$SCRIPT_DIR" echo "============================================" echo "ProofLab PDB Bridge" echo "============================================" echo "" echo "Starting... Picker will be at: http://127.0.0.1:4311/picker" echo "" echo "Validating ProofLab activation..." node scripts/require-prooflab-activation.mjs if [ $? -ne 0 ]; then echo "" echo "Bridge start blocked: ProofLab activation is required on this machine." echo "Open ProofLab in Illustrator and complete activation, then start again." read -p "Press Enter to close." exit 1 fi echo "" echo "Press Ctrl+C to stop." echo "============================================" echo "" if [ -z "$SOURCE_SERVER" ] && [ -n "$PROOFLAB_SERVER_SOURCE" ]; then SOURCE_SERVER="$PROOFLAB_SERVER_SOURCE" fi if [ -z "$SOURCE_SERVER" ] && [ -f "$SCRIPT_DIR/.prooflab-source-path" ]; then SOURCE_SERVER="$(head -n 1 "$SCRIPT_DIR/.prooflab-source-path" | tr -d '\r')" fi UPDATE_APPLIED=false if [ -n "$SOURCE_SERVER" ] && [ "$SOURCE_SERVER" != "$SCRIPT_DIR" ]; then echo "Checking for bridge package updates..." if [ -f "scripts/local-bridge-updater.mjs" ]; then node scripts/local-bridge-updater.mjs --source "$SOURCE_SERVER" --target "$SCRIPT_DIR" --write-source-path UPDATE_EXIT=$? if [ $UPDATE_EXIT -eq 10 ]; then UPDATE_APPLIED=true echo "Bridge package update applied." elif [ $UPDATE_EXIT -eq 11 ]; then echo "Update source unavailable or missing release manifest. Skipping auto-update." elif [ $UPDATE_EXIT -ne 0 ]; then echo "Update check failed (code $UPDATE_EXIT). Continuing with local package." fi else echo "Updater script missing in local package. Skipping auto-update." fi echo "" fi CORE_SOURCE="" if [ -n "$SOURCE_SERVER" ]; then CORE_SOURCE="$(cd "$(dirname "$SOURCE_SERVER")" && pwd)" fi if [ -z "$CORE_SOURCE" ] && [ -f "$LOCAL_CORE/.prooflab-core-source-path" ]; then CORE_SOURCE="$(head -n 1 "$LOCAL_CORE/.prooflab-core-source-path" | tr -d '\r')" fi if [ -n "$CORE_SOURCE" ] && [ "$CORE_SOURCE" != "$LOCAL_CORE" ]; then echo "Checking for ProofLab core updates..." if [ -f "scripts/local-core-updater.mjs" ]; then mkdir -p "$LOCAL_CORE" node scripts/local-core-updater.mjs --source "$CORE_SOURCE" --target "$LOCAL_CORE" --write-source-path CORE_UPDATE_EXIT=$? if [ $CORE_UPDATE_EXIT -eq 10 ]; then echo "ProofLab core runtime updated." elif [ $CORE_UPDATE_EXIT -eq 11 ]; then if [ -d "$CORE_SOURCE/src" ]; then mkdir -p "$LOCAL_CORE/src" cp -R "$CORE_SOURCE/src"/. "$LOCAL_CORE/src"/ mkdir -p "$LOCAL_CORE/macos" if [ -f "$CORE_SOURCE/macos/prooflab_hotkeys.lua" ]; then cp "$CORE_SOURCE/macos/prooflab_hotkeys.lua" "$LOCAL_CORE/macos/prooflab_hotkeys.lua" fi echo "$CORE_SOURCE" > "$LOCAL_CORE/.prooflab-core-source-path" echo "ProofLab core runtime refreshed (fallback copy)." else echo "Core source unavailable or missing manifest. Skipping local core update." fi elif [ $CORE_UPDATE_EXIT -ne 0 ]; then echo "Core update check failed (code $CORE_UPDATE_EXIT). Continuing with local runtime." fi else echo "Core updater script missing in local package. Skipping core update." fi echo "" fi if [ "$UPDATE_APPLIED" = true ] || [ ! -d "node_modules" ]; then echo "Installing bridge dependencies..." npm install if [ $? -ne 0 ]; then echo "npm install failed." read -p "Press Enter to close." exit 1 fi echo "" fi if [ "$UPDATE_APPLIED" = true ] || [ ! -d "picker-app/dist" ]; then echo "Building picker UI..." npm run picker:build if [ $? -ne 0 ]; then echo "Picker build failed." read -p "Press Enter to close." exit 1 fi echo "" fi npm start echo "" echo "Bridge stopped." read -p "Press Enter to close."