You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support for Immich 3.x servers (3.0 and 3.1) next to the existing
support for Immich 2.7 and later 2.x releases. pymmich asks the
server for its version on first use and adapts to the API changes
Immich 3.0 introduced. No configuration is needed, and the API key
permissions stay the same — one key works against either server
generation.
PYMMICH_API_VARIANT environment variable to pin the API variant to v2 or v3 instead of detecting it. Useful when the server's
version endpoint is unreachable, e.g. behind a restrictive reverse
proxy.
New "Server compatibility" documentation page describing the
supported server versions, the version detection, and the endpoints
that differ between the two server generations.
Public API for the version handling, for callers using pymmich as a
library: ServerVersion and the API_V2 / API_V3 / API_VARIANTS identifiers are re-exported from pymmich, and ImmichClient gained api_variant= plus get_server_version(), server_version, api and connect().
Album.shared_users and Album.owner, which tell the users an
album is shared with apart from its owner on both server
generations.
Live integration tests that run against real Immich 2.7 and 3.1
servers, started from the official images. Every test runs against
both server generations, so a behaviour that differs between them
fails the suite instead of going unnoticed. The tests need Docker
and are opt-in — the default suite stays mocked, hermetic and
offline. New just recipes drive them: docker-test-up, docker-test, docker-test-status and docker-test-down.
GitHub Actions workflow that runs the pytest suite on every push to main and on every pull request.
Changed
Album listings, album contents and uploads now use the endpoints and
request fields appropriate for the connected server version. On
Immich 3.x, album contents are read via the stable metadata search
instead of the internal timeline endpoints, which also removes one
request per asset.
unshare no longer treats an album's owner as a shared user, so the
owner can't be removed from their own album on Immich 3.x, which
reports the owner as part of the album's user list.
list and filename lookups now ask the server for timeline assets
explicitly. Immich 3.0 widened the default of its metadata search to
include archived and hidden assets; pinning the filter keeps listings
identical on both server generations. Album listings keep their
archived members, but drop hidden ones — Immich stores the video part
of a motion photo as a hidden asset, and Immich 2.x never reported
those as album members either.
Server error messages are now unpacked from either the Immich 2.x or
the 3.x error format, so failures name the offending field instead
of dumping a raw JSON body.
GitHub Release notes are taken from the matching CHANGELOG.md
section instead of being generated from the commit log. Releasing a
tag with no changelog entry now fails the workflow rather than
shipping empty notes.
ImmichClient._list_accessible_albums(include_shared) is now the
public, keyword-only ImmichClient.list_accessible_albums().
Fixed
list, download and standalone upload now report server errors
with a message and exit code 1 instead of raising an unhandled
exception.
A failing download names the HTTP error instead of aborting with an httpx.ResponseNotRead traceback. Downloading with a key that lacks asset.download is the common way to hit this.