VersionDrift
Product

Immich 2.7.5 → 3.3.5

14 releases · 34 breaking changes · 4 security fixes · 8 advisories fixed

4security34breaking1deprecated107feature103fix

Vulnerabilities fixed by this upgrade

  • 8.8 CVE-2026-77439 Album Editor can escalate to Owner role and remove Owner-role members via unguarded API endpoints
  • 3.5 GHSA-g4w3-c888-cr93 A regular user can create SharedLink for album/asset belonging to another user through CreateSharedLink API
  • 6.5 GHSA-72rm-x7xr-v679 Unauthenticated filesystem path injection (arbitrary directory write + recursive delete) in the machine-learning service
  • 6.5 GHSA-3mh5-gqfm-phgj Cross-user disclosure of a user's Locked (hidden-vault) assets to a partner via timeline-bucket and search-statistics endpoints
  • 4.3 GHSA-hv27-723h-qfjq Partner "view-only" sharing leaks GPS coordinates of the sharer's archived assets via GET /api/map/markers (the map endpoint omits the archived-asset guard the timeline endpoint enforces)
  • low GHSA-h5w4-vjv4-9r5q Incorrect sanitization of continue URL on the /maintenance endpoint
  • 6.1 GHSA-qp2h-w794-2vhf Incomplete fix for login continue redirect allows slash-backslash open redirect
  • 2.8 GHSA-jrp5-g662-hq92 Unsafe ZIP Entry Names (Zip Slip Class) in Archive Download Endpoint

Breaking changes

  • breaking chore(mobile): drop support for iOS 14 by @agg23 in in 3.1.0
  • breaking refactor!: migrate class-validator to zod in 3.0.0
  • breaking refactor!: remove replace asset in 3.0.0
  • breaking refactor!: remove my shared link dto in 3.0.0
  • breaking chore!: remove deprecated env variables in 3.0.0
  • breaking chore!: remove getRandom api endpoint in 3.0.0
  • breaking chore!: remove unused token response param in 3.0.0
  • breaking refactor: yeet old timeline in 3.0.0
  • breaking chore!: remove old timeline sync endpoints in 3.0.0
  • breaking chore!: remove deviceId and deviceAssetId in 3.0.0
  • breaking chore!: rename API key schemas in 3.0.0
  • breaking chore!: remove without assets in 3.0.0
  • breaking fix: oauth issuerUrl validation in 3.0.0
  • breaking fix!: do not allow insecure oauth requests by default in 3.0.0
  • breaking fix!: set duration to null when not present in 3.0.0
  • breaking chore!: remove /api/server/theme endpoint in 3.0.0
  • breaking chore!: migrate album owner to album_user in 3.0.0
  • breaking refactor!: change number to integer types in 3.0.0
  • breaking refactor(server)!: move correlationId to X-Correlation-ID response header in 3.0.0
  • breaking refactor(server)!: remove redundant error and statusCode fields from error responses in 3.0.0
  • breaking chore(server)!: drop pgvecto.rs support in 3.0.0
  • breaking chore!: duration in milliseconds in 3.0.0
  • breaking refactor(server)!: sanitize error messages to avoid leaking resource details in 3.0.0
  • breaking refactor(server)!: structured validation error responses in 3.0.0
  • breaking feat(server)!: add isOwned filter to albums API in 3.0.0
  • breaking chore(ml)!: require numpy 2.4 in 3.0.0
  • breaking fix(deps): update dependency nestjs-otel to v8 in 3.0.0
  • breaking chore(ml)!: remove deprecated envs in 3.0.0
  • breaking chore(server)!: remove libopus enum in 3.0.0
  • breaking refactor!: remove asset faces from AssetResponseDto in 3.0.0
  • breaking refactor(server)!: drop empty string to null conversion in 3.0.0
  • breaking refactor(server)!: remove changeExpiryTime in 3.0.0
  • breaking refactor!: disallow star rating < 1 in 3.0.0
  • breaking fix!: search endpoints visibility can be omitted in 3.0.0

Security changes

  • security chore(deps): update python docker digests in 3.3.5
  • security chore(deps): update dependency certifi to v2026.10.19 in 3.3.5
  • security Fixes GHSA-jrp5-g662-hq92: Unsafe ZIP Entry Names (Zip Slip Class) in Archive Download Endpoint in 3.0.0
  • security fix: run profile picture through thumbnail pipeline in 3.0.0

Deprecations

  • deprecated refactor(server): deprecate PUT routes in favor of PATCH in 3.0.0

Every release in between

securitychore(deps): update python docker digests
securitychore(deps): update dependency certifi to v2026.10.19
fixfix: missing translation
fixperf(server): more efficient person queries
fixfix(mobile): show the memories date in every app language
fixperf(server): improve people query performance
featurefeat: shared person indicator
fixfix(mobile): keep memories full screen while swiping
fixfix(server): read ISO values above 65535
fixfix: include partner shared assets for people even without showInTimeline
fixfix: clarify people sharing does not share assets
fixfix(mobile): prevent rapid toggling and rerendering of cells
fixfix: include unamed people in otherPeople
fixfix: run workflow steps in their configured order
fixfix: show date on memories page
otherdocs: document persistent QNAP database storage
otherdocs: Add MACHINE_LEARNING_MODEL_REVISION variable to docs
otherchore(web): update translations
featureShared people management
featureBirthday memories
featureAuto-stacked mobile edits
featureSync OAuth claims on every login
featureHigher quality thumbnails and previews
featureMachine learning performance and accuracy improvements (opt-in)
featureNew OCR models
featureNotable fix: correct storage size on MacOS
featureShows up in both users’ list of people (on mobile and web)
featureShows up in the asset viewer / asset detail view on both owned and shared assets
featureCan be edited by both users (only the name & birth date fields)
feature“Everyone with shared access” — means an update will apply for everyone, covering the typical family use case where one or two users are supposed to be responsible for the entire family's people.
feature“Only me” — means the names and dates of births will remain unchanged for other users
featurefeat(mobile): stack edited photos over the original on upload by @santoshakil in
featurefeat: birthday memories by @alextran1502 in
featurefeat: people management by @danieldietzler in
featurefeat(ml): trt-rtx by @mertalev in
featurefeat(web): improve non-Latin text rendering on the map by @meesfrensel in
featurefeat: improved storage template onboarding by @bwees in
featurefeat(web): default the activity log to show the latest by @nekorevend in
featurefeat(server): linear-light resampling by @mertalev in
featurefeat(web): add leave album action by @kojomba in
featurefeat(ml): improve model loading by @mertalev in
featurefeat(ml): optimized model inference by @mertalev in
featurefeat: editors can update album title & description by @jrasm91 in
featurefeat(server): add support for .jfif files by @Trithereon in
featurefeat: memory UI for birthday by @alextran1502 in
featurefix(server): use GeoNames for reverse-geocoded country names by @rufusutt in
featurefeat: extract manufacturer and device for samsung videos by @jonastahl in
featurefeat(server): sync OAuth claims on login (#8073) by @thomasdelorge in
featurefeat(mobile): editors can update album title & description by @shenlong-tanwen in
featurefeat(web): add shortcut to remove assets from an album by @cratoo in
featurefeat(ml): ppocr v6 by @mertalev in
fixfix: Build SDK in dev container by @Pecacheu in
fixfix(ml): race when submitting to rknn execution queue by @swbchangle in
fixfix(mobile): use timeline scroll velocity to add placeholders by @agg23 in
fixfix(ml): openvino config has unnecessary devices and volumes by @mertalev in
fixfix(mobile): rewrite slideshow controller system by @agg23 in
fixfix: make local album provider reactive by @shenlong-tanwen in
featurefeat: new FAQ entries by @bo0tzz in
+78 more items in the release notes
fixfix(mobile): sync status page goes blank when the counts query fails
fixfix: skip faces of other users when reassigning faces
otherAn issue with connection pool exhaustion during sync
featureProblems with the new search modal
otherNot seeing partner shared assets on people page
otherPerson merge not working for two named people
fixfix: show partner assets on people page
fixfix(server): vacuum after migrations, concurrent reindex
fixfix(web): asset remains in timeline after archive
fixfix(web): change "View asset owners" to "Hide asset owners" when enabled
fixfix(web): preserve search type
fixfix: sync client disconnect
fixfix(web): scroll timeline to top when navigating without a scroll target
fixfix: honor memory filters on explore page
fixfix: face label clipping (again)
fixfix(web): show full path on hover in duplicates utility
fixfix: feature face update ignores soft-deleted faces
fixfix: put back search untagged button
fixfix: reset shouldChangePassword on password change
fixfix: metadata extraction of faces
fixfeat: people merge improvements
featureDocker compose builder
featureRevamped search UI (web)
featureSearch API v2 (server)
featureView own people in shared assets, cross-user clustering
featureWorkflow tags trigger and actions
featureDedicated memories page
featureTag renaming (web)
featureView assets in map viewport (web)
featurefeat: workflow logging
featurefeat(web): new search ui
featurefeat: new config endpoints
featurefeat: cluster groups
featurefeat: asset file apis
featurefeat: memories view
featurefeat(mobile): show asset owner in asset details
featurefeat(server): new search API
featurefeat: store null instead of empty string for album.description
featurefeat: log hint about downgrades when migration is missing
featurefeat(web): search album description in add-to-album modal
featurefeat: Display the number of selected items in AlbumPickerModal title
featurefeat(widget): add toggle to match icon theme
featurefeat: workflow asset tag trigger/filter/action
featurefeat: iOS dynamic background ids
featurefeat: actions undo handling
featurefeat: rotate an API key
featurefix(cli): enforce node engine version on start
featurechore(server): migrate library e2e tests
featurefeat: add oauth account management url
featurefeat(web): tag renaming v2
featurechore: search filter animation improvement and reactive search cue example
featureperf(web): use hash-wasm SHA-1 with pure-JS fallback for upload hashing
featurefix: don't swallow fetch errors
featurefeat(mobile): map asset number
featurefeat: allow users to re-run facial recognition for their group
featurefeat(web): view assets in map viewport
fixfix: make sure iOS memory widget render
fixfix: calendar heatmap permissions
fixfix: calendar heatmap api key permissions
fixfix(deployment): matplotlib in rootless deployments
featurefeat: add cantonese for mobile
+94 more items in the release notes
featureUpload wakelock (web)
featureUndo archive (web)
featureFilter assets by server filepath (workflows)
featureQuick navigate to maintenance page (web)
featureBetter slideshow button accessibility (web)
featureOIDC role claim sync improvements (OAuth)
featureInvalidate sessions on password reset (admin-cli)
breakingchore(mobile): drop support for iOS 14 by @agg23 in
featurefeat(cli): Add --visibility flag to immich CLI upload subcommand by @yuxincs in
featurefeat(mobile): custom date range for map by @YarosMallorca in
featurefeat(web): Keep show more open on duplicates by @MontejoJorge in
featurefix(server/workflow): add trigger for external libraries AssetCreate by @cratoo in
featurechore(seo): remove redundant twitter metadata tags by @cevdetta in
featurefeat(web): add wake lock when uploading assets by @diogotcorreia in
featurefeat(web): undo archive from toast by @YarosMallorca in
featurefeat: workflow filter assets by upload path by @benbeckford in
featurefeat(web): add maintenance link to command palette by @yamishi13 in
featurefeat: add album asset event handling by @timonrieger in
featurefix(web): improve slideshow controls visibility on bright backgrounds by @tech00exploere in
featurefix: re-evaluate OIDC role claim on every login and support array values by @ImperatorRuscal in
featurefeat: exif metadata workflow filter by @benbeckford in
featurefeat: password invalidate sessions by @jrasm91 in
fixfix(mobile): apply exif orientation to remote raw photos on android by @santoshakil in
fixfix(web): hide stack thumbnail tray in slideshow mode by @tech00exploere in
fixfix(web): use Container component for responsive admin maintenance la… by @tech00exploere in
fixfix(server): updated default CSP config to support videos from V3 player by @l0ll098 in
fixfix(server): workflow date filter, make end date inclusive by @kigrup in
fixfix(web): URI encode slug and reduce confusion for users by @meesfrensel in
fixfix(web): clear birth date by @danieldietzler in
fixfix(server): disable heif security limit by @mertalev in
fixfix: zero byte image uploads by @rrrockey in
fixfix(server): return workflow steps in ascending order by @benbeckford in
fixfix(mobile): update album creation to use user-defined name from dialog by @LeLunZ in
fixfix: long press share quality override preference settings by @alextran1502 in
fixfix(web): align ContextMenu z-index with design-system token by @tech00exploere in
fixfix(web): refresh folder view after asset deletion by @tech00exploere in
fixfix: do not show the whats new page on fresh login by @shenlong-tanwen in
fixfix(mobile): prevent crash on video widget dispose by @agg23 in
fixfix(web): attach file picker input to DOM so iOS Safari fires change … by @mrxder in
featurefeat(docs): add bulgarian readme by @nedevski in
+39 more items in the release notes
fixvarious bug fixes
otherwe push to our own F-Droid repo at https://app.futo.org/fdroid/repo now. If you're using F-Droid, please pull the application from there from now on
fixfixes an issue where LivePhotos upload from the background isn't showing up.
featurefeat: publish app releases to FUTO F-Droid repo
fixfix(web): closing plugin method picker selects "unknown" method
fixfix: unauthorized album owner update
fixfix: still part of live photo hidden on bg upload
fixfix: system appbar icon color has incorrect color in asset viewer
fixfix: locked visibility in search random endpoint
fixfix(mobile): send a full datetime from the android memories widget
fixfix: memory search date validation
fixfix(server): set hvc1 tag when using hwa
fixfix(mobile): clear zoom state when swapping assets
fixfix: Ken Burns effect on sliver app bar jittery on Android
fixfix(docs): update fdroid link
featurefeat: system integrity docs
otherchore(web): update translations
fixfix(mobile): correct person age singular pluralization
featurefix(web): add ARIA label to ServerStatisticsCard
featurefeat(server): hls variant configuration
featurefeat: user agnostic database restore
featurefeat(server): date workflow filter
fixfix: re-add gCastEnabled negation
fixfix: downmix audio to stereo to fix broken channel layout
fixfix: live transcoding when viewing from a link share
fixfix: web search timeline visibility
fixfix(web): missing i18n strings
fixfix: chinese browser locales recognition
fixchore: improve added to album messages
fixfix(mobile): fix 10-bit heic and avif colors on android
fixfix(mobile): match iOS scroll to top and tabbar scroll (#28469)
fixfix: wrap migrations in transaction
fixfix: oauth account linking
fixfix: incorrect grouping of recently added assets
fixfix: integrity checks checksum pagination
fixfix(mobile): missing crop options and rotation scaling
fixfix(mobile): properly handle live photos locally
fixfix: integrity checks dto validation
fixfix(mobile): http request handling after isolate death
fixfix: do not log out on automatic url switch
fixfix(server): stream ffprobe packets
fixfix: search metadata for album shared links
fixfix(web): clear asset selection when search context changes
fixfix(mobile): update timeline args on layout constraint changes
fixfix: iso date parsing for three digit years
fixfix: missing files integrity checks
fixfix(mobile): play videos from search results and folder view
fixfix(web): recursively unnest class arrays
fixfix: emit album update event when uploading assets through shared link
fixfix(web): always initialize language manager to set lang and dir
otherchore: update docs with v3 tags
fixfix(docs): use correct heading name for DB dump
featurefeat(docs): add Malayalam language support in README files
fixfix(docs): clarify version policy
otherchore(web): update translations
fixFixes a bug that causes albums don't show up in the mobile app
featurefeat(web): recently added link in sidebar
fixfix: albums broken on v2 mobile clients
fixfix: setting input field description spacing for description snippet
otherchore(web): update translations
securityFixes GHSA-jrp5-g662-hq92: Unsafe ZIP Entry Names (Zip Slip Class) in Archive Download Endpoint
featureKids clothing: For those who are likely the reason for your Immich library's size
featureColored embroidery: We now have clothes with a full color embroidered Immich logo
featureMobile non-destructive editing
featureWorkflows (preview)
featureBackground backup improvement
breakingrefactor!: migrate class-validator to zod
breakingrefactor!: remove replace asset
breakingrefactor!: remove my shared link dto
breakingchore!: remove deprecated env variables
breakingchore!: remove getRandom api endpoint
breakingchore!: remove unused token response param
breakingrefactor: yeet old timeline
breakingchore!: remove old timeline sync endpoints
breakingchore!: remove deviceId and deviceAssetId
breakingchore!: rename API key schemas
breakingchore!: remove without assets
breakingfix: oauth issuerUrl validation
breakingfix!: do not allow insecure oauth requests by default
breakingfix!: set duration to null when not present
breakingchore!: remove /api/server/theme endpoint
breakingchore!: migrate album owner to album_user
breakingrefactor!: change number to integer types
breakingrefactor(server)!: move correlationId to X-Correlation-ID response header
breakingrefactor(server)!: remove redundant error and statusCode fields from error responses
breakingchore(server)!: drop pgvecto.rs support
breakingchore!: duration in milliseconds
breakingrefactor(server)!: sanitize error messages to avoid leaking resource details
breakingrefactor(server)!: structured validation error responses
breakingfeat(server)!: add isOwned filter to albums API
breakingchore(ml)!: require numpy 2.4
breakingfix(deps): update dependency nestjs-otel to v8
breakingchore(ml)!: remove deprecated envs
breakingchore(server)!: remove libopus enum
breakingrefactor!: remove asset faces from AssetResponseDto
breakingrefactor(server)!: drop empty string to null conversion
breakingrefactor(server)!: remove changeExpiryTime
breakingrefactor!: disallow star rating < 1
breakingfix!: search endpoints visibility can be omitted
deprecatedrefactor(server): deprecate PUT routes in favor of PATCH
+264 more items in the release notes
See how far your stack has drifted from upstream. Release data from vendors’ own sources · feed under CC BY 4.0 · Code under AGPL-3.0 Settings Feed status