#!/bin/bash # Close TalkEdit processes (Tauri dev and Python backend) KILLED_ANY=0 BACKEND_PORT="${BACKEND_PORT:-8000}" FRONTEND_PORT="${FRONTEND_PORT:-5173}" kill_port() { local port=$1 local name=$2 local pids pids=$(lsof -ti tcp:"$port" 2>/dev/null) if [[ -n "$pids" ]]; then echo "Stopping $name (port $port, PID $pids)..." kill "$pids" 2>/dev/null KILLED_ANY=1 fi } kill_pattern() { local pattern=$1 local label=$2 local pids pids=$(pgrep -f "$pattern" 2>/dev/null) if [[ -n "$pids" ]]; then echo "Stopping $label..." kill $pids 2>/dev/null KILLED_ANY=1 fi } # --- TalkEdit (Tauri) --- kill_port "$BACKEND_PORT" "TalkEdit" kill_pattern "tauri.*TalkEdit\|TalkEdit.*tauri\|cargo.*tauri dev\|/TalkEdit/target/debug" "TalkEdit (Tauri dev)" # Frontend dev server: first kill by listening port, then by known process patterns. kill_port "$FRONTEND_PORT" "TalkEdit frontend" kill_pattern "vite\|rsbuild\|npm.*run dev\|pnpm.*dev\|yarn.*dev" "TalkEdit frontend dev server" # --- Orphaned uvicorn workers for TalkEdit --- kill_pattern "uvicorn.*main:app.*--port ${BACKEND_PORT}" "leftover uvicorn workers (TalkEdit)" if [[ $KILLED_ANY -eq 0 ]]; then echo "Nothing to close — no TalkEdit processes found." else echo "Done." fi