From c0b2c906faf271b89a7e6a78e4bf7a8001ef4c9a Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 12 Jul 2026 11:48:43 -0400 Subject: [PATCH] Immich: Bump version to 3.0.2 (#15668) * Immich: Bump version to 3.0.2 * Bump vchord to 1.1.1 * Add MickLesk HEIC patch --- ct/immich.sh | 25 +++++++++++++++++++++++-- install/immich-install.sh | 25 +++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/ct/immich.sh b/ct/immich.sh index 48ae7ceda..1aa7e0546 100644 --- a/ct/immich.sh +++ b/ct/immich.sh @@ -110,7 +110,7 @@ EOF msg_ok "Image-processing libraries up to date" fi - RELEASE="v3.0.1" + RELEASE="v3.0.2" if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then if [[ $(cat ~/.immich) > "2.5.1" ]]; then msg_info "Enabling Maintenance Mode" @@ -124,7 +124,7 @@ EOF systemctl stop immich-web systemctl stop immich-ml msg_ok "Stopped Services" - VCHORD_RELEASE="1.0.0" + VCHORD_RELEASE="1.1.1" [[ -f ~/.vchord_version ]] && mv ~/.vchord_version ~/.vectorchord if check_for_gh_release "VectorChord" "tensorchord/VectorChord" "${VCHORD_RELEASE}" "updated together with Immich after testing"; then # dead tuples in smart_search/face_search make the REINDEX below fail with @@ -328,6 +328,27 @@ EOF systemctl daemon-reload fi + # MickLesk temporary patch for HEIC thumbnail gen + msg_info "Patching media.repository.js" + MEDIA_REPO_JS="/opt/immich/app/dist/repositories/media.repository.js" + if [[ -f "$MEDIA_REPO_JS" ]]; then + python3 - <<'PY' +from pathlib import Path +p = Path('/opt/immich/app/dist/repositories/media.repository.js') +s = p.read_text() +old = "(0, sharp_1.default)(input).metadata()" +new = "(0, sharp_1.default)(input, { unlimited: true, limitInputPixels: false }).metadata()" +if new in s: + print('hotfix already there') + elif old in s: + p.write_text(s.replace(old, new, 1)) + print('hotfix applied') + else: + print('pattern not found, skipped') +PY + fi + msg_ok "Patched media.repository.js" + # chown excluding upload dir contents (may be a mount with restricted permissions) chown immich:immich "$INSTALL_DIR" find "$INSTALL_DIR" -maxdepth 1 -mindepth 1 ! -name upload -exec chown -R immich:immich {} + diff --git a/install/immich-install.sh b/install/immich-install.sh index fcaad3e0b..2aa611c61 100644 --- a/install/immich-install.sh +++ b/install/immich-install.sh @@ -162,7 +162,7 @@ PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql ACTUAL_PG_VERSION=$(ls /etc/postgresql/ 2>/dev/null | sort -V | tail -1) ACTUAL_PG_VERSION=${ACTUAL_PG_VERSION:-16} -VCHORD_RELEASE="1.0.0" +VCHORD_RELEASE="1.1.1" fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-${ACTUAL_PG_VERSION}-vchord_*_$(arch_resolve).deb" sed -i "s/^#shared_preload.*/shared_preload_libraries = 'vchord.so'/" /etc/postgresql/${ACTUAL_PG_VERSION}/main/postgresql.conf @@ -311,7 +311,7 @@ ML_DIR="${APP_DIR}/machine-learning" GEO_DIR="${INSTALL_DIR}/geodata" mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache} -fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v3.0.1" "$SRC_DIR" +fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v3.0.2" "$SRC_DIR" PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs @@ -437,6 +437,27 @@ cd "$INSTALL_DIR" ln -s "$GEO_DIR" "$APP_DIR" msg_ok "Installed GeoNames data" +# MickLesk temporary patch for HEIC thumbnail gen +msg_info "Patching media.repository.js" +MEDIA_REPO_JS="/opt/immich/app/dist/repositories/media.repository.js" +if [[ -f "$MEDIA_REPO_JS" ]]; then + python3 - <<'PY' +from pathlib import Path +p = Path('/opt/immich/app/dist/repositories/media.repository.js') +s = p.read_text() +old = "(0, sharp_1.default)(input).metadata()" +new = "(0, sharp_1.default)(input, { unlimited: true, limitInputPixels: false }).metadata()" +if new in s: + print('hotfix already there') +elif old in s: + p.write_text(s.replace(old, new, 1)) + print('hotfix applied') +else: + print('pattern not found, skipped') +PY +fi +msg_ok "Patched media.repository.js" + mkdir -p /var/log/immich touch /var/log/immich/{web.log,ml.log} msg_ok "Installed Immich"