6 Commits
Author SHA1 Message Date
Djeex f7ec358378 Merge pull request 'Chrome HDR artefacting fix' (#25) from dev into main
Reviewed-on: #25
2026-08-16 14:26:28 +02:00
DjeexandClaude Sonnet 5 2185aba135 Chrome HDR artefacting fix
Chrome's GPU rasterizer tiles large composited layers, and a lingering
will-change: transform keeps an image promoted to one of those layers
indefinitely — on HDR gain-map photos scaled down to fit the page,
that can leave visible seam lines at the tile boundaries. Drop the
hint once the fade transition actually ends so the image reverts to
normal (non-promoted) painting afterwards.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-16 14:12:07 +02:00
Djeex 40a01c4701 Merge pull request 'Multi-stage smaller alpine docker image and python 3.13' (#24) from alpine into main
Reviewed-on: #24
2025-09-19 22:51:22 +02:00
Djeex 28e3b087b0 Alpine - smaller image 2025-09-19 22:40:30 +02:00
Djeex 116a9574ce Merge branch 'Beta-2.1' 2025-09-04 11:23:59 +00:00
Djeex 6c7216c0e1 Hotfix - default copy 2025-09-04 13:18:42 +02:00
4 changed files with 27 additions and 15 deletions
+11 -6
View File
@@ -1,10 +1,18 @@
FROM python:3.11-slim
FROM python:3.13-alpine AS builder
WORKDIR /app
COPY requirements.txt .
RUN apk add --no-cache gcc musl-dev jpeg-dev zlib-dev
RUN pip install --no-cache-dir -r requirements.txt
COPY requirements.txt .
RUN pip wheel --no-cache-dir --wheel-dir=/wheels -r requirements.txt
FROM python:3.13-alpine
WORKDIR /app
COPY --from=builder /wheels /wheels
RUN pip install --no-cache-dir --find-links=/wheels /wheels/* && rm -rf /wheels
COPY build.py gallery.py VERSION /app/
COPY ./src/ ./src/
@@ -12,7 +20,4 @@ COPY ./config /app/default
COPY ./docker/.sh/entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
RUN printf '#!/bin/sh\n/app/entrypoint.sh build\n' > /usr/local/bin/build && chmod +x /usr/local/bin/build && \
printf '#!/bin/sh\n/app/entrypoint.sh gallery\n' > /usr/local/bin/gallery && chmod +x /usr/local/bin/gallery
ENTRYPOINT ["/app/entrypoint.sh"]
+1 -1
View File
@@ -1 +1 @@
2.1.0
2.1.1
+7 -8
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh
set -e
CYAN="\033[1;36m"
@@ -6,27 +6,26 @@ NC="\033[0m"
copy_default_config() {
echo "[~] Checking configuration directory..."
if [ ! -d "/app/config" ]; then
mkdir -p /app/config
fi
mkdir -p /app/config
echo "[~] Checking if default config files/folders need to be copied..."
files_copied=false
# Recursively check all files and folders in /app/default
while IFS= read -r src; do
for src in $(find /app/default -mindepth 1); do
relpath="${src#/app/default/}"
target="/app/config/$relpath"
if [ ! -e "$target" ]; then
echo "[→] Copying: $relpath"
if [ -d "$src" ]; then
cp -r "$src" "$target"
mkdir -p "$target"
cp -r "$src/" "$target/"
else
mkdir -p "$(dirname "$target")"
cp "$src" "$target"
fi
files_copied=true
fi
done < <(find /app/default -mindepth 1)
done
if [ "$files_copied" = true ]; then
echo "[✓] Default configuration files/folders copied successfully."
+8
View File
@@ -32,6 +32,14 @@ window.addEventListener("DOMContentLoaded", () => {
img.classList.add("loaded");
};
// Chrome HDR artefacting fix
const clearWillChange = (e) => {
if (e.propertyName !== "transform") return;
img.style.willChange = "auto";
img.removeEventListener("transitionend", clearWillChange);
};
img.addEventListener("transitionend", clearWillChange);
if (img.complete && img.naturalHeight !== 0) {
onLoad(); // already loaded
} else {