Skip to content

Releases: epheterson/immich-apple-silicon

Immich Accelerator v1.5.24

Choose a tag to compare

@github-actions github-actions released this 04 Jul 06:21
0104c03

Immich 3.0 support

  • Plugin-path detection now recognizes both the 2.7 layout (corePlugin/) and the 3.0 layout (plugins/immich-plugin-core/). Immich 3.0 renamed the WASM core-plugin directory, which made the layer-download early-exit never fire on 3.0, so setup downloaded every image layer instead of stopping once the small plugin layer arrived. Setup is fast again on 3.0. The rest of the 3.0 worker (extraction, native Sharp, ffmpeg wrapper, plugin load, worker start) was verified end to end.
  • README notes the worker tracks your Immich version, verified with 2.7.x and 3.0.x.

Note: moving your own Docker stack from 2.7 to 3.0 requires Immich's database migration (pgvecto-rs to VectorChord); that is on the Immich side, not the accelerator.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.23

Choose a tag to compare

@github-actions github-actions released this 04 Jul 01:43
7ccdfdc

Diagnostics

  • spawn EBADF instrumentation (#89): when a child-process spawn throws (the crash a reporter hits during ffmpeg capability detection, not reproducible on any environment we can build), the shim now logs the file-descriptor state at the point of failure, which of fd 0/1/2 is invalid, the requested stdio, and the process's open fds, then re-throws unchanged. Fires only on the error path; silent in normal operation. This is to capture the root cause on the affected machine.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.22

Choose a tag to compare

@github-actions github-actions released this 03 Jul 09:55
7a79190

Fixed

  • pg_dump shim wrapped child_process spawn twice (#89): the shim called install() for both child_process and node:child_process, which are the same object on modern Node, so every spawn ran through two nested wrappers (two pg_dump_shim.js frames in stack traces). Now guarded to patch a given module object once. This is hardening, not a confirmed fix for the reported spawn EBADF, which could not be reproduced across Node 22/24, launchd-style stdio, high concurrency, or starved fd limits, and rewrites nothing for ffprobe. Reported by @KoenM9264.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.21

Choose a tag to compare

@github-actions github-actions released this 27 Jun 20:17
9059704

Fixed

  • brew cleanup failing on root-owned .pyc (#86): the CLI wrapper now sets PYTHONDONTWRITEBYTECODE=1, so Python no longer writes __pycache__ into the Homebrew Cellar. Previously, running the CLI as root (e.g. sudo immich-accelerator ...) left root-owned bytecode in the keg that brew cleanup couldn't remove. Reported by @shtefko. After upgrading, clear any existing root-owned files once: sudo chown -R $(whoami):admin /opt/homebrew/Cellar/immich-accelerator.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.20

Choose a tag to compare

@github-actions github-actions released this 27 Jun 00:19
1865d0c

Docs

  • README house style: added badges, a Star History chart, and License/Credits sections, and aligned the footer to the canonical form. Documented that Immich's Transcoding video ... without hardware acceleration log is expected and benign on macOS (the ffmpeg wrapper does the VideoToolbox encode; Immich has no VideoToolbox option to report). Reported by @shtefko (#84).
  • README slimmed: Troubleshooting is now a collapsible symptom index (<details>), and the Split deployment guide moved to docs/split-deployment.md with a short pointer. The common path reads top-to-bottom without scrolling past the long tail.
  • README polish: promoted the status from Alpha to Beta (in daily use), de-duplicated the Commands table (the immich-accelerator prefix is stated once, not on every row), and removed all em-dashes.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.19

Choose a tag to compare

@github-actions github-actions released this 24 Jun 16:44
63dfc09

Fixes

  • brew services stop/restart now stop ML and the dashboard too, not just the worker (#81 follow-up). v1.5.18's stop handler used the normal sequential shutdown, which waits up to 5s per service; launchd SIGKILLs the watcher only a few seconds after signalling it, so the handler was cut off after the worker and left ML + dashboard running. The handler now signals all services up front, so they all stop even under launchd's short grace.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.18

Choose a tag to compare

@github-actions github-actions released this 24 Jun 16:10
d949852

Fixes

  • Media-readiness gate no longer refuses a writable split setup (#80). The gate checked writability at the media root, but Immich only writes to the subdirs (upload, thumbs, …) — a split deployment can have a root-owned, non-writable media root (e.g. a /data synthetic link) while the subdirs are fully writable. The gate now places/verifies its marker across the media root and Immich's standard subdirs (root first, for back-compat), testing writability where Immich actually writes. A genuinely missing/unmounted root still correctly refuses. Reported by @shtefko.
  • brew services stop/restart now actually stop the worker (#81). The worker, ML, and dashboard run detached, so they survived when launchd signalled only the watcher — a stop or restart left them running. The watcher now traps SIGTERM/SIGINT and stops its services before exiting, so the service lifecycle behaves as expected. Reported by @shtefko.
  • immich-accelerator start now also starts the dashboard. Previously only watch/brew-services brought it up. Reported by @shtefko.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.17

Choose a tag to compare

@github-actions github-actions released this 24 Jun 05:53
eca9745

Fixes

  • brew upgrade now actually takes effect. The worker and ML service run detached, so they survived a brew services restart — a fresh watcher would adopt the still-running old-code worker, and an upgrade silently didn't apply until a full manual stop/start. The watcher now stamps the version each worker starts with, restarts a worker found running stale code, and (in service mode) notices when the installed version on disk changes and relaunches itself so the new code — shims and fixes — comes up on a fresh worker within ~30s. No manual restart needed when running as a service. README updated.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Note: upgrading to 1.5.17 itself needs one brew services restart — the watcher already running predates this change and can't self-reload. Every upgrade after this one applies automatically in service mode.

Immich Accelerator v1.5.16

Choose a tag to compare

@github-actions github-actions released this 24 Jun 04:32
d7ca6be

Features

  • Media-readiness gate: don't start until the real media root is mounted (default on). On a network-mounted media root, the worker could start before the mount came up and write thumbnails into a local placeholder directory that the mount later masks (silent data loss). The worker now drops a small marker file in the media root on first start and verifies it on every subsequent start; if the marker is missing — a placeholder, or the mount isn't up yet — it refuses to start (the watch loop retries, so it comes up as soon as the mount appears). Mount-agnostic (works for local, NFS, and SMB), runs before the ML service so a not-ready mount never orphans it, and probes in a timeout-bounded subprocess so a hung mount can't wedge startup. Opt out with "require_media_ready": false.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it

Immich Accelerator v1.5.15

Choose a tag to compare

@github-actions github-actions released this 24 Jun 00:44
5c737d0

Fixes

  • Keep remote Postgres connections alive in split deployments (#74). When the worker and the database sit on different network segments, a stateful firewall or NAT can silently reap an idle connection; the worker then hangs on the next read until read ETIMEDOUT and doesn't recover (intermittent, since only idle connections get reaped). Immich doesn't expose a keepalive setting, so the worker now preloads a small shim that enables TCP keepAlive on every pg connection, keeping the socket warm so it isn't dropped. No-op for same-host setups; Immich's source is untouched. Tunable/disable via IMMICH_ACCEL_PG_KEEPALIVE / IMMICH_ACCEL_PG_KEEPALIVE_MS. Reported by @shtefko.

Upgrade

brew upgrade immich-accelerator
immich-accelerator setup   # if first time or new features require it