Commit Graph
3497 Commits
Author SHA1 Message Date
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]andGitHub 5d84e16bc1 chore(deps): update ghcr.io/jdx/mise docker tag to v2026.8.12 (#30985) 2026-08-25 20:11:24 +02:00
Daniel DietzlerandGitHub 9e3d9a7770 fix: thumbnail generation for specific SVGs (#30908) 2026-08-25 19:57:48 +02:00
bo0tzzandGitHub fbd5dc2c61 fix: don't swallow fetch errors (#30496) 2026-08-25 17:47:25 +02: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
Jordan BrockandGitHub 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
TimonandGitHub 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
Lin, Chiang-YuandGitHub 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
79c4c00f70 feat(web): tag renaming v2 (#27909)
* implement updated rename tag feature

* Fix tag update handler

* Ensure toast displays updated tag name

* Ensure toast displays updated tag name

* Handle updates to tag closure table, prevent slash in API filename, test case updates

* delete child tags on parent delete

* Update frontend for better handling of nested tags

* pr checklist fixes

* fix unit test for tag controller

* Hide path for top-level tags

* regenerate SQL files

* name updates optional for tag update operations

* e2e tests for new tag api changes

* changes from code review, additional test coverage

* test fixes, web component refactor

* test assets

* test asset updates

* open-api rebuild

* update unit tests

* fix tag dto tests

* Update web/src/lib/modals/TagEditModal.svelte

Fix missing color bug

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>

* fix tag e2e test

* remove closure table bug fixes

* remove nullish from tag name update schema

* regenerate openapi and sql

* fix test and e2e test

* simplify tag repository update process

* minor fix and sql regenerate

* fix tests, regen open-api, update dto

* Remove unused function

* Remove accidental test asset ref

* re-add test assets

* pin submodule to main branch commit

* Update test cases based on feedback

* Server fixes based on feedback

* regenerate sql

---------

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>
2026-08-21 14:55:11 -04:00
Jason RasmussenandGitHub 2f48a8aab4 refactor: memory e2e (#30906) 2026-08-21 12:15:17 -04:00
caea849fee feat: asset file apis (#25900)
* feat: asset file endpoints

* Update server/src/controllers/asset-file.controller.ts

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

* Update server/src/controllers/asset-file.controller.ts

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-08-21 13:55:25 +00:00
Daniel DietzlerandGitHub 8ae98f2a04 fix: quote database owner in restore (#30905) 2026-08-21 15:11:20 +02:00
57ce9b2221 fix(server): correct asset dimensions from exif metadata (#29244)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-21 13:32:17 +02:00
Jason RasmussenandGitHub 4c26a7ca76 refactor: activity e2e (#30896) 2026-08-21 12:57:50 +02:00
8ce6b18563 fix(server): library exclusion patterns can soft-delete assets outside their directory (#30850)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-21 12:28:12 +02:00
Diogo CorreiaandGitHub c9776fb990 fix(web): download archives via html POST forms (#30021)
* fix: download archives via html POST forms

* refactor: fix css of download panel, add translations and toasts

* style: run lint, formatter, check

* chore: generate open-api specs

* refactor(web): simplify download manager, use SvelteMap

* refactor(server): parse fields from x-www-form-urlencoded request

* refactor: move content-disposition to ImmichReadStream

* Pass asset ids as a comma-separated string

This fixes a bug where the 1000 parameter limit is being hit when
downloading 1000+ assets.

* Add download controller test

* Fix lint warnings
2026-08-20 20:58:41 -04:00
Jason RasmussenandGitHub c7531a36f9 refactor: partner e2e (#30895) 2026-08-20 17:32:51 -04:00
Sacha BroutéandGitHub c7f6197e75 feat: add oauth account management url (#30873) 2026-08-20 21:31:34 +00:00
Jason RasmussenandGitHub 24532c4d82 fix(ci): docker caching (#30894) 2026-08-20 16:37:43 -04:00
11b1aa5ecf feat: cluster groups (#30739)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-20 20:03:00 +02:00
Jason RasmussenandGitHub e529557160 feat: new config endpoints (#30881)
* refactor: config endpoints

* chore: pr feedback
2026-08-20 11:46:17 -04:00
Jason RasmussenandGitHub 47c5a3dbf6 refactor: api key response dto (#30887) 2026-08-20 11:23:12 -04:00
Jason RasmussenandGitHub 47dccf7283 refactor: dockerfile caching (#30874) 2026-08-19 16:52:50 -04:00
YarosandGitHub 7165eb61eb fix(server): unicode email validation (#30871) 2026-08-19 16:40:10 -04:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bd2cbb751b fix(deps): update sharp to ^0.35.3 (#29132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-19 15:49:10 -04:00
Jason RasmussenandGitHub 7cd0a7d30c refactor: e2e tests (#30870) 2026-08-19 14:31:57 -04:00
Jason RasmussenandGitHub c63824bcea refactor: library e2e (#30867) 2026-08-19 11:49:41 -04:00
Jason RasmussenandGitHub d2759ec41e refactor: library e2e (#30865) 2026-08-19 10:36:35 -04:00
Jason RasmussenandGitHub db3b31709d refactor: library controller tests (#30863) 2026-08-19 09:54:08 -04:00
2018e4f8c4 chore(server): migrate library e2e tests (#27277)
* migrate library e2e tests

* fix: real storage repo

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-19 13:14:40 +00:00
3c279983bc fix(server): Sort stacked assets by creation date (#24033)
* feat: add ordering by file creation date in asset and stack repositories

* refactor: update asset aggregation to include JSON formatting and ordering by creation date

* refactor: add ordering by file creation date in asset aggregation queries

* fix: types

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-18 21:38:58 +00:00
17d4e39af3 fix(server): do not throw on unparsable DB_URL when building backup arguments (#30759)
Closes #30331

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-18 17:17:47 -04:00
Brandon WeesandGitHub 93d2d30fe0 feat: rotate an API key (#30801)
* feat: rotate an API key

* fix: test response

* chore: create new api key scope

* chore: code review
2026-08-18 16:07:39 -04:00
Daniel DietzlerandGitHub 03da1ba108 chore: single line block comments (#30852) 2026-08-18 17:55:26 +02:00
80a90fabf3 fix(server): update ocr & faces after asset edit (#29303)
* fix: update ocr & faces after asset edit

* chore: remove client-side refresh

* fix(server): sync asset OCR visibility changes

* chore: prettier format

* test: missing updatedAt

* chore: remove comment

* chore: fix test

* chore: update migration timestamp

* chore(server): AssetOcrSyncReset

* chore: migration timestamps

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 14:32:21 +00:00
618dc0d397 fix(server): respect backpressure in the sync stream (#30764)
Co-authored-by: enol5423 <your-email@example.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 13:30:23 +00:00
b0a9468da7 fix(server): guard createAll against empty values list (#30837)
Co-authored-by: priyanshuANDcoad <priyanshu23154050@akgec.ac.in>
2026-08-18 13:56:37 +02:00
renovate[bot]andGitHub 4d319cbd0d chore(deps): update ghcr.io/jdx/mise docker tag to v2026.8.8 (#30834) 2026-08-18 13:08:52 +02:00
11755e5a53 chore(deps): update dependency eslint-plugin-unicorn to v73 (#30844)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 12:00:16 +02:00
renovate[bot]andGitHub 3cec8fcc3c chore(deps): update base-image to v202608111116 (#30818) 2026-08-17 13:01:30 +00:00
Ben BeckfordandGitHub f9c05af45f fix(server): migration order (#30774) 2026-08-14 21:10:28 +00:00
Jason RasmussenandGitHub 342a9472c4 refactor: duplicate e2e (#30773) 2026-08-14 21:00:13 +00:00
Jason RasmussenandGitHub 14241ac7bc chore(server): remove unused code (#30772)
chore(server): remove unnused code
2026-08-14 16:58:14 -04:00
Daniel DietzlerandGitHub 6a61901e79 fix: shared link create validation (#30762) 2026-08-14 22:04:32 +02:00
Ben BeckfordandGitHub 447cc40a50 feat: workflow logging (#29878)
* feat: workflow logging

* chore: update sql and openapi patch

* chore: include id in workflow log entries

* chore(server): update sql and lint

* chore(mobile): remove openapi files

* chore(web): lint

* chore: clean up workflow logging

* chore(server): add runId to workflow logs

* chore(server): store workflow results as enum
2026-08-13 19:18:24 -07:00
ihmcsmandGitHub af33a78d18 fix: typos in debug log messages (#30742) 2026-08-13 09:30:19 +00:00
Ben BeckfordandGitHub a939561e70 feat: workflow asset tag trigger/filter/action (#29043)
* feat: workflow asset tag trigger and filter

* feat(web): show tag names in workflow editor

* fix(web): tag picker in schema config editor

* fix: invalid plugin manifest

* chore: update workflow method wrapper type

* chore: update tag filter method declaration

* feat: workflow action to add tags to assets
2026-08-12 16:26:03 -07:00
Mees FrenselandGitHub 2a1691868e chore: use import.meta.dirname instead of __dirname (#30738) 2026-08-12 18:01:30 +02:00
Daniel DietzlerandGitHub 199723261c fix: owner cascade delete album (#30692) 2026-08-11 23:05:18 +02:00