Daniel Dietzler and GitHub
302270a3b3
fix: draggable Immich logo ( #31055 )
2026-08-27 17:52:53 +02:00
renovate[bot] and GitHub
8178a01522
chore(deps): update ghcr.io/immich-app/base-server-dev docker tag to v202608251107 ( #31054 )
2026-08-27 15:29:36 +00:00
f16fdafefc
fix(web): preserve slideshow pause state when viewing video slides ( #30278 )
...
Co-authored-by: priyanshuANDcoad <priyanshu23154050@akgec.ac.in >
2026-08-27 16:54:44 +02:00
bo0tzz and GitHub
2ba343e138
fix: only run backport for labelled pull requests ( #31052 )
2026-08-27 14:39:55 +00:00
Daniel Dietzler and GitHub
c7d24321bf
feat: allow users to re-run facial recognition for their group ( #30965 )
2026-08-27 16:38:07 +02:00
Zlendy and GitHub
6eb1c93882
fix(web): do not play memory video if the MemoryVideoViewer element is not visible ( #30947 )
2026-08-27 15:27:27 +02:00
bo0tzz and GitHub
b22483de33
feat: backport pull requests to release branches ( #31035 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
a366db1494
feat: cut releases from release branches ( #31033 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
3be6b12292
feat: gate release publishing behind an approval ( #31025 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
0179e612a1
feat: split release preparation from drafting ( #31024 )
2026-08-27 15:10:06 +02:00
Timon and GitHub
293dd5889c
chore: bump openapi-generator version to v7.25 ( #30995 )
2026-08-27 08:44:49 -04:00
05e84dd5db
fix(web): restore timeline scroll when the asset id cannot be resolved ( #30916 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-08-27 13:47:09 +02:00
renovate[bot] and GitHub
f46e107d16
chore(deps): update dependency opentofu to v1.12.6 ( #30984 )
2026-08-27 10:59:03 +00:00
renovate[bot] and GitHub
de04e651b4
chore(deps): update prom/prometheus docker digest to 5ce7540 ( #30981 )
2026-08-27 12:46:06 +02:00
renovate[bot] and GitHub
6555fb29ed
chore(deps): update grafana/grafana docker tag to v12.4.9-ubuntu ( #30986 )
2026-08-27 12:45:46 +02:00
renovate[bot] and GitHub
c9be4c4bd3
chore(deps): update dependency github:extism/js-pdk to v1.7.0 ( #30987 )
2026-08-27 12:45:18 +02:00
bo0tzz and GitHub
2c0f415a56
feat: only move floating docker tags for the newest release ( #31030 )
2026-08-27 12:30:39 +02:00
Adam Gastineau and GitHub
c04c81a979
chore(mobile): remove Drift* prefixes from classes and variables ( #31038 )
...
* chore(mobile): remove Drift* prefixes from classes and variables
* Remove *Drift* from related mocks
2026-08-26 19:11:12 +00:00
renovate[bot] and GitHub
093f5c070a
chore(deps): update dependency pydantic-settings to v2.14.2 [security] ( #29252 )
2026-08-26 10:33:23 -04:00
renovate[bot] and GitHub
ef72f1ec5b
chore(deps): update dependency pillow to v12.3.0 [security] ( #30084 )
2026-08-26 10:32:47 -04:00
bo0tzz and GitHub
291ccdae95
feat: verify migration ORDER on every PR ( #30998 )
2026-08-26 15:25:00 +02:00
bo0tzz and GitHub
a8c79469e5
feat(server): document and guard migration ORDER maintenance ( #30997 )
...
feat(server): add a migrations ORDER manifest
2026-08-26 15:24:59 +02:00
bo0tzz and GitHub
f264573847
fix(server): point the migrations mise task at sql-tools ( #30996 )
2026-08-26 15:24:59 +02:00
Jason Rasmussen and GitHub
13562d80a4
chore: bump sql-tools ( #31000 )
2026-08-26 14:59:47 +02:00
0f821a7338
feat(mobile): map asset number ( #28911 )
...
* feat(mobile): map asset number
* chore: use totalAssets from service
* refactor: separate widget
* fix: async dispose
* chore: i18n
* chore: add back old i18n key
* bring back reactivity
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-26 05:59:27 +00:00
Mert and GitHub
dc688edb6f
refactor(ml): direct ocr processing ( #31016 )
2026-08-25 23:13:47 -04:00
bo0tzz and GitHub
6221e29c70
fix: throw a typed error on malformed api responses ( #31006 )
...
* fix: throw a typed error on malformed api responses
* fix: drop response body parse check
* fix(web): keep json response validation when overriding fetch (#31008 )
* fix(cli): report malformed api responses (#31007 )
2026-08-26 00:38:39 +00:00
4ff7148f85
feat(mobile): show asset owner in asset details ( #29302 )
...
* feat(mobile): show asset owner in asset details
* refactor(mobile): fetch asset owner from local DB instead of API
* cleanup
* review changes
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-25 20:40:05 +00:00
Damiano Ferrari and GitHub
290861e347
fix(mobile): aspect ratio change ( #30939 )
...
* fix(mobile): aspect ratio change
* chore: explain the change
2026-08-25 13:52:05 -05:00
renovate[bot] and GitHub
caa96dda4f
chore(deps): update docker.io/valkey/valkey:9 docker digest to 70739f8 ( #30980 )
2026-08-25 20:27:15 +02:00
aa6e4d9173
fix(deps): update typescript-projects ( #30990 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-08-25 20:17:24 +02:00
renovate[bot] and GitHub
5d84e16bc1
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.8.12 ( #30985 )
2026-08-25 20:11:24 +02:00
Daniel Dietzler and GitHub
9e3d9a7770
fix: thumbnail generation for specific SVGs ( #30908 )
2026-08-25 19:57:48 +02:00
bo0tzz and GitHub
fbd5dc2c61
fix: don't swallow fetch errors ( #30496 )
2026-08-25 17:47:25 +02:00
renovate[bot] and GitHub
3d71c0c8dc
chore(deps): update github-actions ( #30989 )
2026-08-25 10:57:54 +02:00
6acd870371
chore(deps): lock file maintenance (mise) ( #30464 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-25 01:50:02 -04:00
351be95769
feat: memories view ( #28675 )
...
* wip web memories view
* paginate searchMemories
* improve memories ui
* feat(mobile): memories view
* improve memories web ui
* fix(web): avoid unnecessary memory refreshes
* refactor(web): move timline memory manager filter
* fix(web): memories infinitely loading on 0 results
* fix(web): memories resetting
* feat(web): animated memory previews
* feat(web): memory page dark styling
* chore(mobile): fix failing memory lane tests
* chore(mobile): remove old import
* chore(e2e): fix failing memory lane tests
* chore(server): revert searchMemories changes
* chore(server): lint
* chore(mobile): fix bad merge
* chore(e2e): fix memory ui tests
* chore(web): rename /memory to /memories
* chore(mobile): linting
* chore(web): linting
* fix(web): prevent duplicate memory page loading
* fix(web): lint
* fix(web): memories page improvements
* chore(mobile): lint
* fix(mobile): fix translations
* fix(mobile): build errors
* fix(web): prevent memories from infinitely loading
* chore(e2e)): fix failng memory viewer test
* chore(web): clean up types in memory manager
* chore(web): lint
* feat: update list and detail memory page layouts
* onlyFavorites through drift
* rename to get all
* mobile: use widgetWhen in memory list page
* remove redundant check
* fix: e2e
---------
Co-authored-by: Timon <mail@timonrieger.de >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-24 19:16:33 -05:00
Adam Gastineau and GitHub
8dcfd36fa5
chore(mobile): move Drift into mobile/data ( #30966 )
...
* chore(mobile): move Drift into mobile/data
* Move into more structured subdirectories
* Fix changed merge paths
2026-08-25 00:51:02 +05:30
b3daf49234
chore(mobile): pump dcm ( #30963 )
...
chore: pump-dcm
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-25 00:45:50 +05:30
2ea17db70c
chore: pump flutter to 3.47.1 ( #30962 )
...
* chore: pump flutter to 3.47.1
* analysis fixes
* changes from iOS build
* flutter get ui lib
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-25 00:45:50 +05:30
0b75b20267
perf(web): use hash-wasm SHA-1 with pure-JS fallback for upload hashing ( #30107 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-08-24 20:24:04 +02:00
Jordan Brock and GitHub
1b3aa9cd51
fix(server): correct tag create operations ( #30877 )
2026-08-24 17:57:32 +02:00
6b7b0fe3a6
fix: remove partner assets from existing memories ( #28950 )
...
* fix: remove partner assets from existing memories
* move tests to be medium tests
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-24 14:55:47 +00:00
Brandon Wees and GitHub
6f6f2362d7
chore: lint for unguarded redirect URL reading ( #30950 )
...
* chore: lint for unguarded redirect URL reading
* fix: double continue wrapper
2026-08-24 10:07:45 -04:00
Timon and GitHub
2feb889b9c
chore(server): update zod to 4.4.3 and nestjs-zod to 5.5.0 ( #30532 )
2026-08-24 10:59:22 +02:00
Brandon Wees and GitHub
cbf5d83a69
fix: maintentance return URL sanitization ( #30948 )
2026-08-23 17:49:11 +00:00
c98c20e963
fix(mobile): respect 24h system setting ( #30792 )
...
* fix(mobile): respect 24h system setting
* refactor: extract into utils
* chore: remove comment
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* refactor: resolveAssetDateTime
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* refactor: alwaysUse24HourFormat
* chore: impl suggestions
* refactor: less comments & resolveDateTimeLocale
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-08-23 17:51:03 +05:30
44a9384758
fix: do not exit search screen on back during multiselect ( #30689 )
...
* fix: do not exit screen on back multiselect search
* chore: apply suggestion
Co-authored-by: Alex <alex.tran1502@gmail.com >
* refactor: fix in timeline widget
* chore(server): AssetOcrSyncReset.ts
* Revert "chore(server): AssetOcrSyncReset.ts"
This reverts commit c0647382cd63d046fee893ea0ee69503484d19f6.
* fix: test crash
* refactor: fix test instead of code workaround
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-08-23 12:19:52 +00:00
Lin, Chiang-Yu and GitHub
b26b0cc806
fix(server): let a second metadata extraction replace stored AV metadata ( #30900 )
...
`upsertExif` writes derived audio, video and keyframe metadata with an
`ON CONFLICT DO UPDATE`, but every column in those three update lists
assigns the stored row back to itself:
bitrate: ref('asset_audio.bitrate')
`SET bitrate = asset_audio.bitrate` is a self-assignment, so once a row
exists nothing can change it. Re-running metadata extraction re-reads the
file, builds a fresh snapshot, and then quietly discards it. The rest of the
file already uses `excluded` for this, as does `plugin.repository.ts`.
`asset_video.frameCount` had a second problem: it is supplied on insert but
was missing from the update list, so it would have stayed stale even after
the reference was corrected.
Extraction is meant to be repeatable. Probing improves between releases, a
file can be repaired or replaced, and a fix to how a stream is chosen is
worthless if it cannot reach the assets that were already imported. An
`upsert` that silently degrades to insert-only defeats all of that.
Metadata extraction is the only caller that passes these three objects, and
it passes a complete snapshot or nothing: each object is built from a single
probe behind a guard, and `upsertExif` skips the branch entirely when the
object is absent. So taking the incoming row cannot write partial values
over good ones. The other three callers pass `exif` only, and every other
reference to these tables is a read.
2026-08-22 17:58:05 +00:00
Santo Shakil and GitHub
2237b28813
fix(mobile): permanently delete local copies when moving to the locked folder ( #29730 )
...
* permanently delete local copies when moving to the locked folder
* simplify the delete path and move the stubs into the mock defaults
* drop the kept count from the partial message and log the mismatch instead
2026-08-22 07:42:11 +05:30