diff --git a/app/dist/index.html b/app/dist/index.html index cdd6929..eee907d 100644 --- a/app/dist/index.html +++ b/app/dist/index.html @@ -1,18 +1,18 @@ - - - - - - - - - - Local AI Image Generator + + + + + + + + + + Local AI Image Generator - - - -
- - + + + +
+ + diff --git a/scripts/build_from_source.sh b/scripts/build_from_source.sh index 6b39a34..3c55636 100755 --- a/scripts/build_from_source.sh +++ b/scripts/build_from_source.sh @@ -91,6 +91,10 @@ SO_PATH=$(find . -name "libstable-diffusion.so" | head -n 1) if [ -n "$SO_PATH" ]; then cp "$SO_PATH" "$BACKEND_DIR/cpu/" echo "Copied libstable-diffusion.so to CPU directory." + chmod +x "$BACKEND_DIR/cpu/sd-cpu" "$BACKEND_DIR/cpu/sd-server-cpu" 2>/dev/null || true + if [ -f "$BACKEND_DIR/cpu/sd-cli-cpu" ]; then + chmod +x "$BACKEND_DIR/cpu/sd-cli-cpu" 2>/dev/null || true + fi else echo "WARNING: libstable-diffusion.so not found for CPU build!" fi @@ -124,6 +128,10 @@ if rm -rf build-vulkan && mkdir build-vulkan && cd build-vulkan && \ else echo "WARNING: libstable-diffusion.so not found for Vulkan build!" fi + chmod +x "$BACKEND_DIR/vulkan/sd-vulkan" "$BACKEND_DIR/vulkan/sd-server-vulkan" 2>/dev/null || true + if [ -f "$BACKEND_DIR/vulkan/sd-cli-vulkan" ]; then + chmod +x "$BACKEND_DIR/vulkan/sd-cli-vulkan" 2>/dev/null || true + fi else echo "WARNING: Vulkan backend build failed. Bypassing Vulkan backend compilation..." fi @@ -152,6 +160,10 @@ SO_PATH_CUDA=$(find . -name "libstable-diffusion.so" | head -n 1) if [ -n "$SO_PATH_CUDA" ]; then cp "$SO_PATH_CUDA" "$BACKEND_DIR/cuda/" echo "Copied libstable-diffusion.so to CUDA directory." + chmod +x "$BACKEND_DIR/cuda/sd-cuda" "$BACKEND_DIR/cuda/sd-server-cuda" 2>/dev/null || true + if [ -f "$BACKEND_DIR/cuda/sd-cli-cuda" ]; then + chmod +x "$BACKEND_DIR/cuda/sd-cli-cuda" 2>/dev/null || true + fi else echo "WARNING: libstable-diffusion.so not found for CUDA build!" fi diff --git a/scripts/setup.sh b/scripts/setup.sh index 5ad0d56..b8dc7f1 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -291,7 +291,7 @@ else # CPU backend (always) CPU_BACKEND_DIR="$BACKEND_DIR/cpu" -if [[ ! -f "$CPU_BACKEND_DIR/sd-cpu" ]]; then +if [[ ! -f "$CPU_BACKEND_DIR/sd-cpu" || ! -f "$CPU_BACKEND_DIR/sd-server-cpu" ]]; then mkdir -p "$CPU_BACKEND_DIR" CPU_ZIP="$TOOLS_DIR/sd-cpu.zip" download_file "$SD_BASE_URL/sd-master-${SD_SHORT_HASH}-bin-Linux-Ubuntu-24.04-x86_64.zip" "$CPU_ZIP" "stable-diffusion.cpp CPU Backend (Linux x86_64)" @@ -299,15 +299,15 @@ if [[ ! -f "$CPU_BACKEND_DIR/sd-cpu" ]]; then rm -f "$CPU_ZIP" copy_binaries_from_extracted "$CPU_BACKEND_DIR/extracted" "$CPU_BACKEND_DIR" "sd-cpu" "sd-server-cpu" rm -rf "$CPU_BACKEND_DIR/extracted" - chmod +x "$CPU_BACKEND_DIR/sd-cpu" 2>/dev/null || true print_ok "CPU backend installed." else print_ok "CPU backend already ready." fi +chmod +x "$CPU_BACKEND_DIR/sd-cpu" "$CPU_BACKEND_DIR/sd-server-cpu" 2>/dev/null || true # Vulkan backend (always - cross-vendor GPU fallback) VULKAN_BACKEND_DIR="$BACKEND_DIR/vulkan" -if [[ ! -f "$VULKAN_BACKEND_DIR/sd-vulkan" ]]; then +if [[ ! -f "$VULKAN_BACKEND_DIR/sd-vulkan" || ! -f "$VULKAN_BACKEND_DIR/sd-server-vulkan" ]]; then mkdir -p "$VULKAN_BACKEND_DIR" VULKAN_ZIP="$TOOLS_DIR/sd-vulkan.zip" download_file "$SD_BASE_URL/sd-master-${SD_SHORT_HASH}-bin-Linux-Ubuntu-24.04-x86_64-vulkan.zip" "$VULKAN_ZIP" "stable-diffusion.cpp Vulkan Backend (Linux x86_64)" @@ -315,16 +315,16 @@ if [[ ! -f "$VULKAN_BACKEND_DIR/sd-vulkan" ]]; then rm -f "$VULKAN_ZIP" copy_binaries_from_extracted "$VULKAN_BACKEND_DIR/extracted" "$VULKAN_BACKEND_DIR" "sd-vulkan" "sd-server-vulkan" rm -rf "$VULKAN_BACKEND_DIR/extracted" - chmod +x "$VULKAN_BACKEND_DIR/sd-vulkan" 2>/dev/null || true print_ok "Vulkan backend installed." else print_ok "Vulkan backend already ready." fi +chmod +x "$VULKAN_BACKEND_DIR/sd-vulkan" "$VULKAN_BACKEND_DIR/sd-server-vulkan" 2>/dev/null || true # ROCm backend (optional --max-perf, or auto-detected AMD) ROCM_BACKEND_DIR="$BACKEND_DIR/rocm" if [[ $MAX_PERF -eq 1 ]] && [[ "$VENDOR" == "amd" || "$VENDOR" == "" ]]; then - if [[ ! -f "$ROCM_BACKEND_DIR/sd-rocm" ]]; then + if [[ ! -f "$ROCM_BACKEND_DIR/sd-rocm" || ! -f "$ROCM_BACKEND_DIR/sd-server-rocm" ]]; then mkdir -p "$ROCM_BACKEND_DIR" ROCM_ZIP="$TOOLS_DIR/sd-rocm.zip" print_warn "ROCm backend is ~1.2 GB. This may take a while..." @@ -333,11 +333,11 @@ if [[ $MAX_PERF -eq 1 ]] && [[ "$VENDOR" == "amd" || "$VENDOR" == "" ]]; then rm -f "$ROCM_ZIP" copy_binaries_from_extracted "$ROCM_BACKEND_DIR/extracted" "$ROCM_BACKEND_DIR" "sd-rocm" "sd-server-rocm" rm -rf "$ROCM_BACKEND_DIR/extracted" - chmod +x "$ROCM_BACKEND_DIR/sd-rocm" 2>/dev/null || true print_ok "ROCm backend installed." else print_ok "ROCm backend already ready." fi + chmod +x "$ROCM_BACKEND_DIR/sd-rocm" "$ROCM_BACKEND_DIR/sd-server-rocm" 2>/dev/null || true fi # CUDA backend on Linux is intentionally disabled. diff --git a/start.sh b/start.sh index 4736315..f6eeec8 100755 --- a/start.sh +++ b/start.sh @@ -53,9 +53,11 @@ if [[ "$PLATFORM" == "Darwin" ]]; then SETUP_REASON="No macOS Metal backend binary is installed." fi else - # At minimum we need CPU or Vulkan backend on Linux - if [[ ! -f "$CPU_BACKEND_PATH" && ! -f "$BACKEND_PATH" ]]; then - SETUP_REASON="No Linux backend binary is installed." + # At minimum we need CPU or Vulkan backend on Linux, and both CLI and server binaries must be executable + CPU_SERVER_PATH="$APP_DIR/backend/linux/cpu/sd-server-cpu" + VULKAN_SERVER_PATH="$APP_DIR/backend/linux/vulkan/sd-server-vulkan" + if [[ ! -x "$CPU_BACKEND_PATH" || ! -x "$CPU_SERVER_PATH" ]] && [[ ! -x "$BACKEND_PATH" || ! -x "$VULKAN_SERVER_PATH" ]]; then + SETUP_REASON="Linux backend binaries are missing or not executable." fi fi