PunimTag Web Application - Major Feature Release #1
@ -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"
|
||||
|
||||
@ -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)}
|
||||
/>
|
||||
<div className="absolute inset-0 bg-black/0 transition-colors group-hover:bg-black/10" />
|
||||
|
||||
@ -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',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user