diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index e45e09d..5767c8b 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -618,11 +618,30 @@ jobs: run: | # Install Python 3.12 using pyenv (required for modern type hints like str | None) # Debian Bullseye doesn't have Python 3.12 in default repos, so we use pyenv - apt-get update && apt-get install -y \ - make build-essential libssl-dev zlib1g-dev \ - libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ - libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ - libffi-dev liblzma-dev git + # Retry logic for transient Debian mirror sync issues + MAX_RETRIES=3 + RETRY_COUNT=0 + while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if apt-get update && apt-get install -y --fix-missing \ + make build-essential libssl-dev zlib1g-dev \ + libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ + libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ + libffi-dev liblzma-dev git; then + echo "✅ Package installation succeeded" + break + else + RETRY_COUNT=$((RETRY_COUNT + 1)) + if [ $RETRY_COUNT -lt $MAX_RETRIES ]; then + echo "⚠️ Package installation failed (attempt $RETRY_COUNT/$MAX_RETRIES), retrying in 5 seconds..." + sleep 5 + # Clear apt cache and retry + apt-get clean + else + echo "❌ Package installation failed after $MAX_RETRIES attempts" + exit 1 + fi + fi + done # Install pyenv export PYENV_ROOT="/opt/pyenv" diff --git a/viewer-frontend/components/PhotoGrid.tsx b/viewer-frontend/components/PhotoGrid.tsx index 5319773..7c03270 100644 --- a/viewer-frontend/components/PhotoGrid.tsx +++ b/viewer-frontend/components/PhotoGrid.tsx @@ -626,6 +626,7 @@ export function PhotoGrid({ className="object-contain bg-black/5 transition-transform duration-300 group-hover:scale-105" sizes="(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 20vw" priority={index < 9} + unoptimized={!isUrl(photo.path)} onLoad={(e) => !isVideoPhoto && handleImageLoad(photo.id, e.currentTarget)} />
diff --git a/viewer-frontend/next.config.ts b/viewer-frontend/next.config.ts index 4147b4b..384a05f 100644 --- a/viewer-frontend/next.config.ts +++ b/viewer-frontend/next.config.ts @@ -17,12 +17,7 @@ const nextConfig: NextConfig = { // }, // Add other CDN or image hosting domains as needed ], - // Configure local patterns for API routes with query strings - localPatterns: [ - { - pathname: '/api/photos/**/image', - }, - ], + // Enable image optimization in production // In development, images are unoptimized for faster iteration unoptimized: process.env.NODE_ENV === 'development',