Commit Graph
11123 Commits
Author SHA1 Message Date
Eliott Bourassa f8f4051a24 feat(server): add support for .jfif files (#31778)
* feat(server): add support for .jfif files

* fix: move .jfif to webSupportedImage object
2026-09-25 22:44:29 -04:00
Jason Rasmussen c4f9e0fab6 feat: editors can update album title & description (#31805) 2026-09-25 21:52:50 -04:00
Mert 23f1f87dd0 feat(ml): optimized model inference (#31750)
* add immich_model

* graph per shape

* decouple ocr from ort

* prepared graphs

* use f16 for accelerators

* preload all shapes

* warm-up pass after preload

* keep precision for fp32 graphs

* ensure padding for text recognition

* optimize postprocessing for fp16 outputs

* handle raw ctc logits

* use f16 output for rknn

* mmap token embedding

* read device metadata
2026-09-25 14:56:44 -04:00
Mert de13aab713 feat(ml): improve model loading (#31742)
* use recent mimalloc

* jit caching

* bump onnxruntime-gpu

* explicit memory release

* refactor in-memory cache

* configure hf org and revision

* refactor model load

* move orjson response

* disable direct submission for i915

* flush denormals

* update tests and lock

* disable suboptimal fusions

* respect resize_mode

* increase threads for clip text
2026-09-25 14:56:43 -04:00
Daniel Dietzler 87e76d8912 fix: face bounding box label alignment (#31793) 2026-09-25 12:40:25 -04:00
DawidKrynski efb44b8913 fix(web): remember selected search type (#31799) 2026-09-25 18:34:01 +02:00
kojomba 253692f279 feat(web): add leave album action (#31768) 2026-09-25 18:22:29 +02:00
Mert c0a9146023 feat(server): linear-light resampling (#31236) 2026-09-25 10:29:07 -04:00
Santo Shakil fbff5f41be fix(mobile): ask before deleting local only photos on android 10 and below (#31146)
* ask before deleting local only photos on android 10 and below

* move the delete consent prompt into _cleanupLocalAssets

* ask on android 11 as well before deleting local photos

* ask before deleting only where android shows no prompt

* split the local delete prompt into its own helper

* pick the local delete dialog in one flat branch and rename notBackedUp to isLocalOnly
2026-09-25 20:19:01 +06:00
Alex 520a70891b fix: prevent rendering the search filter scrollbar when not needed (#31776) 2026-09-25 11:49:01 +02:00
Victor Chang 7622e95d6d feat(web): default the activity log to show the latest (#28938) 2026-09-25 11:42:16 +02:00
Aashish Bhardwaj e598e10896 fix(server): attach error handler to accepted sockets to prevent crash on connection reset (#31079)
Signed-off-by: aashish00021 <aashishbhardwaj07@icloud.com>
2026-09-24 16:28:02 +02:00
Adam Gastineau 2ccd0effc8 chore(mobile): enable dead code CI (#31753)
* chore(mobile): enable dead code CI

* Restore accidentally removed test and set mise default
2026-09-24 06:57:06 -07:00
DikshitandDaniel Dietzler 647a445d9a fix(web): prevent race when editing album description during upload (#31758)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-09-24 13:48:55 +00:00
renovate[bot] 7f14913626 chore(deps): update ghcr.io/jdx/mise docker tag to v2026.9.12 (#31714) 2026-09-24 15:03:35 +02:00
Santo Shakil a4af86282d fix(mobile): resume after the app was launched in the background (#31557)
* run the first resume after a background launch with a full local sync

* keep the untouched lines of the swift file as they were

* check the background launch at the first resume even after a pause
2026-09-24 10:15:44 +06:00
Santo Shakil 2466eaeecd fix(mobile): play the server copy when the local video file cannot be read (#31606)
* play the server copy when the local video file cannot be read

* flatten the video source choice and add tests for it

* drop the platform override from the video viewer test
2026-09-24 10:15:33 +06:00
renovate[bot]andDaniel Dietzler e66f2c7615 chore(deps): update dependency eslint-plugin-unicorn to v75 (#31721)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-23 18:19:03 +00:00
renovate[bot]andDaniel Dietzler 92f498d23d fix(deps): update typescript-projects (#31717)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-23 18:18:11 +02:00
renovate[bot]andMees Frensel d7bd961399 fix(deps): update dependency @immich/ui to ^0.90.0 (#31720)
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
2026-09-23 17:12:50 +02:00
shenlongandshenlong-tanwen da5c2fedbe fix: save user_version in migration transaction (#31039)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-09-23 19:14:55 +05:30
Mees Frensel 20862f1d4a fix(web): refresh people after setting person thumbnail (#31744) 2026-09-23 13:44:03 +00:00
Santo Shakil 3e2e8e0fe8 fix(mobile): retry the background backup when connectivity is restored (#30909)
* fix(mobile): retry the background backup when connectivity is restored

* return the backup result from the zone and drop the unrelated upload test

* flip the background worker bool to needsRetry

* decide the background retry from the upload callbacks

* run the background worker offline again and retry on reconnect with a separate connected gated request

* retry the background backup when any upload fails and keep one worker at a time

* always hand the retry to the connected worker and release the worker lock if startWork throws

* respect the charging only setting on the connected retry worker
2026-09-23 17:27:45 +06:00
Aditya Raj Singh 351ddff320 fix(server): compare integrity paths independently of unicode normalization (#31102)
* fix(server): compare integrity paths independently of unicode normalization

The untracked-file check compared on-disk paths against the database
byte for byte. macOS writes decomposed (NFD) filenames while an upload
stores the composed (NFC) form, so every asset with a non-ASCII name
came back from getAssetPathsByPaths under a different byte sequence,
was never removed from the candidate set, and was reported as an
untracked file. One reporter saw 14k false positives on a 55k library.

Look the batch up under both normal forms and key the comparison on
NFC, so a path that differs only in normalization is recognised as
tracked.

* test(server): cover normalized integrity lookup
2026-09-23 06:42:31 -04:00
Mees Frensel 5689b0c8f6 refactor(web): stack-related service and actions (#29403)
* refactor(web): stack-related service and actions

* add withStacked guards
2026-09-23 06:24:43 -04:00
Mees Frensel 8b1b9b9d41 refactor(web): breadcrumbs navbar for tags and folders (#31727)
* refactor(web): breadcrumbs navbar for tags and folders

* add back some color
2026-09-23 06:18:28 -04:00
renovate[bot]andJason Rasmussen 959d46c654 chore(deps): update dependency @types/node to ^24.13.5 (#31713)
* chore(deps): update dependency @types/node to ^24.13.5

* fix: add checksum

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-09-22 20:59:20 +00:00
Simon H 8de97ae18b docs: document locked folder session behaviour (#31735)
Add documentation for how Locked Folder access applies to the current session, including the temporary unlock period and visibility of locked assets elsewhere in Immich while the session is elevated.

Refs #30724, #29690, #26185.
2026-09-22 20:56:26 +00:00
Yaros aa38c40c1c fix: preserve scroll position on memories page (#31588) 2026-09-22 16:48:05 -04:00
Brandon Wees a4104368d3 feat: improved storage template onboarding (#31531)
* feat: improved storage template onboarding

* chore: minor cleanup
2026-09-22 16:43:53 -04:00
Mees Frensel a9ce155cf8 refactor(web): use actions and ui lib context menu (#31729) 2026-09-22 16:38:00 -04:00
Mees Frensel 1aedf1b41c feat(web): use ui lib's context menu for albums page (#31725) 2026-09-22 16:36:36 -04:00
bo0tzz 9566fb7c74 fix: page path in better face clusters guide (#31671) 2026-09-22 16:31:32 -04:00
Adam Gastineau 91247f1492 chore(mobile): migrate OCR, Tag, and UserMetadata to Store (#31704)
* chore(mobile): migrate OCR, Tag, and UserMetadata to Store

* Add comments to Tag HTTP repository

* Add mounted check
2026-09-22 18:29:33 +00:00
Adam Gastineau f367ab2121 fix(mobile): prevent SurfaceLayer crashing on maps in Viewer on Android (#31709) 2026-09-22 20:55:22 +05:30
renovate[bot] 0fa1399305 chore(deps): update github-actions (#31718) 2026-09-22 14:21:31 +02:00
Alex d6d0947383 feat: birthday memories (#30831) 2026-09-22 04:30:43 -05:00
Yohanes Kirana f48d4b3321 fix(mobile): ios clear file cache feedback (#31401)
* add clear file cache handling and snackbar

* create function to count deleted cache size

* clean up code and test

* ensure stable behaviour on non ios device

* refactor(mobile): simplify clear file cache feedback
2026-09-21 09:11:03 -07:00
renovate[bot]andmertalev 202015ed95 chore(deps): update machine-learning (#29123)
* chore(deps): update machine-learning

* bump to 3.13, increase minimum to 3.12

* cleanup

* target 3.12

* fix conditional

* fix builder images

* also update prod rknn

* unused parsers

* drop gold

* bump armnn

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2026-09-19 02:21:57 +00:00
Mees Frensel 69e108adf1 fix(web): queue buttons focus outline (#31657) 2026-09-18 16:35:07 -04:00
Mees Frensel 227ef01718 fix(web): scrollable search dropdown on mobile web (#31634) 2026-09-18 16:34:47 -04:00
Adam Gastineau 241ca1e2a2 chore(mobile): make Person Store reactive via Drift (#31661) 2026-09-18 11:21:31 -07:00
Santo Shakil 909b8aac93 fix(mobile): clamp out of range datetimes so timeline queries cannot crash (#30490)
* fix(mobile): clamp out of range datetimes so timeline queries cannot crash

* replace the per column converters with a clamping custom type

* heal each table in one statement, rename the clamp type, read dates as stored

* one medium test for the clamp, drop the dart side bounds, private clamp type
2026-09-18 17:41:15 +00:00
Gillala Dhruthiya 747af325d9 fix(web): correct memory title date (#31643) 2026-09-18 17:12:57 +02:00
Adam Gastineau 47f349c51c chore(mobile): mise clean command (#31635) 2026-09-18 06:16:59 -07:00
Lin Gan e952715aab fix(docs): update README_zh_CN: typos, links, cleanup (#31654)
Update README_zh_CN: typos, links, cleanup

Fixes and cleanup in the Chinese README: corrects image attribute typo (atl -> alt), removes an outdated maintenance note and the Star history embed, normalizes the official docs link (adds trailing slash), and updates the contributors graph URL to the immich-app/immich repository. These are content/metadata adjustments only.
2026-09-18 08:45:19 -04:00
Makar Ivashko 64a2fc8259 perf: faster server cold start (#31630)
low hanging fruits for the speedup of immich startup
1. don't wait 1s if we actually got the lock
2. move full import from the top of the file to be imported lazily in the branch
2026-09-18 08:26:09 -04:00
Santo Shakil 398a04e11d fix(mobile): sync status page goes blank when the counts query fails (#31642)
* sync status page stays usable when the counts query fails

* sync status error text through i18n
2026-09-17 18:14:11 +00:00
Luis Nachtigall 9994eb3bed fix(mobile): prevent live photo from getting stuck during dismiss animation (#28080)
* update animation methods to return futures

* fix(mobile): prevent live photo from getting stuck during dismiss animation

* chore: rename variables + comment
2026-09-17 10:32:20 -07:00
Santo Shakil e8c6218431 fix(mobile): show the real date for android local photos with no exif (#29193)
* fix(mobile): show the real date for android local photos with no exif

photos with no exif date showed their copy-to-phone date in the "on this device" albums instead of the real date. fall back to the earlier of date_modified/date_added (matches the server + ios), plus a migration to fix the rows already saved wrong.

* persist migration progress when the date backfill fails

* fix local date migration for trash and epoch rows

* cover epoch dates in both local asset tables

* simplify the created date pick and rework the migration test

* heal no-exif dates from mediastore in the v27 migration

* check gallery access from dart and skip dates that do not parse

* let the date heal run once and never block the version

* read the trashed assets through the same cast the sync uses
2026-09-17 19:05:07 +06:00