Compare commits

...

3864 Commits

Author SHA1 Message Date
github-actions
64d926581f chore: version v1.125.5 2025-01-27 20:04:50 +00:00
Alex
c139e05170 fix(mobile): locale option causes the datetime filter error out (#15704) 2025-01-27 14:02:23 -06:00
Alex
0fe62298e1 fix(server): duplicate detection (#15727) 2025-01-27 13:53:59 -06:00
github-actions
e5794e6cfc chore: version v1.125.4 2025-01-27 18:44:12 +00:00
Alex
f6cbc9db06 fix(server): cannot render album page when all assets of an album are in trash (#15690)
* fix(server): cannot render album page when all assets of an album are in trash

* inner join

* add e2e test

* check empty albums too

* render add to album button on empty album

* lint

* count 0 if undefined

* fix album card test

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-01-26 21:18:34 -06:00
Alex
8dab5d3798 chore(mobile): post release task (#15662) 2025-01-26 15:09:15 -06:00
Carsten Otto
e864811a85 fix(web): sort folders (#15691)
fixes #13145
2025-01-26 15:07:22 -06:00
github-actions
72a55c13b6 chore: version v1.125.3 2025-01-26 14:14:48 +00:00
sudbrack
206412267a fix(server): /search/random API returns same assets every call (#15682)
* Fix for server searchRandom function not returning random results

* Fix lint
2025-01-26 14:06:18 +00:00
Damiano Ferrari
f780a56e24 fix(mobile): Misaligned text icon in circle avatar (#15683)
style(mobile): Use `DefaultTextStyle` for the text icon in `CircleAvatar`
2025-01-26 07:51:46 -06:00
Alex
7bbffccf76 fix(web): neon overflow on mobile screen (#15676) 2025-01-26 08:06:26 -05:00
Mert
05a446c259 fix(server): avoid duplicate rows in album queries (#15670)
* avoid duplicate rows

* left join, handle null vs. undefined

* update sql
2025-01-25 22:37:19 -06:00
Carsten Otto
4f725b95e1 fix(server): do not count deleted assets for album summary (#15668)
fixes #15645
fixes #15646
2025-01-25 16:45:13 -06:00
Carsten Otto
64b92cb24c fix(server): do not reset fileCreatedDate (#15650)
When marking an offline asset as online again, do not reset the
fileCreatedAt value. This value contains the "true" date, copied
from exif.dateTimeOriginal. If we overwrite this value, we'd need
to run the metadata extraction job again. Instead, we just leave
the old (and correct) value in place.

fixes #15640
2025-01-25 13:50:37 -06:00
Gagan Yadav
19f2f888ee fix(mobile): improve timezone picker (#15615)
- Fix missing timezones

- Remove the UTC prefix from timezone display text to align with web app

- Remove unnecessary layout builder

- Created a custom `DropdownSearchMenu` widget

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-25 13:36:49 -06:00
Alex
d12b1c907d fix(server): bulk update location (#15642) 2025-01-25 11:58:07 -06:00
Robert Schütz
947c053c15 chore(server): add DB_URL supports Unix sockets unit test (#15629)
* test(server): DB_URL supports Unix sockets

* chore: format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-25 10:38:00 +00:00
Regenxyz
79592701dd chore: fix typos in Thai Language Readme (#15637)
Update README_th_TH.md

Fixing weird Thai Translate
2025-01-25 10:30:53 +00:00
jdicioccio
39697cd973 fix: increase upload timeout (#15588)
Fix upload timeout issue

Fix an issue where when uploading a large file, the upload would consistently abort after 30 minutes. I changed this timeout from 30 minutes to 1 day. Maybe that's excessive, or maybe the timeout isn't even needed, but the current 30 minute timeout definitely seems way too short.
2025-01-25 04:26:52 -06:00
Jonathan Jogenfors
10e518db42 chore(server): print stack in case of worker error (#15632)
feat: show error stack
2025-01-24 22:45:55 -05:00
Mert
72fa31f9e9 fix(server): changing vector dim size (#15630) 2025-01-24 20:01:24 -05:00
github-actions
9871a04d54 chore: version v1.125.2 2025-01-24 19:09:06 +00:00
Mert
ba01b40e7c fix(server): sslmode not working (#15587)
* parse db url before passing it to the driver

* don't be lazy

* simplify

* simplify

* add tests

* update sql sync script

* update mock

* remove unused import

* remove unused imports
2025-01-24 13:01:55 -06:00
Alex
f5a3d7ba23 fix(mobile): failed to load ga/gl locale (#15623) 2025-01-24 12:47:29 -06:00
Alex
d4a9eed4a1 fix(server): migration mentions public schema (#15622) 2025-01-24 18:11:22 +00:00
Alex
9d8072b994 fix(server): failed to get albums with archived assets (#15611)
* fix(mobile): failed to get albums with archived assets

* sql
2025-01-24 17:54:53 +00:00
Saschl
3c1fa22109 fix(mobile): deletion of single assets (#15597)
fix: set asset in currentassetprovider on image load

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-24 17:47:54 +00:00
Matthew Momjian
c0210bd6c0 fix(mobile): translation (no /api, experimental features) (#15600)
* initial /api removal

* translations /api

* experimental features

* japanese url update

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-24 11:47:01 -06:00
Mert
a6ace5151c fix(server): no exif metadata in the deduplication utility (#15585)
add exif to `getDuplicates`
2025-01-24 11:42:39 -06:00
Jason Rasmussen
ede9c99adb fix: demo login page (#15616) 2025-01-24 11:39:06 -06:00
Alex
ec7ab209f3 fix(server): link live photos (#15612)
* fix(server): link live photos

* chore: sql

* formatting
2025-01-24 11:38:59 -06:00
Alex
61bc24d7ea chore(mobile): post release task (#15581) 2025-01-24 17:28:00 +00:00
Alex
6c95eb22b7 fix(mobile): full refresh doesn't get albums (#15560) 2025-01-24 17:27:33 +00:00
Jason Rasmussen
aaea5cf1ad fix: login page (#15613) 2025-01-24 17:17:04 +00:00
Alex
96d2e9b4c5 fix(mobile): unit test (#15604)
* fix(mobile): unit test

* fix(mobile): unit test
2025-01-24 12:11:38 -05:00
Alex
19740a3560 fix(web): neon artifacts (#15582) 2025-01-24 09:18:26 -06:00
bo0tzz
8a481e2ea1 docs: add FAQ about app update approval (#15599) 2025-01-24 09:08:01 -06:00
Mert
ba105d9f19 fix(server): searchRandom response (#15580)
* fix searchRandom

* add e2e

* set outer limit
2025-01-24 00:41:54 -05:00
Lukas
065d885ca0 fix(server): Fix for sorting faces during merging (#15571)
* Fix for sorting faces

* Put uneccessary orderBy in if statement
2025-01-23 21:33:24 -05:00
Mert
a07ae9b5b2 fix(server): set updatedAt on updates (#15573)
* `updatedAt` triggers

* drop function at the end
2025-01-23 19:24:29 -05:00
Jason Rasmussen
1869b1b41a refactor: repositories (#15561)
* refactor: version history repository

* refactor: oauth repository

* refactor: trash repository

* refactor: telemetry repository

* refactor: metadata repository

* refactor: cron repository

* refactor: map repository

* refactor: server-info repository

* refactor: album user repository

* refactor: notification repository
2025-01-23 18:10:17 -05:00
Alex
995314446b feat(web): neon light behinds login form (#15570) 2025-01-23 17:23:23 -05:00
Jason Rasmussen
a1691ddc0f fix(web): auth page padding (#15569) 2025-01-23 21:38:34 +00:00
Mert
071b271484 fix(server): getTimeBuckets not handling boolean filters correctly (#15567)
fix boolean handling
2025-01-23 15:08:20 -06:00
github-actions
50a2f6193f chore: version v1.125.1 2025-01-23 16:52:23 +00:00
bo0tzz
907fed1081 fix: use push-o-matic to create release (#15562) 2025-01-23 10:46:56 -06:00
github-actions
49a16045bd chore: version v1.125.0 2025-01-23 16:23:47 +00:00
Alex
a47aa86392 chore: minor form bottom padding increase (#15558) 2025-01-23 15:45:07 +00:00
David Baxter
f32c5d97cd feat(web): Show lens model in the asset viewer detail panel (#15460)
* Adds lens details to the asset viewer

* Update lens detail search links

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-23 09:34:36 -06:00
Alex
afc6e91c66 fix(web): No EXIF info on stack navigation (#15533)
* fix(web): No EXIF info on stack navigation

* fix(web): No EXIF info on stack navigation

* add exif info to get stack query

* e2e test
2025-01-23 15:22:27 +00:00
renovate[bot]
1311189fab chore(deps): update base-image to v20250123 (major) (#15555)
chore(deps): update base-image to v20250123

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 08:32:32 -05:00
renovate[bot]
fa3b5a4c8f chore(deps): update node (#15554)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 08:32:14 -05:00
Jason Rasmussen
d3446f3092 refactor: logging repository (#15540) 2025-01-23 08:31:30 -05:00
renovate[bot]
b31414af8f fix(deps): update dependency @nestjs/bullmq to v11 (#15534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:37:02 +00:00
renovate[bot]
cf99dcb279 fix(deps): update dependency @nestjs/event-emitter to v3 (#15535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:34:50 +00:00
renovate[bot]
dc56ed5d45 fix(deps): update dependency @nestjs/schedule to v5 (#15537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:32:35 +00:00
renovate[bot]
d1d26c60d6 fix(deps): update typescript-projects (#14892)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-01-22 22:15:38 +00:00
Jason Rasmussen
66849d0d45 refactor: migrate media repository (#15536) 2025-01-22 22:11:07 +00:00
renovate[bot]
30b8864d2d chore(deps): update base-image to v20250121 (major) (#15497)
chore(deps): update base-image to v20250121

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 16:45:25 -05:00
Jason Rasmussen
78464a4ba3 refactor: ui icon buttons (#15531) 2025-01-22 16:44:59 -05:00
Jason Rasmussen
1f19a65d1a refactor: migrate memory repository (#15532) 2025-01-22 21:39:13 +00:00
Jason Rasmussen
ca3619658b fix: incorrect event configuration (#15530) 2025-01-22 20:43:06 +00:00
renovate[bot]
c7a1f2944f chore(deps): update vitest monorepo to v3 (major) (#15528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 20:28:41 +00:00
Daniel Dietzler
7b71c145c8 chore: upgrade to vite 6 (#15508)
chore: upgrade to vite 5
2025-01-22 15:18:04 -05:00
Mert
49a6961ec6 fix(server): query fixes (#15509) 2025-01-22 14:17:42 -06:00
Alex
7b882b35e5 chore(mobile): translations update (#15523)
chore(mobile): translation update
2025-01-22 18:38:01 +00:00
Weblate (bot)
443aad5794 chore(web): update translations (#15335)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fil/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich

Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: Andrius Cimakevicius <andrius.cim@gmail.com>
Co-authored-by: FDS <sfranzdanielsss@gmail.com>
Co-authored-by: Fredrik Rambris <fredrik@rambris.com>
Co-authored-by: Kaspar Brygger <kaspar.brygger@gmail.com>
Co-authored-by: Lauri Koo <late91@gmail.com>
Co-authored-by: Ramy <ramy.feteha@gmail.com>
Co-authored-by: Rico Sonntag <mail@ricosonntag.de>
Co-authored-by: Sedat Albayrak <sedat.albayrak@icloud.com>
Co-authored-by: Torin Wu <xuan329269@gmail.com>
Co-authored-by: ValinRo <edicomna@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: Øyvind Hovden <oyvhov@gmail.com>
Co-authored-by: Ümit Solmz <usnetv@users.noreply.hosted.weblate.org>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
2025-01-22 18:28:13 +00:00
Jason Rasmussen
8d6cbb51e2 fix: get asset by id for stacks (#15522) 2025-01-22 18:13:09 +00:00
renovate[bot]
c8abe9a2fd chore(deps): update node.js to v22.13.1 (#15503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 16:16:46 -06:00
Alex
58a75d59bd chore: update ui 14.1 (#15498) 2025-01-21 16:16:26 -06:00
Jason Rasmussen
36058b9b59 chore: remove unused code (#15499) 2025-01-21 16:47:48 -05:00
Matthew Momjian
8440f146e2 feat(docs): CIFS/Samba in-Docker example (#15502)
* CIFS

* quotes

* quote 2

* quote 3, lol
2025-01-21 12:59:30 -06:00
Matthew Momjian
3da17da7b4 fix(docs): remove old attribution (#15501)
update
2025-01-21 12:59:13 -06:00
Jason Rasmussen
ccf6d71c3c refactor: view repository (#15496) 2025-01-21 18:26:13 +00:00
renovate[bot]
5171630b98 fix(deps): update machine-learning (#15494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 13:17:55 -05:00
Jason Rasmussen
9a27a99cab refactor: config repository (#15495)
* refactor: access repository

* refactor: config repository
2025-01-21 13:13:09 -05:00
Daniel Dietzler
332a865ce6 refactor: migrate person repository to kysely (#15242)
* refactor: migrate person repository to kysely

* `asVector` begone

* linting

* fix metadata faces

* update test

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-01-21 13:12:28 -05:00
renovate[bot]
0c152366ec chore(deps): update docker/build-push-action action to v6.12.0 (#15493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 12:34:14 -05:00
Alex
c35fd6cbdb refactor: migrate album repo to kysely (#15474) 2025-01-21 11:24:48 -06:00
renovate[bot]
58d5cc1e4b chore(deps): update dependency @types/node to ^22.10.7 (#15479)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 11:54:47 -05:00
Jason Rasmussen
9a1068c867 refactor: api key repository (#15491) 2025-01-21 10:45:59 -06:00
Jason Rasmussen
1745f48f3d feat: better spec urls (#15487) 2025-01-21 10:26:52 -06:00
Jason Rasmussen
b0cdd8f475 refactor: access repository (#15490) 2025-01-21 10:09:24 -06:00
Alex
318dd32363 refactor: migrate stack repo to kysely (#15440)
* wip

* wip: add tags

* wip

* sql

* pr feedback

* pr feedback

* ergonomic

* pr feedback

* pr feedback
2025-01-21 09:36:28 -06:00
Jeff Sloyer
887267b133 fix: broken link on monitoring page (#15478)
* fix: broken link on monitoring page

* use absolute link
2025-01-20 22:20:03 -06:00
Tempest
1d0d4fc281 feat: Allow multiple ML models to be preloaded (#15418) 2025-01-20 21:39:14 -05:00
renovate[bot]
345791c0e6 chore(deps): update machine-learning (#15476) 2025-01-20 21:38:50 -05:00
Aaron Rodrigues
07698f8a40 fix: grammar on docs homepage (#15455)
Fix grammar on index.tsx
2025-01-20 16:14:49 -06:00
Yan-Ru Huang
6fdb8f83f0 feat: Add rule on robots.txt to allow robots access og tags (#15470)
Allow social media access og tags
2025-01-20 09:22:05 -05:00
Alex
a0b2c69b99 fix(mobile): cannot get new photos on Android (#15461) 2025-01-20 07:25:43 -06:00
David Wolff
70809c1465 fix(server): searching for multiple people yields false positives (#15447) 2025-01-19 13:01:21 -05:00
Robert Schütz
97ec3b147c fix(deps): use node-addon-api v8 (#15438) 2025-01-19 11:26:25 -05:00
Alex
d249b63c99 fix(mobile): Cannot type date format on Samsung phone (#15430)
* fix(mobile): Cannot type date format on Samsung phone

* use calendar
2025-01-18 21:56:18 +00:00
Alex
0f803a4f5e fix(web): scrolling memory timeline reset position (#15429) 2025-01-18 20:09:38 +00:00
renovate[bot]
8eac82c5a3 chore(deps): update dependency eslint-config-prettier to v10 (#15428)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 14:04:46 -06:00
Daniel Dietzler
3d13da7f11 refactor: migrate shared-link repository to kysely (#15289)
* refactor: migrate shared-link repository to kysely

* fix duplicate individual shared link return in getAll when there are more than 1 asset in the shared link

* using correct order condition

* using eb.table

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-18 13:25:15 -06:00
Sam Wilson
430d0b86ee fix(docs): Update unraid.md to use correct image url (#15427)
Update unraid.md to use correct image
2025-01-18 13:24:31 -06:00
imakida
f40fdce658 fix(web): Update asset count when deleting assets from person page (#15416)
Call updateAssetCount() after deleting assets.
2025-01-17 20:51:38 -06:00
Jason Rasmussen
097183b31d refactor: migrate partner repo to kysely (#15366) 2025-01-17 18:49:21 -05:00
Tempest
d5a9294eeb feat: Add additional env variables to ML container (#15398)
* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Update config.py

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Apply formatting

* minor update

* formatting

* root validator

* minor update

* minor update

* minor update

* change to support explicit models

* minor update

* minor change

* minor change

* minor change

* minor update

* add logs, resolve errors

* minor change

* add new enviornment variables

* minor revisons

* remove comments

* add additional variables to ML (fixed)

* add additional variables to ML (fixed)

* add additional variables to ML

* formatting

* remove comment

* remove mypy error

* remove unused module

* merge f strings
2025-01-17 17:22:05 -05:00
Alex
c5582fc8d9 chore: update ui 13 (#15414) 2025-01-17 20:03:11 +00:00
Alex
6993726d50 chore: generate sql for stack repo (#15413)
* chore: generate sql for stack repo

* update sql
2025-01-17 20:02:28 +00:00
Zack Pollard
c821458e6c refactor: migrate map repository to kysely (#15348)
* chore: migrate map repository to kysely

* chore: add kysely codegen command, exclude from prettier and re-run it on latest migrations

* refactor: migrate map repository to kysely

* chore: dont log postgres notices
2025-01-17 09:14:42 -06:00
Tom Graham
efbc0cb192 fix(mobile): 14983 Images upload to shared album with common name (#15127)
* Initial look at fixing issue where images are uploaded to the wrong album if a shared album conflicts with a local users album.

* Use owner instead of shared flag when fetching albums.

* Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment.

Using `getAll(shared: true)` gets all shared albums the user can access (regardless of owner, despite the previous comment).

Using `getAll(shared: null)` gets all albums (incuding shared = true and shared = false). I presume the intent here was to get albums that were shared (and not mine), and not shared (ie: mine), but the logic is way off. It also just then combines them - so makes more sense to just get them in a single call.

* Fix formatting.

* Fixed tests.

* Revert "Fixed tests."

This reverts commit c38f5af5ac.

* Revert "Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment."

This reverts commit 979ce90abf.

* Added comments to explain why filters behave the way they do for getAll() albums.

---------

Co-authored-by: Tom graham <tomg@questps.com.au>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-16 21:24:09 -06:00
Alex
fd99bd05cf feat(mobile): share to mechanism (#15229)
* setup ios

* chore: succesfully sent media to the app

* share from Android

* wip: navigate to share screen

* wip: UI for displaying upload candidate

* wip: logic

* wip: upload logic

* wip: up up up we got it up

* wip

* wip

* wip

* upload state

* feat: i18n

* fix: release build ios'

* feat: clear file cache

* pr feedback

* using const for checking download status

---------

Co-authored-by: Alex <alex@pop-os.localdomain>
2025-01-16 21:20:44 -06:00
Jason Rasmussen
3a2bf91889 refactor: replace link-button component with immich-ui buttons (#15374)
* refactor: replace link-button component with immich-ui buttons

* minor styling tweak

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-16 16:03:04 +00:00
Alex
378bd3c993 refactor: migrate access repo to kysely (#15365) 2025-01-16 09:25:03 -06:00
Jason Rasmussen
89f40b311c fix(web): map settings (#15375) 2025-01-16 10:05:14 -05:00
Jason Rasmussen
6ce1533117 fix: activity types (#15368) 2025-01-15 23:31:26 -05:00
Alex
0ce62d8efd chore: update immich ui 12 (#15378)
* chore: update ui 12

* chore: update ui 12
2025-01-15 23:02:49 +00:00
imakida
e151248b16 fix(web): end selection after click when choosing thumbnail, and notify (#15373)
fix(web): Change viewMode state after updateThumbnail

Fixes #14692

viewMode state was being changed before updateThumbnail which caused
AssetGrid.handleSelectAssets() to continue, instead of returning.

Also added notification to notify user that the album cover was
updated.
2025-01-15 21:13:16 +00:00
Daniel Dietzler
a2207f2eef refactor: migrate library repository to kysely (#15271) 2025-01-15 15:01:28 -06:00
Mattia Natali
81568dbda3 feat(web): Context menu scrolls on small devices (#15367)
Context menu scrolls on small devices
2025-01-15 14:48:26 -06:00
Jason Rasmussen
a60da1ccab refactor: migrate create user form to immich ui (#15350)
* refactor: migrate create user form to immich ui

* minor styling tweak

* remove unintentional commit

* revert formating diff

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-15 15:09:19 -05:00
Jason Rasmussen
2d2966caa0 chore: use port 2286 for the auth server (#15369) 2025-01-15 15:03:20 -05:00
Alex
7d087371b5 chore: sql sync (#15370)
* chore: sql sync

* chore: sql sync
2025-01-15 19:55:29 +00:00
Jason Rasmussen
93e2545275 refactor: migrate memory to kysely (#15314) 2025-01-15 11:34:11 -05:00
renovate[bot]
43b3181f45 chore(deps): update base-image to v20250114 (major) (#15347)
chore(deps): update base-image to v20250114

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 19:58:02 -05:00
Mert
2903ad8156 refactor(server): migrate album-user repo to kysely (#15351) 2025-01-14 19:27:16 -05:00
Tempest
c5476a99b1 feat: Add additional env variables for Machine Learning (#15326)
* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Update config.py

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Apply formatting

* minor update

* formatting

* root validator

* minor update

* minor update

* minor update

* change to support explicit models

* minor update

* minor change

* minor change

* minor change

* minor update

* add logs, resolve errors

* minor change

* add new enviornment variables

* minor revisons

* remove comments
2025-01-14 22:06:01 +00:00
Jason Rasmussen
5d2e421800 chore: add renovate config for immich-ui (#15349) 2025-01-14 21:01:21 +01:00
Jason Rasmussen
b9000d8770 feat(web): immich-ui components (#14263)
* feat: add immich-ui to auth pages

* fix: welcome icon

* styling

* fix: mobile padding

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-14 14:53:33 -05:00
renovate[bot]
073fccb517 chore(deps): update python:3.11-slim-bookworm docker digest to 6ed5bff (#15346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 18:33:27 +00:00
renovate[bot]
3e11b90851 chore(deps): update node.js to v22.13.0 (#15337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 13:20:12 -05:00
renovate[bot]
19e2504583 fix(deps): update machine-learning (#15336) 2025-01-14 10:19:01 -05:00
Mattia Natali
4279cd6e1e feat(web): Slideshow is enabled everywhere. It no longer needs assetStore. (#15077)
Slideshow no longer needs assetStore. It is enabled everywhere

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-14 14:24:58 +00:00
Jason Rasmussen
f70ee3f350 refactor: auth pages (#15328) 2025-01-14 08:14:28 -06:00
Jason Rasmussen
9e1651ef66 fix: bump web dependencies (#15325) 2025-01-13 23:40:19 -05:00
Alex
a35af2b242 refactor: migrate move repository to kysely (#15327)
* refactor: migrate move repository to kysely

* fix: tests

* fix: tests
2025-01-13 23:22:03 -05:00
Yonathan Randolph
fc99c5f530 chore(server): avoid copying sources in dev (#12794)
* chore(server): avoid copying sources in dev

Add a dev target to the web and server Dockerfiles, and change docker-compose.dev.yml to use the dev target. The dev target avoids copying files so that the docker image is smaller.

* chore: respond to PR: don't add dev target

web/Dockerfile is only used by docker-compose.dev.yml so a dev target is redundant. Instead, just remove the copy

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 22:00:55 -05:00
Weblate (bot)
e978b8c685 chore(web): update translations (#15145)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: AtmosphericIgnition <github.vvwnk@passmail.net>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Damian Krysta <krypton9208@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Dominik Mielcarek <weblate@bmx.email>
Co-authored-by: Erik Järlestrand <erik.jarlestrand@gmail.com>
Co-authored-by: Filip Hanes <filip@hanes.tech>
Co-authored-by: Gerardo Doro <gerrydoro97@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jendrik Köhler <jendrik.koehler11@gmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Kenji Opdam <kenji.opdam@gmail.com>
Co-authored-by: Krisztián <fabkrisz5+hosted_weblate_org@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Milan Šalka <salka.milan@googlemail.com>
Co-authored-by: Milo Germanus <milogermanus@gmail.com>
Co-authored-by: Máté Molnár <matmolni@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Rui <rui-costa@users.noreply.hosted.weblate.org>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Vykintas Vyšniauskas <vykintasv@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: rezi nagro <rezinagro@hotmail.com>
Co-authored-by: scudo <whiteshield.tg@protonmail.com>
Co-authored-by: stelle <itsazripp2@gmail.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Пламен Марков <tsmhunter@gmail.com>
Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
2025-01-14 02:57:54 +00:00
Zer0x00
3b06220219 feat: Upgrade devcontainer setup (#14419)
* Feat: Upgrade devcontainer

* Style: Format devcontainer.json

* Chore: Remove settings from devcontainer

* chore: add shebang

* chore: fix shellcheck

---------

Co-authored-by: Bünyamin Olgun <buenyamin.olgun@cancom.de>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 21:42:32 -05:00
renovate[bot]
dc53e2a9b9 chore(deps): update docker.io/redis:6.2-alpine docker digest to 905c4ee (#15193)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 21:32:52 -05:00
Daniel Dietzler
28b08ed417 refactor: migrate audit repository to kysely (#15269) 2025-01-13 21:23:12 -05:00
Matthew Momjian
b74f013b53 fix(docs): database name for restore commands (#15276)
* cleanup dbname

* 2

* Update database-queries.md

* Update backup-and-restore.md

* Update backup-and-restore.md
2025-01-13 20:57:19 -05:00
Alex
79726acc72 refactor: migrate sessions repository to kysely (#15268)
* wip: search

* wip: getByToken

* wip: getByToken

* wip: getByUserId

* wip: create/update/delete

* remove unused code

* clean up and pr feedback

* fix: test

* fix: e2e test

* pr feedback
2025-01-13 20:45:52 -05:00
Jason Rasmussen
36eef9807b fix: version history sql (#15321) 2025-01-14 01:38:11 +00:00
Alex
3da750117f refactor: migrate user repository to kysely (#15296)
* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* fix: test

* clean up

* fix: metadata retrieval bug

* use correct typeing for upsert metadata

* pr feedback

* pr feedback

* fix: add deletedAt check

* fix: get non deleted user by default

* remove console.log

* fix: stop kysely after command finishes

* final clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 20:30:34 -05:00
Dr-Electron
a6c8eb57f1 fix(docs): fix admonition in mobile section (#15291)
fix(docs): Fix admonition in mobile section
2025-01-12 21:12:26 -06:00
Austin Dudzik
efe4396e54 fix(docs): Fix link label to refer to correct location on page (#15279)
Fix link label to refer to correct location on page
2025-01-12 09:51:55 -06:00
Desmond Cox
c4a8fdf0f3 fix(cli): handle folders with single quotes (#15283)
* fix(cli): handle folders with single quotes

* fix(cli): skip single quote test on Windows

* fix(cli): support double quote and backtick as well
2025-01-12 15:44:51 +00:00
Jin Xuan
abf5b0afe1 fix(web): mismatched deviceAssetId when uploading images (#15130)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-12 04:28:39 +00:00
Ferdinand Holzer
77d4eb8787 fix(web): render whitespaces in file names and paths on photos and folders pages correctly (#15266) 2025-01-11 22:10:33 -06:00
bo0tzz
e7abfe3067 docs: clarify filesystem backup paths (#15243)
* docs: clarify filesystem backup paths

* fix: backticks
2025-01-11 22:10:23 -06:00
Matthew Momjian
be1187bc46 chore(docs): clarify experimental network features (#15228)
* auth

* URL switch

* mobile app

* caps

* headers, app changes

* oxford comma

* Match case to other use in Immich

* add url

* asset download also causes issues
2025-01-11 22:09:54 -06:00
Mert
fef36e6a37 chore(server)!: default max bitrate unit to kbps (#15264)
default unit to kbps
2025-01-11 22:09:19 -06:00
imakida
a39fbcb8ac feat: #15237 toggle password visibility on shared albums (#15238)
* feat: toggle password visibility on shared albums

* feat: toggle password visibility on shared albums

* use password-field component

* remove div wrapping PasswordField

---------

Co-authored-by: Ian <ian@zetabyte.dev>
2025-01-11 22:08:08 -06:00
renovate[bot]
ca75bba3b0 chore(deps): update prom/prometheus docker digest to 6559acb (#15244)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:45 -06:00
renovate[bot]
f3dbbfa16d chore(deps): update redis:6.2-alpine docker digest to 905c4ee (#15245)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:30 -06:00
renovate[bot]
8b4390c247 chore(deps): update dependency @types/node to ^22.10.5 (#15246)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:18 -06:00
renovate[bot]
581d32269d fix(deps): update machine-learning (#15247)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:05:20 -06:00
renovate[bot]
2b76112014 chore(deps): update github-actions (#15248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:04:40 -06:00
renovate[bot]
2301affd7e chore(deps): update node.js to v22.13.0 (#15249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:04:22 -06:00
renovate[bot]
2f9a66e961 chore(config): migrate renovate config (#15262)
chore(config): migrate config renovate.json

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:02:12 -06:00
renovate[bot]
0b8cfc6b82 chore(deps): update base-image to v20250107 (major) (#15251)
chore(deps): update base-image to v20250107

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 23:00:50 -05:00
bo0tzz
cab201270c chore: migrate version-history repository to kysely (#15267)
* chore: generate sql for version-history repository

* chore: run kysely-codegen

* chore: migrate version-history repository to kysely

* fix: change `| null` to `| undefined`

* chore: clean up unneeded async
2025-01-11 20:12:34 +00:00
Mert
beb31cebed fix(mobile): don't crash android app when video player throws exception (#15236)
update commit ref
2025-01-10 19:20:56 -06:00
Jason Rasmussen
e51091b6e5 refactor: migrate trash to kysely (#15233) 2025-01-10 18:48:21 -05:00
Jason Rasmussen
cc6a8b0c74 refactor: migrate system metadata to kysely (#15231) 2025-01-10 14:20:15 -05:00
Jason Rasmussen
930f979960 feat: migration api keys to use kysely (#15206) 2025-01-10 14:02:12 -05:00
Jin Xuan
3030e74fc3 fix(web): escape key to clear selection and go to previous page (#15142) (#15219) 2025-01-10 15:27:35 +00:00
Tom Graham
f9db60f25b fix(mobile): 15072 Fix issue with boolean filters filtering out results when they shouldn't (#15208)
Fix issue with boolean filters filtering out results when they shouldn't.

Co-authored-by: Tom graham <tomg@questps.com.au>
2025-01-10 09:18:40 -06:00
Daniel Dietzler
7d50d3032b refactor: activity queries (#15207) 2025-01-09 18:14:36 -05:00
Daniel Dietzler
1fb2b3f899 refactor: migrate activity repo to kysely (#15203)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-09 14:31:46 -05:00
Mert
2e12c46980 refactor(server): use kysely (#12857) 2025-01-09 11:15:41 -05:00
renovate[bot]
1489d69f81 chore(deps): update terraform cloudflare to v4.50.0 (#14956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-09 10:31:15 +00:00
github-actions
8d836ae04f chore: version v1.124.2 2025-01-08 23:16:35 +00:00
Arno
cc473c42b5 fix(web): Reset asset selection when refreshing and changing folder (#15178)
* fix(web): Reset asset selection when refreshing and changing folder

* fix: refactor
2025-01-08 17:13:17 -06:00
Jonathan Jogenfors
bab04378dc fix(server): generate thumbnails for external assets (#15183)
fix: thumbnail generation of external assets
2025-01-08 17:12:39 -06:00
github-actions
cc10fc15c3 chore: version v1.124.1 2025-01-08 16:16:15 +00:00
Yaros
8cb9196bcb chore(docs): Translated README to Ukrainian (#15167)
* Wrote Ukrainian README

* Added links to Ukrainian README translation
2025-01-08 08:55:25 -06:00
Julian Collins
6cce24f391 chore(docs): update and polish Russian README (#15164)
* Actualize and polish RU readme

* Actualize and polish RU readme
2025-01-08 08:53:26 -06:00
Alex
36a9ae7c54 fix(server): email cannot render with pretty flag (#15157) 2025-01-08 08:53:08 -06:00
bo0tzz
4aabbec742 fix: invert asset path link nesting (#15163) 2025-01-08 07:52:59 -06:00
Alex
c5baf79f61 chore(mobile): post release task (#15148) 2025-01-08 11:51:08 +01:00
Alex
e183c9b917 chore(docs): remove duplicate filename (#15149) 2025-01-07 19:58:50 +00:00
github-actions
840d99ed25 chore: version v1.124.0 2025-01-07 19:00:42 +00:00
Sebastian Schneider
b4c1304b46 feat(web): Improve duplicate suggestion (#14947)
* feat: Improve duplicate suggestion

* format

* feat(web): Add deduplication info popup

* fix: lint

* fmt

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-07 18:30:11 +00:00
Jonathan Jogenfors
23f3e737fd fix(server): don't delete offline files from disk when trash empties (#14777)
fix: don't delete offline files from disk when emptying trash

Move logic to asset deletion check
2025-01-07 18:25:43 +00:00
Weblate (bot)
10e569cc1c chore(web): update translations (#14759)
Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: AMIR IZZUDDIN <amirizzuddin@outlook.com>
Co-authored-by: Abhishek Kumar <abyshek.kumar@gmail.com>
Co-authored-by: Alan Ye <git@wrye.dev>
Co-authored-by: Alan Ye <me@wrye.dev>
Co-authored-by: Alexander Roumeliotis <alexroumeli@gmail.com>
Co-authored-by: Benjamin Freeman <b.t.freeman16@gmail.com>
Co-authored-by: Berkan Özkan <ozkanberkan@yandex.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Bohuslav Uličný <justadreamer@duck.com>
Co-authored-by: Christian Shannon <dargelf@gmail.com>
Co-authored-by: Chuckame <antoine.michaud.17@gmail.com>
Co-authored-by: Cristi Bklash <bklash3@gmail.com>
Co-authored-by: Denis Saamiev <samievdenis@gmail.com>
Co-authored-by: Dominik <dominik.falis@proton.me>
Co-authored-by: Eirik Rolland Enger <engeir@pm.me>
Co-authored-by: Eshgin <eshqin.quluzade1@gmail.com>
Co-authored-by: Evgenij Spitsyn <evgeniy@spitsyn.net>
Co-authored-by: Filip <fjokovic0@gmail.com>
Co-authored-by: Fredrik Andersson <membership@fredande.se>
Co-authored-by: Heine Olsen <olsen10051988@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jozef Pistej <pistej2@gmail.com>
Co-authored-by: Kalilinoe Alohilani <akalilinoe@gmail.com>
Co-authored-by: Kamil Warczek <kamilwarczek@gmail.com>
Co-authored-by: Kenji Opdam <kenji.opdam@gmail.com>
Co-authored-by: Lab Forensic <recoverylabkor@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Leon S. Kennedy <leonsk29@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Matteo Morari <matteo.morari04@gmail.com>
Co-authored-by: Max <mail@heavygale.de>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mystically <github@mytrydas.com>
Co-authored-by: Nicolai Bonde <git@nicolaibonde.dk>
Co-authored-by: Noisy Fridge <pureprince.habib@gmail.com>
Co-authored-by: OskarSidor <oskar.sidor@gmail.com>
Co-authored-by: PPNplus <ppnplus@protonmail.com>
Co-authored-by: Pascal Dietrich <pascal.1.dietrich@hotmail.com>
Co-authored-by: Paul Kupper <p@ul-kupper.de>
Co-authored-by: Paul Murphy <djxistenz@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Rekku484 <rekku484@gmail.com>
Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com>
Co-authored-by: Sander Brilman <brilmansander@gmail.com>
Co-authored-by: Sedat Albayrak <sedat.albayrak@icloud.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Shogo Takata <pineapplehunter.daniel@gmail.com>
Co-authored-by: Stijn <gielisstijn@gmail.com>
Co-authored-by: Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Co-authored-by: Tal Sitton <tal.sitton04@gmail.com>
Co-authored-by: Thomas Möller <thomas.moeller@mailbox.org>
Co-authored-by: Torben Eims <torben.eims@gmx.de>
Co-authored-by: Venkateswaran Ganesan <vganes3@gmail.com>
Co-authored-by: Vojta Linha <vojtech.linha+weblate@gmail.com>
Co-authored-by: WilliamNT <hwbendeguz@gmail.com>
Co-authored-by: Yuki IWATA <daburutti@gmail.com>
Co-authored-by: aln <imyapear@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: gjarek98 <gjarek48@gmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: quitroot <quitroot@gmail.com>
Co-authored-by: rezi nagro <rezinagro@hotmail.com>
Co-authored-by: scudo <whiteshield.tg@protonmail.com>
Co-authored-by: sibber5 <ghasjado@gmail.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Álvaro Orduna León <alvaro.orduna.92@gmail.com>
Co-authored-by: Ľubomír Dlhý <dlhylubomir@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
Co-authored-by: Пламен Марков <tsmhunter@gmail.com>
Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
2025-01-07 17:13:40 +00:00
Alex
61c9c14ba6 fix(mobile): mismatch language (#15141) 2025-01-07 17:02:52 +00:00
Alex
d0ec24ef08 chore(mobile): translations update (#15139)
chore(mobile): translation update
2025-01-07 16:52:25 +00:00
David Koňařík
fa0b352bd0 feat: "add to album" shortcut and generic menu option shortcuts (#15056)
* Add shortcut prop to MenuOption

* Add "add to album" shortcut in photo grid
2025-01-07 10:29:22 -06:00
John Stef
c148a28a82 fix(mobile): fix text search (#14873)
* fix(mobile): fix text search

* chore(mobile): add tests for SearchPage

* fix(mobile): fix render overflow for small screens

Needed for SearchPage test to not throw overflow error

* chore(mobile): update import_rule_openapi

* styling

* preserve styling and skip a test

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-07 16:26:14 +00:00
Zack Pollard
776be7d205 fix: reverse geocoding data import don't use unlogged tables (#15136) 2025-01-07 15:36:07 +00:00
Alex
c937097db4 chore(mobile): add new language locales (#15138)
chore(mobile): add new languages locale
2025-01-07 15:30:52 +00:00
Jordan
ff7a66a2c5 docs: add warning about superuser requirement for automated database backups. (#15045)
Add warning about superuser requirement for automated database backups.
2025-01-07 09:04:04 -06:00
Jason Rasmussen
9bc13aca7c chore: use 307 for redirects (#15119) 2025-01-06 17:51:18 -05:00
Ovidijus R
a13b7b364e feat(mobile): add ability to force view original videos (#15094) 2025-01-06 15:29:47 -05:00
scottdesilva
1f0ffd634a fix(server): unit test for creating tag with color (#15120)
* Pass color to tag repo on creation

* unit test for creating tag with optional color
2025-01-06 13:33:48 -06:00
scottdesilva
c78e9d6ad5 fix(server): save color when creating tag (#15106)
Pass color to tag repo on creation
2025-01-06 12:21:55 -05:00
loowiz
6fd9f93375 docs: Add disable iOS low power mode suggestion (#15110)
* docs: Add disable iOS low power mode suggestion

Just added the suggestion under "Why is background backup on iOS not working?" to also disable low power mode.
I've seen so many people who just have low power mode permanently on, but this can affect background app refresh (https://support.apple.com/en-us/101604)

* Update FAQ.mdx

* Make wording more consistent in docs/docs/FAQ.mdx

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-06 15:38:36 +00:00
Matthew Momjian
e7667a7896 docs: warning for LXC use (#15071)
warn for LXC use
2025-01-05 16:10:00 -05:00
Matthew Momjian
a81fb73faf feat(docs): additional corruption checks (#15102)
corruption checks
2025-01-05 18:03:53 +00:00
Buan
6a9d57ad33 docs: update Spanish README (#15081)
* Update README_es_ES.md

* Add Traduction and activity section, and corrected a string
2025-01-04 13:00:46 -06:00
Mattia Natali
d29bdd6308 feat(web): Swipe down shows slideshow controlbar on mobile (#15080)
Swipe down show slideshow controlbar on mobile
2025-01-04 18:18:05 +00:00
Mert
fcd372238f chore(server): add support for .m2t (#15064)
* add m2t

* ordering
2025-01-03 16:28:32 -06:00
Arno
b45ff8d09f feat(web): Enable selection interactions in folder view (#15049)
* feat(web): Enable selection interactions in folder view

* feat(web): Add link to parent folder in detail pane, if folders are enabled

* Added invalidation and refreshing of asset cache on changes

* fix: removed unused imports and changed link

* chore: styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-03 16:09:31 +00:00
mehring
007caa26bd chore(web): remove tree item thumbnail class 'max-h-[500px]' (#14901)
* fix tree item thumbnail class 'max-h-[500px]'

* fix tag/folder navigation bar on the top all the time.
2025-01-02 12:14:44 -06:00
pyorot
c792f72469 chore(web): transcoding settings cleanup (#14765)
* rearrangement only

* add accordions (requiring new localisation keys)

* localisation string adjustments

* capitalisation fix in existing code

* suggestions from @mertalev + revert accidental EOF \n deletion

* linting

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-02 10:38:33 -06:00
waclaw66
d19a749903 fix(mobile): album tile translation and consolidation with card appereance (#15032)
fix(mobile): album tile translation and consolidation with card

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-02 10:19:55 -06:00
Alex
6239365f68 chore(docs): clean up and add new content (#15003)
* wip: Install

* wip: sharing

* wip: features

* wip: features

* wip: tags and folder view

* update links

* fix: broken reference to page sections

* pr feedback

* Update docs/docs/overview/comparison.md

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

* webp

* webp is glory

* webp is glory

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-01-02 10:04:14 -06:00
Ionuț Ciocîrlan
8641ab82e1 fix(web): fix input autofocus (#15028)
applies to tag creation modal, and possibly other places
2025-01-02 09:02:03 -06:00
Deluxe-7
6e78499fc9 chore(docs): Updated the docker-compose.mdx to account for additional bugs. (#15026)
Updated the docker-compose.mdx to account for another bug

I have found that receiving a permission denied error is likely due to the Docker engine not being installed.
2025-01-02 09:01:43 -06:00
bo0tzz
dbd10e4704 chore: add clarifying warning to backup page (#15000)
* chore: add clarifying warning to backup page

* add extra note
2025-01-02 09:01:29 -06:00
bo0tzz
953a643922 fix(docs): roadmap ordering (#15034)
Followup for #15023
2025-01-02 15:01:10 +00:00
bo0tzz
3e456dcb45 chore: add sub-path warning to reverse proxy docs (#15039) 2025-01-02 15:00:53 +00:00
Chuckame
3c35b467f4 feat(server): use the earliest date between file creation and modification timestamps when missing exif tags (#14874)
* feat(server): Use the earliest date between file creation and modification timestamps when missing exif tags

* PR fixes

* PR fixes

* Switch log to debug

* fix linter for min date

* apply prettier
2025-01-02 04:50:15 +00:00
Tom Graham
5111ceffac fix(mobile): playing a live photo causes the gallery to redraw the wrong image (#15027)
Fixed an issue where playing a motion video caused the gallery to re-render on the wrong image.

Co-authored-by: Tom graham <tomg@questps.com.au>
2025-01-01 22:46:06 -06:00
Matthew Momjian
4d6d5537b7 fix(docs): discourage docker desktop (#15020)
* discourage docker desktop

* callout *nix OS as supported

* change order, clarify mac
2025-01-01 19:58:53 -05:00
Matthew Momjian
fabf878637 fix(docs): month (#15024)
why is the date index at 0??
2025-01-01 18:34:01 -06:00
Matthew Momjian
efa24d26e6 fix(docs): push roadmap for 2025 (#15023)
* update roadmap.

* oops
2025-01-01 18:17:13 -06:00
Landon Thull
8fd5cdafd4 fix: spelling error in facial recognition docs (#15011) 2025-01-01 12:26:00 +00:00
jon6fingrs
ccf57458c7 docs: add immich-dl to community projects (#15005) 2025-01-01 12:25:25 +00:00
Felix Bühler
4448143197 chore(docs): add reference to metric ports (#14887)
chore(docs): add refference to metric ports
2024-12-28 17:49:06 -05:00
mehring
34ce61d03a feat(web): create tag on the fly (#14726) 2024-12-27 17:29:57 +00:00
Lukas
0250a7a23a fix(web): Fix for failing to load pictures (#14943)
* attempt at fix for failing to load pictures

* comments

* remove unused files

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-12-27 16:16:07 +00:00
renovate[bot]
b91f39d1af chore(deps): update base-image to v20241224 (major) (#14905)
chore(deps): update base-image to v20241224

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-27 09:51:42 -06:00
Daniel Dietzler
139090715e fix: trusted proxies (#14888) 2024-12-27 09:51:07 -06:00
Sam Debruyn
05cea0fc69 chore(mobile): remove duplicate settingsservice (#14946)
remove duplicate settingsservice
2024-12-27 09:45:23 -06:00
Yaros
2255f3e966 feat(mobile): Modified draggable area of detail modal (#14953)
Modified draggable area of detail modal
2024-12-27 09:28:54 -06:00
Yaros
2be1cb7de2 fix(mobile): Fixed resolution format in Details (#14954)
Fixed resolution format on mobile
2024-12-27 09:20:07 -06:00
indam
227eb4b0a6 docs: Update Chinese README (#14926)
* Update Chinese README

* retrigger checks
2024-12-25 08:09:47 -05:00
bo0tzz
23461e98fb fix: clarify PR label validation message (#14925) 2024-12-25 08:07:52 -05:00
renovate[bot]
ef0070c3fd fix(deps): update machine-learning (#14891) 2024-12-23 20:04:55 -05:00
renovate[bot]
6b08e82cf7 fix(deps): update dependency @nestjs/swagger to v8 (#13881)
* fix(deps): update dependency @nestjs/swagger to v8

* chore: generate open api

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-12-23 21:03:34 +00:00
Ben
b88f98bf66 feat(web): Add "set as featured" option for an asset (#14879) 2024-12-23 12:26:53 -06:00
Jonathan Jogenfors
c3be74c450 fix(server): support import paths with special chars (#14856) 2024-12-22 16:22:16 -06:00
Jonathan Jogenfors
4bc2aa5451 feat(server): Handle sidecars in external libraries (#14800)
* handle sidecars in external libraries

* don't add separate source
2024-12-21 20:50:07 -06:00
Alex
6080e6e827 fix(web): infinite loop browser navigation crash admin settings page (#14850)
* fix(web): infinite loop browser navigation crash admin settings page

* pr feedback
2024-12-21 19:26:01 +00:00
Lukas
d5906c2efe feat(web): Adds toggle to disable sorting of faces (#14830)
* Allows for toggling of sorting in the merge face selector

* Adds toggle to the side panel for faces

* Improve layout and fix toggle

* chore: ui cleanup

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-12-21 16:53:37 +00:00
Matthew Momjian
b3821c50d7 chore(docs): FAQ cleanup (#14835)
* FAQ cleanup

* link fix

* copy paste error
2024-12-20 23:40:33 -06:00
Matthew Momjian
1cec3af98c chore(docs): fix broken link in FAQ (#14834)
broken link
2024-12-20 16:36:42 -06:00
Ben McCann
da70a1e457 chore: migrate to SvelteKit app state (#14807)
* chore: migrate to SvelteKit app state

* update package-lock.json
2024-12-20 17:18:22 -05:00
Alex
a14735846c chore(mobile): add timeout when reading video files (#14831) 2024-12-20 13:52:42 -06:00
Michel Heusschen
79a780e8d9 fix(web): downloading partner assets (#14803) 2024-12-19 14:56:16 +00:00
Slavik
556c59f12f docs: misspelled var "urls" in the "machineLearning" (#14786)
[docs] misspelled var "urls" in the "machineLearning"

Co-authored-by: slavik.fursov <slavik.fursov@oracle.com>
2024-12-18 19:57:25 -05:00
renovate[bot]
8e724c3c27 chore(deps): update base-image to v20241217 (major) (#14776)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 18:27:08 +00:00
renovate[bot]
207bb527bb chore(deps): update dependency exiftool-vendored to v28.8.0 (#13924)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 18:14:30 +00:00
Alex
b034cb1861 fix(mobile): keep empty album as selected target (#14778) 2024-12-18 11:10:29 -06:00
Daniel Dietzler
6a855f6331 chore: update deps (#14755) 2024-12-18 14:19:48 +00:00
renovate[bot]
a03f4f5610 chore(deps): update docker/setup-buildx-action action to v3.8.0 (#14757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 14:18:21 +00:00
renovate[bot]
e0fc8734bf chore(deps): update dependency ruff to v0.8.3 (#14756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 15:35:22 -05:00
renovate[bot]
0d060ebb32 chore(deps): update node (#14736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 15:21:01 -05:00
Alex
f58b2572e6 chore: post release tasks (#14749) 2024-12-17 14:02:07 -06:00
github-actions
fd34a914a6 chore: version v1.123.0 2024-12-17 16:00:50 +00:00
Weblate (bot)
b81470a383 chore(web): update translations (#14495)
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Andrii Solianyk <asolianik2015@gmail.com>
Co-authored-by: Andrius <sndriuss@gmail.com>
Co-authored-by: Arnyminer Z <arnyminer.z@gmail.com>
Co-authored-by: Benjamin Ulstein <ben@ulsteinmedia.no>
Co-authored-by: Berkan Özkan <ozkanberkan@yandex.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Bohuslav Uličný <justadreamer@duck.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Denis Saamiev <samievdenis@gmail.com>
Co-authored-by: Dzmitry Babak <alexgott1990@gmail.com>
Co-authored-by: Emre Bicer <emreee.bicer@gmail.com>
Co-authored-by: Filip <fifammlaf@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Jak97 <mneamtu74@gmail.com>
Co-authored-by: Jonas Grubbauer <nicjontrickshots@gmail.com>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Kenneth <kenneth@flugheim.no>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Lukasz Socha <ukiduki.king@gmail.com>
Co-authored-by: Marrick Schröder <marrick.schroeder@gmail.com>
Co-authored-by: Mathias <mathias_aerts@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Matteo Crocetti <matteocrocetti@proton.me>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: MrJonasKr <hr.jonas.kr@protonmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oton <oms.moreira@outlook.com>
Co-authored-by: Paul <paul.kunad@kabelmail.de>
Co-authored-by: Pelayo García Bárcena <pgarciabarcena@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Ram Tourgeman <ramtorgeman@gmail.com>
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Spark108 <kirito.asumo@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Svetoslav Popov <svetoslav.b.popov@gmail.com>
Co-authored-by: Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Co-authored-by: Vatsal <gajjar.vatsal10602@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Zmicier Yarashevich <github@zmcr.de>
Co-authored-by: acc acc <hangergea@gmail.com>
Co-authored-by: bill85101 <bill85101@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: kawinhill <kawinhill1112@gmail.com>
Co-authored-by: kraptor <kraptor@kraptor.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: qtm <qtm@users.noreply.hosted.weblate.org>
Co-authored-by: stelle <itsazripp2@gmail.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: timmy61109 <qazzxcasdqwewsxedc@gmail.com>
2024-12-17 15:42:57 +00:00
Alex
6f3b6365e5 chore(mobile): translations update (#14747)
chore(mobile): translation update
2024-12-17 15:16:22 +00:00
aviv926
2948b9ed29 fix(web): fix missing icons (#14737)
* Updates

* fix

* Revert "Updates"

This reverts commit 724b538101.

* format
2024-12-16 23:06:50 -05:00
Alex
a2dd9622a3 fix(mobile): live photos playback (#14731) 2024-12-16 21:00:49 +00:00
Alex
c7b44bef81 fix(mobile): native dialog location (#14730) 2024-12-16 15:26:52 -05:00
Kevin Cox
95f300f8d2 docs: Add more documentation for video transcoding settings. (#13388)
Add more documentation for video transcoding settings.

This adds documentation on many of the video transcoding settings `ffmpeg.*`. I focused the documentation on values that aren't just passthough to ffmpeg settings but that are custom to Immich.
2024-12-16 11:20:33 -06:00
Alex
9503bf479b feat(album): album view sort order (#14648)
* feat(mobile): album view sort order

* feat: add error message

* refactor(mobile): album page (#14659)

* refactor album page

* update lint rule

* const record

* fix: updating sort order when pull to refresh

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>

* Move sort toggle button to bottom sheet menu

* chore: revert multiselectgrid loading status

* chore: revert multiselectgrid loading status

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-12-16 16:11:48 +00:00
pyorot
364b717fde docs: improve install/requirements and install/docker-compose (#13569)
* cleanup install docs

* Apply suggestions from mmomjian's code review

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

* consequent wording simplifications

* latest rewording of start/restart

* Update requirements.md

removed leftover newline

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2024-12-16 10:04:39 -06:00
000yesnt
f180ae70f9 feat(server): add Bash healthcheck script (#14704)
* feat(server): add Bash healthcheck script

* fix(server): add 2 second timeout for healthcheck.js parity

* chore(server): delete old healthcheck Node script

* fix(server): feedback

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-12-16 15:19:18 +00:00
renovate[bot]
4edeed9739 fix(deps): update machine-learning (#14630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 09:03:04 -06:00
renovate[bot]
e52774553f chore(deps): update mcr.microsoft.com/devcontainers/typescript-node:22 docker digest to 9791f4a (#14700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 08:59:46 -06:00
Lukas
12e55f5bf0 feat(server): Merge Faces sorted by Similarity (#14635)
* Merge Faces sorted by Similarity

* Adds face sorting to the side panel face merger

* run make open-api

* Make it one query

* Only have the single order by when sorting by closest face
2024-12-16 08:47:11 -06:00
martin
8945a5d862 fix: reduce the number of API requests when changing route (#14666)
* fix: reduce the number of API requests when changing route

* fix: reset `userInteraction` after sign out
2024-12-16 08:45:01 -06:00
Alex
6b0f9ec46c chore(mobile): post release tasks (#14656) 2024-12-16 08:42:40 -06:00
Alex Sherwin
fe554c3a5b fix(mobile): set custom headers on external url (#14707) (#14708) 2024-12-15 21:09:52 +00:00
Alex
dd9feeec45 chore(mobile): remove screen auto-dimming (#14699) 2024-12-14 14:53:15 -05:00
renovate[bot]
cc111a1fcb fix(deps): update dependency analyzer to v7 (#14673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-14 13:43:31 -06:00
Michel Heusschen
b5022d80d6 refactor(web): asset interaction (#14662)
* refactor(web): asset interaction

* feedback
2024-12-14 13:30:33 -05:00
Tim Van Onckelen
525840b040 fix(server): fixed email footer image stretched #14617 (#14671) 2024-12-13 17:13:38 +00:00
Alex
bccf2f60b2 fix(web): upload info panel covers timeline navigation bar (#14651) 2024-12-13 11:59:14 -05:00
renovate[bot]
39732f3371 chore(deps): update base-image to v20241210 (major) (#14670)
chore(deps): update base-image to v20241210

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 16:28:27 +00:00
renovate[bot]
40a0bf6ad5 chore(deps): update terraform cloudflare to v4.48.0 (#14669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 10:14:34 -06:00
Michel Heusschen
6abe696d0b fix(web): allow minimizing upload panel (#14663) 2024-12-12 10:13:42 -06:00
renovate[bot]
59d6af54c7 chore(deps): update node.js to v22.12.0 (#14650)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 10:12:44 -06:00
renovate[bot]
58d63d9f1c chore(deps): update grafana/grafana docker tag to v11.4.0 (#14633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 10:10:51 -06:00
Michel Heusschen
11be85feb3 fix(web): live photo link action (#14668) 2024-12-12 09:48:50 -06:00
github-actions
c52f1bae81 chore: version v1.122.3 2024-12-11 21:15:03 +00:00
Alex
0c03753642 fix(server): fix getByDayOfYear query (#14655)
* fix(server): fix getByDayOfYear query

* generate sql
2024-12-11 20:51:56 +00:00
renovate[bot]
71b48b11e6 chore(deps): update dependency pytest-cov to v6 (#13925)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-11 11:24:13 -06:00
Mert
3053d84e49 fix(mobile): not being able to zoom into live photos (#14608)
fix live photo zoom
2024-12-11 11:23:20 -06:00
Travis Menghini
e40c7c51ee feat(web): allow tags to be applied in bulk on search, personID, and memory-viewer pages (#14368)
* Allow Tags to be applied in bulk on search page

* Added Tags Action To PersonID Page

* Fixed Formatting Issues

* Added Tags Option to Memory-Viewer
2024-12-11 10:31:11 -06:00
dvbthien
11f585d0ad refactor(mobile): refactor theme management (#14415) 2024-12-11 16:30:56 +00:00
renovate[bot]
5814a1b223 chore(deps): update docker/build-push-action action to v6.10.0 (#14631)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 17:07:16 -06:00
renovate[bot]
bcc438eafb fix(deps): update dependency python-multipart to v0.0.18 [security] (#14458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 22:00:01 +00:00
renovate[bot]
7cae25c28b chore(deps): update prom/prometheus docker digest to 565ee86 (#14535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 15:59:45 -06:00
vladd11
f6909a3b11 chore(docs): add Kodi plugin for Immich to the Community Projects list (#14586) 2024-12-10 15:58:14 -06:00
Alex
70b4647a21 chore(mobile): post release tasks (#14603) 2024-12-10 21:55:59 +00:00
Matthew Momjian
345f918784 chore(docs): stronger discouraging of non-Linux installations (#14620)
* no windows!

* 2

* 3

* Update docs/docs/install/requirements.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update requirements.md

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-12-10 16:42:45 -05:00
Mert
9eff1c4b34 refactor(server): move filters to getByDayOfYear query (#14628)
move filters to getByDayOfYear query
2024-12-10 16:22:47 -05:00
Mert
25ca3b1124 refactor(server): use includeNull in query for search suggestions (#14626)
* use `includeNull`

* push down `includeNull` into query, inner joins

* remove filter

* update sql

* fix tests

* maybe fix e2e

* more e2e tests

* handle no exif row

* whoops

* update sql
2024-12-10 16:22:37 -05:00
Mert
60c783bbe9 fix(server): partial fallback for hardware transcoding (#14611) 2024-12-10 12:11:19 -05:00
Lukas
1ba622adc9 feat: Add support for vob (#14590)
Add support for vob
2024-12-08 20:35:23 -06:00
Daniel Dietzler
e4b76e8efe chore: add language requests from weblate (#14578) 2024-12-08 17:52:10 -06:00
github-actions
03eb5903fe chore: version v1.122.2 2024-12-08 23:41:22 +00:00
Alex
04b311bd93 chore(mobile): disable Impeller (#14589) 2024-12-08 23:22:39 +00:00
Cotterman-b
e99edc47b7 fix(mobile): fix translations on search page (#14533)
* Update en-US.json

* Update search.page.dart
2024-12-07 10:46:19 -06:00
Michel Heusschen
5e955a1b03 fix(web): recent albums sort (#14545) 2024-12-07 10:24:00 -06:00
renovate[bot]
e2b36476e7 chore(deps): update grafana/grafana docker tag to v11.3.1 (#14476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 21:10:47 -05:00
Alex
c02e3e2a2e chore(mobile): post release tasks (#14520) 2024-12-06 21:04:02 -05:00
github-actions
97c1eb7289 chore: version v1.122.1 2024-12-06 13:49:14 +00:00
Mert
07096bdcee fix(server): images with non-ascii names failing to load (#14512)
* utf-8 filename

* Update file.ts

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-12-06 07:43:58 -06:00
renovate[bot]
d36477381a chore(deps): update dependency @sveltejs/kit to v2.8.3 [security] (#14342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 19:31:27 -05:00
Alex
4380ecf7bb fix(web): misaligned icon on Firefox (#14500) 2024-12-05 21:10:08 +01:00
github-actions
37220a342a chore: version v1.122.0 2024-12-05 16:29:46 +00:00
Alex
5e662e4a93 chore(mobile): Translations update (#14493)
chore(mobile): translation update
2024-12-05 16:26:48 +00:00
Weblate (bot)
bb0242ae0a chore(web): update translations (#14255)
Co-authored-by: Alisher Nabiev <alisher.nabiev@gmail.com>
Co-authored-by: Armand Maree <aamaree@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Daniel <danielwichers@gmail.com>
Co-authored-by: Dean Cvjetanović <forteee@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Enrico Zangrando <enrizangri@gmail.com>
Co-authored-by: Eugenio Marotta <eugeniomarotta1961@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Jonathan <translate@lacroix.red>
Co-authored-by: João Pedro Grugel <joaopedrorg97@hotmail.com>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Koen <62koen@users.noreply.hosted.weblate.org>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Marco Lampis <lampis.marco2000@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Max <mail@heavygale.de>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mickaël Descamps <mickael.descamps@mineyou.fr>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: OskarSidor <oskar.sidor@gmail.com>
Co-authored-by: Paweł <pawel.kozicki01@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Ramazan S <ramazansancar4545@gmail.com>
Co-authored-by: Rasulmmdv <rasul1995@live.com>
Co-authored-by: Rookie Nguyễn <nguyenquocthang2004@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Stijn <gielisstijn@gmail.com>
Co-authored-by: Stsiapan Ranchynski <stsiapan.ranchynski@gmail.com>
Co-authored-by: Suryo Wibowo <nutzlichsein+github@gmail.com>
Co-authored-by: Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Theofilos Nikolaou <th.nikolaou@gmail.com>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Viliam <hrygames@gmail.com>
Co-authored-by: Vladislav Tkalin <mrtold11@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: bill85101 <bill85101@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: mitakskia <spammitakskia@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: stelle <itsazripp2@gmail.com>
Co-authored-by: therry47 <soulietherry@gmail.com>
Co-authored-by: tomechio <tomasz@salamon.fi>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Ömer Efe ÇELİK <omerefecelik3@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
2024-12-05 16:11:02 +00:00
Alex
055f1fc72f feat(mobile): Auto switching server URLs (#14437) 2024-12-05 09:11:48 -06:00
shenlong
3c38851d50 feat(mobile): native_video_player (#12104)
* add native player library

* splitup the player

* stateful widget

* refactor: native_video_player

* fix: handle buffering

* turn on volume when video plays

* fix: aspect ratio

* fix: handle remote asset orientation

* refinements and fixes

fix orientation for remote assets

wip separate widget

separate video loader widget

fixed memory leak

optimized seeking, cleanup

debug context pop

use global key

back to one widget

fixed rebuild

wait for swipe animation to finish

smooth hero animation for remote videos

faster scroll animation

* clean up logging

* refactor aspect ratio calculation

* removed unnecessary import

* transitive dependencies

* fixed referencing uninitialized orientation

* use correct ref to build android

* higher res placeholder for local videos

* slightly lower delay

* await things

* fix controls when swiping between image and video

* linting

* extra smooth seeking, add comments

* chore: generate router page

* use current asset provider and loadAsset

* fix stack handling

* improved motion photo handling

* use visibility for motion videos

* error handling for async calls

* fix duplicate key error

* maybe fix duplicate key error

* increase delay for hero animation

* faster initialization for remote videos

* ensure dimensions for memory cards

* make aspect ratio logic reusable, optimizations

* refactor: move exif search from aspect ratio to orientation

* local orientation on ios is unreliable; prefer remote

* fix no audio in silent mode on ios

* increase bottom bar opacity to account for hdr

* remove unused import

* fix live photo play button not updating

* fix map marker -> galleryviewer

* remove video_player

* fix hdr playback on android

* fix looping

* remove unused dependencies

* update to latest player commit

* fix player controls hiding when video is not playing

* fix restart video

* stop showing motion video after ending when looping is disabled

* delay video initialization to avoid placeholder flicker

* faster animation

* shorter delay

* small delay for image -> video on android

* fix: lint

* hide stacked children when controls are hidden, avoid bottom bar dropping

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-12-04 16:03:46 -05:00
Tim Van Onckelen
5060ee95c2 feat(web): Album preview overview in menu (#13981) 2024-12-04 20:38:55 +00:00
Tim Van Onckelen
292182fa7f feat: Notification Email Templates (#13940) 2024-12-04 20:26:02 +00:00
Mert
4bf1b84cc2 feat(ml): support multiple urls (#14347)
* support multiple url

* update api

* styling

unnecessary `?.`

* update docs, make new url field go first

add load balancing section

* update tests

doc formatting

wording

wording

linting

* small styling

* `url` -> `urls`

* fix tests

* update docs

* make docusaurus happy

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-12-04 20:17:47 +00:00
Alessandro Piccin
411878c0aa fix(mobile): album most recent sorting on mobile (#13766)
* Fix album most recent sorting on mobile

* fix: format

* fix: format

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-12-04 19:53:55 +00:00
Mert
ba9b9353bc fix(server): show people without thumbnails (#14460)
* show people without thumbnails

* redundant clause

* updated sql
2024-12-03 15:04:42 -05:00
Mert
52247c3650 fix(server): always set transcoding device, prefer renderD* (#14455)
always set device, prefer renderD*
2024-12-02 20:28:50 -05:00
System Tester
ba71fd42da chore(mobile): added 'corrupt asset check' translation item (#14402) 2024-12-02 12:14:12 -06:00
Alex
1bb6926b5e chore(mobile): Add const linter (#14447) 2024-12-02 15:33:44 +00:00
Eli Gao
4eb7758f56 feat(server): specify names for thumbnail files (#14425) 2024-12-01 13:21:08 -06:00
System Tester
56d2309122 fix: ConnectivityResult.wifi regression (#14401) 2024-11-28 22:34:18 -06:00
Michel Heusschen
3d61548d7d fix(web): resolve issues with user usage statistics and refactor (#14374) 2024-11-27 07:45:52 -06:00
Alex
b4c96a09fb chore: follow up on auth refactoring (#14367)
* chore: follow up on auth refactoring

* remove async
2024-11-26 13:36:12 -06:00
Alex
21f14be949 chore(mobile): refactor authentication (#14322) 2024-11-26 12:43:44 -06:00
Sam Holton
5417e34fb6 feat(server): Add publicUsers toggle for user search (#14330)
* feat(server): Add publicUsers toggle for user search

* tests

* docs: add check:typescript for web PR checklist

* return auth.user when publicUsers is false - app testing

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-26 15:51:01 +00:00
Michel Heusschen
b6ec79cbdd fix(web): timeline issues on person page (#14366) 2024-11-26 15:02:48 +00:00
Matthew Momjian
25488b3138 chore(deployment): cleanup database container args, move to using internal container ENV vars (#14352)
* cleanup docker, normalize variable use

* newline

* semicolons
2024-11-26 08:59:56 -06:00
Alex
361d83c729 feat(web): dedicated view for user's usage stats (#14348)
* feat(web): dedicated view for user's usage stats

* cell heights

* Translation

* pr feedback

* clean up

* clean up

* pr feedback
2024-11-26 14:59:47 +00:00
Calum Dingwall
d277096d58 feat(web): persist scroll position on navigation back to album (#11388)
Co-authored-by: Calum Dingwall <caburum@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-25 18:16:42 +00:00
Michel Heusschen
51de108d43 chore(web): restore type checks and IDE autocomplete for $t('...') (#14343) 2024-11-25 11:10:12 -07:00
Michel Heusschen
ca37a13b25 fix(web): stack preview remains visible in asset viewer (#14341) 2024-11-25 16:34:48 +00:00
Michel Heusschen
447ff6fcb3 fix(web): clear combobox value when selectedOption is undefined (#14334) 2024-11-25 08:14:21 -06:00
renovate[bot]
b9e98d2706 chore(deps): update dependency flutter to v3.24.5 (#14332)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 04:20:00 +00:00
Michel Heusschen
c33b918d74 refactor(web): folders store (#14305)
* refactor(web): folders store

* use typescript private
2024-11-23 13:22:13 -06:00
Michel Heusschen
454836b551 fix(web): make custom css textarea optional (#14303) 2024-11-23 13:20:30 -06:00
Alex
6d492985a2 fix(web): cannot upload folder with more than 100 files (#14284)
* fix: web cannot upload folder with more than 100 files

* recursively call the function

* async/do/while
2024-11-22 22:38:20 +00:00
San
1c82804f63 fix(server): use hw decoding for rkmpp w/o OpenCL if possible (#13848)
* Set hardware decoding options for rkmpp when hardware decoding is enabled with no OpenCL on non-HDR file

* Use hw decoding, sw tone-mapping on HDR files using RKMPP w/o OpenCL

* fallback to software decoding if is hdr video

* if hw decoding failed with hw dec config enabled, try sw dec+hw enc first, then full sw dec+enc

* fix unit test

* fix format, adjust log message

* formatting

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-11-22 08:08:49 +00:00
Matthew Momjian
1935b88d13 docs: clarify/strengthen wording of PG deployment requirements (#14294)
* clarify/strengthen PG wording

* 2

* oops

* Update requirements.md

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-11-22 05:53:47 +00:00
dvbthien
e8da6604c9 refactor(mobile): refactor to use context helpers for consistency (#14235)
refactor to use context helpers for consistency

Co-authored-by: dvbthien <dvbthien@gmail.com>
2024-11-21 09:35:58 -06:00
renovate[bot]
45ba0cc3ac fix(deps): update typescript-projects (#13939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-11-21 14:07:06 +00:00
Rudolf Horváth
689c6aa276 docs: add developer notes about rootless docker setup (#13250) 2024-11-21 12:25:45 +00:00
Alex
6ec94f94f1 feat: show delete album option in empty album (#14271)
* fix: show delete album option in empty album

* remove unused code
2024-11-20 17:17:21 -06:00
Alex
9a9d40c193 feat(server): clean up interrupted upload files (#14265)
* feat(server): clean up interrupted upload files

* pr feedback

* remove console.log

* handle all errors

* remove return in callback function

* programming in bed is a bad idea
2024-11-20 17:17:12 -06:00
Jason Rasmussen
9e1e9b1fbf refactor: rename searchMetadata to searchAssets (#14151) 2024-11-20 14:47:25 -05:00
Jason Rasmussen
ed8a3101a8 chore: update dev ports (#14256) 2024-11-20 14:44:19 -05:00
Jason Rasmussen
876893c823 refactor(server): filter on-event handlers by worker (#14085) 2024-11-20 14:08:42 -05:00
renovate[bot]
c6e1dbec5c chore(deps): update base-image to v20241119 (major) (#14253)
chore(deps): update base-image to v20241119

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 14:05:39 -05:00
renovate[bot]
f40269bc3e chore(deps): update node.js to b64ced2 (#14218)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 14:05:06 -05:00
Alex
95297cd024 chore(mobile): post release tasks (#14259) 2024-11-20 14:04:33 -05:00
Lukas
b6937c5e03 fix(server): Remove log that accidently was commited in #14134 (#14261)
Remove log that accidently was commited
2024-11-20 17:20:54 +00:00
github-actions
98c9ae1f7d chore: version v1.121.0 2024-11-20 16:15:53 +00:00
Weblate (bot)
1d8673eb3b chore(web): update translations (#13952)
Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Antonio <antonioivanovski@gmail.com>
Co-authored-by: Benjamin Ulstein <ben@ulsteinmedia.no>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: IM Ben <beniiorga@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jak97 <mneamtu74@gmail.com>
Co-authored-by: Jan Marten <kontakt@janmarten.dev>
Co-authored-by: Jaroslav Lichtblau <l10n@lichtblau.cz>
Co-authored-by: Ján Melíšek <melisek.janko@gmail.com>
Co-authored-by: Koen <62koen@users.noreply.hosted.weblate.org>
Co-authored-by: Krastyo Krastev <roshavi4ak@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mehyar <mashkuov@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Noisy Fridge <pureprince.habib@gmail.com>
Co-authored-by: Peter Petrík <peter.petrik.fefe@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Samet Güzeldemirci <s.g52@gmx.de>
Co-authored-by: Sander Brilman <brilmansander@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Theofilos Nikolaou <th.nikolaou@gmail.com>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: Tomasz Jakubik <jakubik.tomasz@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: aquatic7 <aquatic7@protonmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: iamnotafatso <ee.chuajr@live.com>
Co-authored-by: kawinhill <kawinhill1112@gmail.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: krzemyk <krzemyk.official@proton.me>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: timmy61109 <qazzxcasdqwewsxedc@gmail.com>
Co-authored-by: tuanhm107 <mtuanm03@gmail.com>
Co-authored-by: vassilismarougkas <billmarougkas@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-11-20 15:40:54 +00:00
Alex
026482099a chore(mobile): translations update (#14254)
chore(mobile): translation update
2024-11-20 15:32:17 +00:00
Shivansh Saini
c17c174149 docs: backup only selected photos (#14225)
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-11-20 15:19:01 +00:00
renovate[bot]
cfba7f7701 chore(deps): update terraform cloudflare to v4.46.0 (#14112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 15:10:29 +00:00
Mert
ad510dd6fd feat(server): faster geodata import (#14241)
* faster geodata import

* revert logging change

* unlogged tables

* leave spare connection

* use expression index instead of generated column

* do btree indexing with others
2024-11-20 08:57:14 -06:00
Daniel Dietzler
a3712e40bd fix: parse quota claim as number (#14178) 2024-11-19 15:40:56 -06:00
Mert
34fae31fd4 fix(server): remove unnecessary guc settings for vector search (#14237)
remove unnecessary guc settings
2024-11-19 15:37:39 -06:00
Alex
f8bbc6eabe fix: mobile album sync always triggered when opening the app (#14233)
* fix: mobile album sync always triggered when opening the app

* send lastModifiedAssetTimestamp when get individual album
2024-11-19 21:36:55 +00:00
weathondev
69e50d0d27 feat: Added shortcuts, shift-multi select and missing menu options to Search (Galleryviewer) (#14213)
feat: Added shortcuts, shift-multi select and missing menu options to GalleryViewer (Search, Share, Memories)

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-19 18:19:50 +00:00
John Stef
3a2e30e30e fix(mobile): fixes on language change (#14089)
* fix(mobile): make widgets rebuild on locale changes

This will make the make the pages to instantly refresh the correct
translated string, without the need to pop and push the settings page.

* fix(mobile): set the default intl locale

This is needed because across the app, you don't pass the context.locale
to DateFormat, so by default it uses the system's locale. This will fix
the issue without the need to refactor a lot of code.

* feat(mobile): create localeProvider

This provider can be used to refresh providers that provide UI elements
and get cached.

* fix(mobile): refresh asset providers on locale change

This is necessary to update the locale on the already evaluated
DateFormat.

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-19 12:09:29 -06:00
John Stef
53940f7d42 fix(mobile): make search page scrollable (#14228)
Fixes #13657
2024-11-19 17:59:26 +00:00
Alex
b66c53bef3 fix(web): layout shifting when scrolling up (#14226)
* fix(web): layout shifting when scrolling up

* feedback
2024-11-19 11:30:07 -06:00
Braydon Davis
1737013e66 feat(web): Implement keep this delete others for asset stacks (#14217) 2024-11-19 11:54:35 -05:00
John Stef
bcd17c2ebe feat(mobile): exclude locales from overpass font (#14158)
* feat(mobile): create localeProvider

This provider can be used to refresh providers that provide UI elements
and get cached.

* feat(mobile): use default font for locales not supported by Overpass

* chore(mobile): fix test

* refactor(mobile): use Locale instead of String
2024-11-19 09:36:46 -06:00
renovate[bot]
b031a8cac1 fix(deps): update machine-learning (#14219) 2024-11-18 20:17:18 -05:00
John Stef
41f138d3c8 fix(mobile): Dismissible menus (#14192)
* chore(mobile): make all search filters dismissible

* chore(mobile): make ImmichAppBarDialog dismissible

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-18 10:06:07 -06:00
Mert
6b5defc27b fix(mobile): use sets in album refresh, concurrent futures (#14193)
* use sets in album sync, concurrent futures

* batch excluded asset IDs

* update test

* take advantage of sets in Recents check

* move log statement

* smaller diff
2024-11-18 09:26:23 -06:00
renovate[bot]
2604940f09 chore(deps): pin mcr.microsoft.com/devcontainers/typescript-node docker tag to dc2c365 (#14124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 14:57:43 +01:00
Michel Heusschen
32f908baf1 fix: show tags when viewing stacked assets (#14199)
fix: refresh tags when viewing stacked assets
2024-11-18 07:50:04 -05:00
Mert
944ea7dbcd fix(mobile): unnecessary rebuilds from partner share notifier (#14170)
* fix unnecessary notifications

* move equality function

* sort by id

* use same comparison for initial and later queries
2024-11-17 12:04:55 -05:00
Matthew Momjian
4b5657c21e docs: get asset owner by ID from database (#14174)
asset owner
2024-11-16 14:43:32 -05:00
weathondev
f5c4af73aa feat: adding photo & video storage space to server stats (#14125)
* expose detailed user storage stats + display them in the storage per user table

* chore: openapi & sql

* fix: fix test stubs

* fix: formatting errors, e2e test and server test

* fix: upper lower case typo in spec file

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-11-15 16:38:57 -06:00
Michel Heusschen
24ae4ecff1 fix(web): don't refresh panorama viewer when modifying asset (#14163) 2024-11-15 16:30:38 -06:00
Michel Heusschen
64a7baec8c refactor(web): remove reactivity triggers (#14164) 2024-11-15 16:28:28 -06:00
Mert
caf6c0996d refactor(mobile): backup info box (#14171)
split up backup info box into separate widgets
2024-11-15 17:16:52 -05:00
Lena Tauchner
6729782c3f fix(cli): Concurrency not fully using queue potential (#11828) 2024-11-15 13:09:56 -05:00
Michel Heusschen
a60209db3e fix(web): prevent infinite loop when modifying stacked asset (#14162) 2024-11-15 07:16:56 -05:00
renovate[bot]
d1169e3b2f chore(deps): update prom/prometheus docker digest to 3b9b2a1 (#14154)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 18:56:37 -05:00
Ben
df972ef711 feat(web): Added tag button to the context menu in the favorites page (#14156)
Added tag action to the context menu in the favorites page when selection is active
2024-11-14 16:06:36 -06:00
Alex
33263cf9f3 fix(mobile): Android local notification failes to invoke (#14155)
* fix(mobile): local notification failed to invoke

* add proguard rules
2024-11-14 16:05:32 -06:00
Michel Heusschen
1b5811d992 fix(web): allow selecting people after clearing search options (#14146) 2024-11-14 09:59:50 -06:00
Michel Heusschen
1fa0122eda fix(web): update description height when navigating between assets (#14145) 2024-11-14 09:59:30 -06:00
Alex
d1085e8a02 chore(web): move enum out of .svelte file (#14144)
* chore(web): clean up todo task

* chore(web): move enums out of .svelte file
2024-11-14 15:41:11 +00:00
Michel Heusschen
d6a70bc7e5 fix(web): saving pasted coordinates (#14143) 2024-11-14 15:21:40 +00:00
Michel Heusschen
d3fe238eef fix(web): ensure current asset index stays within bounds (#14013) 2024-11-14 09:05:36 -06:00
Pranay Pandey
35f24270fe fix: Routing back button in sharedLinks page (#13703)
* fix: go back to last page from shared links page. Handle albums page from shared links page routing

* add default route for sharing

* chore: remove redundant import

* remove unnecessary comment

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-11-14 15:00:33 +00:00
Đức
1f1a4ab1a3 fix(web): textarea autogrow height (#13983)
fix(web): remove album assetGridWidth & globalWidth

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-11-14 15:00:18 +00:00
Alex
0b3742cf13 chore(web): migration svelte 5 syntax (#13883) 2024-11-14 08:43:25 -06:00
Lukas
9203a61709 fix(server): Some MTS videos fail to generate thumbnail (#14134)
* Stop skipping of all frames in MTS video

* Only skip flag for mts videos

* Fix lint checks

* Adds test

* Add comment for why flag is removed
2024-11-14 07:07:04 +00:00
Mert
11403abfbc feat(mobile): new video slider ui (#14126) 2024-11-13 19:49:25 -05:00
mcarbonne
5a2af558fb feat: add minimal devcontainer setup (#14038)
* add minimal devcontainer setup

* fix Makefile & update doc

* fix Makefile

* add warning regarding devcontainer + add newline at EOF
2024-11-13 11:28:07 -06:00
John Stef
de993289ad fix(mobile): fix logout timeout (#14104)
* fix(mobile): add timeout to logout

* chore(mobile): refactor timeout durations

* feat(mobile): add loading state to logout button

* chore(mobile): format authentication.provider.dart

* chore: format

* chore: revert settings.json change

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-13 17:27:49 +00:00
Nicholas Flamy
c58bd307ce docs: Update TrueNAS docs for TrueNAS SCALE 24.10 (#14067)
* initial-docs-update

* add-info-about-external-libraries
2024-11-13 11:26:23 -06:00
Pablo Molina
333ca8827e feat: use dateTimeOriginal to calculate album date (#14119) 2024-11-13 11:17:14 -06:00
Alex
3dad19883d fix(mobile): duration ui overflow (#14120)
* fix(mobile): duration ui overflow

* pr feedback
2024-11-13 09:39:21 -06:00
renovate[bot]
4ca27a3e7f chore(deps): update redis:6.2-alpine docker digest to eaba718 (#14114)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 07:12:30 -05:00
renovate[bot]
b0bb11f9e0 chore(deps): update docker.io/redis:6.2-alpine docker digest to eaba718 (#14113)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 07:12:06 -05:00
Xuesong
ecb8349085 chore(docs): encode db dump in UTF-8 without BOM for Windows (#13775) 2024-11-13 10:05:53 +00:00
Mert
e1feba2198 refactor(mobile): video controls (#14086)
* refactor video controls

* inline

* make mute icon const

* move placeholder to private widget

* adjust text width, move volume button slightly right
2024-11-13 01:13:21 -05:00
renovate[bot]
53a7ac3868 chore(deps): update prom/prometheus docker digest to 2659f4c (#13928)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 23:30:06 -05:00
dependabot[bot]
f2e950d89c chore(deps): bump ytanikin/PRConventionalCommits from 1.2.0 to 1.3.0 (#13051)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 01:27:37 +00:00
renovate[bot]
8ba2c99b08 chore(deps): update docker.io/redis:6.2-alpine docker digest to 77c6e37 (#14097)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 01:15:45 +00:00
renovate[bot]
93346496fc chore(deps): update redis:6.2-alpine docker digest to 77c6e37 (#14098)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 01:15:30 +00:00
Alex
a9525de356 chore(mobile): post release tasks (#14105) 2024-11-12 14:34:33 -05:00
github-actions
31a1e64b58 chore: version v1.120.2 2024-11-12 17:30:29 +00:00
Zack Pollard
e17bd8efc6 fix(server): backup version checks not handling database versions correctly (#14102) 2024-11-12 10:57:05 -06:00
Alex
2f9019c0e1 fix(server): correct rotation for common files (#14092)
* fix(server): correct rotation for common files

* fix: test:

* pr feedback
2024-11-12 15:07:56 +00:00
Zack Pollard
dfa8a8a6e1 feat(server): use pg_dumpall version that matches the database version (#14083) 2024-11-12 14:58:29 +00:00
renovate[bot]
b9a0c3c79f chore(deps): update base-image to v20241112 (major) (#14088)
chore(deps): update base-image to v20241112

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 12:49:31 +00:00
renovate[bot]
bda97c4e0e chore(deps): update node (#14090)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 07:32:52 -05:00
Robert Schütz
e3426c880f chore(ml): replace fastapi-slim with fastapi (#14091)
The two have been identical since version 0.112.0:
https://github.com/fastapi/fastapi/discussions/11525#discussioncomment-10219861
2024-11-11 23:08:29 -05:00
Zack Pollard
d4ca7d0075 fix: config updates not applying for job and storage template service (#14074) 2024-11-11 12:50:09 +00:00
Zack Pollard
f1c9b763cf docs: backup folder name is backups (#14073) 2024-11-11 12:28:53 +00:00
Zack Pollard
5097c92494 fix(server): attempt to delete failed backups immediately after failure (#13995) 2024-11-11 12:08:52 +00:00
gamescom15
7aacc92699 docs: clarify file size impact in hardware-transcoding.md (#14049) 2024-11-11 03:51:00 +00:00
Daniel Dietzler
00d6cc86ad chore: add weblate requests (#14051) 2024-11-10 15:49:23 -05:00
Joren Guillaume
54d881e5c6 docs: Fix DCM docs link (#14059)
Fix DCM docs link
2024-11-10 13:33:51 -05:00
Snowknight26
edce096680 chore(web): Update the new version announcement text (#14001)
* Update en.json

* Update en.json

* Update en.json
2024-11-09 12:15:25 -06:00
mcarbonne
5c31acbcf0 feat(web): stable json settings export (#14036)
* recursively sort json output (settings)

* fix format/lint/...g
2024-11-09 12:11:20 -06:00
Alex
6b49104d59 fix(mobile): make sure date locale is inititialized for some languages (#14035) 2024-11-09 10:40:13 -05:00
Ben
97dbe3236b chore(docs): roadmap SEO (#14024) 2024-11-08 19:48:23 -05:00
Michel Heusschen
586393f178 fix(web): use locale for scrubber label when scrolling (#14012) 2024-11-08 15:36:26 -05:00
bo0tzz
f3e88ea2fa docs: make IGNORE_MOUNT_CHECK warning stronger (#14011) 2024-11-08 13:29:10 +00:00
Terry Zhao
c8b46802d6 fix(server): thumbnail rotation when using embedded previews (#13948) 2024-11-08 06:30:59 +00:00
Jason Rasmussen
7534098596 fix(server): support non-default postgres port when taking a backup (#13992) 2024-11-07 20:06:16 +00:00
Zack Pollard
ec5b7c266b chore: backups custom location and config file docs (#13996) 2024-11-07 18:08:02 +00:00
Jason Rasmussen
e84ad084d5 refactor(server): cron validation (#13990) 2024-11-07 17:27:52 +00:00
Jason Rasmussen
dc2de47204 refactor(server): cron repository (#13988) 2024-11-07 12:15:54 -05:00
Alex
2fe6607aea chore(mobile): post release tasks (#13989) 2024-11-07 10:27:28 -06:00
Jason Rasmussen
64831e2328 refactor: remove smart info table (#13985) 2024-11-07 11:25:10 -05:00
Alex
6053214e75 chore(mobile): update isar build (#13987) 2024-11-07 09:54:19 -06:00
github-actions
599b489f81 chore: version v1.120.1 2024-11-07 15:31:19 +00:00
Jason Rasmussen
0b98c5e3c4 fix(web): time zone dependent test (#13859) 2024-11-07 10:05:55 -05:00
Alex
b238b69689 fix(mobile): video player not playing in full size on Android (#13986) 2024-11-07 15:04:20 +00:00
Jason Rasmussen
decbc741e2 docs: update roadmap (#13984) 2024-11-07 09:24:21 -05:00
Sefa Eyeoglu
564449a555 fix(server): database backups compatible with deduplication (#13965)
gzip --rsyncable has a slightly worse compression ratio, but allows for
efficient deduplication and, as the name implies, faster rsync
operations.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-11-07 12:36:17 +00:00
Robert Schütz
f4741c70f3 fix(server): allow starting backup through API and fix pg_dumpall args when using database URLs (#13970)
* fix(server): allow starting backup through API

* fix(server): fix pg_dumpall args when using database URLs

The database has to be specified using `-d`, unlike for pg_dump.
2024-11-07 11:57:36 +00:00
yodatak
be2b76be8c docs: add backups to startup folders list (#13967)
Add the check of backups that is done on immich microservice of backups folder presence
2024-11-07 04:18:14 +00:00
Alex
cff0b95f4c chore(mobile): post release task (#13954) 2024-11-06 17:57:45 -05:00
Daniel Dietzler
1321a393c1 docs: 50k stars (#13964) 2024-11-06 22:49:18 +01:00
bo0tzz
a9fc840d65 chore: tidy up backup-and-restore.md (#13961) 2024-11-06 22:18:55 +01:00
Alex
ebf06dc12e fix(server): cannot render email template (#13957) 2024-11-06 22:14:11 +01:00
Thariq Shanavas
8d8becd0f7 docs: Added a note about avoiding redundant database backups (#13958)
* Add note about built-in backups

* npm run format:fix
2024-11-06 15:09:53 -06:00
slamp
3b5f5ec57a docs: improve custom-locations wording to be easier to read (#13849)
* Improve wording to make it easier to read custom-locations.md

It's only grammatical change

* Update docs/docs/guides/custom-locations.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update custom-locations.md

Revert to 'because of' and remove 'hard drive'

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-11-06 19:49:23 +00:00
Daniel Dietzler
b29e4ec39f fix: docker link (#13956) 2024-11-06 13:45:52 -06:00
github-actions
f1b8a9374f chore: version v1.120.0 2024-11-06 16:17:29 +00:00
Weblate (bot)
497b3d995e chore(web): update translations (#13810)
Co-authored-by: Benjamin Freeman <b.t.freeman16@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Carl Dressler <cstmth@gmail.com>
Co-authored-by: Diego Saint Esteben <diego@saintesteben.me>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Dragonslayer <chybzik@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Iwwww <mike.yolgin@gmail.com>
Co-authored-by: JBP <weblate@1peer1boom.nl>
Co-authored-by: Jonas Grubbauer <nicjontrickshots@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Kamil Warczek <kamilwarczek@gmail.com>
Co-authored-by: Kovács Ádám <kovaszftw@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Mehmet Numan Çam <mncam051@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Polly Julien <julien.polly@laposte.net>
Co-authored-by: Rastislav Simcisko <21sd95@gmail.com>
Co-authored-by: Samet Güzeldemirci <s.g52@gmx.de>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: T.Nikolaou <tnikolaou@users.noreply.hosted.weblate.org>
Co-authored-by: TheGothian <github@dreamstate.nu>
Co-authored-by: fmis13 <fmis13@disroot.org>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: qtm <qtm@users.noreply.hosted.weblate.org>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: xxzp3 <oliver@bastholm.dk>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-11-06 14:45:59 +00:00
Alex
9fd425dd5c chore(mobile): translation update (#13942) 2024-11-06 08:37:39 -06:00
Matthew Momjian
442d4e5e1c docs: fail2ban community project (#13943)
fail2ban
2024-11-05 21:19:12 -06:00
renovate[bot]
7134d26a19 chore(deps): update base-image to v20241105 (major) (#13826) 2024-11-05 21:24:36 +00:00
renovate[bot]
42ee7f1290 chore(deps): update typescript-projects (#13922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-11-05 20:04:39 +00:00
renovate[bot]
5d7a04367c chore(deps): update dependency @types/node to ^22.8.6 (#13937)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-05 14:28:13 -05:00
Alex
06e0ba29f8 chore(web): scrubber animation (#13936)
* chore(web): scrubber animation

* minor styling
2024-11-05 13:55:20 -05:00
Alex
b36de7d7d4 chore(mobile): upgrade gradle (#13901)
* chore(mobile): upgrade gradle

* update photo_manager

* migrate from kapt to ksp

pumps kotlin and other dependency version to fix build issues

* increase java heap size

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-11-05 10:34:24 -06:00
Zack Pollard
d456d35510 refactor: config init event for first config load (#13930) 2024-11-05 16:30:56 +00:00
Zack Pollard
c383e115af chore: better observability for geodata import (#13931) 2024-11-05 16:20:56 +00:00
Jason Rasmussen
5edbb93a4d refactor(server): get worker (#13927) 2024-11-05 13:07:51 +00:00
renovate[bot]
1d55b5bfc0 chore(deps): update dependency @types/node to ^22.8.5 (#13923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-05 06:48:01 -05:00
renovate[bot]
60afd7b400 chore(deps): update node (#13918)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 19:52:23 -05:00
renovate[bot]
3f99ef90ec fix(deps): update machine-learning (#13919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 19:50:17 -05:00
Pranay Pandey
380fc06979 fix: remove duplicateIds on unique assets (#13752) 2024-11-04 10:03:03 -05:00
renovate[bot]
d34d92dca3 fix(deps): update dependency exiftool-vendored to v28.7.0 (#13790)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 12:49:21 +00:00
Daniel Dietzler
3551407d95 fix: healthcheck if custom host is set (#13887) 2024-11-02 22:46:16 -04:00
cfitzw
6bfc20ef95 feat: render asset path (#13873)
render asset path
2024-11-02 13:27:40 -05:00
Daniel Dietzler
eadcbd52fb chore: svelte 5 🎉 (#13738)
chore: svelte 5

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
2024-11-02 10:49:07 -05:00
Jason Rasmussen
fed882a28a refactor(server): immich worker (#13871)
refactor(server): immich work
2024-11-01 17:19:36 -04:00
Carsten Otto
cdabd08139 fix(server): wrong image dimensions for RAW files (RAF, CR2) (also fixes face preview) (#13377) 2024-11-01 10:34:34 -04:00
Yashraj Jain
b95bc32310 fix(mobile): do not removed not backup asset when selecting the correspond options (#13256)
* fixed the local ids selecting issue

* code: updated impl inside deleteLocalOnlyAssets

* fix: used png instead of jpg to maintain picture quality

* Revert "fix: used png instead of jpg to maintain picture quality"

This reverts commit 04f2ed54e4.

* fix: update logic from code-review perspective

* refractor (mobile) : Dart fix applied

* fix (mobile) : Updated multi grid as per requirement

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-11-01 09:03:03 -05:00
Mert
b9096f3e99 feat(server): use tonemapx for software tone-mapping (#13785) 2024-10-31 20:48:23 -04:00
Alex
5ac236d6fd chore(mobile): update flutter_web_auth (#13863) 2024-10-31 17:35:01 -05:00
renovate[bot]
458f2acf42 chore(deps): update flutter (#13455)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-31 17:53:26 +00:00
Jason Rasmussen
5b2cd704d3 refactor(server): job discovery (#13838)
refactor(server): job discorvery
2024-10-31 13:42:58 -04:00
Alan Grainger
0130052de5 chore(docs): Add Immich Public Proxy to the Community Projects list (#13836)
Update community-projects.tsx

Add Immich Public Proxy to Community Projects
2024-10-31 17:24:11 +00:00
Zack Pollard
16027678ee chore: move library settings cron expression to setting select element (#13856) 2024-10-31 15:06:53 +00:00
Alex
343cdcfeed fix(mobile): not throwing error when cannot parse orientation value (#13853)
* fix(mobile): not throw when error in parsing the orientation

* fix(mobile): not throw when error in parsing the orientation

* linting
2024-10-31 09:37:02 -05:00
renovate[bot]
a28b92b3cc chore(deps): update dependency node to v22 (#13855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-31 14:21:45 +00:00
renovate[bot]
066682f48d chore(deps): update dependency @types/node to ^22.8.1 (#13854)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-31 14:20:26 +00:00
Zack Pollard
7d933ec97a feat: built-in automatic database backups (#13773) 2024-10-31 11:29:42 +00:00
dvbthien
30d42e571c fix(mobile): Reapply thumbnail image improvements and fix issue #13804 (#13835)
fix issue #13804

Co-authored-by: dvbthien <dvbthien@gmail.com>
2024-10-30 14:40:04 -05:00
Alex
318ab756cb fix(mobile): search page (#13833)
* fix(mobile): search page minor problems

* fix: flashing between search

* restore search size

* remove print statement

* linting
2024-10-30 14:27:13 -05:00
renovate[bot]
9d75c5b999 chore(deps): update typescript-projects (#13789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 15:03:32 -04:00
Jason Rasmussen
40fbef50cf refactor(server): remove unused on method (#13830) 2024-10-30 14:09:52 -04:00
renovate[bot]
7961435d36 fix(deps): update machine-learning (#13786) 2024-10-30 16:38:56 +00:00
renovate[bot]
92ad03615c chore(deps): update node to v22 (major) (#13792)
* chore(deps): update node to v22

* fix: deprecated constructor

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-10-30 16:05:02 +00:00
CanbiZ
33409a8cd0 chore(docs): update german readme to latest version (#13824)
* chore(docs): update german readme to latest version

* formatting
2024-10-30 12:02:05 -04:00
Alex
244c8cb4d4 feat(web): scrubber label and animation (#13815)
* feat(web): scrubber label and animation

* tune x fly in distance

* refactor

* lint and minor fix

* fly height
2024-10-30 14:38:35 +00:00
renovate[bot]
0d62ff11f1 chore(deps): update base-image to v20241029 (major) (#13821)
chore(deps): update base-image to v20241029

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 06:02:45 -04:00
renovate[bot]
ae2992a6d8 chore(deps): update terraform cloudflare to v4.45.0 (#13820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 05:14:16 -04:00
renovate[bot]
952c6be6ea chore(deps): update grafana/grafana docker tag to v11.3.0 (#13763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 05:09:19 -04:00
Jason Rasmussen
0f668fd5c6 refactor(server): env validation (#13817) 2024-10-30 05:00:41 -04:00
Jason Rasmussen
19eb3ed8b9 refactor(server): cls (#13814) 2024-10-29 20:41:47 +00:00
Jason Rasmussen
2efba6326d chore(server): telemetry env clean up (#13813) 2024-10-29 19:20:32 +00:00
Justin
0230dc284b feat(web): disable opening image and library sub-items by default (#13729)
Disable opening image and library sub-items by default

Disable both the Image Settings and the External Library sub-items by default. This aligns with auth other settings sub-items showing as collapsed by default.
2024-10-29 12:02:34 -05:00
Alex
a39a1cfffa fix(mobile): thumbnail not filled area on tablet (#13808) 2024-10-29 16:39:14 +00:00
Alex
f776e049e9 chore(docs): add feature to readme (#13794) 2024-10-29 11:26:57 -05:00
Jason Rasmussen
37e437a568 fix(server): keep system config transformations (#13796) 2024-10-29 15:59:35 +00:00
Zack Pollard
2c86da07c6 feat(web): library settings crontab link includes existing expression (#13807) 2024-10-29 15:51:00 +00:00
Jason Rasmussen
4b9e460db5 refactor(server): worker cleanup (#13805) 2024-10-29 11:47:33 -04:00
Alex
143ee0bc34 fix(mobile): Revert thumbnail image ui improvements (#13655) (#13806)
Revert "chore(mobile): thumbnail image ui improvements  (#13655)"

This reverts commit 16f2364e93.
2024-10-29 15:38:20 +00:00
Zack Pollard
68a4cc25dc refactor: better postgres connection param typing (#13800) 2024-10-29 15:11:34 +00:00
Zack Pollard
e74ddca6c0 fix: shutdown api process when another worker exits unexpectedly (#13802) 2024-10-29 14:46:04 +00:00
Zack Pollard
02819dc079 feat: mount checks on a folder level (#13801) 2024-10-29 14:43:27 +00:00
Weblate (bot)
6a011a4595 chore(web): update translations (#13688)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translation: Immich/immich

Co-authored-by: Amirul Asri <amirulasrix@gmail.com>
Co-authored-by: Dean Cvjetanović <forteee@gmail.com>
Co-authored-by: Diego Saint Esteben <diego@saintesteben.me>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hexie <hexterjexter@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Lab Forensic <recoverylabkor@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Max <mail@heavygale.de>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Napat Srichan <napatsrichan2001@gmail.com>
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: qtm <qtm@users.noreply.hosted.weblate.org>
Co-authored-by: tux2000 <tux2k@web.de>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-10-29 14:35:36 +00:00
Jason Rasmussen
e029190a5d fix(server): handle N/A duration response from ffprobe (#13803) 2024-10-29 14:21:30 +00:00
github-actions
00dd9419a5 chore: version v1.119.1 2024-10-29 13:33:36 +00:00
aviv926
96e97278d3 docs: Add info about album sync&folder view (#12371)
* Album Sync

* npm run format:fix

* fix path

* info about folder view

* Sync albums

* npm run format:fix

* Add information about limitations of a property that appears in multiple albums

* npm run format:fix

* - to ->

* Update docs/docs/features/mobile-app.mdx

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

* Update docs/docs/features/mobile-app.mdx

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

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-10-29 05:00:43 +00:00
Jevgeni Kiski
e1d968d1b3 docs: note about Nginx reverse proxy compatibility with Let's Encrypt (#13764)
* Nginx reverse proxy compatibility with Let's Encrypt

* Update reverse-proxy.md

* Update reverse-proxy.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Priority of = is higher

* Update reverse-proxy.md

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-10-28 23:48:09 -05:00
renovate[bot]
db69361f19 chore(deps): update stumpylog/image-cleaner-action action to v0.9.0 (#13788)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-28 23:47:54 -05:00
renovate[bot]
490fcc5591 chore(deps): update dependency @types/node to ^20.17.0 (#13787)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-28 21:55:44 -04:00
Alex
921b7cbc8d feat(web): add job action to search page result (#13784) 2024-10-28 22:50:08 +00:00
Alex
044c3e93f8 chore(mobile): post release task (#13779) 2024-10-28 16:12:35 +00:00
github-actions
8449e78c8f chore: version v1.119.0 2024-10-28 14:41:08 +00:00
Sweebah
f8a2bcee79 fix: Add DB_DATA_LOCATION config. (#13754)
Add DB_DATA_LOCATION config.

Posted [on reddit](https://www.reddit.com/r/unRAID/comments/1f8wq45/immich_install_via_docker_compose_database_cannot/).
2024-10-27 18:25:58 -05:00
bo0tzz
9204cd6a21 feat: github actions workflow to fix formatting (#13768) 2024-10-27 18:24:34 -05:00
Robert Schütz
988d527212 chore(ml): remove setuptools from dependencies (#13762) 2024-10-27 17:10:55 +00:00
Darrel
a70ed7c7f6 fix: X years ago ordering (#13742)
* fix: order by fileCreatedAt to account for tz

* run make sql
2024-10-26 15:28:33 -04:00
renovate[bot]
88d85eff0a chore(deps): update base-image to v20241025 (major) (#13736)
chore(deps): update base-image to v20241025

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-26 09:09:01 -04:00
Zack Pollard
d95b474e58 fix: duplicated library scan jobs and api server library watch (#13734) 2024-10-25 14:48:42 +01:00
Jason Rasmussen
43d18ccc36 refactor(server): user create logic (#13728) 2024-10-24 17:24:37 -04:00
Jason Rasmussen
fb995816a1 refactor(server): database config (#13730) 2024-10-24 17:12:25 -04:00
Daniel Dietzler
151ba9f1d9 refactor(server): telemetry env variables (#13705)
refactor(server)!: telemetry env variables

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-10-24 21:07:32 +00:00
Jason Rasmussen
bc06863d28 feat: track when assets are added to an album (#13725) 2024-10-24 15:45:00 -05:00
renovate[bot]
5d9b4b4532 chore(deps): update base-image to v20241024 (major) (#13719)
chore(deps): update base-image to v20241024

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-24 09:56:41 -04:00
automaton82
a1dd587590 fix(web): add crossorigin to link manifest for PWA (#13708)
Fix for 13695 add crossorigin to link manifest for PWA
2024-10-24 01:53:23 +00:00
Pranay Pandey
7e9fb5df5e fix(web): Add debouncing to the search popup form (#13684)
This will fix the bug where when we click on the second date picker just after selecting date in first date picker it closes the search popup form
2024-10-23 07:51:17 -05:00
Mert
1ec9a60e41 feat(ml): configurable batch size for facial recognition (#13689)
* configurable batch size, default openvino to 1

* update docs

* don't add a new dependency for two lines

* fix typing
2024-10-23 07:50:28 -05:00
Mert
a76c39812f fix(server): nan transcoding estimate (#13693)
fix nan transcoding estimate
2024-10-23 07:49:20 -05:00
renovate[bot]
c124cf9ace chore(deps): update typescript-projects (#13676)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 19:28:58 -04:00
renovate[bot]
110546bab2 chore(deps): update prom/prometheus docker digest to 378f4e0 (#13678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 19:24:38 -04:00
Mert
a93fda8e0d fix(server): add ld_library_path in start.sh (#13686)
add ld_library_path in start.sh
2024-10-22 18:41:59 -04:00
renovate[bot]
d455a547cc chore(deps): update base-image to v20241022 (major) (#13673)
chore(deps): update base-image to v20241022

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 18:41:10 -04:00
renovate[bot]
1ef2804d20 chore(deps): update dependency ruff to v0.7.0 (#13682) 2024-10-22 17:14:01 +00:00
Pranay Pandey
d40cbe4c5f feat: Use video thumbnail for GIF types (#13677) 2024-10-22 13:04:44 -04:00
Ben
e98acc976e chore: move weblate translations to root directory (#13604)
* chore: move translations to root directory

* chore: update build processes to work with new i18n location
2024-10-22 15:39:28 +00:00
Weblate (bot)
62e0658e5a chore(web): update translations (#13443)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: David S <weblate.arjy8@flexi.name>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Emre Saraçoğlu <hello@emresaracoglu.com>
Co-authored-by: Felipe Silva <dorsal-cobweb-life@duck.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Haris Solakidis <hsolakidis@yahoo.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jan Marten <kontakt@janmarten.dev>
Co-authored-by: Jef <weblate@whaw.eu>
Co-authored-by: Julio Cesar de jesus Boaventura <deusmeuprotetorsempre02@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Marc Cizeron <marc@cizeron.me>
Co-authored-by: Marco Kraft <marco77755.mk@gmail.com>
Co-authored-by: Max <mail@heavygale.de>
Co-authored-by: Maximos Prasinos <maxprasinos@gmail.com>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Miro Rýzek <miroslav.ryzek@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nandhakumar Subramanian <nandha.kumar790@gmail.com>
Co-authored-by: Nicolò <nicveronese@gmail.com>
Co-authored-by: Phannawich Jadpotwanich <phannawich1122@gmail.com>
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com>
Co-authored-by: Ron <goldenchocobo2007@yahoo.com>
Co-authored-by: Rupertas Riskus <rupertas_riskus@rapid7.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Szymon Dudzik <dudzik.dev@gmail.com>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: Vladislav Tkalin <mrtold11@gmail.com>
Co-authored-by: Vykintas Vyšniauskas <vykintasv@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: clementdelestre <clementdelestre@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: fa1seut0pia <git@falseu.io>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: lumppu <saukkolanerkki@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: tddaij <xdaint@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Данияр Чолпонкулов <zelenyilom@gmail.com>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
Co-authored-by: Оргил Пүрэвдорж <orgyldinio@proton.me>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
Co-authored-by: 이경복 <kblee0@gmail.com>
Co-authored-by: 전경재 <ppskj178@gmail.com>
2024-10-22 13:53:43 +00:00
renovate[bot]
0d4a18151d fix(deps): update dependency pydantic-settings to v2.6.0 (#13671) 2024-10-22 09:42:23 -04:00
Animesh Kotka
45c86e95e8 feat(web): allow changing shared user role in album options modal (#13654)
* enable user options suggestion as workaround in top option menu in 
shared album

* PR Review changes:
Function rename to handleUpdateSharedUserRole
2024-10-22 12:34:38 +00:00
CrushedAsian255
13d2febc33 feat(docs): add mention to purchase to support immich page (#13612) 2024-10-22 12:01:04 +01:00
renovate[bot]
0cb9c0d20d chore(deps): update dependency @types/node to ^20.16.12 (#13660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 11:58:43 +01:00
renovate[bot]
c6227b49ff fix(deps): update typescript-projects (#13662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 11:58:27 +01:00
renovate[bot]
84e6e276bf fix(deps): update machine-learning (#13661) 2024-10-21 22:21:38 -04:00
Jason Rasmussen
e6a666f1d3 refactor(server): telemetry (#13588)
refactor: telemetry
2024-10-21 23:52:30 +00:00
dvbthien
16f2364e93 chore(mobile): thumbnail image ui improvements (#13655)
improve ui for thumbnail image

Co-authored-by: dvbthien <dvbthien@gmail.com>
2024-10-21 16:36:15 -05:00
Mert
21d7cf6de6 chore(server): make date-time logs verbose (#13659)
make date-time logs verbose
2024-10-21 16:35:56 -05:00
Darrel
c77345637b chore(web): add tests for ChangeDate component (#13599)
* chore(web): setup tests for ChangeDate component

* chore(web): add tests for callback funcs with the right value

* chore(web): add tests for daylight saving time

* rename file properly

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-10-21 14:39:47 -04:00
polgarc
b7cd770831 docs: add warning to repair page (#13640)
* chore: remove repair docs

* add warning instead of remove
2024-10-21 14:39:28 -04:00
Alex
791c37d2cc chore(mobile): proper new UI layout for tablet (#13650)
* chore(mobile): better tablet UI

* fix spacing when trash is disable

* better layout for library page

* Removed navigation rail

* removed navigation rail reference

* correct padding

* fixed people page
2024-10-21 13:39:18 -05:00
Evie Lau
d137fc3eb6 docs: add qsv note for jasper lake cpus (#13622)
* Update hardware-transcoding.md

Add niche instruction to get QSV working with Jasper Lake CPUs, based on conclusion from #3595

* Relocate note to setup step, under the Admin page changes

* Add Elkhart Lake

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-10-21 18:37:21 +00:00
Jonathan Jogenfors
b411e30796 fix(server): only allow absolute import paths (#13642)
fix: only allow absolute paths
2024-10-21 09:12:12 -05:00
John Strunk
56bebd01df chore(docs): correct two small typos (#13644) 2024-10-21 13:05:17 +00:00
Darrel
45517ab7ae fix(web): reset select all button state on escape press (#13600)
* factor out cancel multiselect state logic to utils

* use cancel multiselct helper in album page

* use cancel multiselct helper in album-viewer component

* use cancel multiselct helper in asset-grid component

* remove unused to fix lint
2024-10-20 18:11:00 +00:00
dvbthien
ee0130a58b fix(mobile): Fix minor issues with downloading assets (#13609)
* improve download asset

* fix: download motion photos on ios

---------

Co-authored-by: dvbthien <dvbthien@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-20 12:56:02 -05:00
Mert
62e55f3db9 fix(server): Revert "fix(server): copy video projection metadata for 360 videos (#12376)" (#13611)
Revert "fix(server): copy video projection metadata for 360 videos (#12376)"

This reverts commit aa0097bde2.
2024-10-20 10:15:50 -05:00
bo0tzz
8c38d22f42 revert: gh container registry rate limits (#13602) 2024-10-19 14:51:37 +02:00
Alex
39b571a95c fix(server): encodes iPhone 16 Pro video with unknown audio codec (#13593)
* fix(server): encodes iPhone 16 Pro video with unknown audio codec

* remove white space

* pr feedback + unit test

* remove public method keyword

* test the service

* correcting unit test
2024-10-19 00:50:08 -05:00
Alex
c9c0212ca9 fix(web): intersection observer not triggered to load more people (#13589) 2024-10-18 22:53:47 +02:00
Hayden
4a2a7b7735 feat(server): wait five minutes before sending email on new album item (#12223)
Album update jobs will now wait five minutes to send. If a new image is added while that job is pending, the old job will be cancelled, and a new one will be enqueued for a minute.

This is to prevent a flood of notifications by dragging in images directly to the album, which adds them to the album one at a time.

Album updates now include a list of users to email, which is generally everybody except the updater. If somebody else updates the album within that minute, both people will get an album update email in a minute, as they both added images and the other should be notified.
2024-10-18 14:51:34 -05:00
Christian Koch
76c0b964eb chore(docs): update _storage-template.md (#13578)
Update _storage-template.md

The example for the {{if}} was a little bit confusing. Just a recommendation
2024-10-18 19:43:48 +00:00
akara
e1e3ae811d chore(docs): add Thai README (#13591)
* chore(docs): add Thai README

* chore(docs): add links to Thai README
2024-10-18 19:41:32 +00:00
Jason Rasmussen
3fb5adb31c refactor(server): rename metrics to telemetry (#13584) 2024-10-18 14:50:32 -04:00
pyorot
b1149881bd feat(server): add pcm_s16le accepted audio codec (#13418) 2024-10-18 08:26:16 -04:00
Jason Rasmussen
12628b80bc refactor(server): telemetry env (#13564) 2024-10-17 18:04:25 -04:00
Mert
23646f0d55 feat(server): vaapi hardware decoding (#13561)
* add hw decoding for vaapi

* add tests

* update docs
2024-10-17 18:02:41 -04:00
Jason Rasmussen
c8f672f494 refactor(server): telemetry ports env (#13560) 2024-10-17 21:00:22 +00:00
renovate[bot]
0eabb3ef80 fix(deps): update dependency sirv to v3 (#13511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-17 15:54:40 -04:00
Daniel Dietzler
6b2f23b5a3 fix: web search add to album reactivity (#13539) 2024-10-17 15:53:12 -04:00
Daniel Dietzler
57704ba5a7 fix: gh container registry rate limits (#13554) 2024-10-17 15:17:38 -04:00
Daniel Dietzler
274381deaa fix: person update state inconsistencies (#13556) 2024-10-17 18:23:51 +00:00
grgergo
7011231c4c fix(web): improve photosphere viewer settings (#13468)
change photosphere viewer settings
2024-10-17 18:07:01 +00:00
Jason Rasmussen
e3fc4d7b0a refactor(server): auth enums (#13552) 2024-10-17 13:17:32 -04:00
CrushedAsian255
d9949434f6 feat(web): Change relink person icon from minus to pencil (#13536)
The relink person icon is currently a minus symbol. This can be confusing as it looks like a "remove person" button. Changing it to a pencil makes it clear it is an editing operation, not a removing operation.
I don't know how to write Dart code, so I cannot help with the Mobile app.
2024-10-17 13:13:35 -04:00
Jason Rasmussen
3d971f69dc refactor(server): storage template options (#13553) 2024-10-17 13:11:51 -04:00
jedi04
bb694aeeeb fix(server): Allow passwordless users when oauth enabled (#13517)
* fix(server): Allow passwordless users when oauth enabled

* fix(web): Use features flags for checking oauth
2024-10-17 12:24:50 -04:00
Jason Rasmussen
3f663106e8 refactor(server): redis config (#13538)
* refactor(server): redis config

* refactor: cache parsed env data

* chore: add database and redis tests
2024-10-17 10:50:54 -04:00
bo0tzz
79acbc1d7b feat: show warning when running main branch build (#13462)
* feat: show warning when running main branch build

* fix: emoji weirdness

* fix: use icon instead of emoji

* fix: missing conditional
2024-10-17 08:36:52 -04:00
Jason Rasmussen
01a9cda15d fix(server): never try to parse Duration from exif data (#13497) 2024-10-16 18:20:44 -04:00
Jason Rasmussen
8ac40a933a refactor(server): external domain fallback (#13506) 2024-10-16 18:13:12 -04:00
Jason Rasmussen
51d4899cd1 refactor(server): move host env to config repo (#13507)
* refactor(server): access host through repository

* refactor(server): access host through repository
2024-10-16 18:12:13 -04:00
github-actions
e8015dc7d7 chore: version v1.118.2 2024-10-16 18:44:39 +00:00
lyyn
782ba48470 fix(server): ffmpeg matrices (#13461)
* Fix ffmpeg matrices

* override `getColors`

* formatting

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-10-16 14:29:59 -04:00
Mert
c266465317 chore(deps): update base-image to v20241016 (major) (#13512)
chore(deps): update base-image to v20241016
2024-10-16 11:58:51 -04:00
Jason Rasmussen
426008b714 fix(docs): cancelled builds on main (#13499) 2024-10-16 07:03:43 -04:00
Zack Pollard
a17d34b186 ci: don't refresh state when destroying tf (#13355)
ci: dont refresh state when destroying tf
2024-10-16 05:46:21 -04:00
renovate[bot]
263d2ba161 fix(deps): update dependency exiftool-vendored to v28.6.0 (#13454)
* fix(deps): update dependency exiftool-vendored to v28.6.0

* fix: incorrect day light savings date time

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-10-16 05:45:09 -04:00
renovate[bot]
ece4553321 chore(deps): update base-image to v20241015 (major) (#13437)
chore(deps): update base-image to v20241015

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-16 05:01:15 -04:00
renovate[bot]
5bb7854f4f chore(deps): update terraform cloudflare to v4.44.0 (#13482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-16 05:00:51 -04:00
renovate[bot]
7d3ed6bd55 chore(deps): update typescript-projects (#13453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-16 04:57:57 -04:00
Manan Jain
c653c48ed2 fix: styling for last image in person grid (#13444)
* Add Display Content to LastPersonContainer Div

* Update web/src/lib/components/faces-page/people-infinite-scroll.svelte

Co-authored-by: Jason Rasmussen <jason@rasm.me>

---------

Co-authored-by: manan <manan@manan.myguest.virtualbox.org>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-10-16 08:57:06 +00:00
renovate[bot]
240de1239e fix(deps): update dependency ftfy to v6.3.0 (#13480) 2024-10-15 19:59:17 -04:00
github-actions
edd7dfb5d8 chore: version v1.118.1 2024-10-15 20:44:10 +00:00
Jason Rasmussen
4c55597478 fix(server): mobile oauth login (#13474) 2024-10-15 16:41:19 -04:00
renovate[bot]
7e49b0c875 fix(deps): update dependency tokenizers to v0.20.1 (#13470) 2024-10-15 15:38:18 -04:00
Kevin Cox
e57bd94f04 chore(server): explicitly use svt-av1 encoder (#13389) 2024-10-15 18:53:18 +00:00
ngtrio
8eb79805ae fix(docs): typo in backup-and-restore.md (#13458) 2024-10-15 18:44:51 +00:00
renovate[bot]
0a3bfd5cc3 fix(deps): update dependency device_info_plus to v11 (#13427) 2024-10-15 14:41:42 -04:00
renovate[bot]
f2b799cd6f chore(deps): update node (#13449) 2024-10-15 14:39:55 -04:00
renovate[bot]
6d56927c2c chore(deps): update machine-learning (#13452) 2024-10-15 14:39:35 -04:00
github-actions
8f69d9d0ec chore: version v1.118.0 2024-10-15 10:48:53 +00:00
renovate[bot]
0985d7f3c4 chore(deps): update docker/setup-buildx-action action to v3.7.1 (#13448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 23:24:07 -04:00
Daniel Dietzler
ee50d0b42a chore: stack service unit tests (#13441) 2024-10-14 19:18:41 -04:00
Weblate (bot)
b8524680f6 chore(web): update translations (#13126)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/az/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Ahmad Eri Syafrizal bin Syamaial Huda <erisyafrizal@gmail.com>
Co-authored-by: Ben Tomsen <torben+554gc3ym@g-b.dk>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: CrossDrain <github.grafting409@passmail.com>
Co-authored-by: David S <weblate.arjy8@flexi.name>
Co-authored-by: Dorin Rusu <rusu.dorin.adrian@gmail.com>
Co-authored-by: Emre Saraçoğlu <hello@emresaracoglu.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Erman Yaman <ermanyaman@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Furkan Aydın <aydnfurkan007@gmail.com>
Co-authored-by: Henrik <goransson.henrik@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jacek <jacek64@gmail.com>
Co-authored-by: Jamil Farajov <jamilfarajov@gmail.com>
Co-authored-by: Jonne Saloranta <saloranta.jonne@gmail.com>
Co-authored-by: Juan <yacussijuancruz@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Marius Redean <marius.redean@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nick Renieris <velocityra@gmail.com>
Co-authored-by: Rookie Nguyễn <nguyenquocthang2004@gmail.com>
Co-authored-by: Simone D'Anna <simonedanna7@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Thomas Möller <thomas.moeller@mailbox.org>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: bill85101 <bill85101@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: coolstuff99 <aspasmoya@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: extremq <other@extremq.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: qtm <qtm@users.noreply.hosted.weblate.org>
Co-authored-by: samk <kaceriak.s@gmail.com>
Co-authored-by: tomtom <beub3u@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
Co-authored-by: 전경재 <ppskj178@gmail.com>
2024-10-14 15:16:44 +00:00
Alex
22a2bfc812 chore(mobile): Translations update (#13423)
chore(mobile): translation update
2024-10-14 11:06:24 -04:00
Jason Rasmussen
7a78c3372c chore: add deprecated release notes section (#13435) 2024-10-14 10:20:10 -04:00
Alex
452ce73e7f fix(mobile): more efficient loading local image on ios (#13426) 2024-10-14 15:52:58 +07:00
Alex
346a0847ef fix(server): REVERT incorrect out_color_matrix value when generating thumbnails (#13409) (#13424)
Revert "fix(server): incorrect out_color_matrix value when generating thumbnails (#13409)"

This reverts commit 9bdfb41e9c.
2024-10-14 00:40:46 -04:00
Alex
f59b813ffe chore(mobile): search page minor enhancements (#13403)
* chore(mobile): search page retouched

* add placeholder photos

* remove unused page

* focus the search input when tapping on the search controller button

* detail fixed

* remove print statements

* disable scrolling of empty content
2024-10-14 09:50:07 +07:00
fa1seut0pia
1193adf0f5 fix(web): change the code zh-Hans to zh-CN (#13414)
fix/(web) change the code zh-Hans to zh-CN
2024-10-14 08:23:20 +07:00
Mert
e7397f35c9 chore(ml): update pydantic (#13230)
* update pydantic

* fix typing

* remove unused import

* remove unused schema
2024-10-13 18:00:21 -04:00
martin
f29fb1655a docs: update authelia link (#13413) 2024-10-13 21:34:38 +02:00
lyyn
9bdfb41e9c fix(server): incorrect out_color_matrix value when generating thumbnails (#13409) 2024-10-13 13:19:40 -04:00
Alex
5a3e352950 fix(server): typeorm (੭ °ཀ°)੭ (#13411) 2024-10-13 17:10:52 +00:00
bo0tzz
e183ff6feb feat: log SOURCE_REF immediately in container startup (#13405)
This change makes sure the ref should be in pretty much any log we might get sent, making it easier to catch people running the wrong version.
2024-10-13 09:08:40 -04:00
Daniel Dietzler
20b4d281bb chore: media service unit tests (#13382) 2024-10-11 21:33:10 -04:00
Jonathan Jogenfors
0b48d46402 chore: Add viteconfig-timestamp to .gitignore (#13380) 2024-10-11 20:51:46 +02:00
Daniel Dietzler
3b7bf76db9 chore: library unit tests (#13357) 2024-10-11 14:40:29 -04:00
Jason Rasmussen
930df46f74 chore(server): remove unused code (#13367) 2024-10-11 00:44:38 -04:00
Jason Rasmussen
8daa8073ae refactor(server): add base methods for access checks (#13349) 2024-10-10 11:53:53 -04:00
Daniel Dietzler
97edf90889 fix: library deletion (#13350) 2024-10-10 11:51:54 -04:00
Zack Pollard
24e266cd52 ci: don't auto-update mapbox-gl-rtl-text (#13351) 2024-10-10 15:45:50 +01:00
Daniel Dietzler
79ae4e211b chore: database service unit tests (#13345) 2024-10-10 13:07:37 +00:00
Daniel Dietzler
bd779ff437 chore: cli unit tests (#13343) 2024-10-10 09:04:44 -04:00
Zack Pollard
94048dedbd fix(web): rtl text on map is hidden (#13342) 2024-10-10 12:16:37 +01:00
Alex
ee461e5910 chore(mobile): remove unused translation keys (#13335) 2024-10-10 16:53:33 +07:00
Alex
4ce49e4666 chore(mobile): clean up (#13338) 2024-10-10 16:53:20 +07:00
Pranav tiwari
1baa49edb7 fix(web): User removal from option menu on the top in shared album (#12959)
* bug fix

* added few more type hint

* onMount removed, removed current user to user

* user check removed and conflict in view mode resolved between option and share info modal

* format fix

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-10 08:56:08 +00:00
Yashraj Jain
53358c768c fix(mobile): trash sorting order (#13299)
* fix: trash sorting order

* updated after comparing with web
2024-10-10 08:52:12 +00:00
Alex
e9813315e7 feat(mobile): new mobile UI (#12582) 2024-10-10 15:44:14 +07:00
Jonathan Jogenfors
b59abdff3d chore(e2e): dont check for immich folder (#13298)
chore: dont check immich folder
2024-10-10 15:42:59 +07:00
Jason Rasmussen
465f4639da feat: align compose ports (#13185) 2024-10-09 16:01:52 -04:00
Jonathan Jogenfors
b7dcc97712 fix(cli): allow special characters in paths (#13282)
* fix(cli): commas in import paths

* adding more test cases
2024-10-09 18:15:50 +02:00
rgomulin
057510af0a chore(mobile): added 'ignore_icloud' translation item (#12788)
impr: added 'ignore_icloud' translation item
2024-10-09 16:06:16 +00:00
dependabot[bot]
7561d41a6a chore(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.0 (#13148)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.6.1...v3.7.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 16:05:34 +00:00
Max
360e7d6d7a docs: fix typo in Backup Script Guide (#12399) 2024-10-09 16:04:13 +00:00
dependabot[bot]
e1540c8dfd chore(deps): bump rexml from 3.2.8 to 3.3.6 in /mobile/ios (#12621)
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.8 to 3.3.6.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.8...v3.3.6)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 22:59:24 +07:00
Joren Guillaume
1a72602ff9 docs: Add DB name to backup-and-restore (#13244)
* Update backup-and-restore.md

changelog:
Add database name to the restore command and document it in the notes

* docs: remove added database flag and change warn wording

* docs: fix forgotten warning change

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2024-10-09 22:37:47 +07:00
Jason Rasmussen
f7ad6efc4a feat(server): medium tests (#13289) 2024-10-09 10:00:40 -04:00
renovate[bot]
27c04f9d26 chore(deps): update typescript-projects (#13293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09 11:32:18 +01:00
itoktsnhc
4780bb4fcd fix(server): fix server ping URL path mismatch in healthcheck.ts (#13297)
fix server ping URL path mismatch in healthcheck.ts
2024-10-09 04:21:31 +00:00
Mert
3ba2602664 fix(ml): pin onnxruntime-openvino (#13290) 2024-10-08 18:03:28 -04:00
Mert
08d428cbce fix(server): duplicate faces, face insert query failing (#13294)
fix duplicate faces, query failing
2024-10-08 21:37:41 +00:00
Daniel Dietzler
9d0f03808c chore: finishing unit tests for a couple of services (#13292) 2024-10-08 17:08:49 -04:00
renovate[bot]
f5e0cdedbc chore(deps): update redis:6.2-alpine docker digest to 2ba50e1 (#13266)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 15:27:47 -04:00
renovate[bot]
9a6fd1c3ff chore(deps): update docker.io/redis:6.2-alpine docker digest to 2ba50e1 (#13265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 15:27:27 -04:00
renovate[bot]
bff3690a2f chore(deps): update docker/setup-buildx-action action to v3.7.0 (#13281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 15:26:53 -04:00
renovate[bot]
d2800a647c chore(deps): update base-image to v20241008 (major) (#13284)
chore(deps): update base-image to v20241008

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 15:22:04 -04:00
Jason Rasmussen
d47def41d3 fix(server): timezones (#13262) 2024-10-08 16:10:52 +00:00
renovate[bot]
34305b2eae chore(deps): update dependency @types/lodash to v4.17.10 (#13280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 12:37:55 +02:00
Alex
a11d45458b fix(web): video player on Safari (#13242) 2024-10-08 11:42:19 +07:00
renovate[bot]
60e0698110 chore(deps): update typescript-projects (#13272)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 22:44:28 -04:00
renovate[bot]
48c6c1ad2f chore(deps): update dependency node to v20.18.0 (#13271)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 22:42:33 -04:00
renovate[bot]
58f14f27cf fix(deps): update machine-learning (#13270) 2024-10-07 22:11:57 -04:00
renovate[bot]
680bf34042 chore(deps): update dependency @types/node to ^20.16.10 (#13269)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 02:05:31 +00:00
Mert
bd826b0b9b feat(ml): round-robin device assignment (#13237)
* round-robin device assignment

* docs and tests

clarify doc
2024-10-07 17:37:45 -04:00
Mert
063969ca05 fix(server): searching with both personIds and withPeople (#13254)
* use cte

* linting
2024-10-07 15:44:04 -04:00
Jonathan Jogenfors
5b00bc499f fix(server): Allow commas and braces in import paths (#13259)
fix commas and braces in paths
2024-10-07 15:43:21 -04:00
Zack Pollard
94d213bbb9 fix(server): external libraries queueing two transcode jobs (#13251) 2024-10-07 14:34:48 +01:00
renovate[bot]
1b62c99b9e chore(deps): update grafana/grafana docker tag to v11.2.2 (#13235)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-10-07 12:34:45 +01:00
Zack Pollard
b4bf1bbb3c feat: support and feedback modal with third party support (#13248) 2024-10-07 10:42:04 +00:00
Alex
6f86c2f372 chore(mobile): use sdk to for ping endpoint (#13218) 2024-10-07 08:45:23 +07:00
Mert
4bb42c4a25 docs: update version range for pgvecto.rs (#13231)
* update pgvecto.rs range

* clarify pg17
2024-10-06 13:16:31 -04:00
Yoni Yang
a8d16feb32 docs: fix confustion about libmali in hardware-transcoding.md (#13226) 2024-10-06 10:17:59 -04:00
Yuvraj P
52c700e9b0 feat(mobile): Adding filters feature to mobile image editor (#13174)
* Adding filters button

* Filter selection page

* routing

* Localization

* Add Filters to this page

* More Filters yay!

* Final filters

* Logic for saving the image

* Fixes

* Formmating

* Finalizing, formating, and fixes

* Layout fix

* chores

* Chore: Static code analysis

* fix translation file

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-06 13:51:11 +07:00
aviv926
c5c492eb4f feat(docs): update roadmap (#13212)
* feat(docs): update roadmap

* PR feedback

* PR feedabck
2024-10-05 19:00:09 -04:00
Daniel Dietzler
a5e9adb593 chore: migrate oauth to repo (#13211) 2024-10-05 16:37:33 -04:00
Daniel Dietzler
9d9bf1c88d chore: auth unit tests (#13207) 2024-10-05 12:16:23 -04:00
Fynn Petersen-Frey
0f3b8b67fe refactor(mobile): assert lists are sorted for diffing (#13180) 2024-10-05 08:02:34 +07:00
Jason Rasmussen
6bbaba7866 refactor(server): resource paths (#13194) 2024-10-04 21:09:02 +00:00
Jason Rasmussen
5d0a4bb1a5 refactor(server): app module (#13193) 2024-10-04 16:57:34 -04:00
Jason Rasmussen
7ee0221c8e chore: remove deprecated endpoint (#13190) 2024-10-04 15:10:13 -04:00
Jason Rasmussen
08db817d14 chore: remove deprecated controller (#13189) 2024-10-04 15:10:03 -04:00
Daniel Dietzler
dc18731bab chore: audit service unit tests (#13183) 2024-10-04 14:04:37 -04:00
Daniel Dietzler
4adedea128 chore: asset service unit tests (#13179) 2024-10-04 13:37:18 -04:00
Carsten Otto
bb3b4c8086 fix(server): update exiftool-vendored to v28.3.1 (#13176)
fixes #13141
2024-10-04 09:30:49 +01:00
Mert
2c87683fd4 feat(server): refresh face detection (#12335)
* refresh faces

handle non-ml faces

* fix metadata face handling

* updated tests

* added todo comment
2024-10-03 21:58:28 -04:00
Jason Rasmussen
9edc9d6151 refactor(server): immich app env (#13169) 2024-10-03 21:49:03 +00:00
Jason Rasmussen
3ac00b0ffa refactor(server): db env (#13167) 2024-10-03 17:48:40 -04:00
Jason Rasmussen
e2bf6808ca refactor(server): no color env (#13166) 2024-10-03 16:58:15 -04:00
Jason Rasmussen
0eb77147ef refactor(server): build support env (#13163) 2024-10-03 16:33:43 -04:00
Jason Rasmussen
3ddb5b8733 refactor(server): license key env (#13162) 2024-10-03 19:45:37 +00:00
Daniel Dietzler
2c8c3651de chore: some more unit tests :) (#13159) 2024-10-03 15:36:54 -04:00
Jason Rasmussen
db1623f43f refactor(server): worker env (#13160) 2024-10-03 15:28:36 -04:00
Jason Rasmussen
892a35acb5 refactor(server): port env (#13158) 2024-10-03 17:29:40 +00:00
bo0tzz
bf43c32dbf chore: disable dependabot (#13150) 2024-10-03 14:10:50 +02:00
Alex
68930cc42c feat(doc): new homepage design and font (#13084) 2024-10-03 13:33:36 +07:00
renovate[bot]
0454863c1e fix(deps): update dependency connectivity_plus to v6 (#13115)
* fix(deps): update dependency connectivity_plus to v6

* update api

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-03 03:57:50 +00:00
Alex
432bcbbd1a chore(mobile): post release task (#13136) 2024-10-03 10:19:14 +07:00
renovate[bot]
1700de909e fix(deps): update dependency device_info_plus to v10 (#13117)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 10:16:59 +07:00
Hannes R. Brunsch
35bb2e786f fix(mobile): respect orientation on displaying asset dimensions (#13129)
* fix(mobile): respect orientation on displaying asset dimensions

* lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-03 03:02:38 +00:00
martin
31c0dfb681 fix: preloading fonts (#13132) 2024-10-03 09:30:26 +07:00
github-actions
6b8462402b chore: version v1.117.0 2024-10-03 01:59:28 +00:00
Daniel Dietzler
9821b4608c chore: add more languages (#13127) 2024-10-02 23:28:13 +02:00
Mert
8ee825964d fix(server): thumbnail colorspace handling (#13130)
fix colorspace handling
2024-10-02 20:53:17 +00:00
Weblate (bot)
355ed5be72 chore(web): update translations (#12938)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/az/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Alexis Rossfelder <rossfelderalexis@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Damian Krysta <krypton9208@gmail.com>
Co-authored-by: David S <weblate.arjy8@flexi.name>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Emre Saraçoğlu <hello@emresaracoglu.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Ioannis Ioannou <ioannis.ioannou.84@gmail.com>
Co-authored-by: Jacek <jacek64@gmail.com>
Co-authored-by: Jamil Farajov <jamilfarajov@gmail.com>
Co-authored-by: Joachim Segala <joachim.segala@gmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: JoseFilipeFerreira <jose.filipe.matos.ferreira@gmail.com>
Co-authored-by: Julien Deveaux <julien.deveaux@hotmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Ognian Samokovliyski <ognian@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Unn Krigul <unn@arter.studio>
Co-authored-by: V R <hardorzz@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: clementdelestre <clementdelestre@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: faizfahmi-dev <faiztajuddin@kaf.com.my>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: ti777777 <ti12272198686@yahoo.com.tw>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-10-02 17:14:50 +00:00
Alex
3c9413fef3 chore(web): relax spacing for help and feedback modal (#13118) 2024-10-02 13:04:22 -04:00
Ben McCann
681b06a508 fix(docs): fix broken image URL (#13122) 2024-10-02 12:36:06 -04:00
martin
e7862fc0f0 fix: mouse hover over stack (#13119)
fix: mouse hover on stack
2024-10-02 22:04:21 +07:00
Jason Rasmussen
4ea281f854 refactor: service dependencies (#13108)
refactor(server): simplify service dependency management
2024-10-02 10:54:35 -04:00
PetrSvirak
1b7e4b4e52 fix(docs): Update TrueNAS installation docs (#13017)
Mention about ACL mode added for the case when library is located in a dataset with network sharing capabilities.

Based on [community issue](https://www.truenas.com/community/threads/immich-app-permissions-to-copy-to-path-inside-smb-share.117253/) and [redit post](https://www.reddit.com/r/truenas/comments/1b1weo9/comment/l132fuj/)
2024-10-02 13:39:14 +00:00
Fynn Petersen-Frey
f463bd18ef fix(mobile): device album sync (#13116) 2024-10-02 13:09:34 +00:00
Jason Rasmussen
6c7d51da34 refactor: more process.env references (#13106) 2024-10-02 08:37:26 -04:00
renovate[bot]
e5457ac8ee chore(deps): update dependency flutter_launcher_icons to ^0.14.0 (#13072)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02 15:04:47 +07:00
renovate[bot]
b0bcc6c03e chore(deps): update typescript-projects (#13099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 19:29:48 -04:00
Jason Rasmussen
63437529e1 refactor(server): config file env (#13100) 2024-10-01 16:03:55 -04:00
Jason Rasmussen
4d20b11f25 feat: track upgrade history (#13097) 2024-10-01 13:33:58 -04:00
renovate[bot]
1c3603e23b chore(deps): update grafana/grafana docker tag to v11.2.1 (#13094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 13:06:45 -04:00
renovate[bot]
eb3ac09e0d chore(deps): update dependency svelte-check to v4.0.3 (#13090)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 13:05:33 -04:00
Jason Rasmussen
305fc77ebe feat(server): better mount checks (#13092) 2024-10-01 13:04:37 -04:00
Zack Pollard
d46e50213a fix(server): offline assets don't restore when coming back online (#13087) 2024-10-01 14:03:19 +01:00
renovate[bot]
49486f2d26 chore(deps): update base-image to v20241001 (major) (#13089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 12:26:00 +00:00
renovate[bot]
eac189a9e5 chore(deps): update dependency prettier-plugin-svelte to v3.2.7 (#13088)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 12:25:08 +00:00
Zack Pollard
3b968707a7 fix: deletedAt not set for offline assets during 1.116.0 migration (#13086) 2024-10-01 13:09:08 +01:00
Carsten Otto
67aa124de9 feat(server): parse offset from "Image_UTC_Data" (Samsung) (#13080)
* fix(deps): update dependency exiftool-vendored to v28.3.0

* feat(server): parse offset from "Image_UTC_Data" (Samsung)

A Samsung phone might provide the local time (e.g. 09:00) without any timezone or
offset information. If the file also includes the non-standard trailer tag
"TimeStamp" in "Image_UTC_Data", we can use the unix timestamp contained within to
deduce the offset.

As an example, if the local date/time is "2024-09-15T09:00" and the unix timestamp is
1726408800 (which is 2024-09-15T16:00 UTC), we know that the offset is -07:00.

The actual computation/fix is done in exiftool-vendored.

Also see
0f63a78090/lib/Image/ExifTool/Samsung.pm (L996-L1001)
https://github.com/photostructure/exiftool-vendored.js/issues/209

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 12:08:06 +00:00
renovate[bot]
076d8808bb chore(deps): update dependency ubuntu to v24 (#13079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 11:17:58 +01:00
renovate[bot]
67ddba0b13 chore(deps): update typescript-projects (#13073)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 11:16:34 +01:00
Zack Pollard
3eccff4306 feat: support and feedback modal with third party support (#13056) 2024-10-01 11:15:31 +01:00
renovate[bot]
ecb5cb00eb chore(deps): update dependency flutter_lints to v5 (#13077)
* chore(deps): update dependency flutter_lints to v5

* lint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-10-01 04:10:05 +00:00
martin
06048b6db9 feat: preload fonts (#13068) 2024-10-01 09:08:25 +07:00
renovate[bot]
f0ad6627a5 fix(deps): update machine-learning (#13070)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 21:54:28 -04:00
renovate[bot]
14e6d23eeb chore(deps): update dependency @types/node to ^20.16.9 (#13069)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 01:26:39 +00:00
renovate[bot]
d772cc6c6a chore(deps): update dependency lints to v5 (#13059)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:23:15 +07:00
Alex
fe33732958 chore(mobile): update photo_manager 3.5.0 (#13050) 2024-10-01 08:18:13 +07:00
Jason Rasmussen
a019fb670e refactor(server): config service (#13066)
* refactor(server): config service

* fix: function renaming

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-09-30 17:31:21 -04:00
Jason Rasmussen
f63d251490 refactor(server): user core (#13063) 2024-09-30 16:04:24 -04:00
Jason Rasmussen
dfc2d5002b refactor(server): client events (#13062) 2024-09-30 15:50:34 -04:00
dependabot[bot]
47821cda35 chore(deps): bump docker/build-push-action from 6.7.0 to 6.9.0 (#13052)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.7.0...v6.9.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 14:16:04 -04:00
Fynn Petersen-Frey
15c04d3056 refactor(mobile): DB repository for asset, backup, sync service (#12953)
* refactor(mobile): DB repository for asset, backup, sync service

* review feedback

* fix bug found by Alex

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-30 21:37:30 +07:00
Jason Rasmussen
a2d457b01d refactor(server): events (#13003)
* refactor(server): events

* chore: better type

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-09-30 10:35:11 -04:00
Alex
95c67949f7 fix(mobile): share to error (#13044) 2024-09-30 20:51:47 +07:00
renovate[bot]
5bcbe77fb6 chore(deps): update terraform cloudflare to v4.43.0 (#12860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 12:02:30 +01:00
Mert
7adb35e59e fix(server): /search/random failing with certain options (#13040)
* fix relation handling, remove pagination

* update api, sql

* update mock
2024-09-30 00:29:35 -04:00
Mert
2f13db51df fix(server): "all" button for facial recognition deleting faces instead of unassigning them (#13042)
* unassign faces instead of deleting them

* formatting
2024-09-30 00:29:14 -04:00
Mert
9b309e84c9 docs: update config file (#13041)
update config file
2024-09-30 11:11:42 +07:00
Alex
fa9bb8074c feat(mobile): enhance download operations (#12973)
* add packages

* create download task

* show progress

* save video and image

* show progress info

* live photo wip

* download and link live photos

* Update list of assets

* wip

* correct progress

* add state to download

* revert unncessary change

* repository pattern

* translation

* remove unused code

* update method call from repository

* remove unused variable

* handle multiple livephotos download

* remove logging statement

* lint

* not removing all records
2024-09-29 08:22:02 +00:00
Mert
2bcd27e166 feat(server): generate all thumbnails for an asset in one job (#13012)
* wip

cleanup

add success logs, rename method

do thumbhash too

fixes

fix tests

handle `notify`

wip refactor

refactor

* update tests

* update sql

* pr feedback

* remove unused code

* formatting
2024-09-28 17:47:24 +00:00
Mert
995f0fda47 feat(server): separate quality for thumbnail and preview images (#13006)
* allow different thumbnail and preview quality, better config structure

* update web and api

* wording

* remove empty line?
2024-09-28 06:01:04 +00:00
Mert
4248594ac5 feat(server): better transcoding logs (#13000)
* better transcoding logs

* pr feedback
2024-09-27 18:10:39 -04:00
renovate[bot]
7579bc4359 fix(deps): update machine-learning (#12883)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-27 22:07:59 +00:00
github-actions
8bbcd5c31e chore: version v1.116.2 2024-09-27 18:17:49 +00:00
Alex
4ed1517e60 chore(mobile): post release task (#12991) 2024-09-27 14:13:24 -04:00
Zack Pollard
789937d4a2 fix: library pagination to 10k to avoid too many postgres query params (#12993) 2024-09-27 18:15:44 +01:00
bo0tzz
dbe542803f docs: update FAQ CLIP search explanation (#12986) 2024-09-27 13:07:00 -04:00
github-actions
7c15e11efc chore: version v1.116.1 2024-09-27 15:32:16 +00:00
Alex
03aa346020 fix(mobile): incorrect filename is retrieved during upload (#12990)
* fix(mobile): incorrect filename is retrieve during upload

* use the same convention to get local id

* revert previous change

* pr feedback
2024-09-27 22:28:31 +07:00
martin
3a37fc8bfd feat: no slideshow transition (#12989) 2024-09-27 15:05:07 +00:00
Jason Rasmussen
36ee72cd87 refactor(server): access env via repository (#12987) 2024-09-27 10:28:56 -04:00
Jason Rasmussen
12da250028 refactor: enums (#12988) 2024-09-27 10:28:42 -04:00
Ryan Ribeiro
5b282733fe chore(Brazilian README): fix broken image links and update translation (#12980) 2024-09-27 08:15:25 -04:00
Alex
971ba63447 fix(mobile): uninitialize provider causes unable to logging in (#12970)
fix(mobile): use uninitialize provider
2024-09-27 09:40:55 +07:00
KD-MM2
d5ee823fbc refactor(docs): fix heading tag, update Vietnamese translation for image alt, formatting features table (#12971)
* feat(readme): add Vietnamese translation

* feat(readme): add Vietnamese translation

* refactor(readme): update Vietnamese translation section

* Update README_vi_VN.md

* refactor(docs): fix heading tag, update Vietnamese translation for image alt, formatting features table

---------

Co-authored-by: tdcaot <cao@sohobb.jp>
2024-09-27 02:40:00 +00:00
KD-MM2
26f33652e1 feat(docs): add Vietnamese translation (#12967)
* feat(readme): add Vietnamese translation

* feat(readme): add Vietnamese translation

* refactor(readme): update Vietnamese translation section

---------

Co-authored-by: tdcaot <cao@sohobb.jp>
2024-09-27 01:57:26 +00:00
Spencer Fasulo
c86fa81e47 docs(web): JSDoc comments for svelte actions (#12963)
* Web: JSDoc comments for Actions

* Remove comment
2024-09-27 01:41:22 +00:00
Lauritz Tieste
42ad3e6bb0 fix(mobile): navigation panel overlaps with right rotate (#12950)
fix: navigation panel overlaps with right rotate
2024-09-27 08:40:07 +07:00
Alex
a6e703ed6b chore(mobile): post release task (#12955) 2024-09-27 08:11:22 +07:00
Jason Rasmussen
b6f871786c fix(server): handle numeric hierarchical subject values (#12949) 2024-09-26 14:32:10 -04:00
Gus Price
62a490eca2 docs: add clarity to non root user section (#12956)
* clarity

* prettier
2024-09-26 17:34:01 +00:00
github-actions
60679a6369 chore: version v1.116.0 2024-09-26 14:51:27 +00:00
Alex
63ad3c8373 chore(mobile): invalidate api repository for new sign in instance (#12940)
* chore(mobile): invalidate api repository for new sign in instasnce

* add comments
2024-09-26 19:45:39 +07:00
Jason Rasmussen
ad0dbf0315 fix(web): delete non-empty album (#12937) 2024-09-25 20:54:42 +00:00
Jonathan Jogenfors
b2f2be3485 refactor(server): library syncing (#12220)
* refactor: library scanning

fix tests

remove offline files step

cleanup library service

improve tests

cleanup tests

add db migration

fix e2e

cleanup openapi

fix tests

fix tests

update docs

update docs

update mobile code

fix formatting

don't remove assets from library with invalid import path

use trash for offline files

add migration

simplify scan endpoint

cleanup library panel

fix library tests

e2e lint

fix e2e

trash e2e

fix lint

add asset trash tests

add more tests

ensure thumbs are generated

cleanup svelte

cleanup queue names

fix tests

fix lint

add warning due to trash

fix trash tests

fix lint

fix tests

Admin message for offline asset

fix comments

Update web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte

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

add permission to library scan endpoint

revert asset interface sort

add trash reason to shared link stub

improve path view in offline

update docs

improve trash performance

fix comments

remove stray comment

* refactor: add back isOffline and remove trashReason from asset, change sync job flow

* chore(server): drop coverage to 80% for functions

* chore: rebase and generated files

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-09-25 18:26:19 +01:00
Jason Rasmussen
1ef2834603 docs: hidden files cursed knowledge (#12929) 2024-09-25 16:30:01 +00:00
Weblate (bot)
35e03c1d6f chore(web): update translations (#12737)
Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Albert Stoynov <albertstoynov@aol.com>
Co-authored-by: Benjamin Gynther <koti.gynther@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: David Abner Ciuhan <dciuhan@gmail.com>
Co-authored-by: Dean Cvjetanović <forteee@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hary <sys.hary@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: João Gonçalves <jpcg89@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: btpv <villeriusborro+weblate@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: fmis13 <fmis13@disroot.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: phewi <phewnix@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: rrole <roger.sole.v@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-09-25 16:19:10 +00:00
Jason Rasmussen
005528ab5e fix(server): http error parsing on endpoints without a default response (#12927) 2024-09-25 12:05:03 -04:00
Ben
8d515adac5 feat(web): fixed combobox positioning (#12848)
* fix(web): modal sticky bottom scrolling

* chore: minor styling tweaks

* wip: add portal so modals show on Safari in detail panel

* feat: fixed position dropdown menu

* chore: refactoring and cleanup

* feat: zooming and virtual keyboard working for iPadOS/Safari

* Revert "feat: zooming and virtual keyboard working for iPadOS/Safari"

This reverts commit cac29bac0d.

* wip: minor code cleanup

* wip: recover from visual viewport changes

* wip: ease in a little more visualviewport magic

* wip: code cleanup

* fix: only show dropdown above when viewport is zoomed out

* fix: code review suggestions for code style

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

* fix: better variable naming

* chore: better documentation for the bottom breakpoint

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-09-25 12:04:53 -04:00
renovate[bot]
46fe60693e chore(deps): update dependency @types/react to v18.3.8 (#12918)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-25 09:56:02 -04:00
Cary Keesler
06f1376de3 fix(web): Updated web README.md (#12899)
Updated web README.md
2024-09-25 12:59:35 +00:00
Jason Rasmussen
05d8c4c132 fix: do not use trashed assets as album covers (#12905) 2024-09-24 17:53:57 -04:00
Daniel Dietzler
b45fce8ddf fix: album title state weirdness (#12874) 2024-09-24 11:13:37 -04:00
Matthew Momjian
af8f3774d0 docs: details for windows users how to change docker volume (#12551)
* details for windows users

* Update requirements.md
2024-09-24 10:38:13 -04:00
renovate[bot]
b85d8943e7 chore(deps): update base-image to v20240924 (major) (#12893)
chore(deps): update base-image to v20240924

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-24 10:36:25 -04:00
JonOcto
f031c09687 fix(docs): typo in remote-access.md (#12895)
Fixed typo in remote-access.md

Fixed spelling of "tutorial".
2024-09-24 10:18:07 -04:00
Fynn Petersen-Frey
202082f62e refactor(mobile): use repositories in a number of services (#12891)
* UserService
* PartnerService
* HashService
* MemoryService
* PersonService
* SearchService
* StackService
2024-09-24 12:50:21 +00:00
Fynn Petersen-Frey
e0fa3cdbc7 refactor(mobile): more repositories (#12879)
* ExifInfoRepository
 * ActivityApiRepository
 * initial AssetApiRepository
2024-09-24 08:24:48 +02:00
renovate[bot]
56f680ce04 chore(deps): update typescript-projects (#12882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 22:05:04 -04:00
Daniel Dietzler
ec32a9e610 fix: set min values for face detection to reasonable values (#12877)
fix: set min values for face detection to >0
2024-09-23 22:03:59 -04:00
Zack Pollard
bcd416477b feat: serve map tile styles from tiles.immich.cloud (#12858)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-09-23 20:30:23 +00:00
Daniel Dietzler
e41785b1a1 fix: open api (#12878) 2024-09-23 20:08:01 +00:00
Jason Rasmussen
ad33ce5938 refactor(mobile): open api dto upgrade (#12793) 2024-09-23 15:41:41 -04:00
Jason Rasmussen
3008050e4c fix: remove no longer needed LD_LIBRARY_PATH (#12872) 2024-09-23 13:51:03 -04:00
Daniel Dietzler
87c54d6659 fix: show asset count for unassigned faces (#12871) 2024-09-23 17:37:08 +00:00
Jason Rasmussen
e748945b4f fix(server): gracefully handle unknown jobs (#12870) 2024-09-23 17:22:36 +00:00
jschwalbe
9f8a7e0bea feat(server): sort assets randomly from the API 'api/search/metadata' endpoint by including 'order': 'rand' in the API call. (#12741)
feat(server): search metadata random sort order

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-23 12:09:26 -04:00
Daniel Dietzler
a7719a94fc fix: normalize external domain (#12831)
chore: normalize external domain
2024-09-23 15:40:25 +00:00
Caesiumhydroxid
9a4a320cfb fix(web): Fix same key for delete and stack actions (#12865)
Fix same key for delete and stack actions
2024-09-23 15:38:50 +00:00
Jason Rasmussen
0cce7ebf25 fix: web e2e (#12869) 2024-09-23 15:16:25 +00:00
Nuno Antunes
b1cdf73a24 feat(server): validate rating (#12855)
* feat(server): validate exif rating tag

* fix(server): change allowed range for rating

* refactor: better readibility

* docs: comments

* remove log line
2024-09-23 07:50:18 +00:00
kurama
147747de32 docs: add section for Traefik Reverse Proxy (#12813)
* added a section for the Traefik Proxy

* minimized the configs

* replaced config with a comment.

* Update docs/docs/administration/reverse-proxy.md

changed timeout values

Co-authored-by: dvbthien <89862334+dvbthien@users.noreply.github.com>

* changed timeouts back to 10 minutes

* fixed typo and set default writeTimeout 600s

Leaving it at 0 may be also bad practice

* removed whitespace

* run `npm run format -- --check -w`

---------

Co-authored-by: dvbthien <89862334+dvbthien@users.noreply.github.com>
2024-09-23 14:40:23 +07:00
Fynn Petersen-Frey
9abfa6940c docs: mobile architecture diagram (#12841) 2024-09-23 06:11:23 +02:00
Fynn Petersen-Frey
39ea73d654 chore(mobile): restrict isar use via CI checks (#12840) 2024-09-22 09:24:08 -04:00
renovate[bot]
7c1ea2dc73 chore(deps): update dependency flutter to v3.24.3 (#11738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-22 07:29:30 +07:00
Alex
14169d310a fix(mobile): fix uncaught error in getting file cause hashing procses to be aborted entirely (#12826)
* fix(mobile): fix uncaught error in getting file cause hashing procses to be aborted entirely

* log error
2024-09-21 00:29:07 +00:00
Zack Pollard
5a1a841365 fix: rework file handling so we always explicitly create, overwrite or both (#12812) 2024-09-20 23:16:53 +00:00
Shubham
af70111645 fix(mobile): Issue Selecting Many Albuns for Backup (#12784)
* Update backup.provider.dart

* Revert "Update backup.provider.dart"

This reverts commit ac2b7acef9.

* Reapply "Update backup.provider.dart"

This reverts commit c9fe934b3b.

* dart formatting
2024-09-21 06:01:26 +07:00
Daniel Dietzler
8cd3f6b884 fix(web): events as props (#12825) 2024-09-20 18:24:46 -04:00
Daniel Dietzler
124eb8251b chore: migrate away from event dispatcher (#12820) 2024-09-20 17:02:58 -04:00
renovate[bot]
529d49471f fix(deps): update machine-learning (#12747) 2024-09-20 10:09:15 -04:00
Fynn Petersen-Frey
3868736799 refactor(mobile): album api repository for album service (#12791)
* refactor(mobile): album api repository for album service
2024-09-20 13:32:37 +00:00
Jason Rasmussen
94fc1f213a refactor(web): migrate away from event dispatcher (#12802) 2024-09-19 18:20:09 -04:00
Jason Rasmussen
cfc575d89c chore(web): remove stray dateTimeOriginal reference (#12796) 2024-09-19 17:06:51 -04:00
Jason Rasmussen
0b02fda4e0 fix(web): only show the timezone when it is known (#12779) 2024-09-18 17:07:50 -04:00
Daniel Dietzler
96516ae4b9 fix: creating tags with leading/traling slashes (#12778) 2024-09-18 19:25:13 +00:00
Jason Rasmussen
caa9b1a041 fix(web): asset grid with invalid asset id (at) (#12772)
fix(web): asset grid
2024-09-18 15:22:34 -04:00
Jason Rasmussen
65dcf9b655 fix(web): upgrade old style theme preference (#12775) 2024-09-18 12:14:44 -04:00
Fynn Petersen-Frey
0ceb773865 fix(mobile): profileChangedAt compatiblity with old servers (#12774)
* fix(mobile): profileChangedAt compatiblity with old servers

* chore: add breaks

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-18 15:59:30 +00:00
Fynn Petersen-Frey
6995cc2b38 refactor(mobile): encapsulate most access to photomanager in repository (#12754)
* refactor(mobile): encapsulate most access to photomanager in repository
2024-09-18 17:15:52 +02:00
Jason Rasmussen
6740c67ed8 fix: empty and restore over 1,000 items (#12751) 2024-09-18 09:57:52 -04:00
Jason Rasmussen
4f25cec6df refactor(server): metadata repository (#12759) 2024-09-18 08:44:22 -04:00
renovate[bot]
ab5dd4d66a chore(deps): update typescript-projects (#12536)
* chore(deps): update typescript-projects

* chore: import

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-17 22:31:12 +00:00
renovate[bot]
7ce8f845b2 chore(deps): update dependency vite to v5.4.6 [security] (#12757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-17 17:11:26 -04:00
Jason Rasmussen
efe45fd0aa chore: remove unused album repository methods (#12758) 2024-09-17 21:02:11 +00:00
Jason Rasmussen
1e6ef5c9e4 refactor(server): view repository (#12755) 2024-09-17 16:32:09 -04:00
renovate[bot]
f53e4721cf chore(deps): update base-image to v20240917 (major) (#12750)
chore(deps): update base-image to v20240917

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-17 10:06:56 -04:00
Min Idzelis
7a755a089b fix(server): debug port (#12745)
Fix debug port
2024-09-17 03:13:38 +00:00
martin
c468da589a fix: update the profile picture in the navigation-bar (#12723)
* fix: update the profile picture in the navigation-bar

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-17 01:48:15 +00:00
renovate[bot]
b0aafce16b fix(deps): update machine-learning (#12740) 2024-09-16 21:09:24 -04:00
Johannes Kastl ARS
de0fd06f43 docs: add hint for healthcheck.start_interval (#12643)
* docs/docs/install/docker-compose.mdx: add hint for healthcheck.start_interval (https://github.com/immich-app/immich/discussions/12638)

* Update docs/docs/install/docker-compose.mdx

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-09-16 20:53:43 +00:00
Alex
186b4e1333 feat(web): improve UI/UX for settings pages (#12626)
* fix(web): local date time for buckets

* feat(web): improve UI/UX for setting pages

* search admin settings and icon

* clean up

* fix translation file

* Update web/src/routes/admin/system-settings/+page.svelte

Co-authored-by: Ben <45583362+ben-basten@users.noreply.github.com>

* Update web/src/lib/components/shared-components/settings/setting-accordion.svelte

Co-authored-by: Ben <45583362+ben-basten@users.noreply.github.com>

* better search bar on smaller screen

* lint

* template syntax

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Ben <45583362+ben-basten@users.noreply.github.com>
2024-09-16 16:51:03 -04:00
Jason Rasmussen
b74b20824a feat: tag cleanup job (#12654) 2024-09-16 16:49:12 -04:00
Fynn Petersen-Frey
4a1ff6abce refactor(mobile): repositories for album service (#12701)
* refactor(mobile): repositories for album service

* review feedback, first service unit test
2024-09-16 16:26:14 -04:00
Weblate (bot)
edb085691a chore(web): update translations (#12590)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Boris Garmev <borisgarmev912@proton.me>
Co-authored-by: David Abner Ciuhan <dciuhan@gmail.com>
Co-authored-by: Dean Cvjetanović <forteee@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Javier Montón <jmlarraz@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Owen Higgins <owen@higgins.id>
Co-authored-by: Pat Oakly <pat.oakly@gmail.com>
Co-authored-by: Poramate Homprakob <batmaster_kn@hotmail.com>
Co-authored-by: Riccardo <riccardorizzato06@gmail.com>
Co-authored-by: RoanV <roanvogelzang@gmail.com>
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com>
Co-authored-by: Rémi Saurel <remi@saurel.eu>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: aarhor <aaron.horstmann9916@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2024-09-16 12:19:57 -04:00
bo0tzz
3e12b10866 fix: remove bad examples of 'from' domain for emails (#12728)
* fix: use example.com domain for from_address_description

* fix: remove unnecessary screenshot from docs
2024-09-16 12:05:34 -04:00
Tom Vincent
4735db8e79 chore(mobile): add isar lock file (#12705) 2024-09-15 19:20:09 +00:00
Alex
b06ea687b4 chore(web): small cleanup for full screen modal (#12680) 2024-09-15 11:23:35 -05:00
aryiu
e6bc831c97 fix(mobile): fix mn-MN.json file name (#12558)
* Update and rename ca.json to ca-CA.json

* Add mn-MN.json

* Delete mobile/assets/i18n/mn.json

* Update mn-MN.json

* Update localizely.yml
2024-09-15 16:11:52 +00:00
Alex
e73dc3dc72 fix(server): fix modify date extraction (#12658)
* fix(server): fix modify date extraction

* add unit test
2024-09-14 03:30:06 +00:00
Alex
f22338f36f fix(web): scrollbar shows when not need (#12659) 2024-09-14 03:20:40 +00:00
Jason Rasmussen
7893dca733 chore: add date/time issue to template (#12651) 2024-09-13 12:33:58 -04:00
Jason Rasmussen
c717fd2131 fix(server): increase person search limit (#12619) 2024-09-13 12:33:16 -04:00
Jason Rasmussen
a373d50c31 fix(web): memory viewer (#12649)
refactor(web): memory viewer
2024-09-13 12:27:10 -04:00
Alex
cdbc673a59 chore(mobile): post release task (#12615) 2024-09-13 13:25:43 +01:00
Zack Pollard
98cbf94388 ci: migrate off deprecated (and broken) value field on cloudflare_record (#12648) 2024-09-13 12:20:15 +00:00
Jason Rasmussen
15f9ff1fcb fix(web): bucket by localDateTime (#12612)
fix(web): local date time for buckets
2024-09-12 15:30:28 -04:00
Saschl
92811190a8 fix(web): load original panorama if specified in user settings (#12123)
* fix: load original panorama if specified in user settings

* fixes after merge

* chore: cleanup

---------

Co-authored-by: Saschl <noreply@saschl.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-12 19:30:21 +00:00
bo0tzz
6cbdb4c90d docs: scaling immich guide (#12593) 2024-09-12 21:15:38 +02:00
Jason Rasmussen
ba57646f9f refactor(server): client emit events (#12606)
* refactor(server): client emit events

* chore: test coverage
2024-09-12 14:12:39 -04:00
Jason Rasmussen
7b737786b3 fix(server): include partner assets in random endpoint (#12599) 2024-09-12 13:56:38 -04:00
Jason Rasmussen
d03e97f650 fix(web): better merge direction (#12601) 2024-09-12 13:54:34 -04:00
github-actions
230eff4e1a chore: version v1.115.0 2024-09-12 15:37:59 +00:00
Jason Rasmussen
c3ff1b54af fix(server): missing case break (#12595)
* fix(server): missing break statement

* fix(server): missing break statement
2024-09-12 13:45:38 +00:00
Mert
a68e6be7e1 chore(ml): remove deprecated kwarg when downloading models (#12589)
remove local_dir_use_symlinks
2024-09-11 22:21:33 -05:00
Mert
22dc9bcebb fix(ml): batch axis not being added for recognition model (#12588)
* fix has_batch_axis

* fix typing
2024-09-11 22:21:12 -05:00
Weblate (bot)
fa095c3ca0 chore(web): update translations (#12384)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Adam <adammarzec2@protonmail.com>
Co-authored-by: Alexander WB <alexander.bladh@gmail.com>
Co-authored-by: Aryiu <aryiu@users.noreply.hosted.weblate.org>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: ChoosenMEME <timjankowski259@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: IM Ben <beniiorga@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jaime Branco <jaimembranco@gmail.com>
Co-authored-by: Javier Montón <jmlarraz@gmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
Co-authored-by: Julian Stauffer <julian.stauffer.js@gmail.com>
Co-authored-by: Mateusz Kosiorek <kosiorekmateusz@gmail.com>
Co-authored-by: Maximos Prasinos <maxprasinos@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Noisy Fridge <pureprince.habib@gmail.com>
Co-authored-by: Patrick Wagner <patrick-wagner1@web.de>
Co-authored-by: Rashmi Pawar <pawar.rashmi1287@gmail.com>
Co-authored-by: Shagon94 <Shagon94@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Zsolt Kozaróczy <kiskoza@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: opl- <opl-@users.noreply.github.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rbasliana <91536894+rbasliana@users.noreply.github.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Димитър Низамов <dimitur2204@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-09-12 01:51:02 +00:00
Pavel Sapachev
4e08ff6c33 fix(web): remove unnecessary divider in External Library settings (#12583)
* fix(web): remove unnecessary divider in External Library Settings

* fix: narrowing
2024-09-12 01:35:16 +00:00
renovate[bot]
95987c9777 chore(deps): update node (#12528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-11 21:30:05 -04:00
renovate[bot]
d489813a88 chore(deps): update base-image to v20240910 (major) (#12546)
chore(deps): update base-image to v20240910

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-11 21:28:27 -04:00
Matthew Momjian
1593eaf6fc docs: add server backup to First Steps (#12555)
* prompt for backups on setup

* add file

* case, update backup restore

* Update backup-and-restore.md

* Update backup-and-restore.md

* Update backup-and-restore.md

* Update backup-and-restore.md

* Update post-install.mdx
2024-09-11 21:27:40 -04:00
Pavel Sapachev
b2c5a90af7 docs: proper value of word-based suggestions setting to setup VSCode (#12586) 2024-09-11 21:23:23 -04:00
Mert
ad58d7e23e chore(ml): downgrade to cuda 12.2 (#12587)
* downgrade to cuda 12.2

* update docs
2024-09-12 00:25:57 +00:00
Jason Rasmussen
01c7adc24d feat(web): unlink live photos (#12574)
feat(web): unlink live photo
2024-09-11 16:26:29 -04:00
Jonathan Jogenfors
233372303b feat(server): default exclusion patterns (#12566)
* Add default exclusion patterns

* simplify

* fix tests
2024-09-11 09:40:52 -05:00
renovate[bot]
9b528519e4 chore(deps): update dependency ruff to v0.6.4 (#12553)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-10 14:32:35 -04:00
renovate[bot]
98fa532135 fix(deps): update dependency fastapi-slim to v0.112.4 (#12545)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-10 14:13:50 -04:00
indam
397513b074 docs: Sync the Chinese README with the official one (#12485) 2024-09-10 10:13:28 -05:00
Jason Rasmussen
d634ef2d2b fix(server): person repo methods (#12524) 2024-09-10 08:48:29 -05:00
Jason Rasmussen
27050af57b feat(web): manually link live photos (#12514)
feat(web,server): manually link live photos
2024-09-10 08:51:11 -04:00
renovate[bot]
12bfb19852 chore(deps): update machine-learning (#12535) 2024-09-10 00:26:11 -04:00
Jason Rasmussen
9a9d64acd7 fix(web): leave assets selected after add to album (#12537) 2024-09-10 00:18:31 -04:00
Ben
02047a0104 feat(web): move search options into a modal (#12438)
* feat(web): move search options into a modal

* chore: revert adding focus ring

* minor styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-09-10 04:12:26 +00:00
Jonathan Simon
f2f6713a53 fix: typo in es-US localization (#12510)
Fix typo in es-US localization

search_page_motion_photos string should be 'Fotos en movimiento' not 'Fotos en .ovimiento'
2024-09-09 23:07:56 -05:00
Jason Rasmussen
3127636c42 fix(server): handle invalid directory item (#12534) 2024-09-09 23:54:24 -04:00
Jason Rasmussen
2c639d7fe4 fix(web): show upload error message on network error (#12533) 2024-09-09 23:50:09 -04:00
Jason Rasmussen
710cbd694b fix(web): preserve search text (#12531) 2024-09-09 23:49:56 -04:00
Jason Rasmussen
6674d67abe docs: more cursed knowledge (#12529) 2024-09-09 23:49:41 -04:00
Ben
009a1402e6 fix(web): clip scrollbar overflow in modals (#12526) 2024-09-09 22:37:53 -05:00
renovate[bot]
0dd38c6ec1 chore(deps): update machine-learning (#12527) 2024-09-10 00:40:11 +00:00
renovate[bot]
5c3283400f chore(deps): update dependency @faker-js/faker to v9 (#12519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 19:51:39 -04:00
Jason Rasmussen
8cf33690b8 fix(web): select partner assets from timeline (#12517)
fix(web): add partner assets to album
2024-09-09 16:03:30 -04:00
Jason Rasmussen
d39917a4db fix(web): show trash indicator (#12521) 2024-09-09 16:03:17 -04:00
Carsten Otto
8c3c3357fe feat(web): select the EXIF timezone (if it exists) in dropdown (#12495) 2024-09-09 14:26:21 -05:00
Alex
9323b69c61 fix(mobile): scroll thumb is hidden behind the tab navigation bar (#12512)
* fix(mobile): scroll thumb is hidden behind the tab navigation bar

* better variable names

* fix rounding error
2024-09-09 19:15:47 +00:00
Jason Rasmussen
b3ef5fe6e7 fix(server): handle multiple hierarchical subjects (#12509) 2024-09-09 14:28:14 -04:00
Lauritz Tieste
7b2f98a433 feat(mobile): Add dismiss action on app_bar_dialog (#12511)
Add dismiss action on app_bar_dialog
2024-09-09 15:53:44 +00:00
Ben
0a552d2bfa feat(web): responsive top navigation (#12373)
- icons fit in mobile
- guarantee the search bar space in all screen sizes
- fix the storage bar being too wide
2024-09-09 10:29:23 -04:00
renovate[bot]
17773f0a77 chore(deps): update terraform cloudflare to v4.41.0 (#12487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 11:50:07 +01:00
pbustamantes
a287a766d9 fix typo on asset-media.service.ts (#12486) 2024-09-09 09:11:24 +00:00
bo0tzz
0a649f28d9 fix: skip docker retag jobs on fork PRs (#12491) 2024-09-09 10:00:48 +01:00
renovate[bot]
a66ccb3452 chore(deps): update docker.io/redis:6.2-alpine docker digest to 2d14632 (#12469)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 00:42:19 -04:00
Jason Rasmussen
184a662fda fix(server): remove hidden assets from albums (#12449)
* fix(server): remove hidden assets from albums

* fix: linting

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-09-09 00:40:20 -04:00
renovate[bot]
c6cff180b2 chore(deps): update redis:6.2-alpine docker digest to 2d14632 (#12470)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-08 20:23:51 -04:00
bo0tzz
d1ce9e4d3c fix: only apply changelog:translation label to weblate branch (#12468) 2024-09-08 09:09:27 -04:00
Mert
56bf3cc3d1 chore(ml): bump intel driver version (#12455)
update to 24.31.30508.7
2024-09-07 23:08:11 -04:00
renovate[bot]
2bf6a46927 chore(deps): update redis:6.2-alpine docker digest to fd1b540 (#12448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-07 14:52:04 -04:00
renovate[bot]
7b1de6209d chore(deps): update docker.io/redis:6.2-alpine docker digest to fd1b540 (#12447)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-07 14:51:48 -04:00
Jason Rasmussen
a9caa407ec refactor: metadata extraction (#12359) 2024-09-07 13:39:10 -04:00
Alex
00a5da0ebc chore(mobile): post release task (#12398)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-09-07 13:26:18 -04:00
Jason Rasmussen
1e3052bd0b feat(server): start up folder checks (#12401) 2024-09-07 13:21:25 -04:00
Jason Rasmussen
2554cc96b0 feat(web): logout of all tabs (#12407) 2024-09-07 13:21:05 -04:00
renovate[bot]
0dabb890cf chore(deps): update redis:6.2-alpine docker digest to d72905e (#12423)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-07 13:20:00 -04:00
renovate[bot]
5fc3cb5567 chore(deps): update docker.io/redis:6.2-alpine docker digest to d72905e (#12422)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-07 13:19:33 -04:00
bo0tzz
8f73313b23 docs: update public sharing support in README feature table (#12437)
Closes #8205
2024-09-07 13:14:59 +00:00
Jason Rasmussen
7bcef37ba7 chore: auto-label translations (#12404) 2024-09-06 14:13:17 -05:00
Zack Pollard
8e677ed844 ci: tag ml and server images even when they aren't built (#12390) 2024-09-06 19:01:01 +01:00
github-actions
068904f746 chore: version v1.114.0 2024-09-06 13:49:08 +00:00
Alex
5d8052202e chore(mobile): Translations update (#12392)
chore(mobile): translation update
2024-09-06 13:30:26 +00:00
Ivan Mondragon
2dc95704c5 feat(web): add download shortcut on the timeline & asset viewer (#12339)
feat(web): implement download shortcut
2024-09-06 08:26:58 -05:00
Michel Heusschen
529b7fe748 fix(web): show focus outline for asset thumbnails again (#12382)
* fix(web): show focus outline for asset thumbnails again

* fix e2e test
2024-09-06 08:18:45 -05:00
martin
a653d9d29f feat: optimize copy image to clipboard (#12366)
* feat: optimize copy image to clipboard

* pr feedback

* fix: urlToBlob

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* fix: imgToBlob

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* chore: finish rename

* fix: dimensions

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-06 08:16:59 -05:00
Michel Heusschen
ecc85ff6c6 fix(web): ensure shared link covers are full size (#12386) 2024-09-06 08:16:39 -05:00
Michel Heusschen
639bc0c660 fix(web): broken album thumbnail (#12381)
* fix(web): broken album thumbnail

* use properties from thumbnail
2024-09-06 08:16:18 -05:00
Michel Heusschen
9fc30d6bf6 fix(web): auth on navigation from shared link to timeline (#12385) 2024-09-06 08:15:48 -05:00
Mert
aa0097bde2 fix(server): copy video projection metadata for 360 videos (#12376) 2024-09-06 00:30:34 -04:00
Weblate (bot)
02803816f4 chore(web): update translations (#12265)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Adrian M <adimarculescu@gmail.com>
Co-authored-by: Anthony MARGERAND <anthow69@hotmail.fr>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Javier Montón <jmlarraz@gmail.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
Co-authored-by: Mathias <mathkot59@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Nicolai Bonde <git@nicolaibonde.dk>
Co-authored-by: S Kutu <spamkutu@mail.ru>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2024-09-05 19:57:27 -04:00
Mert
eb7777639d fix(server): clean face tables after delete (#12375)
clean face tables after delete
2024-09-05 23:09:19 +00:00
Mark
649897f737 docs: Add conditional album storage template information (#12218) 2024-09-05 23:57:12 +02:00
Jason Rasmussen
b0af9be513 fix(web): person asset grid (#12370) 2024-09-05 20:49:23 +00:00
Jason Rasmussen
d6729c50c9 fix: only load rtl plugin once (#12365)
fix(web): only load rtl plugin once
2024-09-05 14:29:41 -04:00
Alex
77904a54d8 fix(mobile): download asset to Camera folder on Android (#12355)
* fix(mobile): download asset to Camera folder on Android

* remove unused import

* better message

* linting
2024-09-05 17:33:55 +00:00
Alex
0148005931 chore: upgrade openapi generator version (#12358) 2024-09-05 11:31:48 -05:00
Alex
dfcdaefa22 fix(web): showing album timeline after adding new assets (#12354) 2024-09-05 10:37:14 -05:00
Min Idzelis
d7d3b8dfec fix: flash bug on tag (#12332)
* fix flash bug on tag

* fix lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-05 09:29:07 -05:00
Lukas
27e283e724 fix(server): search suggestions include partner assets (#12269)
search suggestions now include partner assets

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-05 09:12:46 -05:00
Carsten Otto
259bc8a6b0 fix(web): only show valid time zones/offsets, update list based on date (#12315)
fix(web): only show valid time zones / offsets, update list based on date

this also prefers the local time zone over others with the same offset
2024-09-05 09:12:22 -05:00
Ben
c5848112bb feat(web): add skip link to sidebar (#12330)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-05 08:24:24 -05:00
Jason Rasmussen
ce2349d496 fix(server): asset no longer has tags (#12350) 2024-09-05 08:24:10 -05:00
Alex
f26d47c8d9 fix(mobile): background task crashing on Android (#12314) 2024-09-04 22:39:50 -05:00
Jason Rasmussen
f4ec842577 refactor(web): upload panel (#12326)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-04 23:38:55 -04:00
Zack Pollard
0d6bef2c05 ci: job naming improvements and success job for matrix (#12316)
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-09-04 23:28:30 +01:00
BugFest
77e6a6d78b feat(server): Import face regions from metadata (#6455)
* feat: faces-from-metadata - Import face regions from metadata

Implements immich-app#1692.
- OpenAPI spec changes to accomodate metadata face import configs. New settings to enable the feature.
- Updates admin UI compoments
- ML faces detection/recognition & Exif/Metadata faces compatibility

Signed-off-by: BugFest <bugfest.dev@pm.me>

* chore(web): remove unused file confirm-enable-import-faces

* chore(web): format metadata-settings

* fix(server): faces-from-metadata tests and format

* fix(server): code refinements, nullable face asset sourceType

* fix(server): Add RegionInfo to ImmichTags interface

* fix(server): deleteAllFaces sourceType param can be undefined

* fix(server): exiftool-vendored 27.0.0 moves readArgs into ExifToolOptions

* fix(server): rename isImportFacesFromMetadataEnabled to isFaceImportEnabled

* fix(server): simplify sourceType conditional

* fix(server): small fixes

* fix(server): handling sourceType

* fix(server): sourceType enum

* fix(server): refactor metadata applyTaggedFaces

* fix(server): create/update signature changes

* fix(server): reduce computational cost of Person.getManyByName

* fix(server): use faceList instead of faceSet

* fix(server): Skip regions without Name defined

* fix(mobile): Update open-api (face assets feature changes)

* fix(server): Face-Person reconciliation with map/index

* fix(server): tags.RegionInfo.AppliedToDimensions must be defined to process face-region

* fix(server): fix shared-link.service.ts format

* fix(mobile): Update open-api after branch update

* simplify

* fix(server): minor fixes

* fix(server): person create/update methods type enforcement

* fix(server): style fixes

* fix(server): remove unused metadata code

* fix(server): metadata faces unit tests

* fix(server): top level config metadata category

* fix(server): rename upsertFaces to replaceFaces

* fix(server): remove sourceType when unnecessary

* fix(server): sourceType as ENUM

* fix(server): format fixes

* fix(server): fix tests after sourceType ENUM change

* fix(server): remove unnecessary JobItem cast

* fix(server): fix asset enum imports

* fix(open-api): add metadata config

* fix(mobile): update open-api after metadata open-api spec changes

* fix(web): update web/api metadata config

* fix(server): remove duplicated sourceType def

* fix(server): update generated sql queries

* fix(e2e): tests for metadata face import feature

* fix(web): Fix check:typescript

* fix(e2e): update subproject ref

* fix(server): revert format changes to pass format checks after ci

* fix(mobile): update open-api

* fix(server,movile,open-api,mobile): sourceType as DB data type

* fix(e2e): upload face asset after enabling metadata face import

* fix(web): simplify metadata admin settings and i18n keys

* Update person.repository.ts

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* fix(server): asset_faces.sourceType column not nullable

* fix(server): simplified syntax

* fix(e2e): use SDK for everything except the endpoint being tested

* fix(e2e): fix test format

* chore: clean up

* chore: clean up

* chore: update e2e/test-assets

---------

Signed-off-by: BugFest <bugfest.dev@pm.me>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-04 18:23:58 -04:00
Jason Rasmussen
720412645f feat(web): sort albums in modal (#12331) 2024-09-04 18:21:21 -04:00
Alex
0a8bd7dc66 fix(web): correct color for active tree item (#12318)
* fix(web): correct color for active tree item

* remove white space
2024-09-04 14:07:32 -05:00
renovate[bot]
f8211a128e fix(deps): update machine-learning (#12257) 2024-09-04 14:36:12 -04:00
Jason Rasmussen
12b65e3c24 fix(server): auto-reconnect to database (#12320) 2024-09-04 13:32:43 -04:00
Zack Pollard
1783dfd393 fix(web): handle RTL languages in the map component (#12308) 2024-09-04 17:02:37 +01:00
Alex
d685bc1f34 chore(mobile): handle sync album on duplicated (#12173)
* chore(mobile): handle sync album on duplicated

* remove check for duplicate in manual sync

* linting
2024-09-04 10:39:31 -05:00
Carsten Otto
4bf82fb4c4 fix(web): retain selected time zone offset also for +00:00 (#12310)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-09-04 14:47:40 +00:00
Carsten Otto
cbb0a7f8d4 fix(server): parse time zone with explicit zero offset (#12307)
* fix(server): fix test: use data as returned by exiftool-vendored

* fix(server): retain +00:00 timezone if set explicitly
2024-09-04 09:27:04 -05:00
Jason Rasmussen
ee6550c02c feat(web): add Malay language (#12311)
feat(web): add ms.json
2024-09-04 09:20:45 -04:00
Jason Rasmussen
69cedef772 chore: remove repair sidebar item (#12294) 2024-09-03 22:54:13 -05:00
Ben
1e509d97f6 feat(web): show folder navigation in root directory (#12299) 2024-09-03 22:53:48 -05:00
Jason Rasmussen
c7ddd0b44a fix(web): paste event in input fields (#12297) 2024-09-03 22:53:34 -05:00
Jason Rasmussen
c3a8ddaaf2 fix(server): missing asset files relation (#12295) 2024-09-03 21:23:34 -04:00
Jason Rasmussen
526cf23a9e fix(server): public references in migrations (#12298) 2024-09-04 01:20:21 +00:00
renovate[bot]
e1ed7fa6ed fix(deps): update typescript-projects (#12274)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 19:58:03 -04:00
Gavin Mogan
0b6cd74e4d docs: ioredis link (#12291)
Fix link to ioredis docs

it was docker, now its ioredis!
2024-09-03 23:51:09 +00:00
Jason Rasmussen
7ca53ba507 feat(server): support lightroom tags (#12288) 2024-09-03 18:25:09 -04:00
Alex
a96f41aa11 fix: remove public. reference in migration sql (#12285) 2024-09-03 16:42:55 -05:00
Jason Rasmussen
ddd73b9911 feat(server): prefer tagslist (#12286) 2024-09-03 17:36:27 -04:00
Alex
6f37ab6a9e fix(server): empty trash for archived assets (#12281)
* fix(server): empty trash for archived assets

* use withArchived

* add e2e test
2024-09-03 16:04:35 -05:00
Ben McCann
e5667f09c7 chore(web): upgrade pre-req dependencies for Svelte 5 (#12283) 2024-09-03 16:42:46 -04:00
Zack Pollard
668632c398 ci: split e2e into web / server & cli / linting & run on mich (#12267)
* ci: split e2e tests into web / server & cli / linting

* ci: run e2e on mich
2024-09-03 15:19:47 -04:00
Alex
5d6716d265 chore(mobile): post release task (#12268) 2024-09-03 18:32:20 +01:00
Zack Pollard
b6cad7715f fix: docs oauth formatting issue (#12272) 2024-09-03 15:35:12 +00:00
github-actions
48da4c9317 chore: version v1.113.1 2024-09-03 14:12:24 +00:00
Weblate (bot)
a1d9619a6e chore(web): update translations (#12148)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/kmr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jacek <jacek64@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mihai Paraipan <paraipanmihai@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mário Victor Ribeiro Silva <mariovictorrs@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: PanSzelescik <panszelescik@gmail.com>
Co-authored-by: Polla Fattah <polla.fattah@gmail.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Rasmus Sehlin <rasmus@sehl.in>
Co-authored-by: S-H-Y-A <yamada0@hotmail.co.jp>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: aarhor <aaron.horstmann9916@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: fmis13 <fmis13@disroot.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rbasliana <91536894+rbasliana@users.noreply.github.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-09-03 13:52:06 +00:00
Zack Pollard
5dd9a2f850 ci: replace deprecate cloudflare properties on cloudflare_record (#12262) 2024-09-03 09:27:50 -04:00
renovate[bot]
058b5ea5ca chore(deps): update base-image to v20240903 (major) (#12261)
chore(deps): update base-image to v20240903

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 13:58:11 +01:00
Zack Pollard
441b009a0b ci: more path filtering, path filtering happens in pre-job so all jobs can be required (#12260)
ci: don't use gha path filtering, use a pre-job to skip instead, add path filtering to more workflows
2024-09-03 13:23:39 +01:00
renovate[bot]
cb903db308 chore(deps): update grafana/grafana docker tag to v11.2.0 (#12209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 09:00:54 +01:00
renovate[bot]
03ceca8552 chore(deps): update typescript-projects (#12251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 08:59:17 +01:00
renovate[bot]
53609d45fe chore(deps): update dependency @types/node to ^20.16.2 (#12250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 08:53:35 +01:00
PyKen
4af8433aad fix(server): remove thumbnailAt in asset_job_status for missing thumbnails (#12254)
* Remove thumbnailAt in asset_job_status for missing thumbnails

* fix linter error
2024-09-03 00:19:15 -04:00
Biepa
7c978571e0 docs: fixing example docker compose (#12230)
* Fixing example docker compose

Change needed so the following statement included in the docs a bit below makes sense:
NOTE: We have to use the `/mnt/media/christmas-trip` path and not the `/mnt/nas/christmas-trip` path since all paths have to be what the Docker containers see.

* another fix
2024-09-02 19:49:28 +00:00
martin
efdf1b49f4 fix: hide scrollbar when the asset grid is empty (#12217) 2024-09-02 14:43:36 -05:00
Yun Jiang
f46abbb5b5 fix(mobile): set SSL options properly in background backup process (#11870) (#12206)
Co-authored-by: Yun Jiang <yjiang@pulsesecure.net>
2024-09-02 19:42:51 +00:00
Ben
d8b602f757 feat(web): shared breadcrumbs component for folders and tags (#12215)
* feat(web): shared breadcrumbs component for folders and tags

* chore: revert changes to tree view
2024-09-02 14:42:27 -05:00
Alex
59507e557e fix(web): auto grow area extend when there is no content (#12197)
* fix(web): text area expand when there is no description

* use correct content
2024-09-02 14:41:19 -05:00
Ivan Mondragon
174de979db fix(mobile): Android back gesture closes app (#12221)
fix(mobile): Android back gesture closes app, disable predictive back gestures on Android

Co-authored-by: Ivan Mondragon <ivanmondragon42@gmail.com>
2024-09-02 14:40:11 -05:00
Vietbao Tran
862d6d9abe feat(web): load original panorama image when zoomed in to 75% or above (#12222)
* feat(web): load original panorama image when zoomed in to 75% or above

* add checks that original 360 image is web compatible and better error handling

* fix web compatability check typing

* fix asset type
2024-09-02 14:39:55 -05:00
Alex
bd6c5e1b1c feat(web): tag button in album/shared album (#12172) 2024-09-02 14:39:16 -05:00
Niklas Fischer
b80cc0d90f fix(web): German translation for explorer (#12180)
fix German translation for explorer
2024-09-02 12:33:32 -04:00
PyKen
438344fc8f fix(server): get assetFiles when retrieving assets WithoutProperty.THUMBNAIL (#12225) 2024-09-02 09:31:02 -04:00
Jonathan Jogenfors
39141d3f1c fix(server): remove offline assets from trash (#12199)
* use port not taken by immich-dev for e2e

* remove offline files from trash
2024-09-02 01:06:35 +02:00
Qhilm
28bc7f318e docs: typo - accesible => accessible (#12178)
[typo] accesible => accessible
2024-08-31 14:52:20 -05:00
Marco Malavolti
6bfe54788f docs: update google oauth examples (#12162)
* Small update on oauth.md for Google Authn

* Replace "demo" with "example" to be consistent with other example
2024-08-31 13:33:17 -04:00
Michel Heusschen
67468ea367 fix(web): avoid deleting empty album unexpectedly (#12175) 2024-08-31 12:24:38 -05:00
Alex
40327ad987 chore(mobile): post release tasks (#12157)
* sent to reviewer

* sent to reviewer

* update to app store

* update to app store
2024-08-30 16:35:06 -05:00
Jason Rasmussen
d18bc7007a fix: keyword parsing (#12164) 2024-08-30 21:33:42 +00:00
Ben
4cc11efd04 fix(web): hide tree view text overflow with ellipsis (#12161)
fix(web): hide tree view overflow with ellipsis
2024-08-30 17:32:12 -04:00
kaziu687
18fcc3569f fix(web): unable to scroll timeline after using gesture (#12163) 2024-08-30 21:31:42 +00:00
Alex
fcbc1ba399 fix(web): memory view in timeline href (#12158) 2024-08-30 15:00:31 -04:00
Jason Rasmussen
5e6ac87eaf chore: object shorthand linting rule (#12152)
chore: object shorthand
2024-08-30 14:38:53 -04:00
renovate[bot]
40854f358c chore(deps): update dependency svelte to v4.2.19 [security] (#12147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-30 14:03:44 -04:00
Bastian Machek
51a11d0cb6 docs(project): lightroom project (#12149)
* Update community-projects.tsx

Added my community project: lrc-immich-plugin

* Update community-projects.tsx

typo
2024-08-30 14:01:50 -04:00
github-actions
cc88cbb456 chore: version v1.113.0 2024-08-30 17:16:21 +00:00
Zack Pollard
860ba78650 ci: fix release script (#12146) 2024-08-30 18:07:02 +01:00
Jason Rasmussen
9b1a985d29 fix(server): tag upsert (#12141) 2024-08-30 12:44:24 -04:00
Pierre Couy
b9e5e40ced docs(guide): nginx caching proxy (#12140)
* docs:Add link to nginx caching proxy guide

Following comments on https://github.com/immich-app/immich/pull/11350

* docs:Fix typo

* docs:Fix typo

* docs:Switch to GitHub link
2024-08-30 12:26:31 -04:00
Alex
3316acb71f chore(web): tag creation hint (#12142)
* chore(web): tag creation hint

* use FormatMessage

* use correct format

* use correct css class

* copywriting
2024-08-30 12:16:56 -04:00
Alex
1736887f96 chore(mobile): translations update (#12144)
chore(mobile): translation update
2024-08-30 12:06:25 -04:00
Weblate (bot)
c40262f3ff chore(web): update translations (#12097)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Bogdan Predi <b@predi.dev>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mário Victor Ribeiro Silva <mariovictorrs@gmail.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: S-H-Y-A <yamada0@hotmail.co.jp>
Co-authored-by: Samuel Lambert <sam.f.lambert@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rbasliana <91536894+rbasliana@users.noreply.github.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-08-30 11:02:56 -05:00
Alex
b3b599e071 chore(server): deprecate resized property (#12143)
* chore: add dummy resized value for release

* openapi

* add deprecation life cycle info

* use correct default value
2024-08-30 11:01:50 -05:00
Michel Heusschen
b1e780561d fix(web): reset asset grid after changing album order (#12139) 2024-08-30 09:31:53 -05:00
Jonathan Jogenfors
aa04ded311 chore(e2e): change e2e ports to some not used by immich-dev (#12132)
use port not taken by immich-dev for e2e
2024-08-30 08:04:02 -04:00
Alex
fa9b2219f8 chore(mobile): disable Impeller on Android (#12130)
chore(mobile): disable Impeller
2024-08-29 23:41:07 -05:00
ttzytt
7d0c64b73e fix: README_zh_CN.md link (#12124)
Change `https://immich.app/。` to `<https://immich.app/>。`, so that the period will be excluded in the URL.
2024-08-30 04:09:24 +00:00
Spencer Fasulo
48fb0f309d fix(web): Device list shows Ubuntu as unknown OS (#12127)
Co-authored-by: Spencer Fasulo <spencer.fasulo@icloud.com>
2024-08-30 03:14:05 +00:00
Jason Rasmussen
8c54312c87 docs: update roadmap (#12126) 2024-08-29 22:47:22 +00:00
Jonathan Jogenfors
eb4a291c81 chore(server): log path when generating external thumbnail (#12107)
* feat: log path when generating external thumbnail

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-29 22:16:12 +00:00
Jason Rasmussen
c63f63cc15 fix: user specific fields in asset search (#12125) 2024-08-29 18:07:45 -04:00
immich-tofu[bot]
715ac4c599 chore: modify .github/FUNDING.yml 2024-08-29 21:18:20 +00:00
Alex
6fe011e2d7 feat(web): jump to timeline (#12117)
* feat(web): jump to timeline

* Update web/src/lib/components/memory-page/memory-viewer.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* wording and open in new tab

* Use correct wording and icon

* fix: hide on archived and trashed assets

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-29 21:14:52 +00:00
Alex
ebecb60f39 feat: user's features preferences (#12099)
* feat: metadata in UserPreference

* feat: web metadata settings

* feat: web metadata settings

* fix: typo

* patch openapi

* fix: missing translation key

* new organization of preference strucutre

* feature settings on web

* localization

* added and used feature settings

* add default value to response dto

* patch openapi

* format en.json file

* implement helper method

* use tags preference logic

* Fix logic bug and add tests

* fix preference can be null in detail panel
2024-08-29 14:29:04 -05:00
Alex
9bfaa525db fix(mobile): long waiting time for login request when server is unreachable (#12100)
* fix(mobile): long waiting time for login request when server is unreachable

* lint

* increase timeout duration
2024-08-29 13:46:47 -05:00
Michel Heusschen
74f18a4523 fix(server): skip smtp validation if unchanged (#12111)
* fix(server): skip smtp validation if unchanged

* update comparison + convert config to plain object
2024-08-29 14:10:09 -04:00
Jason Rasmussen
d08a20bd57 feat: tags (#11980)
* feat: tags

* fix: folder tree icons

* navigate to tag from detail panel

* delete tag

* Tag position and add tag button

* Tag asset in detail panel

* refactor form

* feat: navigate to tag page from clicking on a tag

* feat: delete tags from the tag page

* refactor: moving tag section in detail panel and add + tag button

* feat: tag asset action in detail panel

* refactor add tag form

* fdisable add tag button when there is no selection

* feat: tag bulk endpoint

* feat: tag colors

* chore: clean up

* chore: unit tests

* feat: write tags to sidecar

* Remove tag and auto focus on tag creation form opened

* chore: regenerate migration

* chore: linting

* add color picker to tag edit form

* fix: force render tags timeline on navigating back from asset viewer

* feat: read tags from keywords

* chore: clean up

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-08-29 12:14:03 -04:00
src
682adaa334 fix(mobile): allow create empty non-shared albums, add proper button colors (#12103)
* Add proper colors to create album button
Allow creation of empty albums with names, or non-empty albums without names

* Add proper colors to create album button
Allow creation of empty albums with names, or non-empty albums without names

* Small changes

* Revert change

* Simplify logic

* lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-29 15:57:42 +00:00
kaziu687
c008feca63 feat(web): navigate assets with gestures (next/prev) (#11888)
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-08-29 10:40:17 -05:00
Richard Kojedzinszky
f3e176e192 feat(ml): support dynamic scaling (#12065)
feat(ml): make http keep-alive configurable

Closes #12064
2024-08-29 15:11:49 +00:00
Michel Heusschen
9f5a3f1e84 chore(web): enforce valid translation keys using typescript (#12106) 2024-08-29 08:41:39 -04:00
Jonathan Jogenfors
bab5ad7ebd fix(server): ensure new exclusion patterns work (#12102)
* add test for bug

* find excluded paths when checking offline

* fix filename

* fix unit tests

* bump picomatch

* fix e2e paths

* improve e2e

* add unit tests

* cleanup e2e

* set correct asset count

* fix e2e test

* fix lint
2024-08-28 19:51:25 -04:00
renovate[bot]
c6c7c54fa5 chore(deps): update machine-learning (#12062) 2024-08-28 18:00:47 -04:00
renovate[bot]
f0c86846e0 fix(deps): update machine-learning (major) (#11928) 2024-08-28 17:59:57 -04:00
Geoffrey Frogeye
562fec6e2b feat(server): sort images in duplicate groups by date (#12094)
* feat(server): sort images in duplicate groups by date

* Update server/src/dtos/duplicate.dto.ts

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

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-08-28 19:59:09 +00:00
Jonathan Jogenfors
363c558db7 fix(server): don't crash when refreshing large libraries (#7934)
* add job to check for offline files

* fix lint

* only check for offline when using checkForOffline

* improve tests

* remove old test

* wip

* remove trie

* refactor batches

* also check offline status

* fix spelling

* don't do offline scan

* rename scan to check

* fix job statuses

* fix lint

* cleanup

* add test

* open-api

* fix test

* fix spinner

* reset text

* don't double batch

* fix comments from mert

* remove tries

* fix tests

* fix e2e

* fix test

* fix test

* add tests

* fix lint

* fix e2e

* interweave scans

* fix errors

* fix messages

* fix test

* add mock

* fix sql

* fix e2e

* use library batch size

* save -> update

* add file extensions

* update specs

* test for import paths

* check import paths when testing offline

* fix lint

* normalize import path

* remove console logs

* decrease batch size to 1000

* add test for import path

* add test for already-online assets

* fix merge

* fix lint

* add library job back

* add offline job to correct queue

* library spec compiles now

* move one test to new e2e

* fix comments

* fix comments

* fix lint

* refactor path validation

* fix loop bug

* remove logging

* expect responses

* fix asset mock

* take the straightforward approach

* use generator correctly

* fix vitest on file edit

* bump vitest to 1.6.0

* test for offline check

* add e2e tests for offlining assets depending on import path

* cleanup e2e test after finish

* cleanup library service

* paginate the walk generator

* fix tests

* fix typo

* refactoring handleOfflineCheck

* better testing of handleOfflineCheck

* fix lint

* handle large library deletions

* dont check if library is deleted

* fix mock

* add a 100k page size to library

* fix loading animation

* better log messages

* Better logging for offline asset removal

* fix sql and tests

* fix number format

* Remove submodule

* fix format

* chore: cleanup

* chore: fix tests

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-28 13:05:48 -04:00
aviv926
5811025ebd docs: Documentation updates (#11516)
* Documentation updates

* PR feedback

* PR feedback

* Originally implemented using #11880

* add to FAQ

* Remove mTLS

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-28 16:43:51 +00:00
Weblate (bot)
7506eefee3 chore(web): update translations (#11758)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: - <Cenciak@users.noreply.hosted.weblate.org>
Co-authored-by: Adam <adammarzec2@protonmail.com>
Co-authored-by: Andreas Gammelgaard Damsbo <andreas@gdamsbo.dk>
Co-authored-by: André K <lordikohchang@gmail.com>
Co-authored-by: Bartłomiej Ruk <bartek04041993@gmail.com>
Co-authored-by: Ben <boiben609@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Bilguun Ochirbat <bilguun0203@gmail.com>
Co-authored-by: Boštjan Kolar <bostjan.kolar@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Cohinem <twitch9ofe@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Erik Järlestrand <erik.jarlestrand@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Hozoy <Zrincet@gmail.com>
Co-authored-by: Ignas C <ignusiukas1@gmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: JH <weblate@dm2.fi>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: José Rodrigues <j.rodrigues.pcmedic@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Karthik Raja K <2001.3.12kaarthik@gmail.com>
Co-authored-by: Kenneth <kenneth@flugheim.no>
Co-authored-by: Kristoffer Braa <kristoffer@lolandbraa.no>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Leo Bottaro <weblate@leobottaro.com>
Co-authored-by: Lukas Hamm <ideallygrey@tuta.io>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Marius Kavoliunas <kavoliunas.m@gmail.com>
Co-authored-by: Mateusz Kędziak <matizek43@gmail.com>
Co-authored-by: Matteo Morari <matteo.morari04@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: PUFF1N <frkmhyt@gmail.com>
Co-authored-by: Philipp66904 <philippg.pgb@gmail.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: René Dyhr <bazzo39@gmail.com>
Co-authored-by: Rui <rui-costa@users.noreply.hosted.weblate.org>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: TheScientistPT <joao.ed.reis.gomes@gmail.com>
Co-authored-by: Tuomas Tornberg <tuomas.tornberg00@gmail.com>
Co-authored-by: Tyoda <tyoda@pm.me>
Co-authored-by: Ulices <hasecilu@tuta.io>
Co-authored-by: Unn Krigul <unn@arter.studio>
Co-authored-by: Varga Bence Levente <varga.bence.levente@protonmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Wolfgang Schweer <wschweer@arcor.de>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: fabianosan <fabianosan2006@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: lasharor <salih@ergezen.nl>
Co-authored-by: rbasliana <rbasliana@protonmail.com>
Co-authored-by: rondadon <hans.murks@protonmail.com>
Co-authored-by: tw-easy <sinale0611@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Оргил Пүрэвдорж <orgyldinio@proton.me>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-08-28 12:39:27 -04:00
Kenneth Bingham
2297d86569 fix(mobile): use a valid OAuth callback URL (#10832)
* add root resource path '/' to mobile oauth scheme

* chore: add oauth-callback path

* add root resource path '/' to mobile oauth scheme

* chore: add oauth-callback path

* fix: make sure there are three forward slash in callback URL

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-28 11:30:06 -05:00
renovate[bot]
cc4e5298ff fix(deps): update typescript-projects (#11927)
* fix(deps): update typescript-projects

* chore: clean up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-28 12:00:10 -04:00
Zack Pollard
e705831e67 ci: fix permissions when pr-label-validation runs from fork (#12093) 2024-08-28 16:33:21 +01:00
Lena Tauchner
6867bae770 fix(cli): Update build instructions for CLI (#11874)
Update build instructions for CLI
2024-08-28 13:25:58 +00:00
Alex
c44280a50b chore(web): subtler spinner FOUC animation (#12090) 2024-08-28 08:20:56 -05:00
renovate[bot]
cf272fc7fd chore(deps): update terraform cloudflare to v4.40.0 (#11740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-28 14:15:20 +01:00
renovate[bot]
365facfc51 chore(deps): update node (#12063)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-28 08:52:49 -04:00
renovate[bot]
d8aec81ae0 fix(deps): update dependency react-email to v3 (#12077)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-28 08:52:24 -04:00
renovate[bot]
1239066ada chore(deps): update base-image to v20240827 (major) (#12073)
chore(deps): update base-image to v20240827

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-28 08:51:02 -04:00
Alex
1fd00d8262 chore(web): resolve timeline flashing temporarily (#12088) 2024-08-27 22:31:32 -05:00
Matthew Momjian
d4cdd590bd docs: sql query for duplicate files (#12086) 2024-08-27 20:48:23 -04:00
Alex
be476d7982 chore(web): ensure goto is awaited for login page (#12087)
* chore(web): ensure goto is await for login page

* ensure server config is updated after onboarding is finished
2024-08-27 22:29:50 +00:00
Zack Pollard
028be6738e ci: use push-o-matic app for release process (#12075)
ci: use push-o-matic for release process
2024-08-27 23:19:04 +01:00
Ben
72ab664936 feat(web): announce notifications to screen readers (#12071) 2024-08-27 17:13:17 -05:00
renovate[bot]
98b3441cb1 chore(deps): update prom/prometheus docker digest to f663933 (#12072)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-27 18:08:01 -04:00
Jason Rasmussen
0be3c4472f refactor(server): event names (#12084) 2024-08-27 18:06:50 -04:00
Alex
aac6a4b052 chore(web): ignore shortcut toggle when entering email and password (#12082) 2024-08-27 16:50:25 -05:00
Matthew Momjian
16d5996f77 docs: external library deletion/edits (#12079)
* external lib

* edit 2

* Update FAQ.mdx

* fixes
2024-08-27 15:30:01 -04:00
Yuvraj P
3e970bc2d3 fix(mobile): Changes in the UI for the image editor pages (#12018)
* Ui enchancements and fixes

* Reruning the github review thing

* conflicts fix, apparently

* conflicts fix, apparently

* Fixed edit.page.dart

* Fixed crop page; localization etc

* Updated es-US.json; for Localization

* Formatting

* Changing the es-US.json back

* Update en-US.json

* localization

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-27 16:06:16 +00:00
Matthew Momjian
f70dcaa6cc docs: mTLS/self signed FAQ entry (#12074)
mTLS/self signed
2024-08-27 10:54:53 -05:00
Mark
b051b29eca feat(server): Storage template support album condition (#12000)
feat(server): Storage template support album condition ([Request](https://github.com/immich-app/immich/discussions/11999))
2024-08-26 20:48:39 -05:00
Ben
9894b9513b fix(web): shared link expiration date accessibility (#12060)
- use native select - shows focus, automatically has keyboard
  navigation, accessible for screen readers
- remove DropdownButton component
- fix dropdown styling in Safari
2024-08-26 21:05:23 -04:00
Alex
6b6d2a6621 feat(mobile): preserve mobile album info on upload (#11965)
* curating assets with albums to upload

* sorting for background backup

* background upload works

* transform fields string array to javascript array

* send json array

* generate sql

* refactor upload callback

* remove albums info from upload payload

* mechanism to create album on album selection

* album creation

* Sync to upload album

* Remove unused service

* unify name changes

* Add mechanism to sync uploaded assets to albums

* Put add to album operation after updating the UI state

* clean up

* background album sync

* add to album in background context

* remove add to album in callback

* refactor

* refactor

* refactor

* fix: make sure all selected albums are selected for building upload candidate

* clean up

* add manual sync button

* lint

* revert server changes

* pr feedback

* revert time filtering

* const

* sync album on manual upload

* linting

* pr feedback and proper time filtering

* wording
2024-08-26 13:21:19 -05:00
Alex
f4371578f5 fix(web): show supporter badge for account less than 14 days (#12058) 2024-08-26 17:20:50 +00:00
Alex
edf47dbbd0 feat(web): restore scroll position on navigating back to search page (#12042)
* feat(web): restore scroll position on navigating back to search page

* set 0 for scroll X

* lint

* simplify
2024-08-26 11:26:23 -05:00
Matt Tyree
3ac42edc74 docs: add Immich Kiosk and Immich Power Tools to Community Projects (#12055)
Add Immich Kiosk and Immich Power Tools

Added Immich Kiosk and Immich Power Tools to Community Projects
2024-08-26 16:06:21 +00:00
Carsten Otto
129e5eae66 fix: do not code format repro steps in issue template (#12054)
issue template: do not use "bash" to render a list of text items
2024-08-26 10:33:01 -05:00
Anil Madhavapeddy
fe672d4f35 feat(format): nrw format (#12048) 2024-08-26 08:16:24 -04:00
renovate[bot]
4f02412493 chore(deps): update dependency node to v20.17.0 (#12040)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-25 22:50:51 -04:00
Ben
96056208fc fix(web): announce current theme to screen reader users (#12039) 2024-08-25 18:50:54 -05:00
Min Idzelis
b2dd5a3152 feat: loading screen, initSDK on bootstrap, fix FOUC for theme (#10350)
* feat: loading screen, initSDK on bootstrap, fix FOUC for theme

* pulsate immich logo, don't set localstorage

* Make it spin

* Rework error handling a bit

* Cleanup

* fix test

* rename, memoize

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-08-25 17:34:08 -05:00
Alex
b653a20d15 fix(web): sort folders (#12038)
chore(web): sort folders
2024-08-25 16:53:14 -05:00
Thomas Clarke
868aedd212 fix: docs link to breaking changes (#12027)
Fix link to breaking changes
2024-08-25 12:54:12 -05:00
Alex
e457d8d62e chore(mobile): patch download > includeEmbeddedVideos user preferences (#11910)
* chore(mobile): patch download > includeEmbeddedVideos user preferences

* correct patch
2024-08-25 05:09:37 +00:00
Christopher Makarem
b41af65997 fix: align camera model drop down behavior with other drop downs on web and mobile (#11951)
* fix(web): align search filter behavior to show all camera models

* fix(mobile): align search filter behavior to clear camera model when make is set

* (mobile) correctly clear the model controller

* fix(mobile) re-add text controller to dropdown

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-25 05:00:15 +00:00
Snowknight26
7a4fccb1b2 fix(web): show a clearer confirmation message when deleting an unnamed album (#11988)
* fix(web): show a different confirmation message when deleting an unnamed album

* Rename the function

* Fix formatting
2024-08-24 23:59:18 -05:00
Yuvraj P
843345df4f fix(mobile): Fix for incorrectly naming edited files and structure change (#11741)
* Fix null name

* Fix null name and Fix button

* Remove extension correctly

* Refactoring the code and formatting

* formatting

* Fix for the extension name
2024-08-24 15:30:31 -05:00
renovate[bot]
00a7b80184 fix(deps): update machine-learning (#11921) 2024-08-24 17:50:05 +00:00
Daniel Dietzler
da12d5f567 feat(web): my immich shortcut (#12007)
feat: my immich shortcut in web
2024-08-23 23:03:36 +00:00
Ben
c14e2914f8 fix(web): rating stars accessibility (#11966)
* fix(web): exif ratings accessibility

* chore: add tests

* fix: eslint errors

* fix: clean up issues from changes in use:focusOutside
2024-08-23 12:34:12 -04:00
Jason Rasmussen
7fbf50a75e fix: remove asset.resized (#11983)
fix: remove resized
2024-08-22 23:24:49 -04:00
Jason Rasmussen
f69ce6ad8a refactor(web): folder view (#11967)
refactor(web): tree view
2024-08-22 11:38:19 -04:00
Carles Albàs Boix
296bbeb2fc feat(web): Left hand navigation for memories (#11913) 2024-08-22 14:40:15 +00:00
Jason Rasmussen
c24cc8a33b chore: ignore sql queries when building docker (#11933) 2024-08-22 11:48:31 +00:00
Min Idzelis
837b1e4929 feat(web): Scroll to asset in gridview; increase gridview perf; reduce memory; scrollbar ticks in fixed position (#10646)
* Squashed

* Change strategy - now pre-measure buckets offscreen, so don't need to worry about sub-bucket scroll preservation

* Reduce jank on scroll, delay DOM updates until after scroll

* css opt, log measure time

* Trickle out queue while scrolling, flush when stopped

* yay

* Cleanup cleanup...

* everybody...

* everywhere...

* Clean up cleanup!

* Everybody do their share

* CLEANUP!

* package-lock ?

* dynamic measure, todo

* Fix web test

* type lint

* fix e2e

* e2e test

* Better scrollbar

* Tuning, and more tunables

* Tunable tweaks, more tunables

* Scrollbar dots and viewport events

* lint

* Tweaked tunnables, use requestIdleCallback for garbage tasks, bug fixes

* New tunables, and don't update url by default

* Bug fixes

* Bug fix, with debug

* Fix flickr, fix graybox bug, reduced debug

* Refactor/cleanup

* Fix

* naming

* Final cleanup

* review comment

* Forgot to update this after naming change

* scrubber works, with debug

* cleanup

* Rename scrollbar to scrubber

* rename  to

* left over rename and change to previous album bar

* bugfix addassets, comments

* missing destroy(), cleanup

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-21 21:15:21 -05:00
David Kerr
07538299cf feat: folder view (#11880)
* feat: folder view poc

* fix(folder-view): ui modifications

* fix(folder-view): improves utility return types

* fix(folder-view): update getAssetsByOriginalPath

Endpoint now only returns direct children of the path instead of all images in all subfolders.  Functions renamed and scoped to "folder", endpoints renamed

* fix(folder-view): improve typing

* fix(folder-view): replaces css with tailwind

* fix(folder-view): includes folders in main panel

* feat(folder-view): folder cache implementation

* fix(folder-view): can now search for absolute paths

* fix(folder-view): sets default sort to alphabetical by filename

* refactor/styling the browser view

* double click to navigate

* folder tree

* use correct side bar icon

* styling when selected

* correct open icon

* folder layout

* return assetReponseDto

* it's alive

* update new api

* more styling for folder tree

* use query params and path viewer

* use arrow up left for parent folder backward navigation

* use arrow up left for parent folder backward navigation

* encode URL

* handle long folder name

* refactor to the view controller

* remove unused code

* clear cache when logout

* cleaning up

* cleaning up web

* clean as new

* clean as new

* pr feedback + show asset name

* add tests

* add tests

* remove generated file

* lint

* revert docker-compose.dev file

* Update server/src/services/view.service.ts

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* Update server/src/services/view.service.ts

Co-authored-by: Jason Rasmussen <jason@rasm.me>

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-21 13:49:37 -05:00
Ben
6cf5906813 docs: clarify external domain setting (#11958)
Added information about email notifications and advised users not to include a trailing slash.
2024-08-21 18:00:44 +00:00
Alex
817bd2ee94 fix(server): skip bad e2e test (#11957) 2024-08-21 13:57:37 -04:00
Jason Rasmussen
29d229c5ba fix(server): do not match live photos across libraries (#11952) 2024-08-20 21:23:50 -04:00
renovate[bot]
fd225e7462 chore(deps): update ghcr.io/immich-app/base-server-dev docker tag to v20240820 (#11941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-20 11:34:43 -05:00
Jason Rasmussen
817f42aef7 fix(web): upload on file paste (#11922) 2024-08-20 08:25:26 -05:00
Jason Rasmussen
3be1aaaaa4 refactor(server): controller cleanup (#11923)
chore(server): controller cleanup
2024-08-20 12:50:14 +00:00
Jason Rasmussen
ef9a06be5c fix(server): album statistics endpoint (#11924) 2024-08-20 07:50:36 -04:00
Jason Rasmussen
cde0458dc8 fix(server): coverage reports (#11925) 2024-08-20 07:50:09 -04:00
Jason Rasmussen
8285803c95 refactor: access core (#11930) 2024-08-20 07:49:56 -04:00
Jason Rasmussen
c7801eae7e fix: random e2e test (#11932) 2024-08-20 07:49:35 -04:00
Jason Rasmussen
b60fa77846 fix: update renovate labels (#11931) 2024-08-20 10:33:43 +01:00
renovate[bot]
8d89eba3a9 fix(deps): update dependency exiftool-vendored to v28.2.1 (#11934)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-20 04:39:57 +00:00
renovate[bot]
2fba9f9547 chore(deps): update dependency @types/node to ^20.14.15 (#11920)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-20 00:30:28 -04:00
renovate[bot]
1d559431ba chore(deps): update grafana/grafana docker tag to v11.1.4 (#11912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-19 23:35:17 -04:00
Jason Rasmussen
7af6733665 refactor(server): move files to separate table (#11861) 2024-08-19 20:03:33 -04:00
Alex
af3a793fe8 fix(server): create shared album from the mobile app does not trigger send email invite (#11911)
* fix(server): create shared album from the mobile app does not trigger send email invite

* remove unused value
2024-08-19 20:43:57 +00:00
Zack Pollard
2237b7a399 chore: validate every PR has a changelog related label (#11909) 2024-08-19 20:47:27 +01:00
Jason Rasmussen
d9698884bd refactor(server): track thumbnail jobs in job status table (#11908)
refactor: track thumbnail jobs in job status table
2024-08-19 13:50:00 -04:00
Jason Rasmussen
8338657eaa refactor(server): stacks (#11453)
* refactor: stacks

* mobile: get it built

* chore: feedback

* fix: sync and duplicates

* mobile: remove old stack reference

* chore: add primary asset id

* revert change to asset entity

* mobile: refactor mobile api

* mobile: sync stack info after creating stack

* mobile: update timeline after deleting stack

* server: update asset updatedAt when stack is deleted

* mobile: simplify action

* mobile: rename to match dto property

* fix: web test

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-19 12:37:15 -05:00
Carles Albàs Boix
ca52cbace1 feat(web): Left hand navigation with A/D (#11907) 2024-08-19 12:07:18 -05:00
Alex
bc31b7c06c feat(mobile): memories lane with the new CarouselView (#11892)
* feat(mobile): memories lane with the new CarouselView

* tuning

* tuning
2024-08-18 21:27:19 -05:00
immich-tofu[bot]
fa7f1e656f chore: modify .github/FUNDING.yml 2024-08-18 21:46:08 +00:00
Mert
036676d501 fix(ml): tokenization for webli models (#11881) 2024-08-18 11:05:10 -04:00
simkli
5ab92f346a feat(web): drag and drop or paste directories for upload (#11879)
feat(web): support for directories drag and drop

Allows directories to be drag and dropped or pasted for upload.
2024-08-18 09:38:21 -05:00
Snowknight26
bd42e05152 fix(web): correctly populate the camera model search dropdown (#11883) 2024-08-18 08:13:41 -04:00
Michel Heusschen
c9f1304bce fix(web): show camera make in search options after searching (#11884) 2024-08-18 08:12:10 -04:00
Michel Heusschen
5ef9a8ff8d feat(web): pasting coordinates (#11866) 2024-08-17 11:03:34 -04:00
Karthik Raja K
0261f79c72 fix(mobile): show correct notification icon for android (#11863) 2024-08-17 07:03:10 +00:00
Aaron Rodrigues
d61828598b fix(docs): spelling (#11859)
* Update requirements.md

* Update unraid.md

* Update shared-albums.md

* Update shared-albums.md

* Update unraid.md

* Update shared-albums.md
2024-08-16 23:14:53 -04:00
Aaron Rodrigues
e9bfe5418a docs: update mobile screenshot (#11851)
* Delete docs/docs/partials/img/sign-in-phone.jpeg

* Add files via upload

* chore: move image

* Delete docs/docs/partials/img/sign-in-phone.jpeg

* upload updated image

* Delete docs/docs/partials/img/sign-in-phone.jpeg

used the wrong image

* reupload with correct image

* Delete docs/docs/partials/img/sign-in-phone.jpeg

* reupload with correct img

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-16 18:46:29 +00:00
Jason Rasmussen
f230b3aa42 feat(server): granular permissions for api keys (#11824)
feat(server): api auth permissions
2024-08-16 09:48:43 -04:00
waclaw66
a372b56d44 fix(mobile): download translation (#11838)
fix: download translation
2024-08-16 08:19:05 -05:00
Saschl
1c754b60dc chore(mobile): only enable wakelock when backup is running (#11849)
chore: only enable wakelock when backup is running
2024-08-16 08:08:21 -05:00
Carsten Otto
c582a841ba fix(docs): read-only affects XMP writing (#11823)
* mention issue: read-only library vs XMP sidecars

* mention issue: read-only library vs XMP sidecars
chore: rename motionphotos to kebab-case and add new assets (#5)
2024-08-15 15:48:21 -05:00
Jason Rasmussen
433c7ab01d refactor: server emit events (#11780) 2024-08-15 20:12:41 +00:00
Jason Rasmussen
32c05ea950 feat(server): do not automatically download android motion videos (#11774)
feat(server): do not automatically download embedded android motion videos
2024-08-15 20:06:16 +00:00
Alex
ed6971222c chore(mobile): Flutter 3.24 (#11633)
* chore(mobile): Flutter 3.24

* fix lint

* fix rendering issues that lead to log get filled with error messages

* linting

* merge main

* fix isar prod build Android

* fix mismatch icon offset
2024-08-15 14:53:37 -05:00
Alex
00023e387f feat(mobile): enable Impeller rendering engine on Android (#11831) 2024-08-15 14:12:56 -05:00
Alex
e51b581f6e fix(mobile): correct native package naming convention (#11826) 2024-08-15 14:10:13 -05:00
Zack Pollard
f40a4fc1c8 fix(ml): broken openvino builds (#11818)
* fix: install opencl from github releases directly to pin versions

* chore: remove configuration-apt script
2024-08-15 13:27:18 -05:00
Alex
3ab7438036 chore(mobile): post release task (#11791) 2024-08-15 12:38:02 -05:00
Alex
49610de4b3 chore(mobile): update target SDK version (#11719)
* chore(mobile): update target SDK version

* background service

* remove print statements

* remove extra line

* format kotlin

* Correct permission
2024-08-15 11:36:43 -05:00
Jason Rasmussen
a4506758aa refactor: auth service (#11811) 2024-08-15 09:14:23 -04:00
Jason Rasmussen
b288241a5c refactor(server): enums (#11809) 2024-08-15 06:57:01 -04:00
Michel Heusschen
fa64277476 fix(web): focus trap inside portal (#11797)
* fix(web): focus trap inside portal

* fix tests
2024-08-15 04:36:29 -04:00
Alex The Bot
f7bfde6a32 Version v1.112.1 2024-08-15 00:00:22 +00:00
Alex
7d5f07d1c7 fix(mobile): android always prompts permission when accessing backup page (#11790)
Android always prompt permission
2024-08-14 18:55:52 -05:00
dependabot[bot]
a38dd53afd chore(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 (#11768)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.6.1...v6.7.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 18:23:43 -04:00
Jason Rasmussen
44c26c20b6 chore: update submodule (#11789) 2024-08-14 22:06:11 +00:00
Thariq Shanavas
fcec5f867c chore(docs): Encode db dump in UTF-8 for windows (#11787)
* Encode db dump in UTF-8 for windows

* Update backup-and-restore.md
2024-08-14 18:01:27 -04:00
Alex
7d888106ed fix(mobile): load original (#11786)
* fix(mobile): load original

* revert change to format
2024-08-14 14:52:19 -05:00
Alex
9e21f254cd chore(mobile): post release task (#11776) 2024-08-14 13:50:35 -05:00
Jason Rasmussen
da6f269008 refactor: asset e2e performance (#11779) 2024-08-14 14:42:33 -04:00
Alex The Bot
228a7710e6 Version v1.112.0 2024-08-14 15:51:18 +00:00
Alex
8014b0f86d chore(mobile): Translations update (#11771)
chore(mobile): translation update
2024-08-14 10:29:49 -05:00
Alex
fb962f49ea fix(ml): pydantic dep causes starting up issue (#11773)
* fix(ml): pydantic dep causes starting up issue

* revert import
2024-08-14 10:20:12 -05:00
ilyaChuk
7f7fec2cea feat(web): image editor - panel and cropping (#11074)
* cropping, panel

* fix presets

* types

* prettier

* fix lint

* fix aspect ratio, performance optimization

* improved tool selection, removed placeholder

* fix the mouse's exit from canvas

* fix error

* the "save" button and change tracking

* lint, format

* the mini functionality of the save button

* fix aspect ratio

* hide editor button on mobiles

* strict equality

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Use the dollar sign syntax for stores inside components

* unobtrusive grid lines, circles at the corners

* more correct image load, handleError

* more strict equality

* fix styles. unused and tailwind

Co-Authored-By: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* dont store isShowEditor

* if showEditor - hide navbar & shortcuts

* crop-canvas decomposition (danger)

I could have accidentally broken something.. but I checked the work and it seems ok.

* fix lint

* fix ts

* callback function as props

* correctly disabling shortcuts

* convenient canvas borders

• you can use the mouse to go beyond the boundaries and freely change the crop.
• the circles on the corners of the canvas are not cut off.

* -the editor button for video files, -save button

* hide editor btn if panoramic || gif || live

* corners instead of circles (preview), fix lint&format

* confirm close editor without save

* vertical aspect ratios

* recovery after merge. editor's closing shortcut

* fix format

* move from canvas to html elements

* fix changes detections

* rotation

* hide detail panel if showing editor

* fix aspect ratios near min size

* fix crop area when changing image size when rotate

* fix of fix

* better layout - grouping

https://github.com/user-attachments/assets/48f15172-9666-4588-acb6-3cb5eda873a8

* hide the button

* fix i18n, format

* hide button

* hide button v2

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-08-14 09:54:50 -05:00
Alex
593f036c0d fix(web): fallback aperture info when there is no locale set (#11770)
* fix(web): fallback aperture info when there is no locale set

* pr feedback
2024-08-14 15:52:44 +02:00
waclaw66
e934e368b3 fix(mobile): trash translations (#11761)
trash translations
2024-08-14 08:21:59 -05:00
renovate[bot]
f331a974ed chore(deps): update dependency @types/picomatch to v3.0.1 (#11755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 23:06:46 -04:00
renovate[bot]
9d09b95618 chore(deps): update machine-learning (#11739)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 21:41:37 +00:00
Weblate (bot)
a8a63b24d0 chore(web): update translations (#11533)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/te/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: AMT AMT <altmimiamt@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Atakan Dulker <atakandulker@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Cristian Florin Tănase <crissssty@gmail.com>
Co-authored-by: Czerjak N <czerjaknorbert@gmail.com>
Co-authored-by: Dmitry <kittyfriend@mail.ru>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: ElTopo <cameos@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Felipe Silva <dorsal-cobweb-life@duck.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Furkan Yutup <furkanyutupre@gmail.com>
Co-authored-by: Hugo Cossard <hugococa2004@gmail.com>
Co-authored-by: Ionut <ionutp626@gmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Lars Bernstein <lb@setq.de>
Co-authored-by: Laurentiu <laurfb@gmail.com>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: Luna Kowalik <0skar16.contact@gmail.com>
Co-authored-by: MM <metalmario90@gmail.com>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Oliver Larsson <larsson.e.oliver@gmail.com>
Co-authored-by: Peder Kollenborg <pederkollenborg@gmail.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Pruthvi Bugidi <bps.21@proton.me>
Co-authored-by: Riccardo <lark-unit-rush@duck.com>
Co-authored-by: Rosu Iulian <rosuiulian@gmail.com>
Co-authored-by: Rıfat Dinç <rafidinc41@gmail.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Simmer Lajos <weblate.linguini033@passinbox.com>
Co-authored-by: Simon Zeeck Svärd <simon.svard100@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: TheScientistPT <joao.ed.reis.gomes@gmail.com>
Co-authored-by: Tobias Frejo <tobiasfrejo@gmail.com>
Co-authored-by: Tom Niget <zippedfire@free.fr>
Co-authored-by: UTKARSH VISHNOI <utkarshvishnoi25@gmail.com>
Co-authored-by: Varga Bence Levente <varga.bence.levente@protonmail.com>
Co-authored-by: Vincent Yeung <yeung_pok_yin_405060@yahoo.com.hk>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Voinea Laurentiu Gabriel <gabivoinea29@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: aarhor <aaron.horstmann9916@gmail.com>
Co-authored-by: anton <reallygud@protonmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dkorecko <reset259@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: jocxfin <joonatan@joonatanh.com>
Co-authored-by: manosrh <manosrh@gmail.com>
Co-authored-by: oopzzozzo <ek3ru8m4@gmail.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: sibber5 <ghasjado@gmail.com>
Co-authored-by: thestrudl <rok.vidmar1997@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Åke Amcoff <ake@amcoff.net>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-08-13 20:48:17 +00:00
Jason Rasmussen
ab0ed11778 chore: separate enhancement group in release notes (#11756) 2024-08-13 16:39:25 -04:00
Alex
5ec407b57c chore(mobile): properly patch openapi with custom response dto (#11753) 2024-08-13 14:39:25 -05:00
martin
fdf0b16fe3 feat(web): add privacy step in the onboarding (#11359)
* feat: add privacy step in the onboarding

* fix: remove console.log

* feat:Details the implications of enabling the map on the settings page

Added a link to the guide on customizing map styles as well

* feat: add map implication

* refactor: onboarding style

* fix: tile provider

* fix: remove long explanations

* chore: cleanup

---------

Co-authored-by: pcouy <contact@pierre-couy.dev>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-13 17:01:30 +00:00
Pierre Couy
c924f6c27c docs: update custom map style guide (#11350)
* docs:Reword "Custom Map Style" guide

- Split setting a style.json in Immich and creating a style with
  Maptiler
- Make it clearer that this is the way to change tile provider

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-13 16:05:36 +00:00
Carsten Otto
df45ef0e35 fix(server): follow symlinks when zipping assets (#11685)
* follow symlinks when zipping assets

fixes #9335

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-13 11:39:24 -04:00
renovate[bot]
81c813a882 chore(deps): update dependency tailwindcss to v3.4.9 (#11750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 11:37:06 -04:00
Michel Heusschen
b014162088 refactor(web): add tailwind plugin for repeating grid cols (#11748) 2024-08-13 11:36:46 -04:00
Michel Heusschen
276101ee82 feat(web): improve shared link management on mobile (#11720)
* feat(web): improve shared link management on mobile

* fix format
2024-08-13 09:37:47 -05:00
renovate[bot]
9837d60074 chore(deps): update dependency vite-tsconfig-paths to v5 (#11746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 08:40:22 -04:00
renovate[bot]
28b7443b92 chore(deps): update base-image to v20240813 (major) (#11747)
chore(deps): update base-image to v20240813

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 12:26:22 +00:00
Michel Heusschen
5acdc958b6 fix(web): single row of items (#11729)
* fix(web): single row of items

* remove filterBoxWidth

* slight size adjustment

* rewrite action as component
2024-08-13 08:20:08 -04:00
renovate[bot]
e384692025 chore(deps): update typescript-projects (#11743)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-13 08:17:17 -04:00
renovate[bot]
54b276c984 chore(deps): update dependency @types/node to ^20.14.14 (#11737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-12 23:31:57 -04:00
Jason Rasmussen
7eb004bd00 chore: better release notes (#11726)
* chore: better release notes

* chore: remove 'tedious' commits
2024-08-12 14:49:07 -04:00
Michel Heusschen
c2965c4408 fix(web): detail panel out of sync when reopening (#11713)
* fix(web): detail panel out of sync when reopening

* extract event handler
2024-08-12 08:10:43 -04:00
Michel Heusschen
b749a68349 fix(web): hide import json button when using config file (#11714) 2024-08-12 07:40:31 -04:00
Michel Heusschen
30aa2c9b82 fix(web): use fallback image if shared asset isn't resized (#11704)
* fix(web): use fallback image if shared asset isn't resized

* remove test-data index file
2024-08-11 15:43:07 -04:00
Robert Schütz
9ed04588b8 chore(deps): update pydantic to v2 (#11701) 2024-08-11 12:23:11 -04:00
Michel Heusschen
7d320217b9 chore(web): remove unused file (#11696) 2024-08-11 08:01:37 -04:00
Michel Heusschen
efdf8bbca9 refactor(web): simplify some stores (#11695)
* refactor(web): simplify some stores

* make writable
2024-08-11 08:01:16 -04:00
Michel Heusschen
34c4fbf730 fix(web): asset viewer dynamic size (#11697) 2024-08-11 07:59:26 -04:00
Matthew Momjian
ca775ab3e9 docs: Update docs + example.env for DB_PASSWORD (#11678) 2024-08-09 21:36:32 +00:00
renovate[bot]
2dd5514043 chore(deps): update prom/prometheus docker digest to cafe963 (#11673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-09 14:07:25 -04:00
Christoph Suter
f33dbdfe9a feat(web): add Exif-Rating (#11580)
* Add Exif-Rating

* Integrate star rating as own component

* Add e2e tests for rating and validation

* Rename component and async handleChangeRating

* Display rating can be enabled in app settings

* Correct i18n reference

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Star rating: change from slider to buttons

* Star rating for clarity

* Design updates.

* Renaming and code optimization

* chore: clean up

* chore: e2e formatting

* light mode border and default value

---------

Co-authored-by: Christoph Suter <christoph@suter-burri.ch>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-08-09 17:45:52 +00:00
Saschl
b1587a5dee feat(mobile): darken screen on backup page (#11623)
* feat: keep screen active on backup

* show dialog

* improve dialog and use shared timer

* get rid of confirmation dialog

* fix timer logic

* fix: set timeout to 60 seconds

* fix: revert unwanted change

* fix: properly hide status bar

* remove unwanted change

* fix: properly restore status bar when waking up

* clean up

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-09 16:39:33 +00:00
Alex
501485d0b1 fix(mobile): incorrect remove action from the album assets detail view (#11671)
* fix(mobile): incorrect remove action from the album assets detail view

* better data structure
2024-08-09 09:51:08 -05:00
renovate[bot]
ed7f857975 chore(deps): update prom/prometheus docker digest to 497fe92 (#11669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-09 10:00:50 -04:00
Alex
d346985457 chore(mobile): refactor detail panel (#11662)
* date time component

* rename to info_sheet

* simplify map info

* Edit datetime sheet

* fix janking when scroll on info sheet

* Location refactor

* refactor name

* Update date time after editing

* localize rebuild to smaller component

* restore advanced bottom sheet

* reassign EXIF back to local database

* remove print statements
2024-08-09 13:43:47 +00:00
bo0tzz
a144a1bec3 chore: add warning to media location env var (#11665) 2024-08-09 07:29:55 -04:00
Carsten Otto
9f318a9338 fix(docs): update documentation (#11655)
update documentation
2024-08-08 23:03:43 +00:00
Michel Heusschen
11f41099c3 chore(web): remove font-size of 17px (#11657) 2024-08-08 13:26:53 -05:00
Michel Heusschen
96481aae5d refactor(web): supporter badge (#11656)
* refactor(web): supporter badge

* add style lang
2024-08-08 14:02:44 -04:00
Michel Heusschen
4a42a72bd3 fix(server): use luxon for maxdate validator (#11651) 2024-08-08 09:02:39 -05:00
Michel Heusschen
66f2ac8ce3 fix(web): keep album description in sync (#11652) 2024-08-08 09:02:08 -05:00
dependabot[bot]
6b2de807a7 chore(deps): bump docker/build-push-action from 6.6.0 to 6.6.1 (#11646)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 07:28:40 -04:00
Michel Heusschen
96f8050143 feat(web): improve group-tab accessibility (#11647)
feat(web): improve GroupTab accessibility
2024-08-08 07:28:24 -04:00
Zack Pollard
14689462f8 feat: change web asset detail map to zoom level 12.5 (#11643) 2024-08-07 23:38:02 +01:00
Matthew Mirvish
fb68da2b51 fix(server): avoid transcoding thumbnail streams (#11603)
Co-authored-by: mincrmatt12 <mincrmatt12@users.noreply.github.com>
2024-08-07 18:36:37 -04:00
Alex
720b9a286e chore(mobile): update other dependencies (#11641) 2024-08-07 14:09:56 -05:00
Alex
d93ccb1669 chore(mobile): update maplibre_gl dep (#11640) 2024-08-07 13:47:40 -05:00
Alex
c34fc4f2d1 fix(mobile): iOS crashing when download iCloud content (#11639) 2024-08-07 13:09:15 -05:00
Matthew Momjian
905a062a6e docs: how to decrease Redis logs (#11638) 2024-08-07 18:38:27 +01:00
renovate[bot]
aeed24b5b4 fix(deps): update typescript-projects (#11606)
* fix(deps): update typescript-projects

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-08-07 15:45:30 +00:00
Johannes Groß
28ba22e8c1 fix(server): handle numeric 'Image Description' and 'Description' values (#11636)
* Made 'Image Description' and 'Description' type safe during exif parsing

* add test + update types

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-08-07 15:23:36 +00:00
Jason Rasmussen
5b64456f48 chore: more cursed knowledge (#11631)
* chore: more cursed knowledge

* chore: more cursed knowledge

* chore: rework footer
2024-08-07 09:54:57 -04:00
Jason Rasmussen
02fd6d22b3 chore: more cursed knowledge (#11630) 2024-08-07 12:36:30 +00:00
dependabot[bot]
10ed31d725 chore(deps): bump docker/build-push-action from 6.5.0 to 6.6.0 (#11629)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.5.0...v6.6.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-07 08:31:23 -04:00
Mert
23d4314eed chore(server): support pgvecto.rs 0.3.0 (#11624)
relax pgvecto.rs constraint
2024-08-06 23:04:55 -04:00
renovate[bot]
ea135cc310 chore(deps): update dependency @types/node to ^20.14.13 (#11604)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06 22:59:26 -04:00
Saschl
745e1b003d feat(mobile): enable wakelock on backup page (#11621) 2024-08-06 17:13:11 -05:00
Alex
1dae622dbc chore(mobile): minor styling fix (#11619) 2024-08-06 14:39:07 -05:00
renovate[bot]
8ca24f0ef2 fix(deps): update dependency auto_route to v9 (#11566)
* fix(deps): update dependency auto_route to v9

* fix dep conflict

* linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 12:50:20 -05:00
renovate[bot]
f679021f0e fix(deps): update dependency share_plus to v10 (#11550)
* fix(deps): update dependency share_plus to v10

* resolve dep conflict

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 17:24:55 +00:00
i-am-a-teapot
65f5118bdd feat(web): Add stacking option to deduplication utilities (#11114)
* feat(web): Add stacking option to deduplication utilities

* Update web/src/lib/components/utilities-page/duplicates/duplicates-compare-control.svelte

Co-authored-by: Alex <alex.tran1502@gmail.com>

* Fix prettier

* Draft for server side modifications. Endpoint for stacks (PUT,DELETE)

* Fix error

* Disable stakc button if less or more than one asset selected

* Remove unnecesarry log

* Revert to first commit

* Further Revert

* Actually Revert to Origin

* Only one stack button

* Update +page.svelte

* Fix optional arguments

* Fix Prettier

* Fix Linting

* Add stack information to asset view

* clean up

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 17:06:30 +00:00
renovate[bot]
9f4fad2a0f chore(deps): update base-image to v20240806 (major) (#11616)
chore(deps): update base-image to v20240806

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06 12:57:03 -04:00
Michel Heusschen
325fb4b5d1 fix(server): video duration extraction (#11610) 2024-08-06 11:27:05 -05:00
Alex
f040c9fb38 chore(server): remove get person asset limit (#11597)
* chore(server): remover get person asset limit

* sql

* remove getPersonAsset endpoint

* remove getPersonAsset endpoint

* use search endpoint to get people

* fix: server test

* mobile linter

* fix: server test

* remove debuglog

* deprecated endpoint

* change page size on mobile

* revert max size

* fix test
2024-08-06 16:22:13 +00:00
Pruthvi Bugidi
0eacdf93eb feat(mobile): add support for material themes (#11560)
* feat(mobile): add support for material themes

Added support for custom theming and updated all elements accordingly.

* fix(mobile): Restored immich brand colors to default theme

* fix(mobile): make ListTile titles bold in settings main page

* feat(mobile): update bottom nav and appbar colors

* small tweaks

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 14:20:27 +00:00
renovate[bot]
20262209ce fix(deps): update dependency setuptools to v70 [security] (#11609) 2024-08-06 10:09:38 -04:00
Michel Heusschen
dd638ac207 fix(web): slideshow on iphone (#11599)
* fix(web): slideshow on iphone

* make requestFullscreen type optional
2024-08-06 08:34:17 -05:00
Mert
d5b23373c7 refactor(server): startup checks for vector extension (#11559)
* update update logic

refactor

* update tests

* get version range through repo method, make tests more static

* move "should work" test
2024-08-05 21:00:25 -04:00
renovate[bot]
9765ccb5a7 chore(deps): update machine-learning (#11605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-05 21:00:00 -04:00
renovate[bot]
82d934d09d chore(deps): update dependency eslint to v9 (#11601)
* chore(deps): update dependency eslint to v9

* chore: migrate to eslint flat config files

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 16:13:16 -04:00
renovate[bot]
2821e0bf95 chore(deps): update typescript-eslint monorepo to v8 (major) (#11598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 19:13:00 +00:00
Michel Heusschen
bb3d9b6306 chore(web): remove unused event type definitions (#11600) 2024-08-05 14:50:48 -04:00
Alex
c83df2686a fix(mobile): autofill (#11591) 2024-08-05 12:02:31 -05:00
Jason Rasmussen
94da5942bd feat(web): open in map view (#11592) 2024-08-05 10:25:53 -05:00
Alex
54d2c12fff feat(docs): privacy policy (#11535) 2024-08-05 10:06:01 -05:00
foxit64
64fcb25971 fix: dockerfile linter error (#11590)
fix yamllint

Co-authored-by: sysadmin <sysadmin@localhost>
2024-08-05 09:02:02 -05:00
Jason Rasmussen
7f03bd8440 chore: dockerfile casing (#11589)
chore: docokerfile casing
2024-08-05 07:51:30 -05:00
Jason Rasmussen
2974cdbbee chore: dockerfile casing (#11588) 2024-08-05 12:07:28 +00:00
Yuvraj P
f0677735fd fix(mobile): Naming fix for the edited file (#11503) 2024-08-04 23:48:02 -05:00
Stefan Berggren
bb78eb4c4b Add Immich Distribution to Community Projects page (#11576)
Signed-off-by: Stefan Berggren <nsg@nsg.cc>
2024-08-05 03:36:55 +00:00
Mert
4ed75f2ac9 refactor(server): add config events for clip (#11575)
use config events for clip, add tests

formatting
2024-08-04 21:00:36 +00:00
Mert
3f4b783889 chore: add healthcheck field to server and ml (#11573)
add healthcheck field to server and ml
2024-08-04 13:37:43 -05:00
renovate[bot]
3968d76a57 fix(deps): update machine-learning (#11320) 2024-08-03 09:24:09 -04:00
Zack Pollard
55b31d1ce2 chore(web): fix weblate and other cleanup (#11532) 2024-08-02 13:35:47 +00:00
oidq
37cc6fbf27 fix(web): prevent change-location suggestion race-condition (#11523)
When debouncer activated on deletion, the handleSearchPlaces() function
would fire a request with empty query. UI would then show Immich API error.
2024-08-02 05:52:17 +00:00
Weblate (bot)
899b8a0ce7 chore(web): update translations (#11458)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Atakan Dulker <atakandulker@gmail.com>
Co-authored-by: Czerjak N <czerjaknorbert@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: ElTopo <cameos@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Laurentiu <laurfb@gmail.com>
Co-authored-by: Luna Kowalik <0skar16.contact@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Voinea Laurentiu Gabriel <gabivoinea29@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dkorecko <reset259@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: oopzzozzo <ek3ru8m4@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-08-01 23:30:44 -04:00
Justin Forseth
d3a5490e71 feat(server): search unknown place (#10866)
* Allow submission of null country

* Update searchAssetBuilder to handle nulls

andWhere({country:null}) produces `"exifInfo"."country" = NULL`. We want
`"exifInfo"."country" IS NULL`, so we have to treat NULL as a special
case

* Allow null country in frontend

* Make the query code a bit more straightforward

* Remove unused brackets import

* Remove log message

* Don't change whitespace for no reason

* Fix prettier style issue

* Update search.dto.ts validators per @jrasm91's recommendation

* Update api types

* Combine null country and state into one guard clause

* chore: clean up

* chore: add e2e for null/empty city, state, country search

* refactor: server returns suggestion for null values

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-02 03:27:40 +00:00
Michel Heusschen
3afb5b497f fix(web): correctly format future timeline dates (#11506) 2024-08-01 07:39:26 -04:00
Michel Heusschen
1f0f880ecb fix(web): websocket over ipv6 (#11508) 2024-08-01 07:36:31 -04:00
martyfuhry
2c05ceaf50 fix(server): external domain url validation (#11493)
* fix(web): Changes externalDomain to IsUrl()

* refactor(web): asset viewer actions (#11449)

* refactor(web): asset viewer actions

* motion photo slot and more refactoring

fix(web): Changes externalDomain to IsUrl()

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-07-31 14:09:30 -04:00
Yuvraj P
01f8b7e458 fix(mobile): Crop presets break crop rectangle #11462 (#11467)
Fix Issue 11464
2024-07-31 12:19:19 -05:00
Michel Heusschen
b73f7fe16f refactor: deduplicate MemoryType and ReactionType enums (#11479)
* refactor: deduplicate memorytype and reactiontype enums

* fix mobile
2024-07-31 12:08:31 -05:00
Michel Heusschen
281cfc95a4 refactor(web): asset viewer actions (#11449)
* refactor(web): asset viewer actions

* motion photo slot and more refactoring
2024-07-31 12:25:38 -04:00
renovate[bot]
3a3ea6135e chore(deps): update typescript-projects (#11437)
* chore(deps): update typescript-projects

* chore: formatting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-07-31 15:40:23 +00:00
Jason Rasmussen
c44271e9b2 fix(deps): vitest@2 (#11491) 2024-07-31 11:26:35 -04:00
Jason Rasmussen
86904a8382 feat(web): more languages (#11488) 2024-07-31 10:26:17 -04:00
renovate[bot]
cf54829b3b chore(deps): update dependency eslint-plugin-unicorn to v55 (#11435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-31 08:49:35 -04:00
dependabot[bot]
990627e00d chore(deps): bump stumpylog/image-cleaner-action from 0.7.0 to 0.8.0 (#11480)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-31 08:48:06 -04:00
Mert
41580696c7 feat(ml): add more search models (#11468)
* update export code

* add uuid glob, sort model names

* add new models to ml, sort names

* add new models to server, sort by dims and name

* typo in name

* update export dependencies

* onnx save function

* format
2024-07-31 04:34:45 +00:00
renovate[bot]
2423bb36c4 chore(deps): update grafana/grafana docker tag to v11.1.3 (#11451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-31 00:09:13 -04:00
Ben McCann
82b899649d fix: make HTML valid (#11465) 2024-07-31 00:05:08 -04:00
Alex
8ee8450d18 chore(mobile): post release task (#11456) 2024-07-30 21:41:10 -05:00
dependabot[bot]
6d47d52b3c chore(deps): bump docker/setup-buildx-action from 3.5.0 to 3.6.1 (#11445)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.5.0...v3.6.1)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-30 16:22:11 -04:00
Alex The Bot
919fd7d41f Version v1.111.0 2024-07-30 19:06:39 +00:00
Alex
c2fdb6aab8 chores(mobile): Translations update (#11454)
chore(mobile): translation update
2024-07-30 14:03:04 -05:00
Weblate (bot)
b6c4da37fd chore(web): update translations (#11429)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Atakan Dulker <atakandulker@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Maciek S <maslanypotwor1@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Ultragian <giancarlo.brasil@gmail.com>
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: tddaij <xdaint@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-07-30 14:01:42 -05:00
Alex
17c3e8e8bf fix(mobile): mobile logging out randomly (#11431)
* fix(mobile): refactor splash screen to not require online connection

* chore: bump flutter sdk path for vscode

* refactor: authentication provider always try network calls and only fail if 401 or no local user

* lint

* fix: revert change to lookup serverendpoint from store the isar store implementation is very broken

* fix: clear serverUrl and serverEndpoint on logout, and await logout call

* refactor: remove unneeded extra conditions in splash screen useEffect

* revert change to remove serverEndpoint on logging out

* pr feedback

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-07-30 13:15:48 -05:00
renovate[bot]
21d3f248da chore(deps): update base-image to v20240730 (major) (#11447)
chore(deps): update base-image to v20240730

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 08:57:27 -04:00
renovate[bot]
a29660aae3 chore(deps): update dependency exiftool-vendored to v28 (#11440)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 07:30:25 -04:00
renovate[bot]
6c81fa0f0a fix(deps): update dependency exiftool-vendored to v28.2.0 (#11439)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 07:29:31 -04:00
renovate[bot]
7156da502f chore(deps): update node.js to eb8101c (#11436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 22:53:17 -04:00
Alex
13741410a7 chore(mobile): Add text to bottom gallery bar (#11417) 2024-07-29 21:25:04 -05:00
Matthew Momjian
3408e6b3cb docs: warning to not edit volumes in compose (#11432)
* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml
2024-07-29 21:24:47 -05:00
Michel Heusschen
434bcec5cc fix(server): correct person birth date across timezones (#11369)
* fix(server): correct person birth date across timezones

* fix test

* update e2e tests

* use Optional decorator
2024-07-29 19:52:04 -04:00
Jason Rasmussen
ebc71e428d feat(server): reverse geocoding endpoint (#11430)
* feat(server): reverse geocoding endpoint

* chore: rename error message
2024-07-29 18:17:26 -04:00
eleith
a70cd368af fix(server): use fqdn for og:image meta tag value (#11082)
* attempt to use fqdn for og:image

opengraph image specifies that the url contains http or https, thus
implying a fqdn.

this change uses the external domain from the server config to attempt
to make the og:image have both the existing path to the thumbnail along
with the desired domain

if the server setting is empty, the old behavior will persist

please note, some og implementations do work with relative paths, so not
all og image checkers may still pass, but not all implementations have
this fallback and thus will not find the image otherwise

* tests and ssr for og:image value as fqdn

* formatting

* fix test

* formatting

* formatting

* fix tests

getConfig was requiring authentication. using already initiated global stores instead

* load config in shared link service itself

* join host and pathname/params safely

* use origin instead of host for full domain string

also fixes lint and address the imageURL type which is optional

* chore: clean up

---------

Co-authored-by: eleith <eleith@lemon.localdomain>
Co-authored-by: eleith <online-github@eleith.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-07-29 21:38:47 +00:00
Jared L
3225e33fc1 feat(server): significantly improve Australian reverse geocoding accuracy (#11370)
chore(geocoding): ingest australia PPLXs
2024-07-29 10:59:53 -04:00
Weblate (bot)
85ab916ecf chore(web): update translations (#11416)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: CraftWorks <weblate@craftworks.top>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nachtpfoetchen <nachtpfoetchen@posteo.de>
Co-authored-by: tddaij <xdaint@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-07-29 14:48:44 +00:00
Michel Heusschen
7445dad0dd fix(web): timeline group date formatting (#11392)
* fix(web): timeline group date formatting

* add isValid check

* remove duplicate type
2024-07-29 10:42:55 -04:00
Michel Heusschen
0237f9baa3 feat(web): more localized number formatting (#11401) 2024-07-29 10:38:27 -04:00
Michel Heusschen
2e059bfbfd fix(web): avoid nesting buttons inside links (#11425) 2024-07-29 10:36:10 -04:00
renovate[bot]
7bb7f63d57 chore(deps): update dependency node to v20.16.0 (#11421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 10:33:01 -04:00
renovate[bot]
66a5a5718f chore(deps): update terraform cloudflare to v4.38.0 (#11423)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 10:32:27 -04:00
Alex
ddc4d2f927 fix(mobile): client TLS on ios (#11415) 2024-07-28 17:32:53 -05:00
Weblate (bot)
0beeb61f5c chore(web): update translations (#11365)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: AlrightIDidIt <fimofuni.igamunu@gotgel.org>
Co-authored-by: AxGD <guillermeaxel@yahoo.fr>
Co-authored-by: Bartłomiej Ruk <bartek04041993@gmail.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: ChoosenMEME <timjankowski259@gmail.com>
Co-authored-by: ConfusedAlex <alex@confusedalex.dev>
Co-authored-by: Coooolfan <coolfan1024@outlook.com>
Co-authored-by: Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eric Cornish <ao475129@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Gilgwath <gilgwath@protonmail.com>
Co-authored-by: Jakub <jakubula.jm@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: NikiTricky <niki.sto2010@gmail.com>
Co-authored-by: Sabin Oana <sabin.oana@gmail.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Varga Bence Levente <varga.bence.levente@protonmail.com>
Co-authored-by: Victor Sueiro <kiwicaja@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: aarhor <aaron.horstmann9916@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: krzemyk <krzemyk.official@proton.me>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: yusufbarisk <yusufbarisk2004@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-07-28 20:53:04 +00:00
waclaw66
a321db9f48 fix(web): translation leftovers (#11412)
fix: new album
2024-07-28 15:43:25 -05:00
Matthew Momjian
827136fc8b docs: file custom location (#11413)
* file custom location

* fix microservices
2024-07-28 15:43:09 -05:00
Matthew Momjian
088eea88e0 docs: how to change PG PW (#11414)
* guide to change PG PW

* fix
2024-07-28 15:42:42 -05:00
Yuvraj P
15503784c8 feat(mobile): adds crop and rotate to mobile (#10989)
* Added Crop Feature

* Using LayoutBuilder Fix

* Using Immich Colors

* Using Immich Text Theme

* Chnaging dynamic datatype to nullable

* Fix for the retrivel of the image from the cropscreen

* Using Hooks State

* Small edits

* Finals edits

* Saving to the mobile

* Commented final code

* Commented final code

* Comments and AutoRoute

* Fix AutoRoute Final

* Naming tools and Action when made no edits

* Updating timeline after edit

* chore: lint

* format

* Light Mode Compatible

* fix duplicate page name

* Fix Routing

* Hiding the Button

* lint

* remove unused code

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-28 15:41:14 -05:00
Jonathan Jogenfors
bc8e236598 chore(server): make vite-tsconfig-paths a dev dependency instead (#11404) 2024-07-27 21:50:35 +02:00
Michel Heusschen
909bd43e65 fix(web): slideshow settings title (#11396) 2024-07-27 10:46:19 -05:00
Alex
3330885bcc chore(server): email template minor styling (#11387) 2024-07-26 21:58:48 -05:00
Jan
e1ac73718c feat(web): Duplicate-Page shortcut changes (#11183)
* duplicate page assign other shortcut keys, add 'open image' shortcut

* add shortcut info page to duplicates with own list of keys

* edit translations, add translationkeys

* format fix

* remove typo

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-26 21:47:51 +00:00
Ben
a78eeb9b9c feat(web): search bar keyboard accessibility (#11323)
* feat(web): search bar keyboard accessibility

* fix: adjust aria attributes

* fix: safari announcing the correct option count

* minor adjustments

- CircleIconButton disabled cursor
- more generic selection handler

* fix: more subtle border color in dark mode

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-26 16:45:15 -05:00
martin
86b3e3ee13 fix(web): responsive design when selecting assets in an album (#11169)
fix: responsive design when selecting assets in an album
2024-07-26 16:33:20 -05:00
waclaw66
4b2bc8e4ce fix(mobile): search filter translation + fixes (#11141)
translation + fixes
2024-07-26 16:32:19 -05:00
renovate[bot]
f92aee204e chore(deps): update dependency @types/picomatch to v3 (#11096)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-26 16:29:25 -05:00
renovate[bot]
7fd2b7965c chore(deps): update docker.io/redis:6.2-alpine docker digest to e3b17ba (#11302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-26 16:28:34 -05:00
renovate[bot]
32ba6e3e3f chore(deps): update dependency byte-size to v9 (#11356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-26 16:27:09 -05:00
Jonathan Jogenfors
0a6e5e0ec1 fix(server): make vitest pick up edited files (#11385)
fix vitest on file edit
2024-07-26 16:26:38 -05:00
Jonathan Jogenfors
65a4f86154 chore: bump vitest to 1.6.0 (#11386)
bump vitest to 1.6.0
2024-07-26 16:26:17 -05:00
ayykamp
147c6e3600 chore(web): improve responsiveness in Album and Shared Album pages on small devices (#11055)
* style: better responsiveness on album and shared album pages

* revert right margin changes

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-26 21:06:08 +00:00
Nicolò
ee6f1a010c chore(server): clean mail-templates and add tailwind style (#11296)
With this commit I wanted to complete the react-mail
 structure by properly define the templates styles by
 including tailwind css framework.

The framework is extended by both react-mail and
 tailwindcss-preset-email. Those packages help the rendering
 for various email clients.

If in future there is the necessity to target specific mail
 clients the package `tailwindcss-email-variants` and
 `tailwindcss-mso` can help too. The latter has some
 workarounds for the Ms Outlook that is still lacking
 a lot of the CSS3 funcitonality.
 to target

Signed-off-by: hitech95 <nicveronese@gmail.com>
2024-07-26 15:41:11 -05:00
renovate[bot]
a444ea7361 chore(deps): update dependency flutter to v3.22.3 (#11301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-26 15:39:33 -05:00
Alex
59b809012f chore(mobile): post release task (#11382) 2024-07-26 15:38:41 -05:00
Ben
c037a8b8fa fix(web): easier alt text translation for other languages (#11124)
* fix(web): alt text translation for non-English languages

* fix: refactor to use full translation key names

* fix: calling the translation function directly
2024-07-26 13:48:40 -05:00
Michel Heusschen
ce15cf6065 fix(web): buy immich translations (#11379) 2024-07-26 13:41:59 -05:00
Alex The Bot
04340b3a62 Version v1.110.0 2024-07-26 15:38:20 +00:00
Alex
ef7a6bb246 chore(web): change license wording and other things (#11309) 2024-07-26 10:34:35 -05:00
Alex
bc20710c6d chore(mobile): Translations update (#11373)
chore(mobile): translation update
2024-07-26 10:31:10 -05:00
Zack Pollard
a63490a23b feat: use immich hosted map tiles (#11332) 2024-07-26 15:41:09 +01:00
Nicolò
a3799b3053 feat(server): add IP trust list for reverse proxy (#11286)
* feat(server): add IP trust list for reverse proxy

Signed-off-by: hitech95 <nicveronese@gmail.com>

* feat(docs): add documentation of `IMMICH_TRUSTED_PROXIES` env

Signed-off-by: hitech95 <nicveronese@gmail.com>

---------

Signed-off-by: hitech95 <nicveronese@gmail.com>
2024-07-26 09:23:58 -05:00
Yun Jiang
ea5d6780f2 feat(mobile): Adding setting in mobile app to TLS client certificate (#10860)
* feat(mobile): Adding setting in mobile app to import TLS client certificate and private key

* Formating dart source code to pass dart format test

* Adding missed required trailing commas to pass dart static analysis

* update lock file

* variable names

---------

Co-authored-by: Yun Jiang <yjiang@roku.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-07-26 13:59:02 +00:00
Saschl
62ac9bb7cd fix(mobile): native share functionality on iPad (#11294)
* pass context to share method

* use correct context

* fix: multiselection and logs sharing

* fix: lint
2024-07-26 08:43:59 -05:00
Michel Heusschen
86a658b891 fix(mobile): negative coordinate input (#11292)
* fix(mobile): negative coordinate input

* format
2024-07-26 08:37:29 -05:00
aviv926
536628ad95 docs: Add missing info to asset types and storage locations (#11358)
first
2024-07-26 08:34:36 -05:00
Jordy
2c7db0122d fix(mobile): changed "x jaren" to "x jaar" in dutch app translations (#11371)
changed "x jaren" to "x jaar"
2024-07-26 08:29:59 -05:00
Stephen Smith
ade2901259 feat(server): Allow activating non-admin user with server license (#11206)
* feat(server): allow server license to activate a user

* feat(web): send server+client licenses to user activation when non-admin

* chore(server): update test to allow server license to activate user

* fix(web): correctly load user to determine where to save license
2024-07-25 23:27:44 -05:00
imakida
d180373ec1 fix: "acess" should be "access" (#11363) 2024-07-26 03:36:01 +00:00
Weblate (bot)
c2a65d8fac chore(web): update translations (#11165)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Alex <alex@guldager.one>
Co-authored-by: Alexandr Zhytnyk <oper.kh@gmail.com>
Co-authored-by: AlrightIDidIt <fimofuni.igamunu@gotgel.org>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Arkady Titenko <pgp-noreply@rkd.dev>
Co-authored-by: Aurora <arci@anche.no>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Coooolfan <coolfan1024@outlook.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Digital <github@crni.xyz>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Emerson Guimaraes <emersonrosa13@proton.me>
Co-authored-by: Filip Bredborg <fbredborg@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Jaksa <jaks@hotmail.de>
Co-authored-by: Joar von Arndt <joarxpablo@gmail.com>
Co-authored-by: Julien SORIN <julien.sorin@hotmail.fr>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Lukas Miskovsky <miskovskylukas@gmail.com>
Co-authored-by: MATTENN <at.mattenn@gmail.com>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Mansour Javaher <info@mansour.co.nz>
Co-authored-by: Marko <anony253@live.com>
Co-authored-by: Martin Dechev <dechev86@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mike <mike.tgv@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mingyu Kim <mingyu@mingyu.co.kr>
Co-authored-by: Oton <oms.moreira@outlook.com>
Co-authored-by: PPNplus <ppnplus@protonmail.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Quang Dang <dangminhquang.r@gmail.com>
Co-authored-by: RaduTek <radutux13@gmail.com>
Co-authored-by: Riku Viitanen <riku.viitanen@protonmail.com>
Co-authored-by: Rolando Grave <roland@graved.ch>
Co-authored-by: Rookie Nguyễn <nguyenquocthang2004@gmail.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Thế Anh Hoàng <the.anh.ls@gmail.com>
Co-authored-by: Timothy <timothy@benker.cc>
Co-authored-by: Varga Bence Levente <varga.bence.levente@protonmail.com>
Co-authored-by: Vikram Pratap Singh <vicky18189@gmail.com>
Co-authored-by: Vincenzo Nunziata <vinciosdev@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Yusuf Kenan Demiray <yusken2009@gmail.com>
Co-authored-by: aarhor <aaron.horstmann9916@gmail.com>
Co-authored-by: blomusti <m.f.varkara@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: fenix_vd <mrfenixvd@yandex.ru>
Co-authored-by: fuzfyy <egeozce35@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: mitakskia <spammitakskia@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Àlex Bravo <alexbravobosch@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-07-25 19:28:48 -04:00
Michel Heusschen
8e6bc13540 feat: people infinite scroll (#11326)
* feat: people infinite scroll

* add infinite scroll to show & hide modal

* update unit tests

* show total people count instead of currently loaded

* update personsearchdto
2024-07-25 15:59:28 -04:00
renovate[bot]
152421e288 chore(deps): update redis:6.2-alpine docker digest to e3b17ba (#11303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-25 15:20:11 -04:00
aviv926
72a8bbb874 docs: add product key to roadmap (#11351)
* add license to roadmap

* fix

* Supporter Badge

* fix
2024-07-25 19:16:56 +00:00
Zack Pollard
b8d2d38bd1 chore(docs): compress homepage screenshots, 10x smaller (#11347) 2024-07-25 14:50:00 +01:00
Jason Rasmussen
9f6ef92f0b fix(deps): exiftool-vendored (#11338) 2024-07-24 17:38:22 -04:00
renovate[bot]
9e60c107ca chore(deps): update node (#11322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-24 16:13:24 -04:00
renovate[bot]
2179f83d63 chore(deps): update machine-learning (#11310)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-23 12:53:47 -04:00
renovate[bot]
b259095899 chore(deps): update node (#11300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-23 08:22:15 -04:00
renovate[bot]
145ace0fa1 chore(deps): update base-image to v20240723 (major) (#11311)
chore(deps): update base-image to v20240723

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-23 08:21:35 -04:00
Michel Heusschen
7d3db11a5c feat(web): coordinate input for asset location (#11291) 2024-07-23 08:01:10 -04:00
Michel Heusschen
8725656fd2 fix(server): DateTimeOriginal overwrite issue with sidecar file (#11306)
* fix(server): DateTimeOriginal overwrite issue with sidecar file

* update unit test
2024-07-23 07:59:46 -04:00
renovate[bot]
6394b4a9a3 chore(deps): update machine-learning (#11299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-22 22:05:16 -04:00
Nikhil Taneja
d0b3dd888b docs: corrected container port for immich_microservices (#11170) 2024-07-22 13:55:59 +00:00
Michel Heusschen
849bc6e3aa fix(server): correct openapi response type for getServerLicense() (#11261)
* fix(server): correct openapi response type for getServerLicense()

* return 404 error when license doesn't exist

* update e2e test
2024-07-22 08:50:45 -05:00
dependabot[bot]
3d7a9d79da chore(deps): bump docker/build-push-action from 6.3.0 to 6.5.0 (#11282)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:45:25 +01:00
dependabot[bot]
f7cc9517ba chore(deps): bump docker/setup-qemu-action from 3.1.0 to 3.2.0 (#11283)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:45:14 +01:00
dependabot[bot]
73305feb5b chore(deps): bump docker/setup-buildx-action from 3.4.0 to 3.5.0 (#11284)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:45:00 +01:00
Michel Heusschen
950cd5d996 fix(web): use fixed position for download and upload panel (#11279) 2024-07-22 08:40:43 -04:00
renovate[bot]
b53bd8c525 fix(deps): update machine-learning (#10740)
* fix(deps): update machine-learning

* update openvino options, cuda

* update openvino build

* fix indentation

* update minimum nvidia driver

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-07-21 19:30:24 -04:00
Michel Heusschen
8b773a2b2e fix(server): exif description whitespace handling (#11249)
* fix(server): exif description whitespace handling

* remove trim optional chaining
2024-07-21 19:01:14 -04:00
Daniel Dietzler
1e8806854d docs: 40k stars! (#11265)
40k stars!
2024-07-21 16:19:17 -05:00
Mert
9d2d556200 feat(server): accepted video containers (#11274)
* add accepted container config

* update api

* mp4 option makes no sense

* add to transcoding settings

* wording

* updated spec config

* formatting
2024-07-21 21:14:23 +00:00
Daniel Dietzler
7ecdcb3bc0 fix(server): static mail attachment extension (#11254)
* fix: static file extension

* chore: unit tests
2024-07-20 19:00:46 -04:00
Fynn Petersen-Frey
54488b1016 feat(ml): improved ARM-NN support (#11233) 2024-07-20 15:59:27 -04:00
Alex
7c3326b662 chore(mobile): post release task (#11220) 2024-07-19 15:10:29 +00:00
Fynn Petersen-Frey
745b16e4b4 feat(mobile): remove asset from album in gallery view (#11184)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-19 10:07:36 -05:00
Alex
a469fe44a1 chore(docs): change some wording (#11201) 2024-07-18 16:52:45 -04:00
Alex The Bot
b9fc59ca9f Version v1.109.2 2024-07-18 19:33:29 +00:00
Alex
e005a123ba fix(web): user can remove server license (#11199) 2024-07-18 14:26:54 -05:00
renovate[bot]
cd63212118 chore(deps): update base-image to v20240718 (major) (#11194)
chore(deps): update base-image to v20240718

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-18 13:58:17 -05:00
Michel Heusschen
a9dd013daf fix(web): hide license popup after mouse leave (#11193) 2024-07-18 13:13:45 -05:00
Alex The Bot
01ba859567 Version v1.109.1 2024-07-18 17:55:58 +00:00
Mert
173c9070c8 fix(ml): re-add worker env (#11192)
re-add worker env
2024-07-18 17:50:52 +00:00
Saschl
d37e8ede3b feat: optionally generate thumbnails for invalid images (#11126) 2024-07-18 12:07:22 -04:00
Alex The Bot
c77702279c Version v1.109.0 2024-07-18 16:03:42 +00:00
Alex
ef0e1a81b9 feat(web): license UI (#11182) 2024-07-18 10:56:27 -05:00
Mert
88f62087fd chore(ml): set higher worker timeout for openvino (#11174) 2024-07-18 10:50:57 -04:00
pokjay
4f89195702 feat(server): country geocoding for remote locations (#10950)
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-07-18 13:27:07 +02:00
renovate[bot]
ee22bbc85c chore(deps): update base-image to v20240717 (major) (#11172)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-17 20:41:18 +00:00
Jason Rasmussen
66fae76af2 fix(server): delete large album (#11042)
fix: large album asset operations
2024-07-17 07:43:35 -04:00
renovate[bot]
f0d1dbccf4 chore(deps): update base-image to v20240716 (major) (#11144)
chore(deps): update base-image to v20240716

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-17 07:37:48 -04:00
waclaw66
a78365faab fix(web): more translations (#11167)
* item(s)

* search_by_filename

* filename example

* memory lane
2024-07-17 11:37:39 +00:00
Michel Heusschen
e3fd766e9b fix(web): byte units enum (#11161) 2024-07-17 07:25:06 -04:00
Weblate (bot)
c9c56ac600 chore(web): update translations (#11038)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andreas Gammelgaard Damsbo <andreas@gdamsbo.dk>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Carlo Zanocco <zanocco.carlo@gmail.com>
Co-authored-by: Christer Solstrand Johannessen <weblate@csj.no>
Co-authored-by: Damian Krysta <damian@krysta.dev>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Håkon Velsvik <temanor@proton.me>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: João Gonçalves <jpcg89@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leo Bottaro <weblate@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Matteo D <alex3025game@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Peter Suba <peter.suba@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shjosan <shjosan@kakmix.co>
Co-authored-by: Simmer Lajos <weblate.linguini033@passinbox.com>
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com>
Co-authored-by: Vincenzo Nunziata <vinciosdev@gmail.com>
Co-authored-by: Vykintas Vyšniauskas <vykintasv@gmail.com>
Co-authored-by: Wojtek Sobczak <mister.adalbert@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: tomtom <beub3u@gmail.com>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Àlex Bravo <alexbravobosch@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-07-16 18:11:00 -05:00
bo0tzz
f6da01cb96 chore: Update feature-request.yaml (#11150) 2024-07-16 17:26:39 -05:00
Zack Pollard
fb8d9d8c40 fix: downgrade exiftool-vendored to fix motion photo extraction (#11145)
* Revert "chore(server): update exiftool and migrate off deprecated method signatures (#10367)"

This reverts commit 1b67ea2d

* fix: downgrade exiftool-vendored to 26.0.0

* chore: change motionphoto filenames to be kebab-case

* test: add pixel 6 pro motionphoto e2e test case

* test: add pixel 8a motion photo

* chore: update test-assets submodule pointer
2024-07-16 19:55:51 +00:00
Zack Pollard
87e8c16a90 fix: #11131 storage migration not moving archived files after template change (#11139) 2024-07-16 10:58:04 +00:00
renovate[bot]
99fe7b809a chore(deps): update terraform cloudflare to v4.37.0 (#11132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 10:49:54 +01:00
renovate[bot]
04e6e879a2 chore(deps): update typescript-projects (#11129)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15 23:53:41 -04:00
Matthew Momjian
dda9c0057b docs: install script note (#11122)
install script note
2024-07-15 18:54:16 -04:00
Mert
cc1235d4aa docs: facial recognition and general clean-up (#11106)
* add facial recognition docs, clean up existing info

* Update smart-search.md

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-07-14 21:08:16 -05:00
Mert
8193416230 feat(server): conditionally run facial recognition nightly (#11080)
* only run nightly if new person

* add tests

* use string instead of date

* update sql

* update tests

* simplify condition
2024-07-14 22:53:42 +00:00
Matthew Momjian
8863bd4e7d docs: cleanup external libraries (#11099)
* cleanup external libraries

* Update external-library.md

* Update external-library.md

* Update libraries.md

* Update docs/docs/features/libraries.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update external-library.md

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-07-14 17:29:47 -04:00
Raj Dave
d23aa5e8e2 fix(docs): minor grammar fix in external-library.md (#11073) 2024-07-14 02:09:28 +00:00
renovate[bot]
18b466ee52 chore(deps): update base-image to v20240713 (major) (#11066) 2024-07-13 20:58:21 -05:00
Alex
e852971a13 fix(mobile): fix database out of size (#11065) 2024-07-13 20:55:35 -05:00
renovate[bot]
fbe29bf4cd chore(deps): update dependency rimraf to v6 (#11079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-13 21:45:45 -04:00
Michel Heusschen
5748f50c1f refactor(web): remove buffer package (#11058) 2024-07-12 16:40:57 +00:00
CanbiZ
1b3a7feb67 chore(docs): update German Readme (README_de_DE.md) (#11035)
Update README_de_DE.md

Update German Readme to newest version & improve some translations
2024-07-12 07:51:06 -04:00
Jason Rasmussen
d68bd876c1 chore: clean up change date form spacing (#11037) 2024-07-11 12:10:49 -04:00
Florian Karuhtz
c50ac55892 chore(web): use "immich-form-label" class for combobox label (#10254)
use "immich-form-label" class for combobox label
2024-07-11 11:23:58 -04:00
Adiel Tan
b2dd4e1c2b chore(docs): correct susceptible spelling (#11029)
Edit Spelling

https://dictionary.cambridge.org/dictionary/english/susceptible
2024-07-11 17:22:28 +02:00
CanbiZ
ff2ba240c9 feat(web): Rename the Menu Entry "admin.map_settings" to "admin.map_gps_settings" (#11033)
* Rename the Menu Entry "admin.map_settings" to "admin.map_gps_settings"

Explanation:
The main menu item is called Map & GPS-Settings. The sub-item below it is also called. 
It would be correct:

Main item:
Map & GPS-Settings
Sub-item 1:
Map settings

* Update en.json

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-07-11 15:20:57 +00:00
Weblate (bot)
96084355f0 chore(web): update translations (#11007)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Alexandr Zhytnyk <oper.kh@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Henrik Lievonen <henrik.lievonen@hotmail.com>
Co-authored-by: HonKami <bjfl6jvkav@randomu.aleeas.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Lukas Miskovsky <miskovskylukas@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Marc Cizeron <marc@cizeron.me>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: RJS <skudru.rinalds@gmail.com>
Co-authored-by: Rookie Nguyễn <nguyenquocthang2004@gmail.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Tyoda <tyoda@pm.me>
Co-authored-by: Ulices <hasecilu@tuta.io>
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com>
Co-authored-by: Victor Sueiro <kiwicaja@gmail.com>
Co-authored-by: Vincenzo Nunziata <vinciosdev@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Àlex Bravo <alexbravobosch@gmail.com>
Co-authored-by: Сергей Шагов <mrfenixvd@gmail.com>
2024-07-11 11:15:56 -04:00
Jason Rasmussen
25a380d023 feat(server): userinfo signing (#10756)
* feat(server): userinfo signing

* chore: e2e tests
2024-07-11 07:55:00 -04:00
CanbiZ
3cb42de931 feat(web): change mdiClose to mdiInfinity for User Management - quota (#11015)
Add Infinity Icon for Usermanagement (quota)

Add the "mdiInfinity" Icon instead of "mdiClose" for quota (0 for infinity)
2024-07-10 20:20:52 +00:00
Michel Heusschen
8dd1d95913 fix(web): prevent text wrapping for some languages (#11009) 2024-07-10 15:19:06 -05:00
Jason Rasmussen
0ee2390c7f docs: fix images (#11012) 2024-07-10 15:18:55 -05:00
MJ
52db9558b3 fix(doc): Fix broken link in Cursed Knowledge doc (#11008)
Fix broken link
2024-07-10 15:16:06 -04:00
Alex
0fbfbc86d2 chore(mobile): post release task (#11006) 2024-07-10 11:40:19 -05:00
Alex The Bot
c7432834d0 Version v1.108.0 2024-07-10 16:14:02 +00:00
Weblate (bot)
a971fae81f chore(web): update translations (#10961)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Alexandr Zhytnyk <oper.kh@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Henrik Lievonen <henrik.lievonen@hotmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Lukas Miskovsky <miskovskylukas@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Marc Cizeron <marc@cizeron.me>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: RJS <skudru.rinalds@gmail.com>
Co-authored-by: Rookie Nguyễn <nguyenquocthang2004@gmail.com>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2024-07-10 11:08:55 -05:00
Alex
a58a2eec53 fix(mobile): crash when navigate between large video files (#11002) 2024-07-10 10:30:27 -05:00
Mert
f43721ec92 fix(ml): armnn not being used (#10929)
* fix armnn not being used, move fallback handling to main, add tests

* formatting
2024-07-10 09:20:43 -05:00
Michel Heusschen
59aa347912 feat(web): render component in notifications (#10990) 2024-07-10 09:05:04 -05:00
Michel Heusschen
1dd1d36120 refactor(web): use callbacks for admin setting events (#10997) 2024-07-10 08:57:18 -05:00
Jason Rasmussen
545b206076 chore(server): remove unused code (#10999)
chore(sesrver): remove unused code
2024-07-10 09:46:52 -04:00
Michel Heusschen
cf77487c00 fix(server): skip smtp validation when there are no changes (#10991)
* fix(server): skip smtp validation when there are no changes

* rename test
2024-07-10 08:37:50 -04:00
renovate[bot]
9d8b755c07 chore(deps): update prom/prometheus docker digest to f20d312 (#10998)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 08:37:33 -04:00
Michel Heusschen
bd88b079ea fix(server): avoid server error for invalid email data type (#10978)
* fix(server): avoid server error for invalid email data type

* add e2e test

* fix e2e
2024-07-10 07:58:06 -04:00
renovate[bot]
27b13b82f5 chore(deps): update node (#10996)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 10:44:25 +00:00
renovate[bot]
79c8412660 chore(deps): update typescript-projects (#10975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 11:40:03 +01:00
renovate[bot]
a078dde241 chore(deps): update base-image to v20240710 (major) (#10995)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 11:39:41 +01:00
renovate[bot]
7e4e96c440 chore(deps): update base-image to v20240709 (major) (#10956)
chore(deps): update base-image to v20240709

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 18:41:59 -04:00
Alex
94f129d632 chore(mobile): update photo_manager dep (#10965) 2024-07-09 10:52:58 -05:00
apeman
678111ed3b fix(server): wrong video rotation with QSV and RKMPP decoding (#10905) 2024-07-09 15:18:49 +00:00
renovate[bot]
c1036d6f88 chore(deps): update dependency node to v20.15.1 (#10969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 06:56:25 -04:00
Zack Pollard
e8af0e859e chore: pin specific node version in .nvmrc (#10973) 2024-07-09 10:40:40 +00:00
Michel Heusschen
a0f6d7444a feat(web): improve show & hide people accessibility (#10954) 2024-07-08 22:42:12 -05:00
Simon Thiboutôt
eb89208abb feat(cli): use a queue for duplicate and upload (#10750)
* feat(cli): use a queue for duplicate and upload

Using a queue to process the files makes the file duplicate detection and asset upload more stable and tolerant of network errors. If an error occurs, the whole command will not stop; the task will be retried (3 times) before logging the error and moving to the next step.

The new queue abstraction is using [fastq](https://www.npmjs.com/package/fastq) internally.

* chore(cli): queue.push return promise which resolve with task

* test(cli): add spec for uploadFiles and checkForDuplicates
2024-07-08 22:39:07 -05:00
renovate[bot]
af94f0f979 chore(deps): update typescript-projects (#10962)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 22:03:15 -04:00
Weblate (bot)
025a54c462 chore(web): update translations (#10896)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Henrik Lievonen <henrik.lievonen@hotmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Joel Calado <joelcalado@gmail.com>
Co-authored-by: Johan Olsson <joholsprivat@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Ján Melíšek <melisek.janko@gmail.com>
Co-authored-by: Lauri Koo <late91@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Matteo D <alex3025game@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Nicholas <nicholasc0212@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Sam Smith <ja49619@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: coolstuff99 <aspasmoya@gmail.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: lapourgagner <poubel125@gmail.com>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-07-08 19:41:38 -04:00
Jason Rasmussen
334a709cc6 refactor(server): partner search dto (#10902)
* refactor(server): partner search dto

* fix: missed reference

* mobile fix

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-07-08 16:41:39 -04:00
Jason Rasmussen
5f25e2ce82 refactor(server): build resources (#10958) 2024-07-08 14:53:18 -04:00
renovate[bot]
04d0f575b7 chore(deps): update dependency prettier-plugin-organize-imports to v4 (#10930)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-07 22:17:06 -04:00
Michel Heusschen
e9683b326a refactor(web): show & hide people (#10933) 2024-07-07 20:33:59 -05:00
Michel Heusschen
cb40db9555 refactor(web): focus trap (#10915) 2024-07-07 20:33:07 -05:00
Ben
39221c8d1f chore(web): translate alt text (#10922)
* chore(web): translate image alt text

* fix: capitalize translations, improve unit test

* fix: unit testing against the actual en.json file

* fix: use derived store to generate alt text
2024-07-07 17:29:56 -05:00
Michel Heusschen
a5467d60ea fix(web): external library disk usage unit (#10935) 2024-07-07 07:21:17 -04:00
Michel Heusschen
d582ec02b1 fix(server): reset-admin-password command (#10939)
* fix(server): reset-admin-password command

* fix immichCli
2024-07-07 07:20:28 -04:00
Jason Rasmussen
59cdbdc492 refactor(server): use .toSorted (#10904) 2024-07-06 10:32:38 -04:00
Jason Rasmussen
01706ccf5c docs: cursed knowledge (#10907) 2024-07-06 00:02:07 -04:00
Jason Rasmussen
6c49a4ba34 fix(server): do not try to upgrade to an older version (#10903) 2024-07-05 17:50:01 -04:00
Jason Rasmussen
e1f25b44d2 refactor(server): stack owner (#10900) 2024-07-05 16:16:53 -04:00
Jordy
f6cafa3290 Update README_nl_NL.md (#10897) 2024-07-05 15:11:05 -04:00
Jason Rasmussen
53d4a5268b refactor(server): remove has asset (#10891) 2024-07-05 15:10:11 -04:00
Jason Rasmussen
cf88f4b6f8 refactor(server): bulk interface (#10889) 2024-07-05 14:58:34 -04:00
Jason Rasmussen
ac8d8d91f7 chore: add az language (#10890) 2024-07-05 13:24:03 -04:00
Weblate (bot)
842291124c chore(web): update translations (#10831)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich

Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Jaime Branco <jaimembranco@gmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Jonas Brenig <jonas.brenig@uni-wuerzburg.de>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michał Kulik <michal.kulik91@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: Tim Krämer <weblate@tk22.de>
Co-authored-by: Vladimir <vladimir.stoev1015@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: cevirici <cevirici13@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: gokulvasanthgv <gokulvasanthstudies@gmail.com>
Co-authored-by: r926215 <evdrt01@gmail.com>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2024-07-05 12:45:04 -04:00
immich-tofu[bot]
6f5b3c47b0 Added Code of conduct 2024-07-05 15:31:13 +00:00
Alex
b25642b889 fix(mobile): search picker overflow (#10870) 2024-07-05 09:47:33 -05:00
Alex
7bde19d842 chore(mobile): separate build flavors (#10872) 2024-07-05 09:43:11 -05:00
Jason Rasmussen
eb1ba11d60 refactor(server): rename asset stack to stack (#10828) 2024-07-05 09:08:36 -04:00
Michel Heusschen
23b3073687 fix(web): download archive for public user (#10877) 2024-07-05 09:08:14 -04:00
Michel Heusschen
3cd187dced refactor(web): use derived instead of get(t) (#10884) 2024-07-05 09:06:35 -04:00
dependabot[bot]
6791af8c2c chore(deps): bump docker/setup-buildx-action from 3.3.0 to 3.4.0 (#10843)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-05 11:58:20 +01:00
dependabot[bot]
e566fbb009 chore(deps): bump docker/setup-qemu-action from 3.0.0 to 3.1.0 (#10844)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-05 11:58:10 +01:00
Michel Heusschen
e5c92912fc chore(web): remove unused s function (#10878) 2024-07-05 11:51:52 +01:00
Michel Heusschen
f33d5b0a38 fix(web): duplicate thumbnail cover full width (#10880) 2024-07-05 11:51:28 +01:00
waclaw66
df10618a7e fix(mobile): exposure time display (#10842)
exposure time fix
2024-07-04 23:30:06 -05:00
Michel Heusschen
6030349a6f feat(web): use browser language by default (#10849) 2024-07-04 22:56:54 -05:00
waclaw66
6629bf50ae fix(web): user profile translation (#10851) 2024-07-04 22:55:40 -05:00
Michel Heusschen
e32ce82179 chore: remove unused snowburst one font (#10863) 2024-07-04 17:15:54 -04:00
renovate[bot]
10ea894186 chore(deps): update base-image to v20240702 (major) (#10821)
chore(deps): update base-image to v20240702

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-03 21:35:11 -05:00
Jason Rasmussen
81d12c0586 refactor(server): notification events (#10754) 2024-07-03 21:06:20 -05:00
Mert
0b88bef157 fix(server): face search migration sometimes failing (#10827)
* turn it off and back on

* handle missing smart search embedding column

* handle missing face embedding column

* simplify

* Revert "simplify"

This reverts commit 8322af0baf.

* fix migration
2024-07-03 21:02:43 -05:00
Weblate (bot)
2b8942026c chore(web): update translations (#10795)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andrii Solianyk <asolianik2015@gmail.com>
Co-authored-by: Anrijs J <ajargans@gmail.com>
Co-authored-by: Bartłomiej Ruk <bartek04041993@gmail.com>
Co-authored-by: Ben Tomsen <torben+554gc3ym@g-b.dk>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Ef <weblate.marina324@passmail.net>
Co-authored-by: Filip Bredborg <fbredborg@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Hoi <Hoihoi@users.noreply.hosted.weblate.org>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Matteo D <alex3025game@gmail.com>
Co-authored-by: MattiaPell <mattiapellegrini16@gmail.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Rajat Patel <rajat@thenextgeek.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Sushil Kumar <sushilz25558@gmail.com>
Co-authored-by: Vladimir <vladimir.stoev1015@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Yu-Kai \"Steven\" Wang <steven97102@gmail.com>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: cevirici <cevirici13@users.noreply.hosted.weblate.org>
Co-authored-by: idubnori <i.dub.nori@gmail.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: r926215 <evdrt01@gmail.com>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-07-03 21:21:02 -04:00
Jason Rasmussen
f5937a5a9b fix(web): delete library (#10822) 2024-07-03 17:09:15 -04:00
Jason Rasmussen
04f0ac1aad chore(web): remove unnused property (#10820) 2024-07-03 16:41:17 -04:00
Tom Vincent
4a481acca6 fix(server): Postgres -> Redis websocket (#10801) 2024-07-03 16:27:29 -04:00
Jason Rasmussen
de62bd3ba5 fix(server): healthcheck (#10811) 2024-07-03 11:27:03 -05:00
dependabot[bot]
ab2ea28ed9 chore(deps): bump docker/build-push-action from 6.2.0 to 6.3.0 (#10805)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 11:47:05 +01:00
Alex The Bot
96f29cefeb Version v1.107.2 2024-07-03 03:18:19 +00:00
Alex
6f950ea45d fix(mobile): incorrect translation string (#10794) 2024-07-02 22:13:22 -05:00
Alex
99c45bd4d2 fix(web): slow people page load (#10793) 2024-07-02 22:13:11 -05:00
Weblate (bot)
312030f275 chore(web): update translations (#10753)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translation: Immich/immich

Co-authored-by: Alex van den Hoogen <alex3305@gmail.com>
Co-authored-by: Andrej Kralj <andrej.kralj@gmail.com>
Co-authored-by: Aurora <arci@anche.no>
Co-authored-by: Bartłomiej Ruk <bartek04041993@gmail.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Heine Olsen <olsen10051988@gmail.com>
Co-authored-by: Henrik Lievonen <henrik.lievonen@hotmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Justin Ruiter <weblate24@justinruiter.nl>
Co-authored-by: Maciek S <maslanypotwor1@gmail.com>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: MiguelNdeCarvalho <geral@miguelndecarvalho.pt>
Co-authored-by: Nicolò <nicveronese@gmail.com>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: Vincenzo Nunziata <vinciosdev@gmail.com>
Co-authored-by: Ziemowit Zabawa <ziemek.zabawa@outlook.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: wariw <wariwpl@gmail.com>
2024-07-02 22:03:20 -05:00
Alex
bed9ccadbc chore(mobile): post release pump (#10775) 2024-07-02 16:41:40 -05:00
renovate[bot]
d55499eba0 chore(deps): update typescript-projects (#10763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02 17:28:24 -04:00
Daniel Dietzler
910b75c6cc docs: fix typo in translations link (#10783) 2024-07-02 16:40:51 -04:00
Jason Rasmussen
6a11464d60 fix(server): do not allow merging a person into themselves (#10776) 2024-07-02 19:56:05 +00:00
Alex The Bot
aa29f5d69c Version v1.107.1 2024-07-02 19:04:29 +00:00
Alex
1ee10ee2d6 feat(mobile): Revert render assets on device by default (#10470) (#10774)
Revert "feat(mobile): render assets on device by default (#10470)"

This reverts commit 32da9d90e4.
2024-07-02 19:01:54 +00:00
Alex
f23401d911 fix(mobile): map crashes on Android (#10773)
Revert "fix(mobile): upgrade maplibre_gl package to fix issue with crash in ios7.4 above simulator (#10182)"

This reverts commit 99c6fdbc1c.
2024-07-02 13:43:52 -05:00
Alex
14d94df1b8 chore(mobile): post release pump (#10759)
* chore(mobile): post release pump

* remove cache report file
2024-07-02 11:20:52 -05:00
Alex The Bot
b47ec2f88f Version v1.107.0 2024-07-02 14:13:10 +00:00
Michel Heusschen
b5c8ca075c fix(web): scroll jank on memories page (#10752) 2024-07-02 11:59:11 +01:00
Harshith Goka
7bfa642fa3 feat(web): add keyboard shortcuts to duplicates utility (#10736)
SHIFT + K: Select keep all
SHIFT + T: Select trash all
SHIFT + C: Confirm selection
2024-07-02 11:32:53 +01:00
Weblate (bot)
9a83038728 chore(web): update translations (#10742)
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Luca De Falco <deffo89@gmail.com>
Co-authored-by: MSDNicrosoft <wang3311835119@hotmail.com>
Co-authored-by: Marcin Czop <marcin@czop.ru>
Co-authored-by: Mario <17320863+myanesp@users.noreply.github.com>
Co-authored-by: Patrick Bellasi <derkling@matbug.net>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sitram <adrian.martis@gmail.com>
Co-authored-by: Suryo Wibowo <nutzlichsein+github@gmail.com>
Co-authored-by: boman <boman.d@gmail.com>
Co-authored-by: cevirici <cevirici13@users.noreply.hosted.weblate.org>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: traptegies <lars.reuss@gmx.de>
2024-07-02 10:22:54 +00:00
renovate[bot]
a1629f0793 chore(deps): update docker/build-push-action action to v6.2.0 (#10745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02 11:11:15 +01:00
renovate[bot]
d4cba57102 fix(deps): update typescript-projects (#10744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02 11:10:56 +01:00
renovate[bot]
2934676594 chore(deps): update node (#10741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02 11:09:15 +01:00
dependabot[bot]
ebea793534 chore(deps): bump docker/build-push-action from 6.1.0 to 6.2.0 (#10655)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 11:08:34 +01:00
renovate[bot]
eeae77422f chore(deps): update terraform cloudflare to v4.36.0 (#10718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-02 11:08:16 +01:00
Weblate (bot)
850424e960 chore(web): update translations (#10729)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translation: Immich/immich

Co-authored-by: Alessandro Saglia <github.eatery9779@bear-d.me>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Kirill Zhukov <siper13@gmail.com>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Przemek <skweresp@gmail.com>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: cevirici <cevirici13@users.noreply.hosted.weblate.org>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-07-01 19:16:31 -04:00
Alex
58298bd038 docs: blog post July 2024 update (#10737) 2024-07-01 15:57:25 -05:00
Alex
e46af5c26b fix(web): activity status padding regression (#10734) 2024-07-01 15:06:46 -04:00
Zack Pollard
3b37b70626 feat(server): user and server license endpoints (#10682)
* feat: user license endpoints

* feat: server license endpoints

* chore: pr feedback

* chore: add more test cases

* chore: add prod license public keys

* chore: open-api generation
2024-07-01 17:43:16 +00:00
Alex
4193b0dede fix(web): suppress album upload notification (#10717)
* fix(web): suppress album upload notification

* restore translation strings
2024-07-01 13:19:57 -04:00
Michel Heusschen
ac51cad075 feat(web): html tags inside plural and select messages (#10696)
* feat(web): html tags inside plural and select messages

* add component docs
2024-07-01 11:54:13 -05:00
Alex
b54dd4e135 docs: Translations update (#10730)
chore(mobile): translation update
2024-07-01 09:44:15 -05:00
pyorot
f5164b42e0 fix(web): remove black bezels + better integrate ActivityStatus (#10667)
* remove black bezels + better integrate activity status

* remove justify-self-end + mr-4 → mr-3 (closer to desired spacing)

* clean up

* clean up some more

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-07-01 14:05:49 +00:00
Weblate (bot)
783088afbe chore(web): update translations (#10605)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Askolds Zusans <askolds.zusans@gmail.com>
Co-authored-by: AxGD <guillermeaxel@yahoo.fr>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Daniel <danielwichers@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Fredrik Ekdahl <fekdahl@gmail.com>
Co-authored-by: Ivan Naboichshikov <inaboichshikov@gmail.com>
Co-authored-by: JBP <weblate@1peer1boom.nl>
Co-authored-by: Jan <jan.widmer.ch@gmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Kirill Zhukov <siper13@gmail.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Londoneye02 <jcdelcaz@gmail.com>
Co-authored-by: Majid <abtin.php@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Matteo <matteo.visintini@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mihai Mura <mihai.mura.dev@gmail.com>
Co-authored-by: PPNplus <ppnplus@protonmail.com>
Co-authored-by: Patrick Williamson <patrickwill@me.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Son Do <son.do@merctrans.vn>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Ultragian <giancarlo.brasil@gmail.com>
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com>
Co-authored-by: Vegard Skullerud <vegard@skullerud.net>
Co-authored-by: Victor Sueiro <kiwicaja@gmail.com>
Co-authored-by: Vincenzo Nunziata <vinciosdev@gmail.com>
Co-authored-by: YFrendo <yann.frendo@live.fr>
Co-authored-by: Yi Kuo <kuokuoyiyi@gmail.com>
Co-authored-by: Yusuf Mohammed <yousufinternet@gmail.com>
Co-authored-by: alien75 <thomas@imolesi.it>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: dweissmueller <2868emerald@navalcadets.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: nhy42 <paul.zanolin@gmail.com>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-07-01 08:54:33 -05:00
indam
744dfb675b docs: sync Chinese README with the official English version (#10724) 2024-07-01 09:27:35 +01:00
daniel bogachevsky
1d282851e2 fix(web): Sort timezones in assets settings by offset (#10697)
* fixed timezones on web are sorted alphabetically

* swaped order of operations in order to use DataTime.offset property for sorting

* optimization
2024-06-30 22:41:47 -05:00
Dawid Rejowski
d00d33d8a5 chore(doc): small punctuation fix backup-and-restore.md (#10704)
Small punctuation fix
2024-06-30 21:59:18 -05:00
Michel Heusschen
560dbd3c65 fix(web): shared link card (#10702) 2024-06-30 17:34:52 -05:00
Michel Heusschen
c58148af35 feat(web): add more translations (#10700)
* feat(web): add more translations

* formatting
2024-06-30 17:29:10 -05:00
bo0tzz
e54c18367b chore: Lower default duplicate detection distance (#10703) 2024-06-30 11:36:02 -04:00
Alex
8b6d27f1bc fix(server): show partners assets on timeline without permission (#10705)
* fix(server): show partners assets on timeline without permission

* save all

* correct fix
2024-06-29 22:45:59 -05:00
Alex
887acb9d9f chore(mobile): Revert "remove exclude album mechanism for backup (#10552)" (#10686)
Revert "chore(mobile): remove exclude album mechanism for backup (#10552)"

This reverts commit 5f47cf604a.
2024-06-29 11:30:18 -05:00
Michel Heusschen
8f553ddb39 fix(web): i18n race condition in load function (#10693) 2024-06-29 11:29:56 -05:00
Jason Rasmussen
24c1855899 fix: album remove asset bug (#10687)
* fix: album remove asset bug

* trigger GH Action

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-29 00:17:58 -04:00
Ben McCann
6ebae3c84f chore(deps): upgrade @testing-library/svelte (#10690) 2024-06-28 21:31:27 -04:00
martin
e0bb9add91 feat(web): use websocket to update the feature photo (#10683)
feat: use ws to update the feature photo
2024-06-28 14:40:18 -05:00
Pascal Sommer
821570f2fb feat(web): show favorite icon in duplicate asset (#10688)
* show favorite icon in duplicate asset

* remove isSharedLink check

* swap places of favorite icon and view button
2024-06-28 14:37:12 -05:00
Zack Pollard
a2364a12cf refactor: move /server-info endpoints to /server (#10677) 2024-06-28 17:08:19 +01:00
renovate[bot]
e361640e39 chore(deps): update grafana/grafana docker tag to v11.1.0 (#10679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-28 08:49:51 -04:00
martin
37b5d92110 fix(web): new feature photo (#9443)
* fix: new feature photo

* fix: use updatedAt
2024-06-27 20:16:26 -04:00
Matthew Momjian
325aa1d392 fix(docs): restart DB backup container (#10671)
Update backup-and-restore.md
2024-06-27 20:14:55 -04:00
Jason Rasmussen
72bf9439b0 refactor(server): event emits (#10648)
* refactor(server): event emits

* refactor: change default priority to 0
2024-06-27 15:54:20 -04:00
Jason Rasmussen
7e99394c70 fix(server): live photo relation (#10637)
* fix(server): live photo relation

* handle deletion and unit test

* lint

* chore: clean up and e2e tests

* fix test

* sql

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-27 14:41:49 -05:00
Miguel Domingues
8ff9c37d79 fix(web): match storage_template_migration_job with storage_template_migration (#10662) 2024-06-27 19:33:28 +00:00
Zhenzhen Zhao
0b4153e256 chore(trans): add zh-CN translations for custom proxy headers (#10660)
chore: add zh-CN translations for proxy headers

Signed-off-by: TripleZ <me@triplez.cn>
2024-06-27 13:38:51 -05:00
Michel Heusschen
12b9f3ad91 fix(server): about info version (#10659) 2024-06-27 12:36:25 -05:00
Jason Rasmussen
9fc9465cec feat(web): link router (#10644)
feat: link router
2024-06-27 09:09:28 -04:00
Alex
d8175d8da8 fix(mobile): asset state remain in gallery view after being deleted (#10603)
* fix(mobile): asset doesn't get removed from state renderList

* fix delete last assets

* refactor
2024-06-26 23:15:26 -05:00
Matej Kramny
922430da36 feat(mobile): add additional request headers (#10588)
* add additional request headers

* improve interface

* move headers under advanced settings

* refactor

* refactor

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-26 19:31:55 +00:00
Feng Kaiyu
a3c3619811 fix(cli): fix broken --album on Windows. (#10626)
Extract folder names via system function to avoid the difference between / and \ on Windows.
2024-06-26 11:12:30 -05:00
Pedro Ribeiro
7f5a3e5adb docs: Add new community guide to access Immich with a custom domain (#10638)
add new community guide to access immich with a custom domain

Co-authored-by: ppr88 <ppr88@local>
2024-06-26 10:55:27 -05:00
Jason Rasmussen
63041674c2 fix(server): user delete with stacked assets (#10642) 2024-06-26 09:29:52 -04:00
Jason Rasmussen
8a445cac07 chore: build metadata (#10612)
feat: build metadata
2024-06-26 08:25:09 -04:00
renovate[bot]
15c1cd6449 chore(deps): update dependency @types/node to ^20.14.7 (#10635)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 21:48:48 +00:00
renovate[bot]
8198259de8 chore(deps): update dependency typescript to v5.5.2 (#10633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 16:28:11 -04:00
Jason Rasmussen
6decf33226 chore: better auto labels (#10632) 2024-06-25 22:02:24 +02:00
renovate[bot]
df0064c83b chore(deps): pin node.js to 0ccc08f (#10628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 17:22:16 +01:00
Zack Pollard
c754f2504b chore: bump node docker versions (#10629) 2024-06-25 12:19:51 -04:00
renovate[bot]
0891658668 chore(deps): update base-image to v20240625 (major) (#10620)
chore(deps): update base-image to v20240625

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 12:18:38 -04:00
renovate[bot]
5b909eeaf0 chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 333f759 (#10631) 2024-06-25 16:18:27 +00:00
Zack Pollard
0484a4e252 chore: add renovate makefile command for testing renovate changes (#10630) 2024-06-25 12:18:02 -04:00
renovate[bot]
bf83fdee49 chore(deps): update terraform cloudflare to v4.35.0 (#10420)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 17:04:15 +01:00
renovate[bot]
9eafbb0524 fix(deps): update machine-learning (#10610) 2024-06-25 12:03:27 -04:00
Mert
6356c28f64 refactor(ml): model sessions (#10559) 2024-06-25 12:00:24 -04:00
Zack Pollard
6538ad8de7 chore: update docker node alpine versions to 3.20 (#10621) 2024-06-25 11:04:02 -04:00
renovate[bot]
9f9e42a96a chore(deps): update dependency prettier-plugin-svelte to v3.2.5 (#10623)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 11:03:29 -04:00
renovate[bot]
905d6c1508 chore(deps): update dependency @types/node to ^20.14.6 (#10627)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 11:00:49 -04:00
Zack Pollard
91af793b52 ci: group docker node and npm node updates together (#10625)
also should fix @types/node not being correct versions
2024-06-25 15:49:50 +01:00
Zack Pollard
5912fcc393 ci: use .nvmrc for node-setup node-version in github actions (#10619)
* chore: add node version pinning with .nvmrc and volta for the typescript sdk

* ci: add missing setup-node actions and use .nvmrc for setup-node node-version
2024-06-25 14:01:15 +01:00
renovate[bot]
b5b0c6fe8b chore(deps): pin dependencies (#10618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 11:22:38 +00:00
Jason Rasmussen
330648ff44 chore(deps): use full semver docker tag for node images (#10613)
* chore: use full semver docker tag for node images

* Update server/Dockerfile

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-06-25 11:12:27 +00:00
Junghyuk Kwon
54d1dc56a2 chore(docs): update Korean README (#10462)
* chore: update Korean README

* chore: correction

* chore(docs): update README_ko_KR.md

* chore: correction
2024-06-25 11:38:11 +01:00
renovate[bot]
d8e6b17ef9 fix(deps): update typescript-projects (#10616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-25 11:14:15 +01:00
renovate[bot]
d7a33c8ec2 fix(deps): update typescript-projects (#10611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-24 23:00:09 -04:00
Jason Rasmussen
0012369c67 chore: merge weblate (#10604) 2024-06-24 15:19:12 -04:00
waclaw66
cb3ac4ff9f chore(web): translation finetuning (#10601)
fixes
2024-06-24 15:05:45 -04:00
Weblate (bot)
4988df3fcb chore(web): update translations (#10593)
* chore(web): update translations

Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Michał Kulik <michal.kulik91@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translation: Immich/immich

* chore: split serbian

---------

Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Michał Kulik <michal.kulik91@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: polar <polar8143@users.noreply.hosted.weblate.org>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-24 15:04:53 -04:00
Jason Rasmussen
fc6c9a19d9 feat: more languages (#10595)
chore: more languages
2024-06-24 14:15:08 -04:00
Jason Rasmussen
13cc1f0aa6 docs: add private photos to roadmap (#10599)
docs: add locked photos to roadmap
2024-06-24 14:01:44 -04:00
Jason Rasmussen
ba72802888 chore: use immich.app email for security reports (#10594)
chore: use  immich.app email for security reports
2024-06-24 07:25:48 -07:00
RanKKI
04f0e29df6 fix(mobile): inconsistent thumbnail's label (#10589)
* fix(mobile): inconsistent thumbnail with label

* fix: limit person's name width
2024-06-24 07:24:57 -07:00
Jason Rasmussen
c83de5213f docs: add info about translations and weblate (#10591)
docs: update
2024-06-24 07:23:09 -07:00
waclaw66
dd2c7400a6 chore(web): another missing translations (#10274)
* chore(web): another missing translations

* unused removed

* more keys

* lint fix

* test fixed

* dynamic translation fix

* fixes

* people search translation

* params fixed

* keep filter setting fix

* lint fix

* $t fixes

* Update web/src/lib/i18n/en.json

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* another missing

* activity translation

* link sharing translations

* expiration dropdown fix - didn't work localized

* notification title

* device logout

* search results

* reset to default

* unsaved change

* select from computer

* selected

* select-2

* select-3

* unmerge

* pluralize, force icu message

* Update web/src/lib/components/asset-viewer/asset-viewer.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* review fixes

* remove user

* plural fixes

* ffmpeg settings

* fixes

* error title

* plural fixes

* onboarding

* change password

* more more

* console log fix

* another

* api key desc

* map marker

* format fix

* key fix

* asset-utils

* utils

* misc

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-06-24 09:50:01 -04:00
Weblate (bot)
df9e074304 chore(web): update translations (#10304)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: 2001 Y <yoshiki.tamura2001@gmail.com>
Co-authored-by: Abdullah <abdullahsalameh66@gmail.com>
Co-authored-by: Ahmad Malek <maichael.gt@gmail.com>
Co-authored-by: AlexMa2011 <alexma2011@outlook.com>
Co-authored-by: Alexis <alexisl61@outlook.fr>
Co-authored-by: Andrej Kralj <andrej.kralj@gmail.com>
Co-authored-by: AxGD <guillermeaxel@yahoo.fr>
Co-authored-by: Clément Roblot <clement.roblot@martobre.fr>
Co-authored-by: Coooolfan <coolfan1024@outlook.com>
Co-authored-by: Daddie0 <33762262+GoByeBye@users.noreply.github.com>
Co-authored-by: Dean Cvjetanović <forteee@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Denis Rebaud <denis@rebaud.fr>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Fanfouer <fanfouer@outlook.com>
Co-authored-by: Gustavo Ceolin <gustavogiulceolin@hotmail.com>
Co-authored-by: Hadrián Montes <hadrianmontes@gmail.com>
Co-authored-by: Héctor Martínez Juste <hectorzin@hotmail.com>
Co-authored-by: IM Ben <beniiorga@gmail.com>
Co-authored-by: Ignacy Kajdan <ignacy.kajdan@gmail.com>
Co-authored-by: Immich <immich@futo.org>
Co-authored-by: J1mooo <programingstafi@gmail.com>
Co-authored-by: JBP <weblate@1peer1boom.nl>
Co-authored-by: Jan <jan.widmer.ch@gmail.com>
Co-authored-by: JinYoung Park <norahc1999@gmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com>
Co-authored-by: Julien Deveaux <julien.deveaux@hotmail.com>
Co-authored-by: Julius969 <juliusdjorup@proton.me>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Kentai Radiquum <kentai.waah@gmail.com>
Co-authored-by: Kovács Gergely <kgerg@duck.com>
Co-authored-by: Kyle Park <mysky3056@gmail.com>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Leo Bottaro <weblate@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Linx <johnsmith_2003@hotmail.com>
Co-authored-by: Logge <hyper.xjo@gmail.com>
Co-authored-by: Maks s <smaks2313@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Max <Maxime.morasse@hotmail.fr>
Co-authored-by: Maximilian Waidelich <44324946+maxwai@users.noreply.github.com>
Co-authored-by: Michał Kulik <michal.kulik91@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: Napat Srichan <napatsrichan2001@gmail.com>
Co-authored-by: Nick Götti <nick.goetti@outlook.com>
Co-authored-by: Patrick <patrickwill@me.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Peter Suba <peter.suba@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Polly Julien <julien.polly@laposte.net>
Co-authored-by: Ptsa Daniel <ptsa1987@gmail.com>
Co-authored-by: Roukanken <kuko0411@gmail.com>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Simmer Lajos <weblate.linguini033@passinbox.com>
Co-authored-by: Sleeper CH <sleeperch@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Swayerka <admin@crozet.cc>
Co-authored-by: Tyoda <tyoda@pm.me>
Co-authored-by: ZtereoHYPE <57519662+ZtereoHYPE@users.noreply.github.com>
Co-authored-by: aln <imyapear@gmail.com>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: clementdelestre <clementdelestre@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: ingria <codefuhrer@gmail.com>
Co-authored-by: mxm199 <mxm199@bk.ru>
Co-authored-by: myurar1a <sirometroid1235@outlook.jp>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: wariw <wariwpl@gmail.com>
Co-authored-by: weiwhy <why1573920133@hotmail.com>
Co-authored-by: Àlex Garcia <alexgarciavila@gmail.com>
Co-authored-by: Алексей Меринов <merinov@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Кирилл Москатов <kirillmoskatov@gmail.com>
2024-06-24 12:38:50 +00:00
Alex
5f47cf604a chore(mobile): remove exclude album mechanism for backup (#10552)
* chore(mobile): remove exclude album selection mechanism

* code generator

* code generator
2024-06-22 15:31:27 -07:00
dependabot[bot]
8e2f6f1f41 chore(deps): bump docker/build-push-action from 6.0.1 to 6.1.0 (#10522)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.0.1...v6.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-22 11:10:47 -07:00
Alex
32da9d90e4 feat(mobile): render assets on device by default (#10470)
* feat(mobile): render asset on device by default

* remove unused service
2024-06-22 09:13:05 -07:00
Michel Heusschen
6164640575 fix(web): FormatMessage development keys (#10536) 2024-06-22 09:08:56 -07:00
Feng Kaiyu
4cb165304b fix(cli): handle patterns correctly on Windows (#10430)
Modify the handling of patterns in the `crawl` function to correctly
convert the current path to a pattern when it contains backslash on
Windows, in according to fast-glob's docs.
2024-06-21 17:09:02 -07:00
renovate[bot]
1200265425 chore(deps): update docker.io/redis:6.2-alpine docker digest to 328fe6a (#10515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-21 16:46:39 -04:00
renovate[bot]
0a3aafd439 chore(deps): update redis:6.2-alpine docker digest to 328fe6a (#10516)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-21 16:46:24 -04:00
Michel Heusschen
aaf7c0b6db fix(web): missing translations (#10504) 2024-06-21 13:09:10 -07:00
Michel Heusschen
b3252ffdac feat(web): translations containing html (#10491)
* feat(web): translations containing html

* add tests and more translations

* more translations

* rename FormatTags --> FormatMessage

* update version_announcement_message
2024-06-21 13:08:36 -07:00
Michel Heusschen
1129020159 fix(web): six digit year input (#10517) 2024-06-21 13:05:17 -07:00
erathmus
61a5d67674 feat(web): Adds sort order from album to shared album. (#10528) 2024-06-21 08:14:30 -07:00
Mert
42f3b50422 fix(server): /places entries sometimes not ordered alphabetically (#10514) 2024-06-20 23:48:19 -04:00
Daniel Dietzler
5e9a7b17d9 fix(server): allow library id to be null in metadata search (#10512)
* fix: allow library id to be null in metadata search

* chore: open api
2024-06-20 16:02:05 -07:00
Ben
0fda67543d chore(web): context menu improvements (#10475)
- ability to add custom hover colors
- migrate activity menu to ButtonContextMenu component
- onClick callbacks rather than events for menu options
- remove slots
- configurable menu option colors
- improve menu option layout
2024-06-20 14:15:36 -07:00
Michel Heusschen
5cde52eec9 feat(web): duplicate ui tweaks (#10506) 2024-06-20 14:14:34 -07:00
Matthew Momjian
eff839251c fix(deployment): Postgres healthcheck, add username to pg_isready (#10221) 2024-06-20 14:17:57 -04:00
Mert
a42af06889 fix(ml): limit load retries (#10494) 2024-06-20 14:13:18 -04:00
Mert
79a8ab71ef fix(server): reindex after changing to a model with a different dimension size (#10496)
reindex after truncating
2024-06-19 17:25:02 -04:00
Mert
1191978d50 fix(server): library refresh not checking trashed assets (#10495)
* set `withDeleted`

* update sql
2024-06-19 20:42:55 +00:00
renovate[bot]
7ea0278b32 chore(deps): update dependency eslint-plugin-unicorn to v54 (#10486)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-19 12:56:35 -04:00
renovate[bot]
4ef033aa55 chore(deps): update base-image to v20240618 (major) (#10457)
chore(deps): update base-image to v20240618

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-19 12:53:02 -04:00
dependabot[bot]
660afa9fad chore(deps): bump docker/build-push-action from 6.0.0 to 6.0.1 (#10483)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 12:26:52 -04:00
dependabot[bot]
104048ecd5 chore(deps): bump ws and engine.io-client in /e2e (#10488)
Bumps [ws](https://github.com/websockets/ws) and [engine.io-client](https://github.com/socketio/engine.io-client). These dependencies needed to be updated together.

Updates `ws` from 8.11.0 to 8.17.1
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.11.0...8.17.1)

Updates `engine.io-client` from 6.5.3 to 6.5.4
- [Release notes](https://github.com/socketio/engine.io-client/releases)
- [Changelog](https://github.com/socketio/engine.io-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/engine.io-client/compare/6.5.3...6.5.4)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
- dependency-name: engine.io-client
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 16:25:55 +00:00
dependabot[bot]
bec77f926e chore(deps): bump braces from 3.0.2 to 3.0.3 in /server (#10487)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 16:23:21 +00:00
renovate[bot]
ba57a1144d chore(deps): update prom/prometheus docker digest to 075b1ba (#10484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-19 12:20:58 -04:00
Mert
b3f9641edf feat(web): bulk deduplicate (#10448)
* bulk deduplicate

* notification for keeping all duplicates

* fix notification

* remove unused text

* pr feedback

* wording

* formatting
2024-06-19 12:11:59 -04:00
Mert
86cbc6e125 chore(ml): support python 3.12 (#10481) 2024-06-19 10:51:10 -04:00
Mert
968553a50e fix(server): video thumbnail generation failing with single i-frame (#10477) 2024-06-19 10:50:25 -04:00
Mert
5813dc02d1 fix(server): let thumbnail generation fail on error (#10479) 2024-06-19 10:50:09 -04:00
Mert
58b17a866b feat(web): display original heif images for safari (#10478) 2024-06-19 10:49:59 -04:00
renovate[bot]
c58b0ac66a chore(deps): update typescript-projects (#10445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-19 07:39:25 -04:00
waclaw66
517a83cfa9 fix(web): comment send button (#10453) 2024-06-18 16:29:46 -07:00
renovate[bot]
7daa761eed chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to b17c9b1 (#10465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-18 19:05:26 -04:00
Mert
e58131492d fix(server): consider all I-frames for video thumbnails (#10471)
nointra instead of nokey
2024-06-18 19:02:33 -04:00
renovate[bot]
b21572cb32 chore(deps): update machine-learning (#10446)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-18 00:45:29 -04:00
renovate[bot]
8332efcd04 chore(deps): update dependency exiftool-vendored to v27 (#10447)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 21:03:23 -07:00
Ben
b71aa4473b feat(web): keyboard accessible context menus (#10017)
* feat(web,a11y): context menu keyboard navigation

* wip: all context menus visible

* wip: more migrations to the ButtonContextMenu, usability improvements

* wip: migrate Administration, PeopleCard

* wip: refocus the button on click, docs

* fix: more intuitive RightClickContextMenu

- configurable title
- focus management: tab keys, clicks, closing the menu
- automatically closing when an option is selected

* fix: refining the little details

- adjust the aria attributes
- intuitive escape key propagation
- extract context into its own file

* fix: dropdown options not clickable in a <Portal>

* wip: small fixes

- export selectedColor to prevent unexpected styling
- better context function naming

* chore: revert changes to list navigation, to reduce scope of the PR

* fix: remove topBorder prop

* feat: automatically select the first option on enter or space keypress

* fix: use Svelte store instead to handle selecting menu options

- better prop naming for ButtonContextMenu

* feat: hovering the mouse can change the active element

* fix: remove Portal, more predictable open/close behavior

* feat: make selected item visible using a scroll

- also: minor cleanup of the context-menu-navigation Svelte action

* feat: maintain context menu position on resize

* fix: use the whole padding class as better tailwind convention

* fix: options not announcing with screen reader for ButtonContextMenu

* fix: screen reader announcing right click context menu options

* fix: handle focus out scenario

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-17 20:52:38 -07:00
Muhideen Mujeeb Adeoye
99c6fdbc1c fix(mobile): upgrade maplibre_gl package to fix issue with crash in ios7.4 above simulator (#10182)
* fix(mobile): upgrade maplibre_gl package to fix issue with crash in ios7.4 above simulator

* chore: switch from deprecated widget and controller name to new name in latest sdk

* remove todo

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-17 22:27:54 +00:00
aviv926
c1a5ed3526 fix(web): Update prompt (#10237)
* update

* update

* update

* npm run format:fix
2024-06-17 15:24:04 -07:00
dependabot[bot]
9000ce4283 chore(deps): bump docker/build-push-action from 5.4.0 to 6.0.0 (#10433)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.4.0...v6.0.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 13:11:55 -07:00
Alex
e8994d9ffd fix(web): confirm button is disabled if two dialogs are shown subsequently (#10440) 2024-06-17 11:44:25 -07:00
Stephen Smith
1b67ea2d91 chore(server): update exiftool and migrate off deprecated method signatures (#10367)
* chore(server): update exiftool and migrate off deprecated method signatures

* chore(server): update exiftool-vendored to 27.0.0

* chore(server): switch away from deprecated exiftool method signatures
- options now includes read/writeArgs making the deprecated signatures with
  args array redundant
- switch read call from file,args,options to file,options
- switch write call from file,tags,args to file,tags,options

* chore(server): move largefilesupport flags into exiftool constructor
- options now includes read/writeArgs making it available to be set globally in
  constructor
- switches back to instantiating an instance of exiftool

* chore(server): consolidate exiftool config into constructor along with writeArgs

* chore(server): move exiftool instantiation into MetadataRepository constructor
2024-06-17 10:11:11 -07:00
François-Guillaume Lemesre
38e26fd67c chore: update Unraid Docker-Compose documentation to reflect missing healthcheck start_interval parameter from Docker Engine v24.0.9. (#10406)
* Update Unraid Docker-Compose documentation to reflect missing healthcheck start_interval parameter from Docker Engine v24.0.9.

Unraid v6.12.10 uses Docker Engine v24.0.9, which does not support setting a start_interval parameter, used by the database container. Added info to the documentation to bypass this while retaining the initial health check interval.

* Fixed Markdown formatting.

* Removed info box formatting issue.

Moved the information about Unraid's Docker Engine version to section 4 of the installation instructions, instead of trying to use an info box that broke the formatting.

* fix format

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-17 17:08:31 +00:00
RanKKI
29e4666dfa fix(mobile): asset description is not shown on the sheet when opened for the first time (#10377)
* fix: invalidate asset's description when asset details changed

* refactor(exif-sheet): use description from exif instead

* refactor(asset-description): remove asset_description.provider

* fix(asset-description): set is empty based on exifInfo.description

* chore: rename service to provider
2024-06-17 10:01:02 -07:00
RanKKI
7ce87abc95 fix(mobile): my location button on maps not visible due to bottom padding (#10384)
fix(maps): my location button not visible due to bottom padding
2024-06-17 08:48:58 -07:00
RanKKI
eb987c14c1 fix(mobile): search page (#10385)
* refactor(search): hide people/places if empty

* refactor(search): remove unused stack

* refactor(search): fix dropdown menu's width

* feat(search): show camera make/model vertically on mobile devices

* fix: lint errors
2024-06-17 08:47:04 -07:00
Michel Heusschen
a6e767e46d fix(web): selecting shared link expiration (#10437) 2024-06-17 08:31:11 -07:00
Michel Heusschen
8e373cee8d fix(server): include archived assets in forced thumbnail generation (#10409) 2024-06-16 16:16:02 -04:00
Mert
6b1b5054f8 feat(server): separate face search relation (#10371)
* wip

* various fixes

* new migration

* fix test

* add face search entity, update sql

* update e2e

* set storage to external
2024-06-16 19:25:27 +00:00
RanKKI
0fe152b1ef fix(mobile): translation for title (#10324)
* fix(memory): translation for title

* chore: update memoery translation for dutch

* refactor(translation): avoid incompatibility with i18n website

* fix: lint errors
2024-06-16 15:54:15 +00:00
Mert
e77e87b936 fix(server): orientation handling for person thumbnails (#10382)
fix orientation handling
2024-06-16 08:45:58 -07:00
Michel Heusschen
0b08af7082 fix(web): update avatar color immediately (#10393) 2024-06-16 08:38:32 -07:00
Michel Heusschen
010eb1e0d6 fix(server): include trashed assets in forced thumbnail generation (#10389)
* fix(server): include trashed assets in forced thumbnail generation

* deleted -> trashed
2024-06-16 08:37:51 -07:00
Michel Heusschen
83a851b556 fix(web): play video muted when blocked by browser (#10383) 2024-06-16 08:37:25 -07:00
RanKKI
1cd51cc2de fix(app-bar): remove safe area of the app bar in photos page (#10340)
fix(app-bar): remove safe area of appbar in photos
2024-06-15 13:47:12 -07:00
Michel Heusschen
f3c15c7df8 feat(web): full screen view for duplicates (#10346)
* feat(web): full screen view for duplicates

* styling: make button visibility better

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-15 20:45:20 +00:00
Michel Heusschen
6a5435764e fix(web): allow sending test email when using config file (#10351)
fix(web): send test email when using config file
2024-06-15 12:14:28 -07:00
Michel Heusschen
dfad4f0ff4 fix(web): prevent new uploads from temporarily showing in trash (#10348) 2024-06-15 13:44:18 -04:00
Snowknight26
aea1c46bea feat(web): add cover images to individual shares (#9988)
* feat(web): add cover images to individual shares

* Update wording in share modal

* Use translation function

* Add and use new translations

* Fix formatting

* Update with suggestions

* Update test language

* Update test and language file per suggestions

* Fix formatting

* Remove unused translation
2024-06-14 19:16:48 -04:00
Jason Rasmussen
78f600ebce refactor(server): partner ids (#10321) 2024-06-14 18:29:32 -04:00
Daniel Dietzler
c896fe393f refactor(web): byte unit utils (#10332)
refactor byte unit utils
2024-06-14 17:27:46 +00:00
renovate[bot]
b4b654b53f fix(deps): update dependency exiftool-vendored to v26.2.0 (#10102)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-14 13:27:12 -04:00
Daniel Dietzler
dddc06c3b2 feat: user preferences for archive download size (#10296)
* feat: user preferences for archive download size

* chore: open api

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-14 11:27:12 -04:00
Matthew Momjian
596412cb8f docs: brief instructions to recover from corruption (#10319)
* brief instructions for corruption

* Update FAQ.mdx
2024-06-14 07:59:33 -05:00
renovate[bot]
e3a314b649 chore(deps): update node.js to eb17a08 (#10098)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-14 02:34:08 -05:00
renovate[bot]
2bdb4bca9e chore(deps): update dependency flutter to v3.22.2 (#10158)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-14 02:33:27 -05:00
Ben
211451d234 chore(web): standardize settings labels (#10303)
* chore(web): standardize settings labels

- spelling out "max" and "min" in full
- accordions use title case
- labels for settings all use sentence case
- remove the "Enable"/"Enabled"/"ENABLED" titles for toggles, in favor
  of just using the description
- change any gray labels to be immich blue, to match the look and feel
  of the other settings

* chore: update user settings toggle, remove unused "enable" strings
2024-06-14 02:32:41 -05:00
Ronald Cantillo
e1731fe316 fix(doc): literal translation & missing parts (#10295) 2024-06-14 02:31:11 -05:00
renovate[bot]
ee186a40c2 fix(deps): update typescript-projects (#10105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-13 20:46:26 -04:00
Weblate (bot)
32a0688028 chore(web): update translations (#10285)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translation: Immich/immich

Co-authored-by: AxGD <guillermeaxel@yahoo.fr>
Co-authored-by: David Anes <david.anes@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Gustavo Ceolin <gustavogiulceolin@hotmail.com>
Co-authored-by: IM Ben <beniiorga@gmail.com>
Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Julius969 <juliusdjorup@proton.me>
Co-authored-by: Kyle Park <mysky3056@gmail.com>
Co-authored-by: Macgyver <macgyver@users.noreply.hosted.weblate.org>
Co-authored-by: Maks s <smaks2313@gmail.com>
Co-authored-by: Meliox <silent.ftp@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: Napat Srichan <napatsrichan2001@gmail.com>
Co-authored-by: RJS <skudru.rinalds@gmail.com>
Co-authored-by: Samoht11 <thomasa24@gmail.com>
Co-authored-by: Sleeper CH <sleeperch@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: kyu seok Park <tofinders@gmail.com>
Co-authored-by: mxm199 <mxm199@bk.ru>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Владислав Потаенко <vipotaenko02@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-06-14 00:35:49 +00:00
Daniel Dietzler
e5ed7d4af1 chore: update discord links (#10301)
update discord links
2024-06-13 20:27:01 -04:00
William Brockhus
30627fe91e chore: fix typo in jobs-workers.md (#10302) 2024-06-13 19:06:58 -04:00
Jason Rasmussen
77bd162872 fix(server): headers already send (#10289) 2024-06-13 13:30:34 -05:00
Jason Rasmussen
c6ab047167 fix(server): oauth linking error message (#10287) 2024-06-13 11:42:07 -04:00
Alex The Bot
8c2195c820 Version v1.106.4 2024-06-13 15:12:51 +00:00
Zack Pollard
5e99f651ec feat(web): add chinese (traditional), bislama and croatian to our supported languages (#10283)
* feat(web): add chinese (traditional), bislama and croatian to our supported languages

* test: remove language tag tests as it doesn't really test the correctness of tags
2024-06-13 15:00:55 +00:00
Weblate (bot)
0de15121f2 chore(web): update translations (#10224)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Adrian <adrian.hundseth@gmail.com>
Co-authored-by: Andrej Kralj <andrej.kralj@gmail.com>
Co-authored-by: Ari <ayhavlin@gmail.com>
Co-authored-by: AxGD <guillermeaxel@yahoo.fr>
Co-authored-by: Beniamin Iorga <beniiorga@gmail.com>
Co-authored-by: BoBBer446 <eXestend@gmx.de>
Co-authored-by: Daddie0 <33762262+GoByeBye@users.noreply.github.com>
Co-authored-by: David Anes <david.anes@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Erik Mizenak <erikmizenak@gmail.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Fanfouer <fanfouer@outlook.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: J1mooo <programingstafi@gmail.com>
Co-authored-by: Jan <jan.widmer.ch@gmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Kihoon Kim <kihoon.kim.dev@gmail.com>
Co-authored-by: Kyle Park <mysky3056@gmail.com>
Co-authored-by: Londoneye02 <jcdelcaz@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miki M <medolino2009@gmail.com>
Co-authored-by: Nega Duck <negaduck420@gmail.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Peter Suba <peter.suba@gmail.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Pontus Österlindh <Pompe90@users.noreply.hosted.weblate.org>
Co-authored-by: Ptsa Daniel <ptsa1987@gmail.com>
Co-authored-by: Ryan Gleeson <gleeson.ryanj@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: SisyphusMD <guardian.note2892@fastmail.com>
Co-authored-by: ZHYang <i526842@gmail.com>
Co-authored-by: ZOKOB <remyfrichet@gmail.com>
Co-authored-by: Zack Pollard <zack@futo.org>
Co-authored-by: ZtereoHYPE <me@ztereohype.dev>
Co-authored-by: buck5060 <buck5060@gmail.com>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: kyu seok Park <tofinders@gmail.com>
Co-authored-by: mxm199 <mxm199@bk.ru>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: yuuaHP <identity@yuua.dev>
Co-authored-by: Владислав Потаенко <vipotaenko02@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 변준서 <four2mis@gmail.com>
2024-06-13 15:50:05 +01:00
Michel Heusschen
212ba35aef chore(web): translations in page load functions (#10260) 2024-06-13 09:23:52 -05:00
Richard Salame
827ec1b63a chore(doc): update quick-start.mdx (#10276)
Update quick-start.mdx

The following changes are made:

- Changed the headings to capital case.
- Changed a few sentences to sound more clear.
- Removed '?' from the heading as per the standards.
2024-06-13 09:23:02 -05:00
Alex
e2a2c86a31 chore(server): optional originalMimeType in asset response payload (#10272)
* chore(server): optional originalMimeType in asset response payload

* lint

* Update web/src/lib/utils/asset-utils.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* fix permission of shared link

* test

* test

* test

* test server

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-13 09:21:47 -05:00
bo0tzz
df31eb1214 chore(docs): Delete unsupported SQL shenanigans (#10278) 2024-06-13 13:58:44 +00:00
Zack Pollard
0d6a4975a3 chore(web): remove unnecessary input.select for lang selector (#10273)
chore: remove unnecessary input.select for lang selector
2024-06-13 12:44:06 +00:00
Zack Pollard
7de2665344 fix(web): more language selector nits (#10271)
* fix: always sort development lang to bottom of list

* fix: clear search query in languages when box is clicked
2024-06-13 12:37:15 +01:00
bo0tzz
058ca28d88 feat(web): Language settings list UX nits (#10261)
* feat(web): Sort language settings list

before: https://bo0.tz/u/xMLnEW.png
after: https://bo0.tz/u/lGLn9h.png

* feat(web): Select combobox text when focused
2024-06-13 06:01:18 -05:00
Min Idzelis
b9593361a4 chore: additional makefile targets (#10243) 2024-06-13 05:58:44 -05:00
Michel Heusschen
a54e01ef2f fix: load original image for gifs (#10252) 2024-06-13 05:57:46 -05:00
Mert
fb641c74be fix(server): use preview image when generating person thumbnail from video (#10240) 2024-06-12 22:16:26 -04:00
Alex
c642150b85 chore(mobile): post release task (#10228) 2024-06-12 14:17:58 -05:00
Alex The Bot
a8a7d29891 Version v1.106.3 2024-06-12 18:26:10 +00:00
Alex
67e98ed313 fix(mobile): video player not updating state (#10220)
* fix(mobile): video player not updating state

* unused code
2024-06-12 12:43:01 -05:00
renovate[bot]
47ef48e3c2 chore(deps): update base-image to v20240611 (major) (#10118)
chore(deps): update base-image to v20240611

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-12 12:51:46 -04:00
waclaw66
376feadb76 fix(web): missing svelte translations (#10199)
* fix(web): missing svelte translations

* fixes

* format fix

* translation keys fix

* "merge" key fix

* Update web/src/lib/components/shared-components/side-bar/more-information-albums.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Update web/src/lib/i18n/en.json

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* suggestion fix

* trash pluralization

* video+photo count fix

* format fix

* unused removal

* translation key fix

* duplicate key removal

* format fix

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-06-12 17:37:46 +01:00
Jason Rasmussen
3d82005797 fix: no floats (replace with doubles) (#10218)
* fix: no floats (replace with doubles)

* Update server/src/utils/misc.ts

Co-authored-by: Zack Pollard <zackpollard@ymail.com>

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-06-12 17:36:24 +01:00
Weblate (bot)
10aa00af21 chore(web): update translations (#10216)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translation: Immich/immich

Co-authored-by: Mario <17320863+myanesp@users.noreply.github.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2024-06-12 17:35:04 +01:00
Zack Pollard
1f8bdcdce7 chore: renovate shouldn't update mobile native dependencies (#10217) 2024-06-12 17:00:54 +01:00
Jason Rasmussen
98ebfc22f8 chore: translations from mobile (#10214) 2024-06-12 15:47:51 +01:00
Weblate (bot)
032b99fe93 chore(web): update translations (#10203)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Alexandr Zhytnyk <oper.kh@gmail.com>
Co-authored-by: Amadeous <am4d3ous@users.noreply.hosted.weblate.org>
Co-authored-by: Beniamin Iorga <beniiorga@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Fanfouer <fanfouer@outlook.com>
Co-authored-by: Jan <jan.widmer.ch@gmail.com>
Co-authored-by: Kentai Radiquum <kentai.waah@gmail.com>
Co-authored-by: Kim <shnukoms@users.noreply.hosted.weblate.org>
Co-authored-by: Maximilian Waidelich <44324946+maxwai@users.noreply.github.com>
Co-authored-by: Maximilian Waidelich <maximilian.waidelich@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: Yves ANDOLFATTO <register@yves.aleeas.com>
Co-authored-by: ZtereoHYPE <me@ztereohype.dev>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: clementdelestre <clementdelestre@gmail.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: mgabor <mgabor@users.noreply.hosted.weblate.org>
Co-authored-by: opl- <jakub.trzy@op.pl>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: wariw <wariwpl@gmail.com>
Co-authored-by: Владислав Потаенко <vipotaenko02@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2024-06-12 15:38:18 +01:00
Zack Pollard
07156135c2 fix(server): double counting cores when processor name includes the word "processor" (#10211) 2024-06-12 13:49:20 +00:00
Michel Heusschen
9dbf5db72e fix(server): checkExistingAssets (#10192)
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-12 08:48:44 -05:00
Daniel Heppner
52170423be feat(web): select all duplicates (#10189)
* feat(web): select all duplicates

Allows users to select or deselect all duplicate photos when removing duplicates

* styling

* chore(web): add more translations to duplicates page

* color

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-06-12 13:01:55 +00:00
Zack Pollard
ae095baad3 fix(server): only run healthchecks when api worker is running on immich-server (#10204)
fix: only run healthchecks when api worker is running on immich-server
2024-06-12 12:44:30 +01:00
Michel Heusschen
f99f289f74 fix(web): small translation issues + remove unused (#10200)
* fix(web): small translation issues + remove unused

* more unused keys

* formatting

* fix(web): incorrectly used translations

* fix and remove unused translations

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-06-12 12:13:10 +01:00
Alex
476eea44df chore(web): remove thumbnail usage for places card (#10142)
* chore(web): remove thumbnail usage for places

* remove href attribute from Thumbnail

* linting
2024-06-12 11:12:58 +00:00
Jason Rasmussen
e84657192c refactor: config caching (#10168) 2024-06-12 11:07:35 +00:00
Mert
5dda5d93f5 chore(docs): remove microservices from hwa docs (#10188)
remove microservices from hwa docs
2024-06-12 11:57:40 +01:00
Michel Heusschen
6260caf649 fix(web): multi file upload in albums (#10190) 2024-06-12 11:57:11 +01:00
Michel Heusschen
9e5c52b7b7 chore(web): more translations for user settings and admin pages (#10161)
* chore(web): more translations for user settings and admin pages

* JobSettings translations

* feedback

* missed one

* feedback
2024-06-12 11:54:40 +01:00
Weblate (bot)
0e1311e3d3 chore(web): update translations (#10152)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: 94tiger <94tiger@naver.com>
Co-authored-by: Adrian <adrian.hundseth@gmail.com>
Co-authored-by: Andrej Kralj <andrej.kralj@gmail.com>
Co-authored-by: AngelaDMerkel <personal@caduffy.com>
Co-authored-by: Anton <ajp_anton@hotmail.com>
Co-authored-by: Beniamin Iorga <beniiorga@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Eero Jääskeläinen <eero.jaaskelainen@gmail.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Flowake <weblate.cx6on@passmail.net>
Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Jakub <jakubula.jm@gmail.com>
Co-authored-by: Jan <account@thebraker.net>
Co-authored-by: Jan <jan.widmer.ch@gmail.com>
Co-authored-by: Jason Dean Lessenich <jasonlessenich@gmail.com>
Co-authored-by: Joachim Klahr <joachim@klahr.se>
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com>
Co-authored-by: Julien Deveaux <julien.deveaux@hotmail.com>
Co-authored-by: Kentai Radiquum <kentai.waah@gmail.com>
Co-authored-by: Kim <shnukoms@users.noreply.hosted.weblate.org>
Co-authored-by: Kyle Park <mysky3056@gmail.com>
Co-authored-by: League2EB <info@league2eb.me>
Co-authored-by: Londoneye02 <jcdelcaz@gmail.com>
Co-authored-by: Luca Kröger <l.kroeger01@gmail.com>
Co-authored-by: Manic87 <nicolas@familie-mach.net>
Co-authored-by: Marcos Besteiro López (MarcosBL) <marcosbl@gmail.com>
Co-authored-by: MeisterEder286 <walbrun.johann@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Miko-Matias Grönvall <matias.gronvall@gmail.com>
Co-authored-by: MozPri <primoz.arh@gmail.com>
Co-authored-by: Nathan <bonnemainsnathan@gmail.com>
Co-authored-by: Ole Morten Didriksen <code@oledid.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Peter Suba <peter.suba@gmail.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Ptsa Daniel <ptsa1987@gmail.com>
Co-authored-by: RWDai <869759838@qq.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Simmer Lajos <weblate.linguini033@passinbox.com>
Co-authored-by: SisyphusMD <guardian.note2892@fastmail.com>
Co-authored-by: Smiehoo <github@pocz.net>
Co-authored-by: Thomas <thomas.ceccato.02@gmail.com>
Co-authored-by: Tomas Babej <web+weblate@tbabej.com>
Co-authored-by: Tomek <tjomek@gmail.com>
Co-authored-by: VB <Victor2B@protonmail.com>
Co-authored-by: Vojtěch Bargl <bargl.vojtech@gmail.com>
Co-authored-by: YFrendo <yann.frendo@live.fr>
Co-authored-by: Yves ANDOLFATTO <register@yves.aleeas.com>
Co-authored-by: ZtereoHYPE <me@ztereohype.dev>
Co-authored-by: biglate <bigtech+weblate@aleeas.com>
Co-authored-by: carcawey <dacarva@gmail.com>
Co-authored-by: clementdelestre <clementdelestre@gmail.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: ferrets <ferrets@live.cn>
Co-authored-by: frauhottelmann <frauhottelmann@gmail.com>
Co-authored-by: gilo <giantlolli@proton.me>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: guillezcurra <guillezcurra@gmail.com>
Co-authored-by: ingria <codefuhrer@gmail.com>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: myurar1a <sirometroid1235@outlook.jp>
Co-authored-by: sephrat <florian.dupret@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Кирилл Москатов <kirillmoskatov@gmail.com>
2024-06-12 11:52:33 +01:00
Stephen Smith
216cca4383 fix(server): exiftool largefilesupport only set for the first call (#10167)
* Revert "feat(server): enable exiftool largefilesupport (#9894)"

This reverts commit afa10ebcb2.

* feat(server): enable exiftool largefilesupport by passing options to read
2024-06-12 05:43:38 -05:00
Mert
cdc98de848 fix(server): increase pixel limit for thumbnail generation (#10181)
disable input limit
2024-06-11 22:11:03 -04:00
Mert
126cbeabe8 feat(server): add av1 support for vaapi (#10180)
add av1
2024-06-12 00:24:06 +00:00
Mert
2e0c6f6fff fix: postgres health check reporting any db without checksums as unhealthy (#10178)
handle disabled checksumming
2024-06-12 00:18:24 +00:00
Alex The Bot
81790ab166 Version v1.106.2 2024-06-11 19:09:13 +00:00
Alejandro Armas
69b948f3d0 fix(mobile): Motion Photos stopping music (#10151)
Add videoPlayer opt to prevent motionPhotos pausing music
2024-06-11 11:14:49 -05:00
Weblate (bot)
4b2ed28b1a chore: update translations (#10141)
chore(web): update translations

Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Alex van den Hoogen <alex3305@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com>
Co-authored-by: Kentai Radiquum <kentai.waah@gmail.com>
Co-authored-by: Manic87 <nicolas@familie-mach.net>
Co-authored-by: Marcos Besteiro López (MarcosBL) <marcosbl@gmail.com>
Co-authored-by: Mario <shopping.uncate@aleeas.com>
Co-authored-by: Michał Kulik <michal.kulik91@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: PolairsYHNL-Immich <polarisyhnl@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Zack Pollard <zack@futo.org>
Co-authored-by: upsetdog <upsetdog@proton.me>
Co-authored-by: Łukasz Kierepka <lukasz_kierepka@hotmail.com>
2024-06-11 17:06:53 +01:00
Michel Heusschen
b8e6ae65b1 fix(web): backwards asset navigation in GalleryViewer (#10132)
* fix(web): backwards asset navigation in GalleryViewer

* fix ctrl/cmd click

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-11 15:27:18 +00:00
renovate[bot]
36bdbf93a7 fix(deps): update machine-learning (#10099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-11 11:24:10 -04:00
Alex
3eee6c4dcf fix(web): cannot view image when metadata sharing is turned off for public sharing (#10145)
* fix(web): cannot view image when metadata sharing is turned off for public sharing

* Update web/src/lib/utils/asset-utils.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-11 15:23:48 +00:00
Michel Heusschen
3a3676bc82 fix(server): cache-control header missing from / requests (#10131)
* fix(server): cache-control header missing from / requests

* disable extension fallback
2024-06-11 10:18:52 -05:00
Zack Pollard
34fc572276 chore: update translations (#10140)
* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 81.0% (631 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 81.0% (631 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

---------

Co-authored-by: PolairsYHNL-Immich <polarisyhnl@gmail.com>
Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-11 15:28:03 +01:00
Zack Pollard
ef17c257ef chore: update translations (#10138)
* chore:  (German)

Currently translated at 8.9% (70 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 8.9% (70 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Spanish)

Currently translated at 4.2% (33 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/

* chore:  (French)

Currently translated at 2.4% (19 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 2.4% (19 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (Russian)

Currently translated at 0.5% (4 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.6% (589 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.6% (589 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (Italian)

Currently translated at 3.9% (31 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Italian)

Currently translated at 3.9% (31 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Czech)

Currently translated at 2.6% (21 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.7% (590 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.7% (590 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Russian)

Currently translated at 0.7% (6 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Dutch)

Currently translated at 5.9% (46 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Italian)

Currently translated at 4.4% (35 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Polish)

Currently translated at 0.6% (5 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/

* chore:  (Russian)

Currently translated at 1.9% (15 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Russian)

Currently translated at 1.9% (15 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Dutch)

Currently translated at 6.0% (47 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Russian)

Currently translated at 2.0% (16 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 80.2% (625 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 80.2% (625 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Vietnamese)

Currently translated at 0.5% (4 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

---------

Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Luca Kröger <l.kroeger01@gmail.com>
Co-authored-by: Héctor Martínez Juste <hectorzin@hotmail.com>
Co-authored-by: Nathan <bonnemainsnathan@gmail.com>
Co-authored-by: Fanfouer <fanfouer@outlook.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Stefan Gries <stefan@gries.nrw>
Co-authored-by: Bouchet Mateo <mateo.bouchet+hosted.weblate.org@mhaz42.fr>
Co-authored-by: Alessandro Saglia <webslate.eskimo0977@bear-d.me>
Co-authored-by: ZtereoHYPE <me@ztereohype.dev>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Quan <weiyideai520@hotmail.com>
Co-authored-by: PolairsYHNL-Immich <polarisyhnl@gmail.com>
Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-11 15:16:23 +01:00
Weblate (bot)
4c69cb89d7 chore: update translations (#10125)
* chore:  (German)

Currently translated at 8.9% (70 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 8.9% (70 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Spanish)

Currently translated at 4.2% (33 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/

* chore:  (French)

Currently translated at 2.4% (19 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 2.4% (19 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (Russian)

Currently translated at 0.5% (4 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.6% (589 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.6% (589 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (French)

Currently translated at 4.1% (32 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (Italian)

Currently translated at 3.9% (31 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Italian)

Currently translated at 3.9% (31 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Czech)

Currently translated at 2.6% (21 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.7% (590 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 75.7% (590 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Russian)

Currently translated at 0.7% (6 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (German)

Currently translated at 34.2% (267 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Dutch)

Currently translated at 5.9% (46 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Italian)

Currently translated at 4.4% (35 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Polish)

Currently translated at 0.6% (5 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/

* chore:  (Russian)

Currently translated at 1.9% (15 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Russian)

Currently translated at 1.9% (15 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Dutch)

Currently translated at 6.0% (47 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 76.5% (596 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

---------

Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Luca Kröger <l.kroeger01@gmail.com>
Co-authored-by: Héctor Martínez Juste <hectorzin@hotmail.com>
Co-authored-by: Nathan <bonnemainsnathan@gmail.com>
Co-authored-by: Fanfouer <fanfouer@outlook.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: Stefan Gries <stefan@gries.nrw>
Co-authored-by: Bouchet Mateo <mateo.bouchet+hosted.weblate.org@mhaz42.fr>
Co-authored-by: Alessandro Saglia <webslate.eskimo0977@bear-d.me>
Co-authored-by: ZtereoHYPE <me@ztereohype.dev>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Pavel Shamshin <odan@selaz.org>
Co-authored-by: Quan <weiyideai520@hotmail.com>
Co-authored-by: PolairsYHNL-Immich <polarisyhnl@gmail.com>
2024-06-11 13:42:57 +00:00
Jason Rasmussen
735455508c feat(cli): auto-release (#10127) 2024-06-11 08:33:36 -05:00
Alex
eba166a2f1 fix(web): cannot click on explore place (#10121) 2024-06-11 08:32:39 -05:00
Jason Rasmussen
8cf8a2cb35 chore(cli): prepare release (#10124) 2024-06-11 12:16:49 +00:00
Zack Pollard
1767ed2192 chore(web): enable prettier json key sorting recursively (#10120) 2024-06-11 12:52:20 +01:00
Zack Pollard
3c15dae341 docs: fix archive script labels and change to variable to nextVersion (#10119) 2024-06-11 12:37:20 +01:00
Zack Pollard
8568c2e8b9 docs: add archived docs back to v1.100.0 (#10116)
chore: add archived docs back to v1.100.0
2024-06-11 12:36:59 +01:00
Alex
d558ea819a fix(web): cannot perform duplication actions as normal user (#10115)
* fix(web): cannot perform duplication actions as normal user

* use immich dialog
2024-06-11 11:30:42 +00:00
Alex
60701d131e chore(mobile): post release pump (#10114) 2024-06-11 06:26:52 -05:00
Alex
04808f8b5c fix(mobile): warning message not resetting when changing server URL (#10112) 2024-06-11 10:48:49 +00:00
Zack Pollard
8a866297f7 docs: fix archive version url to include v prefix (#10111)
* docs: fix archive version url to include v prefix

* docs: fix archived versions to add missing v to 1.106.1
2024-06-11 05:43:39 -05:00
Alex The Bot
b5991c908e Version v1.106.1 2024-06-11 09:39:23 +00:00
Jason Rasmussen
321c3ccfc6 docs: version switcher (#10091)
* docs: version switcher

* chore: pump script

* chore: fix linting on bash script

* chore: remove 1.106.0 from archived versions

* chore: change version archive script to take next server version not current version

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-06-11 10:33:45 +01:00
Weblate (bot)
05874bd84e chore: update translations (#10096)
* chore:  (German)

Currently translated at 5.9% (46 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Italian)

Currently translated at 3.5% (28 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (German)

Currently translated at 8.7% (68 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 74.9% (584 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Dutch)

Currently translated at 5.7% (45 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (English (Developer))

Currently translated at 100.0% (779 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_devel/

---------

Co-authored-by: Martin Bosner <martin@bosner.de>
Co-authored-by: Alessandro Saglia <webslate.eskimo0977@bear-d.me>
Co-authored-by: Sophie <mail@sopht.li>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-11 10:09:58 +01:00
Michel Heusschen
79705dc58d fix(web): language selector for chinese and norwegian (#10107)
* fix(web): language selector for chinese and norwegian

* add unit test

* formatter

* undo name change
2024-06-11 09:07:42 +00:00
aviv926
71a132b0b8 docs: Update the system settings page (#10094)
* updating

* npm run format

* fix \ > /
2024-06-11 03:52:29 -05:00
Alex
d14f23497c fix(server): album update disable no effect (#10090) 2024-06-11 03:51:58 -05:00
Jason Rasmussen
a916df56ee fix: roadmap docs (#10095) 2024-06-10 22:11:50 +00:00
aviv926
73dcb9b452 docs: add detect duplicate assets to roadmap (#10093)
* updating

* uncomment
2024-06-10 21:49:10 +00:00
Alex The Bot
f32c02bd25 Version v1.106.0 2024-06-10 17:50:00 +00:00
Zack Pollard
b16c9405d8 docs: otel metrics port worker split (#10085) 2024-06-10 12:44:10 -05:00
Alex
46df165ef2 feat(mobile): compatibility message warning (#10065)
* feat(mobile): compatibility message warning

* refactor and better signature
2024-06-10 12:43:54 -05:00
Zack Pollard
19e35d8d3f chore(server): remove unused imagemin type dependency (#10084) 2024-06-10 17:08:25 +00:00
Alex
c4c070569f fix(web): mouse-wheel scrolling on detail panel is disabled (#10080) 2024-06-10 12:05:52 -05:00
Jason Rasmussen
7651f70c88 fix(server): asset delete logic (#10077)
* fix(server): asset delete logic

* test: e2e
2024-06-10 13:04:34 -04:00
Alex
4698c39855 chore: remove pr labeler requirement (#10081) 2024-06-10 12:59:19 -04:00
Zack Pollard
2f2aecfb47 fix(server): otel not working due to port conflicts after combining containers (#10078)
fix: otel not working due to port conflicts after combining containers

Fixes #9759
2024-06-10 16:01:04 +00:00
dependabot[bot]
20efd82461 chore(deps): bump docker/build-push-action from 5.3.0 to 5.4.0 (#10069)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.3.0...v5.4.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 14:52:50 +01:00
Zack Pollard
22a0b4d900 chore(web): order json files alphabetically (#10076) 2024-06-10 09:37:21 -04:00
Weblate (bot)
2f25a8a437 chore: update translations (#10075)
chore:  (Vietnamese)

Currently translated at 0.3% (3 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-10 14:16:21 +01:00
Weblate (bot)
7a0bc0ea87 chore: update translations (#10074)
chore:  (Vietnamese)

Currently translated at 0.2% (2 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-10 14:09:12 +01:00
Weblate (bot)
a564c80193 chore: update translations (#10073)
chore:  (Vietnamese)

Currently translated at 0.1% (1 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-10 14:06:20 +01:00
Weblate (bot)
f4671617d1 chore: update translations (#10072)
chore:  (Vietnamese)

Currently translated at 0.1% (1 of 779 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

Co-authored-by: Zack Pollard <zack@futo.org>
2024-06-10 14:03:48 +01:00
Zack Pollard
d331da0ced chore(web): fix weblate conflicts (#10071)
* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Dutch)

Currently translated at 5.8% (46 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 5.7% (45 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (German)

Currently translated at 5.7% (45 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Hungarian)

Currently translated at 0.1% (1 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 55.3% (432 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 55.3% (432 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (German)

Currently translated at 5.7% (45 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Dutch)

Currently translated at 5.8% (46 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Spanish)

Currently translated at 0.1% (1 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/

* chore:  (Arabic)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/

* chore:  (Catalan)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/

* chore:  (Danish)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/

* chore:  (Finnish)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/

* chore:  (French)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/

* chore:  (Hebrew)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/

* chore:  (Hindi)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/

* chore:  (Hungarian)

Currently translated at 0.1% (1 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/

* chore:  (Italian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/

* chore:  (Japanese)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/

* chore:  (Korean)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/

* chore:  (Lithuanian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/

* chore:  (Latvian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/

* chore:  (Mongolian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mn/

* chore:  (Norwegian Bokmål)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/

* chore:  (Polish)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/

* chore:  (Portuguese)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/

* chore:  (Romanian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/

* chore:  (Russian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/

* chore:  (Slovak)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/

* chore:  (Slovenian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/

* chore:  (Serbian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr/

* chore:  (Swedish)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/

* chore:  (Thai)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/

* chore:  (Ukrainian)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/

* chore:  (Vietnamese)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/

* chore:  (Czech)

Currently translated at 0.0% (0 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 55.3% (432 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore(web): enable prettier for json files in web

---------

Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: LLL <326867814@qq.com>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Manic87 <nicolas@familie-mach.net>
Co-authored-by: Peter Suba <peter.suba@gmail.com>
Co-authored-by: Anonymous <noreply@weblate.org>
2024-06-10 13:59:54 +01:00
aviv926
84da9abcbc docs: Add Email Notifications info (#9930)
* Add Email Notifications info

* remove spaces

* Add ` ` to smtp link

* Small fixes

* PR feedback

* npm run format:fix

* PR feedback

* update docs

* formatting

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-09 20:07:08 +00:00
Robert Schäfer
48eede59b9 refactor: dedicated icon for permanently delete (#10052)
Motivation
----------
It's a follow up to #10028. I think it would be better user experience if one can tell by the icon what the delete button is about to do.

I hope I caught all the occurences where one can permanently delete assets.

How to test
-----------
1. Visit e.g. `/trash`
2. If you select some assets, the delete button in the top right corner
   looks different.
2024-06-09 14:25:27 -05:00
Fynn Petersen-Frey
972c66d467 fix(server): proper asset sync (#10019)
* fix(server,mobile): proper asset sync

* fix CI issues

* only use id instead of createdAt+id

* remove createdAt index

* fix typo

* cleanup createdAt usage

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-09 14:19:28 -05:00
Robert Schäfer
69795a3763 refactor: remove dead code from Makefile (#10061)
Motivation
----------
I guess these make targets should have been deleted in 57136e48fb.

How to test
-----------
1. Nothing really, this removes dead code
2024-06-09 19:18:41 +00:00
Robert Schäfer
9c337223e6 ci: automatically apply PR labels (#10064)
Motivation
----------
For me as a new contributor it is frustrating to submit a PR and it will always fail. Even worse: I have to wait for another contributor with more power to assign the label for me.

This will improve developer experience, as some of the labels can be assigned automatically based on changed files.

How to test
-----------
1. Merge this PR
2. Submit a couple of PRs with changes in the respective directories
3. Labels should be automatically applied
4. "Enforce PR labels" github workflow will re-run when "Pull Request Labeler" completes
2024-06-09 14:18:02 -05:00
George Shao
4d862525bc feat(web): allow ctrl-click / cmd-click on photos (#9954)
* feat(web): allow ctrl-click / cmd-click on photos

* fix: photo opening when deselected bug

* fix: consistent naming

* remove redundant code

* fix: disabled picture is clickable in "add to album" grid

* remove unnecessary code

* cleanup

* fix file permissions

* fix: album selection bug

* fix: stack slideshow bug & search gallery viewer bug

* cleanup

* fix dark mode stack slideshow bug

* cleanup

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-08 15:33:23 -05:00
Robert Schäfer
d8d64ecc45 fix: prevent trashing of trashed assets (#10028)
* fix: prevent trashing of trashed assets

Motivation
----------
This will improve user experience by hiding a pointless action.

You can not trash a trashed asset again. It won't get any trashier than it already is.

How to test
-----------
1. Visit route `/trash`
2. Click on an asset
3. Press "Delete" on your keyboard
4. Nothing happens
5. Try to find the trash button in the top right
6. You can't find it

* refactor: follow @michelheusschen's review

See:
https://github.com/immich-app/immich/pull/10028#pullrequestreview-2105296755

* refactor:  follow @michelheusschen's 2nd review

See: https://github.com/immich-app/immich/pull/10028#discussion_r1632057833
2024-06-08 15:03:39 -05:00
Alex
e1e7de4d4c chore(mobile): translation update (#10053) 2024-06-08 19:51:36 +00:00
Mert
df412d60c5 fix(server): min face detection score not being passed correctly (#10050)
fix min score not being passed correctly
2024-06-08 13:55:19 -04:00
Alex
dbd9782763 fix(mobile): viewAsset URL string (#10044) 2024-06-08 10:50:14 +00:00
klahr
2519922dd3 fix(doc):language links updates (#10035)
* Added Swedish translation of README.

* Updated all READMEs.
2024-06-08 09:59:30 +00:00
Michel Heusschen
78b10bbcc6 fix(web): drag and drop with non english language (#10040) 2024-06-08 04:57:46 -05:00
Michel Heusschen
4ec47b4186 fix(web): storage migration description (#10041) 2024-06-08 04:57:18 -05:00
Alejandro Armas
3c5ba77e86 fix(server): server stats showing wrong quota usage (#10036)
* Add filter to exclude external libraries from the user quota usage

* Add filter to exclude external libraries from the user quota usage

* fix sql syntax
2024-06-08 04:56:11 -05:00
Mert
62f8bd80f4 fix(server): add fallback for video thumbnail generation (#10034)
they called me a madman
2024-06-08 04:55:05 -05:00
Weblate (bot)
69193598cb chore: update translations (#10038)
* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 29.2% (228 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Dutch)

Currently translated at 5.8% (46 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 51.2% (400 of 780 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

---------

Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: LLL <326867814@qq.com>
Co-authored-by: jie65535 <jie65535@qq.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-06-08 04:54:23 -05:00
Immich
f92513be7e chore: remove translations (Spanish (es_ES@new)) 2024-06-07 15:00:16 -05:00
Immich
b5e0a1cec8 chore: add translations (Spanish (es_ES@new)) 2024-06-07 15:00:04 -05:00
Daniel Dietzler
2ffde69caf fix: weblate (#10029)
* chore: add translations  (Spanish (es_ES@new))

* chore: remove translations (Spanish (es_ES@new))

---------

Co-authored-by: Immich <immich@futo.org>
2024-06-07 14:52:40 -05:00
Alex
9291c782d5 fix(web): weblate merge conflict (#10027)
* chore: add translations  (German)

* chore: add translations  (Dutch)

* chore: add translations  (Spanish)

* chore: add translations  (Spanish (es_ES@new))

* chore:  (Spanish)

Currently translated at 0.1% (1 of 769 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/

* chore: remove translations (Spanish (es_ES@new))

* chore: add translations  (Arabic)

* chore: add translations  (Catalan)

* chore: add translations  (Danish)

* chore: add translations  (Finnish)

* chore: add translations  (French)

* chore: add translations  (Hebrew)

* chore: add translations  (Hindi)

* chore: add translations  (Hungarian)

* chore: add translations  (Italian)

* chore: add translations  (Japanese)

* chore: add translations  (Korean)

* chore: add translations  (Lithuanian)

* chore: add translations  (Latvian)

* chore: add translations  (Mongolian)

* chore: add translations  (Norwegian Bokmål)

* chore: add translations  (Polish)

* chore: add translations  (Portuguese)

* chore: add translations  (Romanian)

* chore: add translations  (Russian)

* chore: add translations  (Slovak)

* chore: add translations  (Slovenian)

* chore: add translations  (Serbian)

* chore: add translations  (Swedish)

* chore: add translations  (Thai)

* chore: add translations  (Ukrainian)

* chore: add translations  (Vietnamese)

* chore: add translations  (Czech)

* chore: add translations  (Chinese (Simplified) (zh_SIMPLIFIED))

* chore:  (German)

Currently translated at 1.3% (10 of 769 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 25.7% (198 of 769 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

* chore:  (Chinese (Simplified) (zh_SIMPLIFIED))

Currently translated at 25.7% (198 of 769 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/

---------

Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Manic87 <nicolas@familie-mach.net>
Co-authored-by: PolarisYHNL <polarisyhnl@yeah.net>
Co-authored-by: LLL <326867814@qq.com>
2024-06-07 14:50:23 -05:00
Alex
b595881084 fix(web): translation (#10026) 2024-06-07 13:54:22 -05:00
Min Idzelis
4b49d3a85d feat: photo-viewer; use <img> instead of blob urls, simplify/refactor, avoid window.events (#9883)
* Photoviewer

* make copyImage/zoomToggle optional

* Add e2e test

* lint

* Accept bo0tzz suggestion

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Bad merge and review comments

* unused import

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-07 13:22:46 -05:00
Michel Heusschen
def5f59242 fix(web): language setting (#10024) 2024-06-07 11:35:05 -05:00
Alex
9ac2ac2fcb feat(web): send test email button (#10011)
* feat(web): test email button

* openapi

* UI button

* Show notification

* pr feedback

* remove jobs

* send email directly from repository and add feedback

* avoid sending many emails

* linter

* pr feedback

* lint

* lint

* lint
2024-06-07 11:34:09 -05:00
Michel Heusschen
d5f3d98dfc chore(web): use development lang for tests (#10025) 2024-06-07 16:12:39 +01:00
Zack Pollard
3e118793de chore(web): missing notification settings translations (#10022)
* chore: missing notification settings translations

* chore: admin library tasks description translation
2024-06-07 10:01:41 -05:00
Michel Heusschen
c8f2d994c6 fix(web): translations (#10021) 2024-06-07 12:23:13 +01:00
Mert
f2148ddf03 fix(server): video thumbnail colors when using webp (#10018)
use gbrpf32le
2024-06-07 02:43:10 -04:00
Mert
2b1b43a7e4 feat(ml): composable ml (#9973)
* modularize model classes

* various fixes

* expose port

* change response

* round coordinates

* simplify preload

* update server

* simplify interface

simplify

* update tests

* composable endpoint

* cleanup

fixes

remove unnecessary interface

support text input, cleanup

* ew camelcase

* update server

server fixes

fix typing

* ml fixes

update locustfile

fixes

* cleaner response

* better repo response

* update tests

formatting and typing

rename

* undo compose change

* linting

fix type

actually fix typing

* stricter typing

fix detection-only response

no need for defaultdict

* update spec file

update api

linting

* update e2e

* unnecessary dimension

* remove commented code

* remove duplicate code

* remove unused imports

* add batch dim
2024-06-07 03:09:47 +00:00
Snowknight26
7a46f80ddc feat(web): add archive shortcut to grid (#9499)
* feat(web): add archive shortcut to grid

* Fix error

* Don't unnecessarily pass parameter

* Use an existing function to close the menu

* Deduplicate type

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-06 19:23:49 -04:00
Weblate (bot)
c6c480c882 chore: update translations (#10003)
* chore: add translations  (German)

* chore: add translations  (Dutch)

* chore: add translations  (Spanish)

* chore: add translations  (Spanish (es_ES@new))

* chore:  (Spanish)

Currently translated at 0.1% (1 of 769 strings)

Translation: Immich/immich
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/

* chore: remove translations (Spanish (es_ES@new))

* chore: add translations  (Arabic)

* chore: add translations  (Catalan)

* chore: add translations  (Danish)

* chore: add translations  (Finnish)

* chore: add translations  (French)

* chore: add translations  (Hebrew)

* chore: add translations  (Hindi)

* chore: add translations  (Hungarian)

* chore: add translations  (Italian)

* chore: add translations  (Japanese)

* chore: add translations  (Korean)

* chore: add translations  (Lithuanian)

* chore: add translations  (Latvian)

* chore: add translations  (Mongolian)

* chore: add translations  (Norwegian Bokmål)

* chore: add translations  (Polish)

* chore: add translations  (Portuguese)

* chore: add translations  (Romanian)

* chore: add translations  (Russian)

* chore: add translations  (Slovak)

* chore: add translations  (Slovenian)

* chore: add translations  (Serbian)

* chore: add translations  (Swedish)

* chore: add translations  (Thai)

* chore: add translations  (Ukrainian)

* chore: add translations  (Vietnamese)

* chore: add translations  (Czech)

* chore: add translations  (Chinese (Simplified) (zh_SIMPLIFIED))

* chore: add base languages

---------

Co-authored-by: Immich <immich@futo.org>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-06 17:20:41 +00:00
Jason Rasmussen
4ad97ccded fix(server): closed connections (#10013) 2024-06-06 09:09:42 -05:00
renovate[bot]
ca12f3b15f chore(deps): update grafana/grafana:11.0.0-ubuntu docker digest to dcd3ae7 (#9770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-06 13:15:39 +01:00
renovate[bot]
86eb2525d7 chore(deps): update redis:6.2-alpine docker digest to d6c2911 (#9843)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-06 13:13:39 +01:00
renovate[bot]
079864dfbe chore(deps): update docker.io/redis:6.2-alpine docker digest to d6c2911 (#9842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-06 13:13:15 +01:00
Michel Heusschen
051e6cfc0b fix(web): clear locale setting (#10008) 2024-06-06 07:47:22 -04:00
Zack Pollard
8f42766979 feat: seperate sub-process for api worker (#10000) 2024-06-06 11:56:57 +01:00
renovate[bot]
7e2a03a8d9 chore(deps): update base-image to v20240604 (major) (#10004)
chore(deps): update base-image to v20240604

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-05 19:20:36 -04:00
Daniel Dietzler
1947316b0b refactor: one locales file for all english translations (#10006)
one locales file for all english translations
2024-06-05 18:57:44 -04:00
Jason Rasmussen
0f976edf96 feat(server): log http exceptions (#9996) 2024-06-05 17:07:47 -04:00
Min Idzelis
ce985ef8f8 fix: AssetInterceptor "can't set headers after they are sent" (#9987)
* fix: AssetInterceptor "can't set headers after they are sent"

* chore: remove long comment

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-06-05 09:30:19 -04:00
Jason Rasmussen
cf223dc98c fix(web): show duplicate message (#9992) 2024-06-05 09:29:52 -04:00
Snowknight26
97ffddee7c feat(web): add an empty placeholder to the explore page (#9990)
* feat(web): add an empty placeholder to the explore page

* Change the message wording per suggestion

* fix: test

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-05 12:19:57 +00:00
Zack Pollard
abf6fc25f7 chore: change default thumbnail concurrency and auto-detect container core count (#9981)
* feat: automatically detect amount of CPU cores and allow overriding with CPU_CORES env var

* chore: change default thumbnail concurrency to 3
2024-06-05 11:45:53 +01:00
Jan108
b2761b12d1 feat(web): Option to assign people to unassigned faces (#9773)
* added unassigned faces to people edit

* svelte fix

* fix format

* Captialized unassigned person name, removed person id from alttext, fixed problem with multiple faces per person

* Added faces to the getAssetInfo API endpoint

* Updated openApi clients

* Readded the photoeditor dependency

* fixed lint/format

* fixed photoViewer type

* changes getAssetInfo.faces to only include unassigned faces

* fix: bad merge

* title

* logic

---------

Co-authored-by: Jan108 <dasJan108@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-05 07:26:00 +00:00
Lukas
588860455f test(server): check motion asset create arguments (#9826) 2024-06-05 01:55:04 -05:00
renovate[bot]
643309b27f chore(deps): update node.js to 696ae41 (#9986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 20:21:28 -04:00
renovate[bot]
e0ec75119f chore(deps): update node.js to db6fa52 (#9984)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 15:56:12 -04:00
Manic-87
f446bc8caa feat(web): translations (#9854)
* First test

* Added translation using Weblate (French)

* Translated using Weblate (German)

Currently translated at 100.0% (4 of 4 strings)

Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/de/

* Translated using Weblate (French)

Currently translated at 100.0% (4 of 4 strings)

Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/fr/

* Further testing

* Further testing

* Translated using Weblate (German)

Currently translated at 100.0% (18 of 18 strings)

Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/de/

* Further work

* Update string file.

* More strings

* Automatically changed strings

* Add automatically translated german file for testing purposes

* Fix merge-face-selector component

* Make server stats strings uppercase

* Fix uppercase string

* Fix some strings in jobs-panel

* Fix lower and uppercase strings. Add a few additional string. Fix a few unnecessary replacements

* Update german test translations

* Fix typo in locales file

* Change string keys

* Extract more strings

* Extract and replace some more strings

* Update testtranslationfile

* Change translation keys

* Fix rebase errors

* Fix one more rebase error

* Remove german translation file

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

* chore: clean up translations

* chore: add new line

* fix formatting

* chore: fixes

* fix: loading and tests

---------

Co-authored-by: root <root@Blacki>
Co-authored-by: admin <admin@example.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-06-04 15:53:00 -04:00
renovate[bot]
a2bccf23c9 chore(deps): update dependency @swc/core to v1.5.24 (#9983)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 09:39:43 -04:00
dependabot[bot]
6937440772 chore(deps): bump stumpylog/image-cleaner-action from 0.6.0 to 0.7.0 (#9979)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.6.0 to 0.7.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.6.0...v0.7.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-04 10:17:58 +00:00
renovate[bot]
69bce6680f fix(deps): update typescript-projects (#9971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 10:35:24 +01:00
renovate[bot]
454c995e90 chore(deps): update machine-learning (#9969) 2024-06-03 22:41:10 -04:00
renovate[bot]
bcff21f72b fix(deps): update dependency exiftool-vendored to v26.1.0 (#9972)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-03 21:38:03 -04:00
renovate[bot]
47ec6c41ec chore(deps): update node.js to 2d0ce60 (#9970)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-03 21:35:41 -04:00
Snowknight26
471cf5eaf7 fix(web): fix sidebar tooltip pluralization (#9952)
* fix(web): fix sidebar tooltip pluralization

* Rename property

* Remove data-testid attribute

* Fix variable type
2024-06-03 21:35:17 -04:00
Alex
b3ee394fdc feat(web): email notification preference settings (#9934)
* feat(web): email notification preference settings

* Update

* remove failed api generation file

* fix handle album invite return value

* Update web/src/lib/components/user-settings-page/notifications-settings.svelte

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

* wording

* test

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-06-03 16:00:20 -05:00
aviv926
15474e81b2 docs: Update Authentik example (#9950)
* Update

* npm run format:fix

* more npm run format:fix
2024-06-03 10:57:09 +01:00
renovate[bot]
bb9e18247b chore(deps): update terraform cloudflare to v4.34.0 (#9953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-03 10:07:10 +01:00
Mathias Remshardt
e7dc1f7968 fix(web): empty album stored (#9771)
fix(web): delete album when created empty
2024-06-02 16:08:48 -05:00
Ben
1323c7ee88 chore(web): simpler unique ID generation (#9945) 2024-06-02 12:41:44 -04:00
Michel Heusschen
d1135db8cf refactor(web): remove events from clickOutside action (#9943) 2024-06-02 12:20:11 +00:00
Jacob Watson
5af67d159f fix(web): disable bulk action buttons while items selected (#9938)
fix(web):disabled bulk action buttons while items selected
2024-06-02 08:11:45 -04:00
Snowknight26
203cbbbfdb fix(web): stop slideshow when pressing escape from asset viewer (#9929)
* fix(web): stop slideshow when pressing escape from asset viewer

* Fix formatting
2024-06-01 22:57:04 -04:00
Ben
01f52c9021 chore(web): unique ID generation (#9932)
* chore(web): automatically generate unique IDs

* fix: revert changes to Slider

* chore: add test for id store
2024-06-02 05:58:35 +07:00
Snowknight26
4e16e2520d fix(web): exiting a slideshow will no longer hide the cursor (#9931) 2024-06-02 05:55:59 +07:00
Snowknight26
21718cc343 fix(web): set album description textarea height correctly (#9880)
* fix(web): set description textarea content correctly

* Deduplicate description textarea

* Add strict types to function

* Add strict types to functions

* Add default parameter values

* Add tests covering AutogrowTextarea

* Add another test and lint the files

* Add a test, fix a typo

* Implement suggestions

* Remove use of $$restProp
2024-06-01 13:47:14 -04:00
Daniel Dietzler
7524c746a6 feat(docs): shinify roadmap (#9916)
Shinify roadmap

Co-authored-by: jrasm91 <jrasm91@gmail.com>
2024-05-31 18:02:01 -04:00
Jason Rasmussen
69d2fcb43e refactor: asset media endpoints (#9831)
* refactor: asset media endpoints

* refactor: mobile upload livePhoto as separate request

* refactor: change mobile backup flow to use new asset upload endpoints

* chore: format and analyze dart code

* feat: mark motion as hidden when linked

* feat: upload video portion of live photo before image portion

* fix: incorrect assetApi calls in mobile code

* fix: download asset

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-31 13:44:04 -04:00
Jason Rasmussen
66fced40e7 docs: roadmap (#9902) 2024-05-31 13:13:23 -04:00
Jason Rasmussen
380ed966d8 fix(docs): announcement bar (#9898) 2024-05-30 17:24:34 -04:00
Floris Van den Abeele
afa10ebcb2 feat(server): enable exiftool largefilesupport (#9894) 2024-05-30 11:18:39 -04:00
Matthew Momjian
5ef2553bca feat(docs): microservices be gone (#9558)
* env vars

* docs

* more info on workers

* fix

* typo

* fix bash

* typo

* service -> contianer

* worker -> workers

* updating jobs and workers

* split workers

* redis

* fix conflict

* node -> immich

* add NO_COLOR

* Update docs/docs/administration/jobs-workers.md

* chore: fix broken links now jobs page is gone

* Update environment-variables.md

* Update environment-variables.md

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-30 14:25:27 +01:00
Zack Pollard
53562e8439 ci: tear down docs infra after PR is merged & release fixes (#9893)
* ci: tear down docs infra after PR is merged

* ci: release flow for docs deployments fixes
2024-05-30 14:18:27 +01:00
Snowknight26
0a53dc412b fix(web): update camera brand wording on search page (#9881) 2024-05-30 17:51:52 +07:00
Michel Heusschen
371a5ce0aa fix(web): sizing of fullscreen modal (#9850) 2024-05-30 17:50:29 +07:00
Zack Pollard
9fc0a0d935 ci: fix incorrect subdomain used for docs (#9890) 2024-05-30 11:08:27 +01:00
Zack Pollard
8fc4ce14ab feat: split preview and archives to different pages projects (#9878) 2024-05-30 10:01:17 +01:00
Daniel Dietzler
4376104e3a refactor(server): rename api tags to follow plural nomenclature of endpoints (#9872)
* rename api tags to follow plural nomenclature of endpoints

* chore: open api

* fix mobile
2024-05-29 18:26:57 -04:00
Snowknight26
77d1b9ace6 fix(web): remove markdown from settings (#9873) 2024-05-29 22:19:42 +00:00
martin
802b4ef190 fix: clear multiselect when asset-grid is empty (#9864) 2024-05-29 15:11:00 -04:00
martin
9d0aceb768 feat: confirm on restore (#9862) 2024-05-29 14:24:15 -04:00
Zack Pollard
8315488b99 ci: use extracted PR number for messaging PRs from forks & remove approval (#9865)
* ci: use extracted PR number for messaging PRs from forks

* ci: remove required approval to deploy docs for PRs from forks
2024-05-29 18:59:06 +01:00
Zack Pollard
61051ba479 ci: search for pull request when docs are deploying from a fork (#9858) 2024-05-29 19:39:39 +02:00
Zack Pollard
30e18aba69 feat(ci): website deployment IaC and github actions (#9857)
* feat(ci): Docs build workflow

* chore(ci): Remove docs from test workflow

* feat(ci): Docs deployment workflow

* fix: )

* fix(ci): Docs build artifact upload path

* fix(ci): Small fixes, logging

* fix: Parse parameters

* feat(ci): Download docs artifact

* feat(ci): Comment docs preview url on PR

* fix(ci): Download artifacts through github-script

* chore(ci): Add TODO

* nit: Tweak log message

* feat: website deployment iac and github actions

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-05-29 18:11:07 +01:00
martin
12cf116798 fix: immich port with external domain (#9856)
* fix: immich port with external domain

* rename variable
2024-05-29 13:06:49 -04:00
Snowknight26
416399499b fix(web): navigate to the correct URL when unstacking from the asset viewer (#9841)
fix(web): navigate to the correct URL on unstack
2024-05-29 12:05:28 -04:00
Daniel Dietzler
5463660746 refactor(server)!: move markers and style to dedicated map endpoint/controller (#9832)
* move markers and style to dedicated map endpoint

* chore: open api

* chore: clean up repos

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-29 11:51:01 -04:00
Jason Rasmussen
5ef144bf79 chore: remove unused code (#9824) 2024-05-28 19:16:51 +02:00
Jason Rasmussen
db4c66094c refactor: image path building (#9823) 2024-05-28 19:15:02 +02:00
renovate[bot]
d400925aeb chore(deps): update base-image to v20240528 (major) (#9830)
chore(deps): update base-image to v20240528

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-28 12:43:22 -04:00
Michel Heusschen
e459d524a4 fix(web): high resolution image on zoom (#9818)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-28 07:15:50 -04:00
renovate[bot]
3f6e61d073 chore(deps): update dependency flutter to v3.22.1 (#9820)
* chore(deps): update dependency flutter to v3.22.1

* ci: flutter actions pull flutter version from pubspec.yaml

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-28 12:15:28 +01:00
Zack Pollard
cc013158d1 ci: update flutter separately to other mobile dependencies (#9817) 2024-05-28 11:47:41 +01:00
renovate[bot]
ce524256da fix(deps): update typescript-projects (#9813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-28 10:09:45 +01:00
renovate[bot]
771df7f09f fix(deps): update machine-learning (#9812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-28 10:07:27 +01:00
Snowknight26
ee3530b34c feat: add units to exposure time display (#9803)
* feat(web): add units to exposure time display

* feat(mobile): add units to exposure time display
2024-05-28 10:05:36 +01:00
Mert
8812c3afcf fix(server): apply qsv and vaapi quality to video stream only (#9807)
apply quality to video stream only
2024-05-28 09:49:51 +01:00
Mert
fbc3790cb6 fix(server): video thumbnail generation failing when using qsv (#9808)
fix multiplier
2024-05-28 09:47:41 +01:00
Jason Rasmussen
0fc6d69824 feat(server): user preferences (#9736)
* refactor(server): user endpoints

* feat(server): user preferences

* mobile: user preference

* wording

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-28 09:16:53 +07:00
Alex
1f9158c545 feat(server): album's email notification (#9439)
* feat(server): album's email notification

* same size button

* skeleton for album invite and album update event

* album invite content

* album update

* fix(server): smtp certificate validation (#9506)

* album update content

* send mail

* album invite with thumbnail

* pr feedback

* styling

* Send email to update album event

* better naming

* add tests

* Update album-invite.email.tsx

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update album-update.email.tsx

Co-authored-by: bo0tzz <git@bo0tzz.me>

* fix: unit tests

* typo

* Update server/src/services/notification.service.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* PR feedback

* Update server/src/emails/album-update.email.tsx

Co-authored-by: Zack Pollard <zackpollard@ymail.com>

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-28 02:16:46 +00:00
Snowknight26
832084687d fix(web): update password-protected share logo size (#9567) 2024-05-28 09:10:53 +07:00
Alex
bce916e4c8 refactor(web): ConfirmDialog and dialogController (#9716)
* wrapper

* no more callback

* refactor: wip

* refactor: wip

* refactor: wip

* pr feedback

* fix

* pr feedback
2024-05-28 02:10:43 +00:00
Matthew Momjian
f020d29ab6 feat(deployment): add TZ to example.env (#9805)
* Update example.env

* Update example.env

* Update example.env

* Update example.env
2024-05-28 08:06:45 +07:00
Alex
dedf1ecc9d chore(web): valid steps for setting max distance (#9791) 2024-05-28 08:03:03 +07:00
Mert
4c7347d653 fix: re-add extends section for server in Compose files (#9806)
re-add extends section
2024-05-27 21:04:07 +00:00
Mert
dca420ef70 chore: refactor transcode config routing (#9800)
* chore: refactor transcode config

* rename parameter

* handle no /dev/dri

* prefer undefined
2024-05-27 15:20:07 -04:00
Mert
21bd20fd75 fix(server): nvenc not working when there are no filters (#9802)
don't add format=nv12
2024-05-27 15:18:01 -04:00
Mert
351dd647a9 feat(server): better video thumbnails (#9784) 2024-05-27 12:08:38 -04:00
Michel Heusschen
298370b7be fix(web): validation of number input fields (#9789) 2024-05-27 15:19:08 +07:00
aviv926
e3d39837d0 docs: Add Google OAuth example (#9778)
* Add Google OAuth example

* npm run format:fix

* fix

* PR feedback

* Fix
2024-05-27 03:39:59 -04:00
Michel Heusschen
38f4a02a14 fix(web): require button type (#9786) 2024-05-27 14:06:15 +07:00
Michel Heusschen
fc5615eff6 fix(web): memories year missing (#9787) 2024-05-27 14:01:33 +07:00
Alex
6879bcb7a4 chore(server): duplication default settings (#9781) 2024-05-26 20:51:41 -04:00
Conner Hnatiuk
11152f9b3d fix(mobile): appBar on album viewer screen animates out and doesnt alter asset grid position (#9741)
* Animated out top bar added, currenlty need to move up current app bar as it is too far down

* album viewer appBar animates out and does not cause screen shift

* Formatting

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-27 00:13:32 +00:00
Jason Rasmussen
75830a4878 refactor(server): user endpoints (#9730)
* refactor(server): user endpoints

* fix repos

* fix unit tests

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-27 05:15:52 +07:00
Mert
e7c8501930 fix(server): search duplicates of the same asset type (#9747)
* search by type

* make sql

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-26 22:04:23 +00:00
Alexandre Bouijoux
50f9b2d44e docs: update README fr (#9764)
Update README_fr_FR.md
2024-05-27 04:45:05 +07:00
Ben
9628ea2d24 fix(web): keyboard event propagation in modals (#9713)
* fix: key events propagating from modal, visible close button focus

* feat: set initial focus on the text field for album creation

* chore: step back duplicated changes
2024-05-27 04:43:30 +07:00
safehome-jdev
4d4bb8b6a7 fix(server): Properly build ML predict URL (#9751)
New URL via URL constructor and not string concatenation
2024-05-26 08:21:10 -04:00
Michel Heusschen
99f0aa868a fix(web): detail panel asset description (#9765) 2024-05-26 08:10:01 -04:00
Michel Heusschen
459fee9ee4 fix(web): add location modal invisible on safari (#9756) 2024-05-25 15:36:36 -04:00
Matthew Momjian
871f3ea468 fix(docs): docker version -> name in ML (#9755)
fix docker
2024-05-25 15:14:22 +00:00
Michel Heusschen
98c4c683ae fix(web): profile picture url (#9754) 2024-05-25 11:13:03 -04:00
Michel Heusschen
8a7b0f66a4 fix(server): partner can view archived assets (#9750)
* fix(server): partner can view archived assets

* update sql queries
2024-05-25 06:53:57 -04:00
Jason Rasmussen
9e71256191 chore(server): remove unused code (#9746) 2024-05-25 12:15:07 +02:00
Min Idzelis
d5cf8e4bfe refactor(server): move checkExistingAssets(), checkBulkUpdate() remove getAllAssets() (#9715)
* Refactor controller methods, non-breaking change

* Remove getAllAssets

* used imports

* sync:sql

* missing mock

* Removing remaining references

* chore: remove unused code

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-24 21:02:22 -04:00
Jason Rasmussen
95012dc19b fix: config error logging (#9738) 2024-05-24 16:44:50 -04:00
Lukas
f197f5d530 fix(server): use correct file extension for motion photo videos (#8659)
* fix(server): use mp4 file extension for motion photo videos in archive download

* always use mp4 for videos

* get file extension from originalPath

* remove console log

* store motion assets with mp4 extension

* add migration

* set originalFileName for live photo asset stubs

* leave down migration empty

* only set originalFileName for livePhotoStillAsset

* use separate stub

* shorter stub name
2024-05-24 16:38:18 -04:00
Jason Rasmussen
7168707395 refactor(server): remove unused code (#9737) 2024-05-24 16:37:29 -04:00
Snowknight26
847cb90038 fix(web): fix asset grid keyboard navigation (#9448)
* fix(web): fix asset grid keyboard navigation

* Ignore eslint rule

* Pass page up/down keys after focusing on grid

* Remove unneeded event listener, use existing class
2024-05-24 22:11:55 +02:00
bo0tzz
602f0a3499 fix(docs): Duplicate user key in example config.json (#9735)
related: #9734
2024-05-24 16:06:08 -04:00
Michel Heusschen
fdaa0e5413 fix(web): shared link isOwner check (#9729)
* fix(web): shared link isOwner check

* add e2e tests + update playwright

* fix formatting
2024-05-24 17:59:19 +00:00
Zack Pollard
39d2c4f37b chore: remove all deprecated endpoints/properties from server and mobile app (#9724)
* chore: remove deprecated title property from MemoryLaneResponseDto

* chore: remove deprecated webpPath and resizePath from MetadataSearchDto

* chore: remove deprecated sharedUserIds property from Album AddUsersDto

* chore: remove deprecated sharedUsers property from AlbumResponseDto

* chore: remove deprecated sharedWithUserIds property from CreateAlbumDto

* chore: remove deprecated isExternal and isReadOnly properties from AssetResponseDto

* chore: remove deprecated /server-info endpoint

* chore: bloody linters
2024-05-24 15:37:01 +01:00
Kedas
1f5d82e9d9 fix(mobile): respect SSL override during background sync (#9587) 2024-05-24 10:16:14 +01:00
Julian Collins
e98744f222 chore(docs): Russian readme update (#9691)
* Fix many typos, update features, add Activity and Star history sections

* Add clarity

* Add clarity
2024-05-24 10:14:07 +01:00
François-Xavier Payet
56ea07bcba fix(mobile): use correct Focus Node for latitude and longitude (#9699)
FIx focus node for longitude

Co-authored-by: François-Xavier Payet <fxpayet@salesapps.io>
2024-05-24 09:59:05 +01:00
Lukas
b3b258f32f fix(web): allow copying text in photo viewer (#9705)
* fix(web): allow copying text in photo viewer

* use default browser copy

* revert changes

* fix lint
2024-05-24 09:56:36 +01:00
Mert
69b5eb005f fix(server): use qsv format for hwmap (#9722)
use qsv format for hwmap
2024-05-24 09:50:28 +01:00
renovate[bot]
3f44a33eac chore(deps): update docker.io/redis:6.2-alpine docker digest to e31ca60 (#9717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-24 09:35:59 +01:00
renovate[bot]
b2a0422efb chore(deps): update redis:6.2-alpine docker digest to e31ca60 (#9718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-24 09:34:49 +01:00
Min Idzelis
562c43b6f5 test: reorder tests in asset.e2e-spec.ts (#9714)
* Reorder tests; make tests independent of ordering

* use it.each
2024-05-23 22:10:38 -04:00
Min Idzelis
4f21f6a2e1 feat: API operation replaceAsset, POST /api/asset/:id/file (#9684)
* impl and unit tests for replaceAsset

* Remove it.only

* Typo in generated spec +regen

* Remove unused dtos

* Dto removal fallout/bugfix

* fix - missed a line

* sql:generate

* Review comments

* Unused imports

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-23 20:26:22 -04:00
Lukas
76fdcc9863 fix(web): show api key copy button in Firefox (#9704) 2024-05-23 17:16:38 -04:00
Alex
57d94bce68 feat(web): deduplication UI (#9540) 2024-05-23 12:57:25 -05:00
martin
832d728940 refactor(web): svelte actions (#9701) 2024-05-23 12:56:48 -05:00
Michel Heusschen
8bfa6769a5 fix(web): hide detail panel for shared links with hidden metadata (#9700) 2024-05-23 12:39:06 -04:00
Jason Rasmussen
e7aa50425c test: sync open api spec (#9687)
test: sync spec file
2024-05-23 07:40:57 -04:00
Mert
a5e8b451b2 feat(server): qsv hardware decoding and tone-mapping (#9689)
* qsv hw decoding and tone-mapping

* fix vaapi

* add tests

* formatting

* handle device name without path
2024-05-23 03:58:29 +00:00
Jason Rasmussen
13cbdf6851 refactor(server): cli service (#9672) 2024-05-22 22:23:47 +02:00
Jason Rasmussen
967d195a05 chore(server): remove unused code (#9670) 2024-05-22 15:53:57 -04:00
Jason Rasmussen
8f37784eae refactor(server): /user profile endpoint (#9669)
* refactor(server): user profile endpoint

* chore: open api
2024-05-22 14:31:12 -04:00
Jason Rasmussen
ecd018a826 refactor(server): user info endpoint (#9668)
* refactor(server): user info endpoint

* chore: open api
2024-05-22 14:15:33 -04:00
Jason Rasmussen
202745f14b refactor(server): plural endpoints (#9667) 2024-05-22 13:24:57 -04:00
CodaBool
6a4c2e97c0 feat: add docker healthchecks to server and ml (#9583)
* add healthcheck

* format, import, IMMICH_PORT, and eslint change

* chore: clean up nodejs healthcheck

* fix ruff formating

* add healthcheck

* format, import, IMMICH_PORT, and eslint change

* chore: clean up nodejs healthcheck

* fix ruff formating

* add healthcheck to dockerfile

* poetry run ruff check --fix

* removed 2 of 3 console calls

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-22 16:54:29 +00:00
Jason Rasmussen
f6f82a5662 feat(web): s (#9663) 2024-05-22 09:33:37 -04:00
Michel Heusschen
ae21781442 fix(web): albums dark mode contrast + a11y issue (#9662) 2024-05-22 08:14:53 -04:00
Jason Rasmussen
06ce8247cc feat(server): user metadata (#9650)
* feat(server): user metadata

* add missing method to user mock

* update migration to include cascades

* update sql files

* test: fix e2e

* chore: clean up

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-05-22 08:13:36 -04:00
dependabot[bot]
a4887bfa7e chore(deps): bump ytanikin/PRConventionalCommits from 1.1.0 to 1.2.0 (#9661)
---
updated-dependencies:
- dependency-name: ytanikin/PRConventionalCommits
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 11:43:46 +01:00
renovate[bot]
27a02c75dc chore(deps): update dependency fastlane to v2.220.0 (#9653)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-22 09:46:53 +00:00
Matthew Momjian
f8ee977b9e feat(server): healthchecks for PG and redis (#9590)
* HCs -> docker compose

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-22 09:28:12 +00:00
Zack Pollard
a3e7e8cc31 refactor: deprecate /server-info and replace with /server-info/storage (#9645) 2024-05-22 10:25:55 +01:00
Snowknight26
a341ab0050 refactor(web): refactor album selection modal and album summary component (#9658) 2024-05-22 00:15:28 -05:00
Lukas
61b850f0ce fix(web): emit updated date when pressing enter (#9640) 2024-05-21 16:58:57 +00:00
Jason Rasmussen
a3489d604b chore: remove unused stubs (#9647) 2024-05-21 18:35:26 +02:00
renovate[bot]
00b5ad3421 chore(deps): update dependency @types/lodash to v4.17.3 (#9644)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 16:18:35 +00:00
Jason Rasmussen
2ada4a8426 chore: gitignore open api docs/tests (#9643) 2024-05-21 16:35:20 +01:00
renovate[bot]
924e9f08cd chore(deps): update mobile (#9629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 13:40:21 +00:00
Jason Rasmussen
91b835cfeb fix: auth sub override (#9635) 2024-05-21 09:07:34 -04:00
renovate[bot]
bb79df655d fix(deps): update dependency sharp to v0.33.4 (#9633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 13:54:56 +01:00
Zack Pollard
02e755bd92 ci: add conventional commit validation for PR titles (#9634) 2024-05-21 13:54:21 +01:00
renovate[bot]
0963a32a95 chore(deps): update base-image to v20240521 (major) (#9632)
chore(deps): update base-image to v20240521

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 11:53:47 +00:00
renovate[bot]
6119618ae2 chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to d5b8281 (#9616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 09:48:11 +01:00
renovate[bot]
4d044658a0 fix(deps): update dependency svelte-maplibre to v0.9.3 (#9626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 09:35:16 +01:00
renovate[bot]
67fa598f44 chore(deps): update mobile (#9621)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 08:31:53 +00:00
waclaw66
9222b9d130 fix(mobile): invite user list (#9624)
* fix(mobile): invite user list

* make it dense as before
2024-05-21 09:27:17 +01:00
Zack Pollard
d6757fc2dd chore: update fvmrc flutter version to 3.22.0 (#9625) 2024-05-21 09:22:22 +01:00
Alex
4f838eabbe fix(server): semver in development (#9620) 2024-05-20 23:03:28 -04:00
renovate[bot]
143b9d6828 fix(deps): update typescript-projects (#9617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 00:32:18 +00:00
Jason Rasmussen
1df7be8436 refactor(server): version logic (#9615)
* refactor(server): version

* test: better version and log checks
2024-05-20 20:31:36 -04:00
renovate[bot]
5f25f28c42 chore(deps): update redis:6.2-alpine docker digest to c0634a0 (#9577)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 20:19:43 -04:00
renovate[bot]
ae92422df7 chore(deps): update grafana/grafana docker tag to v11 (#9599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 20:19:14 -04:00
Jason Rasmussen
84d824d6a7 refactor: library type (#9525) 2024-05-20 18:09:10 -04:00
Eric Barch
4353153fe6 fix(web): render failed upload buttons correctly on mobile (#9601)
fix(web): Failed upload buttons render correctly on mobile
2024-05-20 09:59:27 -05:00
Parsa
c37bf9d5d0 fix: docker compose pull rate limit (#9600)
* fix: docker compose pull rate limit

with "registry.hub.docker.com/" behind the image name, there was an issue where "docker compose up -d" would throw a rate-limiting error, even when logged in using a docker account.

it doesn't really matter where the image is downloaded from as long as it has the same sha256 hash in docker-compose.yml

* fix: use `docker.io/` for image reference in docker-compose.yml
2024-05-20 09:58:47 -05:00
Snowknight26
5c8c0b2f5b fix(web): prevent asset grid dates from being truncated (#9603) 2024-05-20 08:21:01 -04:00
Snowknight26
39129721fa fix(web): fix add to album modal text spacing (#9606)
* fix(web): fix add to album modal text spacing

* Fix formatting
2024-05-20 08:20:08 -04:00
Matthew Momjian
451416ec88 docs: community docs typos (#9604)
typos
2024-05-19 15:50:46 -04:00
Robert Schäfer
e39ee8a16f docs: Add pgadmin4 to docker-compose.yml (#9556)
* docs: Add pgadmin4 to docker-compose.yml

Motivation
----------
The current documentation encourages to install pgAdmin3 on the host
system. It's much simpler to add `pgAdmin4` to the `docker-compose.yml`:

1. No configuration needs to be modified, just added.
2. Better security because no additional ports need to be opened on the host.
3. Easier installation. E.g. on Archlinux there is no package pgAdmin3
   anymore.
4. `pgAdmin3` does not seem to be maintained.

How to test
-----------
1. Follow the documentation.
2. See if you can connect to the immich database

* docs: better use separate config file

I assume most users will not edit the `docker-compose.yml` and forget
about `pgAdmin` once they're done. So, `pgAdmin` might get exposed to
the internet with default credentials, which is not good.

Better to leave a hint to change the credentials and keep the
configuration separate, so users start `pgAdmin` knowingly and turn it
off once they're done.
2024-05-19 07:43:40 -05:00
renovate[bot]
1e56352b04 chore(deps): update registry.hub.docker.com/library/redis:6.2-alpine docker digest to c0634a0 (#9578)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-19 12:34:09 +02:00
Jason Rasmussen
470c95d614 chore: vs code formatter settings (#9562) 2024-05-18 13:50:53 -05:00
Alex
1ad04f0b17 chore(server): openapi generation (#9585) 2024-05-18 13:50:28 -05:00
Alex
60427f18ce chore(server): return duplicate assets as group (#9576)
* chore(server): return duplicate assets as group

* file name
2024-05-18 13:15:56 -05:00
Mert
9aed736911 fix(ml): openvino not working with kernel 6.7.5 or later (#9541)
* add envs

* move to Dockerfile
2024-05-18 00:00:20 +00:00
Robert Schäfer
6b369e84fc docs: use npm in README (#9566)
Motivation
----------
Looks like `npm` is being used, `package-lock.json` is checked in
whereas `yarn.lock` is gitignored.

So, let's use `npm` in the README.

How to test
-----------
1. Follow the README.
2. It behaves just like before.
2024-05-17 16:49:23 -04:00
Jason Rasmussen
136bb69bd0 refactor: sdk init (#9563) 2024-05-17 16:48:29 -04:00
Nicholas Flamy
975f2351ec fix(server): Disable duplicate detection when smart search disabled (#9565) 2024-05-17 16:37:26 -04:00
Jason Rasmussen
2e62c7b417 refactor: node_env => immich_env (#9561) 2024-05-17 13:30:05 -04:00
Alex
2689178a35 chore(server): openapi generation for Duplicate controller (#9560) 2024-05-17 12:05:23 -05:00
Jason Rasmussen
d61418886f refactor!: port env (#9559)
refactor: port env
2024-05-17 12:59:05 -04:00
Jason Rasmussen
c03981ac1d refactor(server): new version check (#9555) 2024-05-17 12:22:39 -04:00
Jason Rasmussen
4807fc40a6 refactor!: LOG_LEVEL => IMMICH_LOG_LEVEL (#9557)
refactor: LOG_LEVEL => IMMICH_LOG_LEVEL
2024-05-17 11:44:22 -04:00
Alex
101bc290f9 chore(web): light theme text color improvement (#9553)
* chore(web): light theme text color improvement

* openapi

* openapi
2024-05-17 15:05:59 +00:00
Alex
df42352f84 chore(server): openapi generation (#9554) 2024-05-17 14:58:55 +00:00
Zack Pollard
c8aa6a62c2 fix: when using old script args, just set the workers include var (#9552)
* fix: when using old script args, just set the workers include var and move on

* fix: set process.title when using new bootstrap worker startup method
2024-05-17 15:10:57 +01:00
Zack Pollard
85aca2bb54 feat: microservices be gone (#9551)
* feat: microservices be gone and api is a worker now too

* chore: remove very old startup scripts, surely nobody is using these anymore, right?

right?....
2024-05-17 14:44:30 +01:00
Mert
ff52300624 refactor(server): duplicate controller and service (#9542)
* duplicate controller and service

* change endpoint name

* fix search tests

* remove unused import

* add to index
2024-05-16 19:39:33 -04:00
Jason Rasmussen
936a46b4ed fix(server): use jasonnnnnnnnnb (#9539) 2024-05-16 17:24:54 -04:00
Mert
d8eca168ca feat(server): fully accelerated nvenc (#9452)
* use arrayContaining

* libplacebo for nvenc

update dockerfile

* tweaks

* update nvenc options

* tweak settings

* refactor

* toggle for hardware decoding, software / hardware decoding for nvenc and rkmpp

* fix software tone-mapping not being applied

* separate configs for hw/sw

* update api

* add hw decode toggle

* fix mutating config

* remove `version` flag

* fix config type

* remove submodule

* handle temporal AQ

* remove duplicate tests

* use `tonemap_opencl`

* wording

* update docs
2024-05-16 13:30:26 -04:00
Mert
64636c0618 feat(server): near-duplicate detection (#8228)
* duplicate detection job, entity, config

* queueing

* job panel, update api

* use embedding in db instead of fetching

* disable concurrency

* only queue visible assets

* handle multiple duplicateIds

* update concurrent queue check

* add provider

* add web placeholder, server endpoint, migration, various fixes

* update sql

* select embedding by default

* rename variable

* simplify

* remove separate entity, handle re-running with different threshold, set default back to 0.02

* fix tests

* add tests

* add index to entity

* formatting

* update asset mock

* fix `upsertJobStatus` signature

* update sql

* formatting

* default to 0.03

* optimize clustering

* use asset's `duplicateId` if present

* update sql

* update tests

* expose admin setting

* refactor

* formatting

* skip if ml is disabled

* debug trash e2e

* remove from web

* remove from sidebar

* test if ml is disabled

* update sql

* separate duplicate detection from clip in config, disable by default for now

* fix doc

* lower minimum `maxDistance`

* update api

* Add and Use Duplicate Detection Feature Flag (#9364)

* Add Duplicate Detection Flag

* Use Duplicate Detection Flag

* Attempt Fixes for Failing Checks

* lower minimum `maxDistance`

* fix tests

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>

* chore: fixes and additions after rebase

* chore: update api (remove new Role enum)

* fix: left join smart search so getAll works without machine learning

* test: trash e2e go back to checking length of assets is zero

* chore: regen api after rebase

* test: fix tests after rebase

* redundant join

---------

Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Zack Pollard <zack@futo.org>
2024-05-16 18:08:37 +01:00
Alex
673e97e71d chore(mobile): upgrade flutter to 3.22 (#9518)
* chore(mobile): upgrade flutter sdk

* gha

* update kotlin

* refactor

* ios build

* remove patch files

* not touching openapi pubpsec file
2024-05-16 10:58:02 -05:00
Jason Rasmussen
984aa8fb41 refactor(server): system config (#9517) 2024-05-15 18:58:23 -04:00
renovate[bot]
7f0f016f2e chore(deps): update dependency eslint-plugin-unicorn to v53 (#9502)
* chore(deps): update dependency eslint-plugin-unicorn to v53

* use structured clone to match new eslint rules

* use raw string instead of escaping slash

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-05-15 18:06:25 -04:00
Jason Rasmussen
0589575154 chore: bump open-api (#9522) 2024-05-15 16:52:52 -05:00
Jason Rasmussen
73bf8f343a chore(server): remove unused property (#9521) 2024-05-15 15:17:48 -04:00
Michel Heusschen
581b467b4b fix(server): smtp certificate validation (#9506) 2024-05-15 07:21:35 -04:00
renovate[bot]
efb844c6cd fix(deps): update dependency @zoom-image/svelte to v0.2.12 (#9487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 19:33:53 -04:00
Alex The Bot
88d4338348 Version v1.105.1 2024-05-14 21:31:24 +00:00
Jason Rasmussen
ce7bbe88f9 fix(server): skip originals when deleting a library (#9496) 2024-05-14 16:29:57 -05:00
kleinMaggus
d62e90424e feat(web,mobile) Allow videos to be looped in the detail viewer (#8615)
* First version of video looping for the web

* Use prop for slideshow state

* refactor asset settings and add autoloop video setting

* rename variables and adjust description

* loop videos based on user settings in gallery viewer

* make asset viewer setting a stateless widget

* do not update video playback value if looping is enabled

* add some translations

* adjust description

* add missing id

* WIP

* chore: clean up

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-14 14:31:47 -05:00
Jason Rasmussen
0f129cae4a refactor(server): feature flags (#9492) 2024-05-14 15:31:36 -04:00
renovate[bot]
5583635947 chore(deps): update python:3.11-bookworm docker digest to 96de1ea (#9490) 2024-05-14 19:13:56 +00:00
renovate[bot]
b7715305b3 chore(deps): update dependency fastlane to v2.220.0 (#9491)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 14:12:27 -05:00
shenlong
6c008176c9 deps(mobile): update dependency auto_route to v8 (#9456)
deps: update dependency auto_route to v8

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-14 14:07:31 -05:00
renovate[bot]
72b1d582ba chore(deps): update dependency flutter_lints to v4 (#9488)
* chore(deps): update dependency flutter_lints to v4

* fix lints

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-14 18:52:07 +00:00
Jason Rasmussen
7b1112f3e3 refactor(server): system config (#9484) 2024-05-14 14:43:49 -04:00
renovate[bot]
42d0fc85ca chore(deps): update mobile (#9453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 13:39:48 -05:00
Alex Tran
d32b621750 Merge branch 'main' of github.com:immich-app/immich 2024-05-14 13:38:15 -05:00
Alex Tran
d551003311 chore: post release tasks 2024-05-14 13:38:12 -05:00
dependabot[bot]
dd64379a4e chore(deps-dev): bump flask-cors from 4.0.0 to 4.0.1 in /machine-learning (#9485) 2024-05-14 14:06:40 -04:00
dependabot[bot]
c1cdda0ac4 chore(deps-dev): bump jinja2 from 3.1.3 to 3.1.4 in /machine-learning (#9483) 2024-05-14 17:08:29 +00:00
Alex The Bot
596ab39293 Version v1.105.0 2024-05-14 17:07:25 +00:00
renovate[bot]
31e57d27a7 fix(deps): update dependency @zoom-image/svelte to v0.2.11 (#9482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 18:04:44 +01:00
Alex
f28b4e7c99 fix(server): sync issue when delete remotes assets (#9479) 2024-05-14 11:51:15 -05:00
dependabot[bot]
f01cf63c70 chore(deps): bump tqdm from 4.66.1 to 4.66.3 in /machine-learning (#9481) 2024-05-14 16:51:07 +00:00
dependabot[bot]
e55c5091d9 chore(deps-dev): bump werkzeug from 3.0.1 to 3.0.3 in /machine-learning (#9480) 2024-05-14 16:37:50 +00:00
klahr
e8cdf1c300 Added Swedish translation of README. (#9464) 2024-05-14 10:35:52 -05:00
Fynn Petersen-Frey
116043b2b4 feat(mobile): use efficient sync (#8842)
* feat(mobile): use efficient sync

review feedback

* adapt to changed  server endpoints

* formatting

* fix memory lane bug

* fix: bad merge

* fix call not returning correct number of asset

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-14 10:35:37 -05:00
Michel Heusschen
acc611a3d9 fix(web): admin settings number input validation (#9470)
* fix(web): admin settings number input validation

* fix import by creating *.ts file

* just ignore import error
2024-05-14 15:35:16 +00:00
Fynn Petersen-Frey
4d7aa7effd fix(server): new full sync return stacked assets individually (#9189)
* fix(server): new full sync return stacked assets individually

* return archived partner assets (like old getAllAssets)

* fix

* fix test

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-14 10:30:33 -05:00
renovate[bot]
77b8c2f330 chore(deps): update machine-learning (#9478)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 10:57:15 -04:00
renovate[bot]
09e9e91b6a fix(deps): update machine-learning (#9304)
* fix(deps): update machine-learning

* use fastapi-slim

* fix lock

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-05-14 14:46:20 +00:00
Mert
ad915ccd64 docs(ml): update link (#9477)
update link
2024-05-14 15:34:36 +01:00
Zack Pollard
1ea55d642e feat(server): run microservices in worker thread (#9426)
feat: start microservices in worker thread and add internal microservices for the server
2024-05-14 15:28:20 +01:00
renovate[bot]
3d5e55bdaa chore(deps): update base-image to v20240514 (major) (#9469)
chore(deps): update base-image to v20240514

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 08:55:09 -04:00
Jason Rasmussen
46868b3336 refactor(server): logger (#9472) 2024-05-14 08:48:49 -04:00
Ben McCann
b1ca5455b5 docs: remove mention of external assets being read-only (#9465) 2024-05-14 11:02:26 +01:00
xiagw
462f0f76a4 fix install.sh add random password for .env (#9282)
* fix install.sh add random password for .env

* fix generate random password

* remove comment
2024-05-14 10:58:28 +01:00
renovate[bot]
3d4ae9c210 chore(deps): update node.js to 53108f6 (#9450)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 10:53:04 +01:00
Snowknight26
f2be310aec fix(web): decrease asset viewer navigation area size (#9455)
* fix(web): decrease asset viewer navigation area size

* Remove unneeded class

* Reduce wrapping div area
2024-05-14 10:52:39 +01:00
Eric Barch
6fd6a8ba15 fix(server): addAssets and removeAssets handle duplicate assetIds (#9436)
* fix(server): addAssets and removeAssets handle duplicate assetIds

* chore(server): Add e2e tests for duplicate album additions and removals
2024-05-14 03:29:32 +00:00
David Munn
e479e556bc Fix typo in error page title (#9451)
Fixes #9447
2024-05-14 02:14:44 +00:00
renovate[bot]
bf036f2f58 fix(deps): update typescript-projects (#9454)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 21:42:48 -04:00
renovate[bot]
6d575e692b chore(deps): update node.js to 291e84d (#9449)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 21:01:34 -04:00
Sushain Cherivirala
4e6aeeda4d fix(server): support special characters in library paths (#9385)
Support special characters in library paths
2024-05-13 21:44:21 +00:00
Jason Rasmussen
a05c990718 feat(web): combine auth settings (#9427) 2024-05-13 16:40:33 -04:00
Jason Rasmussen
844f5a16a1 chore(server): remove unused column (#9431)
* chore(server): remove unused column

* fix: broken migrations
2024-05-13 16:40:16 -04:00
Jason Rasmussen
1bebc7368c fix(server): regenerate (extract) motion videos (#9438) 2024-05-13 16:38:11 -04:00
Jason Rasmussen
b7ebf3152f fix(web): show w x h correctly when media is rotated (#9435) 2024-05-13 15:03:36 -05:00
Alex Tran
5985f72643 chore: post release tasks 2024-05-13 14:17:28 -05:00
Alex The Bot
a6f557c24c Version v1.104.0 2024-05-13 18:31:57 +00:00
Alex
1045957add Localizely: Translations update (#9432)
chore(mobile): translation update
2024-05-13 13:27:21 -05:00
FedericoCalzoni
540e568e9d docs: update external-library.md (#9420)
* Update external-library.md

I believe that displaying the code for both sections, even if it seems a bit repetitive, can help prevent fast readers from overlooking it

* Apply suggestions from code review

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2024-05-13 12:49:30 -04:00
Jason Rasmussen
9c5a2b97bf fix(server): put system config (#9425) 2024-05-13 16:29:39 +00:00
Alex
06402aa9fb chore(server): email notification button png (#9423)
* chore(server): email notification button png

* valid user name

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-05-13 15:36:35 +00:00
Matthew Momjian
45316f985b Update portainer install docs (#9421)
* Update portainer.md

* Update portainer.md

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-13 09:46:38 -04:00
Andreas Gerstmayr
48927f5fb9 feat(server, web): include pictures of shared albums on map (#7439)
* feat(server, web): include pictures of shared albums on map

* run prettier

* re-create api clients

* implement suggestions from code review

* shared from partner -> shared from partners

* rename to 'include shared partner assets'

* chore: fix tsc error in server and prettier in web

* fix: include assets shared via owner albums

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-13 09:28:57 -04:00
renovate[bot]
d121903b38 fix(deps): update dependency nestjs-otel to v6 (#9415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 08:23:12 -04:00
Matthew Momjian
e2a31323bb docs: add info about postgres database checksums (#9391)
* docs staging for next release

* linting

* newline

* remove old info
2024-05-13 11:23:20 +01:00
martin
aa1dc68867 feat(web): allow hiding all unnamed faces and reset hidden faces (#9378)
* feat: hide all unnamed

* feat: remove dispatch event

* pr feedback
2024-05-13 11:17:52 +01:00
Deedikjepijn
2ae44022c2 docs: update README_nl_NL.md with missing sections from english readme (#9399)
* Update README_nl_NL.md

Added missing Features for the dutch translation of the readme file,

Added "Activities" to the dutch version,

Added "star history",

Added "Contributors".

* Update README_nl_NL.md

Translated one additional word on the dutch activities panel

* Update readme_i18n/README_nl_NL.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update readme_i18n/README_nl_NL.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-05-13 10:17:13 +00:00
Nicholas Flamy
a97e0caeb9 cho(web): Icon consistency and improvements (#9403)
* Add change from outline to regular icon in sidebar when page selected to more icons. Also change Favorites to single heart consistent with mobile app.

* Forgot to remove a few unused lines. Fixed.
2024-05-12 13:08:17 -05:00
Mert
f667c9597b chore(server): less rigid transcoding tests (#9401)
* use arrayContaining

* clean up
2024-05-12 00:04:31 -04:00
martin
8fdcabaf70 fix(web): page down shortcut (#9397)
fix: page down shortcut
2024-05-11 16:49:39 -05:00
Matthew Momjian
55a7e54011 feat(server): enable data page checksums (#9384) 2024-05-11 11:11:14 -04:00
aviv926
6f82f220b8 docs: small changes&updates (#9059)
* Updates

* Adding information to the PR Checklist

* fix  #5644

* PR feedback

* suggestions

* Revert dbname
2024-05-10 23:15:38 -05:00
Tushar Harsora
dd8d7732de fix(web): Fixed video unmutes when scrubbing (#9382)
Fixed video unmutes when scrubbing

Co-authored-by: Tushar Harsora <tushar.harsora.harsora@oracle.com>
2024-05-10 16:28:21 -04:00
Mert
bb4843747b perf: cache transcoding devices (#9381)
cache transcoding devices
2024-05-10 15:03:47 -04:00
Mert
f3fbb9b588 perf: cache getConfig (#9377)
* cache `getConfig`

* critical fix

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

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-05-10 18:15:25 +00:00
Daniel Dietzler
35ef82ab6b docs: add discord link (#9379)
add discord link to docs
2024-05-10 12:38:35 -05:00
Alex
fa4cd74dfd fix(web): autofocus change name field (#9376) 2024-05-10 17:18:10 +00:00
Alex
fed8d11fb8 refactor(mobile): remove shared module (#9363) 2024-05-10 11:40:41 -05:00
Matthew Momjian
3a68190b99 docs: warn against use on NTFS / WSL (#9371)
* DB filesystem

* updates to requirements

* wording

* OS update

* Update environment-variables.md

* Update FAQ.mdx

* Update requirements.md
2024-05-10 11:02:48 -04:00
martin
757840c2fd fix(web): multiple fixes for people (#9343)
fix: multiple fixes for people

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-09 16:23:49 -05:00
Alex
a8abf2753e chore: put back warning banner (#9362) 2024-05-09 15:53:48 -05:00
Jason Rasmussen
8743e17528 refactor(server): auth route metadata (#9344) 2024-05-09 13:58:44 -04:00
Conner Hnatiuk
34d8879d32 fix(mobile) timeline slider no longer dissapears (#9358)
fix(mobile) added heightOffset, scrollbar accounts for main appBar and does not get squished

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-09 17:31:25 +00:00
Alex
55031cc117 Revert "feat(android) Check server is reachable before starting background backup (#8989)" (#9324)
This reverts commit 0435de50f8.
2024-05-09 12:16:53 -05:00
Snowknight26
f9dc870166 fix(web): fix logo size on shared pages (#9346) 2024-05-09 09:21:45 -05:00
Me-Mr
87053c8c0d docs: adds hyperlinks for other readme translations (#9345)
* Translation

* Translation

* fix

---------

Co-authored-by: Abdullah Karazon <abdullahkarazon@MacBook-Air.local>
2024-05-09 14:20:38 +00:00
Tushar Harsora
57429ddc76 fix(web): Selected face in search filter doesn't show border highlight when hovered in light theme (#9348)
use border-transparent only when person is not selected

Co-authored-by: Tushar Harsora <tushar.harsora.harsora@oracle.com>
2024-05-09 09:19:26 -05:00
Matthew Momjian
13a62715e4 docs: backup restore - add warning to not backup DB_DATA_LOCATION (#9353)
backup restore add warning for backing up folder
2024-05-09 09:18:52 -05:00
Me-Mr
f3407860a1 chore: add Arabic translations to readme (#9342)
* Translation

* Translation

---------

Co-authored-by: Abdullah Karazon <abdullahkarazon@MacBook-Air.local>
2024-05-08 20:03:25 -04:00
renovate[bot]
004074b25a chore(deps): update prom/prometheus docker digest to 5c43564 (#9341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-08 19:20:58 -04:00
The Linux Cast
98f87b275b docs: update portainer.md (#9337)
Changed #3 to lowercase, as Portainer stacks do not accept capital letters.
2024-05-08 16:54:20 -05:00
Jason Rasmussen
8e9895df27 chore(server): remove unused deps (#9334) 2024-05-08 16:39:35 -04:00
Mert
1167f0f2b7 feat(server): optimize person thumbnail generation (#7513)
* do crop and resize together

* redundant `pipelineColorspace` call

* formatting

* fix rebase

* handle orientation

* remove unused import

* formatting

* use oriented dimensions for half size calculation

* default case for orientation

* simplify orientation code

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-08 08:09:34 -05:00
Me-Mr
81e4b69caf chore: arabic translations (#9325)
* Add Arabic translations for readme file

* Update ReadMe with Arabic Translations

* Delete readme_i18n/README_ar_JO.md

* Updated Arabic Translations for Readme

---------

Co-authored-by: Abdullah Karazon <abdullahkarazon@MacBook-Air.local>
2024-05-08 00:03:41 -04:00
Dhrumil Shah
e4b777ecef feat(mobile): Add pull to refresh to sharing page (#9274)
* Add pull to refresh to sharing page

* Fix format
2024-05-07 22:52:56 -05:00
Jason Rasmussen
4e7966c8e8 chore: move test assets submodule (#9321) 2024-05-07 22:33:17 -05:00
renovate[bot]
f10fb0723d chore(deps): update mobile (#7229)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 22:24:37 -05:00
Dhrumil Shah
ae08abde24 fix(mobile): Fix asset selector title bar text (#9273)
Fix title bar text
2024-05-07 22:24:30 -05:00
dependabot[bot]
3790d8fcbc chore(deps): bump tj-actions/verify-changed-files from 19 to 20 (#9280)
Bumps [tj-actions/verify-changed-files](https://github.com/tj-actions/verify-changed-files) from 19 to 20.
- [Release notes](https://github.com/tj-actions/verify-changed-files/releases)
- [Changelog](https://github.com/tj-actions/verify-changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/verify-changed-files/compare/v19...v20)

---
updated-dependencies:
- dependency-name: tj-actions/verify-changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 22:22:22 -05:00
Jan
535c7a8618 Random Endpoint use querybuilder and return exifInfo (#9301)
* Random Endpoint use querybuilder and return exifInfo

* Add GenerateSql

* Commit missing sql changes
2024-05-07 23:14:04 -04:00
renovate[bot]
725d594027 chore(deps): update node.js to fac6f74 (#9317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 23:12:21 -04:00
renovate[bot]
8c56c1c22b chore(deps): update typescript-projects (#9314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 23:07:26 -04:00
Snowknight26
6a5bc156a6 fix(web): allow deselecting all assets from select bar (#9320)
* fix(web): allow deselecting all assets from select bar

* Change deselect logo

* select remove

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-08 03:05:19 +00:00
aryiu
5eaf489ecf fix(mobile): fix ca-CA.json file name (#9288)
Update and rename ca.json to ca-CA.json
2024-05-08 03:03:14 +00:00
renovate[bot]
8c54c13307 chore(deps): update node.js to fe31b16 (#9318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 23:01:04 -04:00
Alex
675fdc1d93 chore: remove funding file (#9319) 2024-05-07 22:35:57 -04:00
Jason Rasmussen
e79d1b1ec2 refactor: create album users (#9315) 2024-05-07 16:38:09 -04:00
vovchyk bratyk
e9f99673b9 docs: add custom map styles community guide (#9311)
* Create custom-map-styles.md

* add immich_map_styles_publish.png

* Update custom-map-styles.md
2024-05-07 20:17:21 +00:00
Alex
ee6995783f fix(mobile): add user to album using new dto property (#9312)
* fix(mobile): add user to album using new DTO property

* fix(mobile): add user to album using new DTO property
2024-05-07 20:00:38 +00:00
renovate[bot]
78b5990d2a chore(deps): update dependency @types/nodemailer to v6.4.15 (#9309)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 15:15:24 -04:00
renovate[bot]
f13100e261 fix(deps): update dependency exiftool-vendored to v26 (#9294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 15:14:49 -04:00
renovate[bot]
21fe829a2c chore(deps): update base-image to v20240507 (major) (#9303)
chore(deps): update base-image to v20240507

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 11:10:21 -04:00
renovate[bot]
ad404d79d4 fix(deps): update typescript-projects (#9293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 11:07:50 -04:00
Alex
5806a3ce25 refactor(mobile): widgets (#9291)
* refactor(mobile): widgets

* update
2024-05-06 23:04:21 -05:00
Alex
7520ffd6c3 fix(mobile): allow select empty album as backup album (#9290) 2024-05-06 23:00:52 -05:00
Alex
bbb9453e1a fix(server): show partners archived photos on mobile timeline (#9194)
fix(mobile): show partners archived photos on timeline
2024-05-06 22:49:56 -05:00
renovate[bot]
8ff397527f chore(deps): update machine-learning (#9292) 2024-05-06 22:21:24 -04:00
Alex
a2c5eaa73e Localizely: Translations update (#9287)
chore(mobile): translation update
2024-05-06 15:39:53 -05:00
Tushar Harsora
065f1410f8 chore(mobile) Linked pt-BR.json with Mobile app and localizely.yml (#9281)
Linked pt-BR.json with Android app and localizely.yml

Co-authored-by: Tushar Harsora <tushar.harsora.harsora@oracle.com>
2024-05-06 11:22:27 -05:00
Vietbao Tran
bc31404909 fix(web): stream 360 video instead of fetching entire video (#9279) 2024-05-06 11:20:20 -05:00
martin
f08e9a4447 fix(web): click on face in detail-panel (#9271)
fix: click on face in detail-panel
2024-05-05 18:11:55 -04:00
martin
cf79bc9ed7 fix(server, web): reassigning faces (#9265)
* fix: reassiging faces

* fix: rename
2024-05-05 13:16:44 -05:00
Alex
090592e5ae refactor(mobile): pages (#9246)
* refactor(mobile): pages

* refactor

* album pages

* pages

* pages

* use *.page.dart

* representation

* put back module
2024-05-05 13:14:49 -05:00
AmAn Sharma
398d99a052 fix(web): Individual Photo Sharing with Album Link #8887 (#9264) 2024-05-05 08:00:03 -04:00
Tushar Harsora
c18beddef8 fix(mobile): Reset dropdown values in search by location on mobile (#9261)
* set derived inputs as null if source input changes

* format

---------

Co-authored-by: Tushar Harsora <tushar.harsora.harsora@oracle.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-04 22:44:34 +00:00
Matthew Momjian
dc4f7bef69 Specify PowerShell for win backup/restore (#9262)
Update backup-and-restore.md
2024-05-04 16:23:53 -04:00
Ben
48b490f5e9 feat(web): increase usage of CircleIconButton (#9256) 2024-05-04 14:29:50 -04:00
Jason Rasmussen
5b87abb021 feat(server): read-write external assets (#9235)
* refactor: remove isReadOnly and isExternal usages

* chore: open api

* fix: linting

* remove mobile isReadOnly dependency

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-03 15:34:57 -04:00
Alon Budker
d26ac431b8 docs: update post-install-steps documentation (#9239)
* docs: update post-install-steps documentation

* fix: format code with prettier (ci)
2024-05-03 08:05:34 -04:00
bo0tzz
d7f53d93a6 chore(docs): Link to helm chart README (#9238) 2024-05-03 08:03:45 -04:00
TruongSinh Tran-Nguyen
ec4e6a143e feat(web): determine duplication of upload on client (#8825)
* web upload duplicate verification on client

* _

* fix formating

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-02 17:26:13 -04:00
Min Idzelis
7961d00e56 fix(web): Configure web's immich sdk to use event.fetch (#9233)
* Set event.fetch on @immich/sdk

* format
2024-05-02 16:12:01 -05:00
Alex
c1253663b7 refactor(mobile): services and providers (#9232)
* refactor(mobile): services and provider

* providers
2024-05-02 15:59:14 -05:00
Jason Rasmussen
ec4eb7cd19 feat(server): immich checksum header (#9229)
* feat: dedupe by checksum header

* chore: open api
2024-05-02 15:42:26 -04:00
bo0tzz
16706f7f49 chore: Remove sponsor link from homepage (#9226) 2024-05-02 11:42:54 -05:00
bo0tzz
bf100dcde1 chore: Remove donation info from readme_i18n (#9225) 2024-05-02 17:17:14 +01:00
aviv926
c2a525170e docs: add information about Shared Albums & Assets feature (#8626)
* Shared Albums & Assets

* npm run format:fix

* Files Custom Locations

* Revert "Files Custom Locations"

This reverts commit 5209845cae.

* add info: archive size limited
2024-05-02 16:57:42 +01:00
Ryan Ribeiro
0bf923feb4 chore(readme): add Brazilian Portuguese readme (#7107) 2024-05-02 16:44:32 +01:00
jzhangdev
42f03af2dc feat(mobile): play motion video with long press gesture support (#6543) 2024-05-02 15:37:39 +00:00
Nicolò
9bce3417e9 feat(server): email notifications (#8447)
* feat(server): add `react-mail` as mail template engine and `nodemailer`

* feat(server): add `smtp` related configs to `SystemConfig`

* feat(web): add page for SMTP settings

* feat(server): add `react-email.adapter`

This adapter render the React-Email into HTML and plain/text email.
The output is set as the body of the email.

* feat(server): add `MailRepository` and `MailService`

Allow to use the NestJS-modules-mailer module to send SMTP emails.
This is the base transport for the `NotificationRepository`

* feat(server): register the job dispatcher and Job for async email

This allows to queue email sending jobs for the `EmailService`.

* feat(server): add `NotificationRepository` and `NotificationService`

This act as a middleware to properly route the notification to the right transport.
As POC I've only implemented a simple SMTP transport.

* feat(server): add `welcome` email template

* feat(server): add the first notification on `createUser` in `UserService`

This trigger an event for the `NotificationRepository` that once processes
by using the global config and per-user config will carry the payload to the right notification transport.

* chore: clean up

* chore: clean up web

* fix: type errors"

* fix package lock

* fix mail sending, option to ignore certs

* chore: open api

* chore: clean up

* remove unused import

* feat: email feature flag

* chore: remove unused interface

* small styling

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-05-02 15:43:18 +01:00
aviv926
4b86c7a298 docs: New Futo milestones (#9211)
* new Futo milestones

* npm fix

* change to DateType.DATE

* Update docs/src/pages/milestones.tsx

* Update docs/src/pages/milestones.tsx

* fix: remove release from futo milestone

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-05-02 00:47:09 +00:00
Zack Pollard
a2c040a47f fix(docs): allow no release specified for milestone (#9212)
fix(docs): make release optional in milestones
default to tag if not specified when tag is also specified
2024-05-02 01:33:17 +01:00
bo0tzz
959b3f05d2 chore: Move mobile backup FAQ to correct section (#9200) 2024-05-02 01:33:17 +01:00
Mert
a0c43a2b5a fix(server): person thumbnails not being queued during thumbnail generation (#9195)
use face id instead of asset id
2024-05-02 01:33:17 +01:00
Yu-Cheng, Xia
b7d0bc16bb fix(web): update assets after delete (#9151)
* upadte assets after delete

* fix lint/format

* handle archive action

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-02 01:33:17 +01:00
renovate[bot]
ef09fc4157 fix(deps): update typescript-projects (#9187)
* fix(deps): update typescript-projects

* chore: missing dependency

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-05-02 01:33:17 +01:00
Jason Rasmussen
84d638645d docs: link to blog in announcement (#9208) 2024-05-02 01:33:17 +01:00
Zack Pollard
64e9791a3f chore: remove donation links from the readme, docs and release notes template (#9207) 2024-05-02 01:33:17 +01:00
Alex Tran
0aa3b29eeb feat: dream comes true 2024-05-02 01:33:17 +01:00
Zack Pollard
0a598ae1b8 chore: fvm and node dependency updates and pinning (#9203)
* chore(mobile): ignore .fvm directory and update .fvmrc version

* chore(cli): add nvm and volta node versioning files/config

* chore(docs): add nvm and volta node versioning files/config, bump to node v20

* chore(server): add nvm node versioning file

* chore(web): add nvm and volta node versioning files/config

* chore(e2e): add nvm and volta node versioning files/config
2024-05-01 14:05:18 +01:00
Alex
c0495ca23f fix(mobile): show all places don't show all places (#9193)
fix(mobile): show all places doesn't show all places
2024-04-30 22:14:33 -05:00
Alex
f057fe045e refactor(mobile): entities and models (#9182)
* refactor(mobile): entities

* store entity

* refactor: models

* remove domain

* save all

* bad refactor
2024-04-30 21:36:40 -05:00
renovate[bot]
eba42b245d chore(deps): update base-image to v20240430 (major) (#9179)
chore(deps): update base-image to v20240430

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-30 22:04:28 -04:00
Alex
2cf63eeeab fix(web): missing add photos button in album when viewed as owner (#9183) 2024-04-30 15:38:25 -05:00
renovate[bot]
926de96ce6 chore(deps): update dependency ruff to v0.4.2 (#9186) 2024-04-30 14:38:05 -04:00
renovate[bot]
374a9b557b chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to f4c5c3c (#9181) 2024-04-30 13:37:29 -04:00
renovate[bot]
9e79a23bbe fix(deps): update typescript-projects (#9169)
* fix(deps): update typescript-projects

* fix: type error

* fix: more imports

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-30 09:49:14 -04:00
renovate[bot]
3212069eec chore(deps): update node.js to 7a91aa3 (#9166)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 22:25:41 -04:00
renovate[bot]
c1636ef7ab chore(deps): update machine-learning (#9168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-30 02:24:09 +00:00
Ben McCann
0b0ab99016 chore: upgrade docusaurus-preset-openapi to remove axios (#9167) 2024-04-29 22:19:18 -04:00
renovate[bot]
4f097d9106 chore(deps): update node.js to 142644a (#9165)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 22:15:22 -04:00
Yoonjae Choi
461f2595b5 fix(web): Prevent DELETE key from clearing DateInput in modal (#8846)
* fix(web): Prevent DELETE key from clearing DateInput in modal (#8804)

* chore: test prettier

* fix: stop propagation

* fix: stop propagation in modal

* fix: remove unnecessary function and revise lint issue

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-29 17:59:32 -04:00
martin
5722c830ff refactor(web): search people (#9082)
* refactor: search people

* fix: test

* fix: timeout

* fix: callbacks

* fix: simplify

* remove unused var

* refactor: rename file

* fix: focus when deleting last character

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-29 21:38:15 +00:00
Ben
72ce81f0c2 feat(web,a11y): replace IconButton with CircleIconButton (#9153)
* feat(web,a11y): replace IconButton with CircleIconButton

* wip: cleanup

* wip: bring back viewbox

* fix: add label to search bar
2024-04-29 17:17:22 -04:00
renovate[bot]
0c9bf2835d chore(deps): update dependency supertest to v7 (#9156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 14:44:56 -04:00
Alex The Bot
ba18776fc2 Version v1.103.1 2024-04-29 17:53:49 +00:00
Alex
fdae0dcbe5 fix(web): permanent url for partner page (#9158)
* fix(web): permanent url for partner page

* fix: format
2024-04-29 12:16:17 -05:00
Alex
25262b644f chore: post release tasks 2024-04-29 10:31:50 -05:00
Alex The Bot
4291b38769 Version v1.103.0 2024-04-29 14:42:49 +00:00
Matthew Momjian
ee4877b090 chore(docs): collapse some small sections and add a note on MEDIA_LOCATION variable (#9150)
* Update environment-variables.md

* Update config-file.md

* Update config-file.md

* Update command-line-interface.md

* linting
2024-04-29 09:23:13 -05:00
Alex
b4f6184aa6 chore(mobile): more logs (#9081) 2024-04-29 09:17:49 -05:00
Alex
87de809e3d fix(mobile): sync issue (#9149) 2024-04-29 08:54:21 -05:00
Jason Rasmussen
59caf1fce4 chore: lifecycle metadata (#9103)
feat(server): track endpoint lifecycle
2024-04-29 13:48:28 +00:00
Matthew Momjian
6eb5d2e95e docs: update custom locations and cleanup backup/restore paths (#9148)
* Create separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* Update separate-storage.md

* New article for docker storage on SSD

* Update separate-storage.md

* Update separate-storage.md

* In the process, found errors in backup and restore

* Update backup-and-restore.md

* Update backup-and-restore.md

* Update backup-and-restore.md

* Update custom-locations.md

* Update custom-locations.md

* Update custom-locations.md

* Update custom-locations.md

* linting
2024-04-29 09:47:07 -04:00
Fynn Petersen-Frey
32e7cfea3d fix(server): stacked assets for full sync, userIds as array for delta sync (#9100)
* fix(server): stacked assets for full sync, userIds as array for delta sync

* refactor(server): sync

* fix getDeltaSync after partner removal

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-28 23:24:21 -04:00
Matthew Momjian
fc2e709ad4 docs: update env vars for new deployment (#9145)
* Update environment-variables.md

* Update environment-variables.md

* add DB_DATA_LOCATION
2024-04-28 21:54:27 -04:00
Matthew Momjian
3c7b8d560f docs: update queries for descriptions (#9144)
* update queries for descriptions

* join to assets

* specify exif.

* Update database-queries.md

LEFT JOIN not needed here

* Update database-queries.md

* Update database-queries.md
2024-04-28 23:15:32 +00:00
Hermes Espínola González
4bb7d2df49 fix(server): Improve reverse geocoded location metadata (#9051)
* fix: improve reverse geocoding

* fix: update tests referencing states

* fix: expect state suggestion in any order

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-28 21:29:08 +01:00
Alex
a2cf8c7fc7 docs: background backup FAQ (#9142)
* docs: background backup FAQ

* Update docs/docs/FAQ.mdx

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

* Update docs/docs/FAQ.mdx

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

* Update docs/docs/FAQ.mdx

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

* Update docs/docs/FAQ.mdx

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2024-04-28 19:23:57 +00:00
Alex
56a42dad17 feat(web): add menu bar with action buttons to memory view (#9141)
feat(web): add menu bar with action button to memory lane
2024-04-28 13:39:57 -05:00
Ben
13e093b3c2 chore(web): remove CircleIconButton slot (#9131) 2024-04-28 15:20:16 +00:00
Mert
2648032163 fix(server): untracked thumbnail and preview images (#9126)
* delete old thumbnails

* add tests

* revert invisible asset handling
2024-04-27 18:43:05 -04:00
Ben
19aa97da02 feat(web): standardize CircleIconButton colors (#9127)
* feat(web): standardize CircleIconButton colors

* fix: memory lane close button color
2024-04-27 22:29:43 +00:00
Jason Rasmussen
034c928d9e feat(server): remove inactive sessions (#9121)
* feat(server): remove inactive sessions

* add rudimentary unit test

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-04-27 16:45:16 -04:00
dependabot[bot]
953896a35a chore(deps): bump onnx from 1.15.0 to 1.16.0 in /machine-learning (#9122)
Bumps [onnx](https://github.com/onnx/onnx) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/onnx/onnx/releases)
- [Changelog](https://github.com/onnx/onnx/blob/main/docs/Changelog-ml.md)
- [Commits](https://github.com/onnx/onnx/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: onnx
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-27 19:50:49 +00:00
Nguyễn Hoàng Đức
833a78181b fix(server): asset count on meta tag of shared links (#9107)
* fix asset count on meta tag of shared links

* fix lint

* fix style

* add e2e tests
2024-04-27 14:56:13 -04:00
Alex
cf01ec1eb0 chore(mobile): Use bulk update endpoint (#9110)
* chore(mobile): bulk update

* deterministic update on client
2024-04-27 13:10:27 -05:00
Daniel Dietzler
90882a9b26 refactor(server): repositories (#9119)
refactor repos
2024-04-27 13:52:05 -04:00
Thomas
0b68cc2da6 docs: correct milestones (#9120)
Update milestones.tsx
2024-04-27 17:48:35 +00:00
Jason Rasmussen
7ea539b753 chore(server): default postgres hostname to compose service name (#9118) 2024-04-27 13:43:45 -04:00
Daniel Dietzler
1e34b01986 docs: new milestones (#9113)
* 30k stars milestone

* metrics and contributors
2024-04-27 17:14:53 +00:00
Jason Rasmussen
0d8a04b43c chore: for redis, use service name as the default (#9109)
chore: use service name as default redis hostname
2024-04-27 11:04:23 -04:00
Jason Rasmussen
5a49de5592 chore(server): remove old asset search (#9104)
* chore(server): remove old asset search

* chore: remove more unused search code
2024-04-27 12:57:39 +00:00
Mx
0c60aaf557 Update hardware-transcoding.md (#9094)
* Update hardware-transcoding.md

Adding tutorial on how to add QuickSync on Immich dockerfile on Unraid

* cleanup

Co-authored-by: bo0tzz <git@bo0tzz.me>

* fix header

* fix header

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-04-27 00:27:49 -04:00
bercribe
0571901288 Fix backup and restore docker compose issue (#8939)
For the backup and restore docker compose config to work, the `POSTGRES_DB` environment variable needs to be specified
2024-04-27 00:14:51 -04:00
mgabor
557f9d8e5f fix(web): solve error starting docker for local development (#8550) 2024-04-27 00:47:38 +00:00
Ben McCann
8d5729c3b2 chore(docs): upgrade docusaurus to address dependabot warnings (#9102) 2024-04-26 20:16:14 -04:00
Nguyễn Hoàng Đức
0ff0b891a7 feat(web): separate command to build with rollup plugin visualizer (#9097)
separate command to build with rollup plugin visualizer
2024-04-26 15:36:30 -04:00
Ben
53d571d29e feat(web,a11y): form and search filter accessibility (#9087)
* feat(web,a11y): search filter accessibility

- visible focus rings
- labels for text search
- responsive buttons / radio buttons / checkboxes
- buttons to lowercase
- add fieldsets to radio buttons and checkboxes, so the screen reader
  announces the label for the group

* feat: extract inputs into reusable components, replace all checkboxes

* chore: revert changes to responsive buttons

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-26 01:18:19 -05:00
DeadEnd
00d186ec52 chore(mobile): add toast notification for "Download Started" (#9023)
Add Toast for download started

Add Toast notification for mobile download started.
Added new placeholder in each language file - populated with best estimate translations.
2024-04-26 01:08:52 -05:00
Jason Rasmussen
69f8bfe874 fix(server): default host binding (#9090) 2024-04-26 01:02:19 -05:00
Alex
1d15cfb5f3 chore(server): remove unusuned endpoint/service/interface in asset-v1 (#9086) 2024-04-26 01:02:04 -05:00
Conner Hnatiuk
3e03f5348f fix(mobile): restore button in asset viewer (#8919)
* fix:(mobile): spell error in top_control_app_bar.dart in function buildAddToAlbumButtom

* fix(mobile): add restore button to individual image view of trashed assets

* formatting
2024-04-26 01:01:03 -05:00
Nguyễn Hoàng Đức
59537f8f1b fix(web): add debounce to location search (#9074) 2024-04-26 01:00:06 -05:00
Alex
f1083a4c73 fix(mobile): group setting change doesn't propagate across the app (#9066)
fix(mobile): group setting change doesn't propage across the app
2024-04-26 00:54:45 -05:00
Alex
52bcb46b42 fix(mobile): show places in Search page on mobile (#9085)
* fix(mobile): show map on mobile

* remove ununsed code
2024-04-26 00:49:31 -05:00
Mert
d52ed51aab fix(cli): dry run being inaccurate (#9088) 2024-04-25 21:14:48 -04:00
martin
c9dcb5c624 fix(server): activity with deleted assets / users (#9068)
fix: activity with deleted assets / users
2024-04-25 17:45:15 -04:00
Conner Hnatiuk
40899f6137 fix(web): the selected tab on the sidebar was not always shown as selected (#9084)
fix(web): the selected tab on the sidebar was not always shown as selected. Used regex to get necessary portion for comparison
2024-04-25 14:42:09 -05:00
Alex
912d0c4d74 feat(web): permanent url in shared link (#9083) 2024-04-25 14:32:21 -05:00
martin
adb607c3ee fix(web): closing asset viewer (#8933)
* fix: interact with stack trigger navigation

* fix: missing exifInfo

* fix: changing asset

* fix: col-span

* revert change

* fix: remove changes
2024-04-25 11:24:02 -05:00
Mert
c14a2eda5d fix(cli): --ignore getting ignored (#9071) 2024-04-25 10:48:17 -04:00
Conner Hnatiuk
a0d03925e0 fix(mobile): appBar on home screen animates out and doesnt alter asset grid position (#9026) 2024-04-25 09:36:35 -05:00
martyfuhry
732bd1e652 fix(mobile): Fixes memory image cache for local images (#9019)
* Fixes equality operator for immich local image provider

* Changes image cache manager to no longer be image cache managers

* Updates large image cache to 12 images

format

* Try 5 Image cache

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-24 23:30:32 -05:00
mgabor
2943f93098 feat: readonly album sharing (#8720)
* rename albums_shared_users_users to album_permissions and add readonly column

* disable synchronize on the original join table

* remove unnecessary FK names

* set readonly=true as default for new album shares

* separate and implement album READ and WRITE permission

* expose albumPermissions on the API, deprecate sharedUsers

* generate openapi

* create readonly view on frontend

* ??? move slideshow button out from ellipsis menu so that non-owners can have access too

* correct sharedUsers joins

* add album permission repository

* remove a log

* fix assetCount getting reset when adding users

* fix lint

* add set permission endpoint and UI

* sort users

* remove log

* Revert "??? move slideshow button out from ellipsis menu so that non-owners can have access too"

This reverts commit 1343bfa311.

* rename stuff

* fix db schema annotations

* sql generate

* change readonly default to follow migration

* fix deprecation notice

* change readonly boolean to role enum

* fix joincolumn as primary key

* rename albumUserRepository in album service

* clean up userId and albumId

* add write access to shared link

* fix existing tests

* switch to vitest

* format and fix tests on web

* add new test

* fix one e2e test

* rename new API field to albumUsers

* capitalize serverside enum

* remove unused ReadWrite type

* missed rename from previous commit

* rename to albumUsers in album entity as well

* remove outdated Equals calls

* unnecessary relation

* rename to updateUser in album service

* minor renamery

* move sorting to backend

* rename and separate ALBUM_WRITE as ADD_ASSET and REMOVE_ASSET

* fix tests

* fix "should migrate single moving picture" test failing on European system timezone

* generated changes after merge

* lint fix

* fix correct page to open after removing user from album

* fix e2e tests and some bugs

* rename updateAlbumUser rest endpoint

* add new e2e tests for updateAlbumUser endpoint

* small optimizations

* refactor album e2e test, add new album shared with viewer

* add new test to check if viewer can see the album

* add new e2e tests for readonly share

* failing test: User delete doesn't cascade to UserAlbum entity

* fix: handle deleted users

* use lodash for sort

* add role to addUsersToAlbum endpoint

* add UI for adding editors

* lint fixes

* change role back to editor as DB default

* fix server tests

* redesign user selection modal editor selector

* style tweaks

* fix type error

* Revert "style tweaks"

This reverts commit ab604f4c8f.

* Revert "redesign user selection modal editor selector"

This reverts commit e6f344856c.

* chore: cleanup and improve add user modal

* chore: open api

* small styling

---------

Co-authored-by: mgabor <>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-25 04:19:49 +00:00
Snowknight26
0b3373c552 fix(web): Move stack slideshow container higher in the DOM (#8998)
Move stack slideshow container higher in the DOM
2024-04-24 23:19:23 -05:00
Mert
a90138e42e docs(ml): clarify cuda and openvino requirements (#9072)
update docs
2024-04-24 23:15:26 -05:00
Mert
466451abc9 feat(server): env variable to skip migrations on startup (#9069)
* env variable to skip migrations

* update docs

* update env doc
2024-04-24 22:52:38 -04:00
renovate[bot]
f0f9053115 chore(deps): update base-image to v20240423 (major) (#9064)
chore(deps): update base-image to v20240423

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-24 17:31:29 -04:00
Arno Wiest
dc9b51ad02 feat(mobile): Added "jump to date" functionality to the memory view (#7323)
* implemented jump to date from memory

* Changed implementation to a ValueNotifier & fixes

* remove debug code

* feat(mobile):
- Added index bound checks
- Handled edge cases when scrolling to the very bottom of the grid-view
- removing the listener on dispose

* feat(mobile): fixed debug index offset & added debug toast for scroll errors

* feat(mobile): added more debug toasts...

* feat(mobile): scroll to month, if timeline is not grouped by days

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-24 15:02:03 -05:00
Alexandre Truppel
0dbe44cb78 feat(web): upload json config (#8953)
* Button added, config is uploaded

* Refactored to pass "npm run lint" (also verified other PR checklist Web checks)

* Auto-save on config upload

* Static input element

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-24 14:43:43 -05:00
Min Idzelis
a78260296c feat(web): assets now have a permanent URL (#8532)
* Remove asest redirect pages

* Rename route paths to handle optional assetId

* Update old references to new routes

* Load and display asset from all routes that can show assetId

* Add <main> in base layout, update portals to target it

* Wire up updating navigation in response to open/close/prev/next

* Replace events with navigation functions

* Add types to param matcher

* misc cleanup

* Fix reload on /search pages

* Avoid loading bar between photos nav. Delay loading bar by 200ms for all navigations

* Update url for maps routes. Note: on page reload, next/prev is not available

* Dynamically load asset-viewer on map page

* When reloading a url with assetUrl, hide background page to prevent flash during load

* Mostly style, review comments

* Load buckets for assets on demand

* Forgot this update call

* typo

* fix test

* Fix carelessness

* Review comment

* merge main

* remove assets

* fix submodule

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-04-24 19:24:19 +00:00
hdlineage
1e004611e4 feat(mobile) Add zh-TW.json for Traditional Chinese Language Support (#9046)
* Create zh-TW.json for Traditional Chinese Language Support

zh-TW for Traditional Chinese (Used in Taiwan and Hong Kong)

* Update zh-TW.json for missed translation.

Update missed translation at line 25.

* add zh-TW to localizely

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-24 15:28:47 +00:00
Julian Wachholz
2593110219 feat(web): display age with months if age is less than 2 (#9053) 2024-04-24 10:09:59 -05:00
Thoroslives
56ce58c718 Update community-projects.tsx (#9057)
* Update community-projects.tsx

I have made a repo for the remove offline assets python script that was linked as one of my gists. This repo has much more explanation as the the usage and troubleshooting and allows for the contribution from other community members.

* Update docs/src/components/community-projects.tsx

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-04-24 14:53:30 +00:00
Nguyễn Hoàng Đức
aac789f788 fix(web): handle non-http client side page error (#8901)
handle non-http client side page error
2024-04-24 08:32:00 -04:00
martin
99ccf28bc6 fix(web): search people (#8955)
* fix: search people

* Update web/src/routes/(user)/people/+page.svelte

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

* pr feedback

* pr feedback

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-04-23 17:03:29 -05:00
Alex
48b0b7e8bd fix(mobile): ios random logout (#8997)
* fix(mobile): random logout

* move logout mechanism to the end

* More logs

* wording

* more logs

* fixed

* Better check
2024-04-23 16:09:10 -05:00
renovate[bot]
70c78a09a4 chore(deps): update dependency ruff to v0.4.0 (#9047) 2024-04-23 17:03:32 -04:00
renovate[bot]
4458cc4370 chore(deps): update dependency @testing-library/svelte to v5 (#9044)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-23 21:01:58 +00:00
renovate[bot]
0466da03ae fix(deps): update typescript-projects (#9028)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-23 16:50:18 -04:00
renovate[bot]
7a2c1bab23 chore(deps): update machine-learning (#9029) 2024-04-23 14:33:12 -04:00
devjn
0435de50f8 feat(android) Check server is reachable before starting background backup (#8989)
* Check that server is reachable before starting backup work

* Fix iOS not starting background service

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-23 12:50:34 -05:00
Adam Jackson
661540c886 refactor(server, web, mobile): Change wording of memory titles (#9025)
Change wording of memory titles
2024-04-23 15:08:02 +00:00
bo0tzz
f5cf057e84 fix: Make DB_DATA_LOCATION more prominent in .env file (#9035)
We've already had a case in #9033 of someone forgetting to change it and losing the data on reboot.
2024-04-23 08:09:24 -05:00
Matthew Momjian
a91fd772e4 docs: default to sed pg_catalog for Linux, document restore/reset for PG bind mount (#9021)
* Update FAQ.mdx

* Update FAQ.mdx

* Update FAQ.mdx

* Update FAQ.mdx

* Update FAQ.mdx

* Update FAQ.mdx

* Update backup-and-restore.md

* Update backup-and-restore.md

* linting

* Update backup-and-restore.md

* Update FAQ.mdx

* Update backup-and-restore.md

* Update docs/docs/administration/backup-and-restore.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update FAQ.mdx

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-04-22 18:40:19 -04:00
Daniel Dietzler
7f1651df71 chore(server): enable swagger to take class validator rules into account (#9022)
* enable swagger to take class validator rules into account

* chore: open api
2024-04-22 18:13:44 -04:00
Aaron Berndsen
c9a079201a docs: update "move all data" instructions in FAQ (#8976)
* Update FAQ.mdx

chore(docs): update "move all data" FAQ instructions.

* Apply suggestions from code review

fix: (apply suggestions) use sql-compliant comments

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

* fix: Update FAQ.mdx

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2024-04-22 12:53:55 +00:00
Alex
be4a783845 fix(web): wrong month on timeline scrollbar cursor (#8996)
* fix(web): wrong month on timeline scrollbar cursor

* revert unnesessary change
2024-04-22 06:22:59 -05:00
Mert
c30cd3b378 chore: test more formats in e2e (#9001) 2024-04-22 01:35:27 -04:00
TruongSinh Tran-Nguyen
0d3cc28f45 feat(web): support 360 video (equirectangular) (#8762)
* [web]: support 360 video

* lint

* lint

* fix typing

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-21 19:14:54 +00:00
Conner Hnatiuk
f004487be0 fix(web): trash page now auto refreshes (#8978)
* fix(web): the trash page now auto refreshes when restore all or empty trash is clicked. Also shows number of assets affected.

* formatting
2024-04-21 14:07:17 -05:00
clementdelestre
21231d53a5 feat(mobile): add i18n in multiselect-grid and update translation (en and fr) (#8993)
* add i18n in multiselect grid (en-fr)

* add FR translations from (haptic feedback)

* revert settings
2024-04-21 13:26:19 -05:00
Daniel Dietzler
a99862120d feat: mobile label for renovate pull requests (#8991)
mobile lable for renovate pull requests
2024-04-21 13:11:03 -05:00
shenlong
776023b149 dep(mobile): upgrade gradle (#8409)
* dep(mobile): upgrade gradle

* chore(deps): update kotlin & guava

* build: change java version and flutter test version

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-04-20 23:07:32 -05:00
martin
7d4187962a feat(web): new look option for slideshow (#8924)
feat: new look option for slideshow
2024-04-20 23:06:49 -05:00
Jason Rasmussen
a93534fc3c refactor(server): session interface types (#8977) 2024-04-20 23:45:55 -04:00
Alex
cef84f6ced chore(mobile): override appbundle on PlayStore before getting released (#8960) 2024-04-20 19:56:03 -05:00
Alex The Bot
a2180a467d Version v1.102.3 2024-04-20 20:17:39 +00:00
Jason Rasmussen
1e3dceea4d fix(server): session refresh (#8974) 2024-04-20 15:15:25 -05:00
Mert
fd4514711f feat(server): enable AV1 encoding for NVENC (#8959)
allow av1 for nvenc
2024-04-20 14:52:50 -04:00
Alex
2dd7c13b88 Revert "feat(android) Check server is reachable before starting background backup (#8594)" (#8958)
This reverts commit 71b6d8b569.
2024-04-20 12:15:26 -05:00
Alex
40931b5668 chore: post release tasks 2024-04-20 11:15:41 -05:00
Alex The Bot
25549b87c9 Version v1.102.2 2024-04-20 15:55:32 +00:00
Alex
7ec62f12b5 Revert "fix(mobile): random logout (#8739)" (#8954)
This reverts commit 97c099e26d.
2024-04-20 10:53:52 -05:00
Jaryl Chng
caf76f0713 feat(server): enable AV1 encoding for QSV (#8942) 2024-04-20 10:36:00 -04:00
martin
6778653825 fix(web): keep focus when searching people (#8950)
fix: keep focus when searching people

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-20 14:18:31 +00:00
Alex
c858b43717 chore: post release tasks 2024-04-20 09:12:11 -05:00
Alex The Bot
6eb1b82541 Version v1.102.1 2024-04-20 13:43:46 +00:00
devjn
71b6d8b569 feat(android) Check server is reachable before starting background backup (#8594)
* Bump androidx work version to 2.9.0

* Check that server is reachable before starting backup work

* Dart format

* Cleanup debug logs

* Fix analysis
2024-04-20 08:39:04 -05:00
Conner
3abfe3c99e fix(web): restore button in asset viewer (#8935)
* fix(web): restore button added to trashed asset-view to restore single item

* fixed the asset-viewer menu to update upon restoration

* prettier formatting complete, testing passed

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-20 01:19:50 +00:00
Jason Rasmussen
171b6bb0a6 refactor: system metadata (#8923)
refactor(server): system metadata
2024-04-19 20:36:15 -04:00
Daniel Dietzler
78c7ff855d refactor(server): move file file report endpoints to their own controller (#8925)
* move file report to its own controller

* chore: open api
2024-04-19 20:35:54 -04:00
Alex
57be9182d4 chore: post release tasks 2024-04-19 15:32:45 -05:00
Alex The Bot
886e07604e Version v1.102.0 2024-04-19 20:08:02 +00:00
Mert
431ffebddd feat(server): use embedded preview from raw images (#8773)
* extract embedded

* update api

* add tests

* move temp file logic outside of media repo

* formatting

* revert `toSorted`

* disable by default

* clarify setting description

* wording

* wording

* update docs

* check extracted image dimensions

* test that it unlinks

* formatting

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-19 10:50:13 -05:00
Jason Rasmussen
74c921148b refactor(server): cookies (#8920) 2024-04-19 11:19:23 -04:00
martin
eaf9e5e477 feat(web): add an option to fill the screen with the slideshow view (#8909)
* feat: add an option to fill the screen with the slideshow view

* fix: rename var
2024-04-19 06:49:29 -04:00
Jason Rasmussen
4478e524f8 refactor(server): sessions (#8915)
* refactor: auth device => sessions

* chore: open api
2024-04-19 06:47:29 -04:00
renovate[bot]
e72e41a7aa chore(deps): update redis:6.2-alpine docker digest to 84882e8 (#8912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-19 12:46:59 +02:00
martin
efd8f0d648 fix(web): notification number of people when editing faces (#7352)
* fix: notification number of people when editing faces

* fix: lint

* fix: use id instead of index

* rename
2024-04-18 22:55:11 -04:00
renovate[bot]
d2b5cc6a4a chore(deps): update registry.hub.docker.com/library/redis:6.2-alpine docker digest to 84882e8 (#8913)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-18 22:44:37 -04:00
Mert
596c35dc00 fix(server): skip invisible assets for thumbnail generation and ml (#8891)
* skip invisible assets for thumbnail generation and ml

* no need to update job status

* fix thumbhash check order

* linting
2024-04-19 01:37:55 +00:00
martin
112d6d60ec feat(web): add page up and page down shortcuts (#8910)
feat: add page up and page down shortcuts
2024-04-18 21:11:54 -04:00
Ben McCann
c50241369a docs: link to storage label docs from storage template docs (#8911)
* docs: link to storage label docs from storage template docs

* docusaurus sucks
2024-04-18 21:08:09 -04:00
martyfuhry
b74f8273c2 fix:(mobile): Updates old IMMICH text from the mobile settings modal (#8906)
* fix: Removes old IMMICH text from the mobile settings modal

Removed old Snowburst One font from the pubspec

Removes SnowburstOne.ttf file

* Uses immich text now
2024-04-18 14:11:00 -05:00
Mert
8573c84605 fix(server): include archived images in face detection (#8892) 2024-04-17 23:47:24 -04:00
Alessandro Vitali
a4f805e99b Update oauth.md (#8794)
Removed closing brackets from oauth redirect URIs.
2024-04-17 18:59:09 +00:00
renovate[bot]
7db07bbe61 fix(deps): update dependency gunicorn to v22 [security] (#8863) 2024-04-17 11:23:24 -04:00
Jason Rasmussen
3a9df6dae8 refactor(server): immich-admin list-users (#8862) 2024-04-17 12:27:04 +00:00
Ethan Margaillan
c227f9893e feat(web): un-stack from the photos page ; fix stack count (#8419)
* feat(web): un-stack from the photos page ; fix stack count

* move stuff outside of try-catch block

* small optim
2024-04-17 07:55:07 -04:00
renovate[bot]
a3feca2580 chore(deps): update node.js to ec0c413 (#8833)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 07:53:00 -04:00
renovate[bot]
b21566c2fc chore(deps): update node.js to d328c7b (#8829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 07:52:29 -04:00
Ben
1071396a4a fix(web,a11y): remove autofocus from input fields (#8857)
* fix(web,a11y): remove autofocus from input field

The autofocus attribute can cause the keyboard to unexpectedly appear
for mobile users, and override any other focus management that the
application is doing programatically.

* fix: always include people filter
2024-04-17 11:15:37 +02:00
Matthew Momjian
f58886514d docs: fix vectors grant... again (#8860) 2024-04-17 01:21:08 -04:00
Kevin Huang
17dc12cf7d fix(server): storage usage calculation for motion photos (#8722)
* ignore non external assets in external libraries during syncUsage

* only update storage usage if asset is from internal libraries

* update storage usage on motion photo video asset creation

* updated metadata service tests

* added a test

* simplified syncUsage condition

* check for library type upload instead of not external

* fixed broken sql

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-17 03:04:59 +00:00
renovate[bot]
6d4d0f86cf chore(deps): update base-image to v20240416 (major) (#8660)
* chore(deps): update base-image to v20240416

* fix e2e

* rename variable

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-04-16 22:55:05 -04:00
Jason Rasmussen
14b1425e98 feat(server): logging interceptor (#8859) 2024-04-16 19:21:57 -04:00
Matthew Momjian
c70d9f9055 docs: bunch of small changes (#8854)
* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update environment-variables.md

* Update postgres-standalone.md

* Update docker-compose.mdx

* Update environment-variables.md

* Update FAQ.mdx

* Update kubernetes.md

* Update kubernetes.md

* Update system-settings.md

* Update libraries.md

* Update supported-formats.md
2024-04-16 18:58:19 -04:00
renovate[bot]
18fa6018c0 fix(deps): update typescript-projects (#8834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 17:45:14 -04:00
Jason Rasmussen
47fb9bd213 fix(server): correlationId (#8858) 2024-04-16 17:31:49 -04:00
AmAn Sharma
6e6deec40c feat: use ILoggerRepository (#8855)
* Migrate ImmichLogger over to injected ILoggerRepository

* chore: cleanup and tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-16 17:30:31 -04:00
Jason Rasmussen
877207a2e6 chore(server): delete swap file (#8856) 2024-04-16 22:13:03 +02:00
Hannes Palmquist
64cfd017b4 add community project PSImmich (#8851) 2024-04-16 18:01:56 +00:00
renovate[bot]
4c4ebf769f chore(deps): update dependency ruff to v0.3.6 (#8850) 2024-04-16 12:53:04 -04:00
Matthew Momjian
28d081338b docs: update community Guide/Projects, small PG query updates (#8844)
* Update community-projects.tsx

* Update community-guides.tsx

* Update community-projects.tsx

* Update database-queries.md

* Update database-queries.md

* Update community-projects.tsx
2024-04-16 12:39:03 -04:00
Jason Rasmussen
50c9bc0336 chore: migrate to vitest (#7156)
* chore: jest => vitest

* chore: replace jest-when
2024-04-16 10:44:45 -04:00
dependabot[bot]
ed2e4e5217 chore(deps): bump stumpylog/image-cleaner-action from 0.5.0 to 0.6.0 (#8841)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.5.0 to 0.6.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.5.0...v0.6.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 10:39:36 +00:00
Alex
1aa8707b8a chore(mobile): full width language change dropdown (#8806)
* chore(mobile): full width language change dropdown

* linting
2024-04-16 08:53:20 +02:00
Fynn Petersen-Frey
103cb60a57 feat(server): efficient full app sync (#8755)
* feat(server): efficient full app sync

* add SQL, fix test compile issues

* fix linter warning

* new sync controller+service, add tests

* enable new sync controller+service

* Update server/src/services/sync.service.ts

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

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-04-16 07:26:37 +02:00
aviv926
58e516c766 Docs: minor changes (#8814)
* minor

* add image

* PR feedback

* npm run format:fix of course 4_4

* Remove what is not relevant

* pr feedback

* PR feedback

* revert npm run format

* Update docs/docs/FAQ.mdx

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* Update FAQ.mdx

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
2024-04-16 07:26:12 +02:00
Ben
bcdec25843 feat(web,a11y): consolidate BaseModal into FullScreenModal (#8787)
* feat(web,a11y): FullScreenModal sticky buttons

* chore(web): combine BaseModal into FullScreenModal

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-16 07:06:15 +02:00
Ben McCann
28f591d01b chore(mobile): update TODO comment (#8826) 2024-04-16 07:05:50 +02:00
Jason Rasmussen
dba365634a chore(server): cleanup library watching (#8835)
chore: clean up library watching
2024-04-15 23:05:08 -04:00
renovate[bot]
1c1e461936 chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 4de6145 (#8828)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 00:40:12 +00:00
Jason Rasmussen
2db76034b1 feat(server): correlation id via injected logger (#8823)
* feat(server): correlation id via injected logger

* feat: cid response header
2024-04-15 23:39:06 +00:00
martin
95e67a7b1d fix(web): album description height (#8818)
fix: album description height
2024-04-15 19:37:47 -04:00
renovate[bot]
3deaaf14c0 fix(deps): update dependency reflect-metadata to ^0.2.0 (#8784)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 16:02:49 -07:00
martin
084a97a77a fix(web): delete trashed item (#8821)
* fix: delete trashed item

* fix: simplify
2024-04-15 16:21:54 -04:00
yparitcher
ed74213c63 feat(server): server host binding (#8800)
* Allow setting the host address for the server & microservices

Default to listen on all interfaces as per the current behavior.

* (Docs) format: fix lint
2024-04-15 14:24:13 -04:00
martin
7ce1662b05 fix(web): remove query parameter when clearing search (#8817)
fix: remove query parameter when clearing search
2024-04-15 18:20:32 +00:00
aviv926
f959f2de85 docs: community guides (#8812)
* Community Guides

* typo

* chore: view guide

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-15 17:05:03 +00:00
aviv926
07716bbff7 docs: files custom locations (#8627)
* Files Custom Locations

* minimize

* Easier maintenance

* simplify information

* default .env

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-15 12:33:04 +00:00
Ethan Margaillan
0f74b17000 fix(web): fix scrollbar not allowing the user to go fully top or bottom (#8637)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-15 12:21:47 +00:00
Alex
3c7f70ec30 feat(mobile): haptic feedback setting (#8723)
* feat(mobile): haptic feedback testing

* linting
2024-04-15 07:50:47 +02:00
Kevin Huang
85df3f1e99 fix(server): external library motion photo video asset handling (#8721)
* added "isExternal" to the getLibraryAssetPaths query

* handleQueueAssetRefresh skip "non external" video asset, closes #8562

* correctly implements live photo deletion for external library

* use "external asset" for external library tests

* minor: external library asset checksum is "path hash" not file hash

* renamed to getExternalLibraryAssetPaths and added isExternal where clause

* generated sql

* reverted leftover change
2024-04-14 19:55:44 -04:00
Ben McCann
a903898781 docs: note that uploads are disabled on demo app (#8786) 2024-04-14 18:12:33 -04:00
Ben
25e1887939 fix(web): focus escaping from modals (#8730)
* fix(web): focus escaping modals

* fix: exclusion pattern modal should initially load with the "Add" button disabled

* fix: simplify conditional statement
2024-04-14 15:57:45 +02:00
renovate[bot]
9c696e4c28 chore(deps): update grafana/grafana docker tag to v10.4.2 (#8731)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-13 23:23:43 -04:00
mgabor
87a36846f4 fix(web): ui tweaks (#8757)
* remove height limit from user list for better scrolling

* move slideshow button out from menu so that non-owners can see it #8383

* fix activity covering up video player controls #6191

* prettier

---------

Co-authored-by: mgabor <>
2024-04-13 22:41:00 -04:00
(Moai Emoji)
ded01401f8 chore: added 'logs' field to bug template (#8771)
* added logs field to bug_report.yaml

lots of issues are missing logs, people are not submitting them proactively, so a new field is added

* placement suggestion from @bo0tzz
2024-04-13 15:22:33 -04:00
Matthew Momjian
8aff392275 docs: Add community project (#8759)
Update community-projects.tsx
2024-04-12 22:12:58 -04:00
Jason Rasmussen
14b798fcc4 refactor: library e2e (#8693)
* refactor: library e2e

* migrate and refactor library e2e

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-04-12 21:15:41 +02:00
Alex
97c099e26d fix(mobile): random logout (#8739) 2024-04-12 07:33:26 +02:00
Matthew Momjian
3eb61a9d53 docs: DB queries cleanups (#8740)
* Update database-queries.md

* Update database-queries.md

* Update database-queries.md

* Update postgres-standalone.md
2024-04-12 03:44:35 +00:00
Matthew Momjian
e65b3a8ea0 docs: document type of checksum stored in DB (#8737)
* Update database-queries.md

* Update database-queries.md

* Update database-queries.md

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-12 03:18:51 +00:00
Min Idzelis
1fdbc949d6 Add lightroom plugin to community projects (#8736) 2024-04-12 03:14:31 +00:00
shenlong
605da89425 fix(mobile): show error details in the log when available (#8729) 2024-04-12 03:16:40 +02:00
Ben McCann
0d062b32a8 docs: clarify details of connecting to backend for development (#8727)
* docs: clarify details of connecting to backend for development

* simplify
2024-04-11 18:12:14 +02:00
Alex
a4267ed60f chore(mobile): move language setting to another file (#8726) 2024-04-11 14:26:37 +00:00
Kevin Huang
58346465aa fix(server): link motion photo with existing video asset (#8724)
* added motion photo linking

* added tests
2024-04-11 09:49:21 -04:00
Kevin Huang
ec76e5ef23 fix(server): prevent cross-library motion photo linking, made getByChecksum library specific (#8719)
prevent cross linking
2024-04-11 09:41:30 -04:00
Ben
37eea2d353 chore(web): move BaseModal to callback pattern (#8696)
* chore(web): move BaseModal to callback to close

* chore: add question mark
2024-04-11 11:01:16 +02:00
Mert
8c9a092561 docs(ml): update hardware acceleration doc (#8700)
* update docs

* formatting
2024-04-11 09:39:18 +02:00
Ben McCann
e421fe9860 docs: fix typo (#8698) 2024-04-11 09:29:46 +02:00
Mert
e13d4c9c13 chore: add code owner (#8701) 2024-04-11 06:34:19 +00:00
renovate[bot]
640f53fe0a fix(deps): update dependency pillow to v10.3.0 [security] (#8493)
* fix(deps): update dependency pillow to v10.3.0 [security]

* fix typing

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-04-11 05:48:09 +00:00
renovate[bot]
1bca1b8bde fix(deps): update machine-learning (#8646)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-11 01:38:30 -04:00
Matthew Momjian
c902c93082 docs: fix earthdistance restore (#8692)
Update backup-and-restore.md
2024-04-11 01:35:38 -04:00
N00MKRAD
f1ca1794a1 Add AV1 transcoding support (#8491)
* Add AV1 transcoding support

- AV1 encoding on CPU via SVT-AV1 (libsvtav1 in ffmpeg)
- Supports CRF and optionally capped CRF (max bitrate)
- Tested playback successfully in Chrome Win+Android, Firefox Win+Linux, Android app

* AV1: Add support for encoding threads option

* Revert previous commit; specifying params multiple times is bad

We need to specify all svtav1-params at once, so putting the thread option into getThreadOptions is not possible.

* AV1: Override VAAPI getSupportedCodecs as it does not yet support AV1 unlike nvenc, qsv, amf

* Change BaseHWConfig supported codecs to only H264/HEVC

Configs that support VP9 and/or AV1 need to override getSupportedCodecs()

* Set SVT-AV1 threads with svtav1-params, remove duplicate block in NVENCConfig

* AV1Config: Fix empty svtav1-params array being added to options

* add tests

* update api

* allow crf-based two-pass mode

* formatting

* suggest 35

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-04-11 05:26:27 +00:00
Daniel Dietzler
ad5d115abe fix(server): require asset permission when creating an album with them (#8686)
require asset permission when creating an album with them
2024-04-10 13:41:22 -04:00
renovate[bot]
56079527ef chore(deps): update prom/prometheus docker digest to 4f6c47e (#8687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-10 13:14:39 -04:00
tbelway
c77b9f359f adding podman quadlets documentation community project (#8684)
* adding documentation for quadlets

* adding quadlets community project

* removing podman quadlets

---------

Co-authored-by: Thomas Belway <thomas@belway.ca>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-04-10 16:04:57 +00:00
renovate[bot]
7f504ec5fc chore(deps): update dependency @playwright/test to v1.43.0 (#8671)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-09 23:21:56 -04:00
akoscomp
b1bcd67f5a add longer expirity for share link (#8617)
* add longer expirity for share link

* add longer expirity for web UI, add months and year option, add translation

* dart format

---------

Co-authored-by: NAGY Akos (external) <akos.nagy@frequentis.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-04-10 02:54:00 +00:00
hrdl
2a26574808 Allow moving in photo spheres using one touch input instead of two. (#8620)
This is the standard behaviour and also more intuitive. As we don't require scrolling when displaying photo spheres this should not impede usability.

Also remove `mousewheelCtrlKey: false`, which is the default.

Co-authored-by: hrdl <7808331-hrdl@users.noreply.gitlab.com>
2024-04-10 04:48:06 +02:00
Lukas
1d427d0581 feat(web): loop video thumbnails (#8662) 2024-04-10 04:46:26 +02:00
renovate[bot]
321868963d fix(deps): update typescript-projects (#8651)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-09 21:08:37 +02:00
Matthew Momjian
1529b67e41 docs: add Immich Folder Album Creator (#8666)
Update community-projects.tsx
2024-04-09 18:52:32 +02:00
Matthew Momjian
190e4b55eb docs: Pin to Postgres v14 in postgres-backup-local (#8665)
Update backup-and-restore.md
2024-04-09 16:43:18 +00:00
Jason Rasmussen
9e122764e7 docs: community projects (#8641) 2024-04-09 07:03:25 +02:00
Alex
327b9bd59c Revert "fix(deps): update typescript-projects (#8647)" (#8650)
This reverts commit 301c217303.
2024-04-09 06:53:48 +02:00
renovate[bot]
301c217303 fix(deps): update typescript-projects (#8647)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 23:44:48 -04:00
renovate[bot]
9883473376 chore(deps): update node.js to 7e22729 (#8644)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 22:34:09 -04:00
renovate[bot]
6631e6eedc chore(deps): update node.js to 3fb85a6 (#8643)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 22:33:50 -04:00
Matthew Momjian
933b6b67f5 feat: Improve error handling for Install Script (#8422)
* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update install.sh

* Update docs

immich-app vs immich-data

We do not actually touch the .env file

* Remove docker-compose

Docker-compose is no longer supported by Immich

* Update remote-machine-learning.md

* Update install.sh

* Update install.sh

* Update requirements.md

* Update requirements.md
2024-04-08 19:01:57 -04:00
Daniel Dietzler
56e0e5d6ad chore: add to codeowners (#8640)
add to codeowners
2024-04-08 22:48:47 +00:00
Jason Rasmussen
369bd17c8b chore(server): remove unused method (#8639) 2024-04-08 17:23:45 -04:00
Theo Patron
9681f5b360 chore(web): fixed typo expect instead of except (#8638)
* chore(web): specify that HDR videos will always be transcoded

* chore(web): fixed typo expect instead of except
2024-04-08 21:19:36 +00:00
bo0tzz
b107894976 feat(github): Create CODEOWNERS file (#8636) 2024-04-08 21:04:25 +00:00
Ben
796c933fb8 feat(web,a11y): standardize the FullScreenModal UI (#8566)
* feat(web,a11y): standardize the FullScreenModal look

* consistent header, padding, close button, and radius as BaseModal
* vertically stacking ConfirmDialogue CTA buttons in narrow screens
* adding aria-modal tags for screen reader
* add viewport-specific height limits on modals, to enable scrolling
* prevent focus from being hidden under sticky content in modals
* standardize FullScreenModal widths using a Prop

* wip: consistent padding with header

* fix: alignment on "create user" and "edit user" modals

* fix: horizontal modal content alignment

* fix: create user CTA buttons

* chore: remove unnecessary warning

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 21:02:09 +00:00
Theo Patron
d43daaee81 chore(web): specify that HDR videos will always be transcoded (#8634) 2024-04-08 16:39:38 -04:00
Daniel Dietzler
b6cdffa509 mount postgres folder to local directory by default (#8443) 2024-04-08 16:11:25 -04:00
Daniel Dietzler
7b1562c050 fix(server): remove isWatched from DTO (#8598)
* fix: remove isWatched

* chore: open api
2024-04-08 16:00:08 -04:00
Poolitzer
20583d5334 docs: update docker container name in unraid setup docs (#8476)
Fix: change web to server docker name
2024-04-08 15:58:27 -04:00
aviv926
2d03d7c373 feat(docs): update partner sharing (#8308)
* New info

* PR feedback

* PR feedback

* chore: refinement

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 19:23:48 +00:00
bo0tzz
dd15d33bce fix(gh-templates): Add required label attribute (#8632)
* fix(gh-templates): Add required label attribute
2024-04-08 15:01:39 -04:00
aviv926
c5e8f38e1e docs: update Smart Search feature (#8625)
* Up-to-date information on the Smart Search feature

* npm run format:fix

* fix

* chore: refinement

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 14:58:24 -04:00
bo0tzz
db45ec7434 feat(gh-templates): Require non-duplicate confirmation on FR (#8618) 2024-04-08 13:21:35 -04:00
Daniel Dietzler
4f4bceec94 feat(web): add search bar shortcuts (#8630)
add search bar shortcuts
2024-04-08 13:20:24 -04:00
Kevin Huang
7a16233584 fix(server): delete thumbnail for readonly asset (#8593)
* delete thumbnail and other generated files even for readonly asset

* updated test

* don't delete sidecar file for readonly file

* fixed test

* improved external detection
2024-04-08 12:54:10 -04:00
renovate[bot]
fff12e3d78 chore(deps): update dependency eslint-plugin-unicorn to v52 (#8629)
* chore(deps): update dependency eslint-plugin-unicorn to v52

* chore: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 12:45:46 -04:00
dependabot[bot]
da750ed838 chore(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 (#8621)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 12:21:49 -04:00
TomixUG
e49512896f feat(web): paste photo from clipboard (#8475)
* feat(web): paste photo from clipboard

* listen on svelte:window instead of a div

* refactor: move logic to drag overlay

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 12:19:58 -04:00
pedrxd
0075243ed5 feat(cli): Implement logic for --skip-hash (#8561)
* feat(cli): Implement logic for --skip-hash

* feat: better output for duplicates

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-08 11:40:32 -04:00
Jelle Dekker
29e47dd7c1 fix: npm i on Windows … (#8619) 2024-04-08 10:53:27 -04:00
Mert
105a74caca feat(server,web): configure image format (#8581) 2024-04-07 12:44:34 -04:00
Mert
55b9acca78 fix(server): hevc tag being set when copying a non-hevc stream (#8582) 2024-04-07 12:44:09 -04:00
Mert
0d130b8957 fix(server): x264/x265 params not being set correctly (#8587) 2024-04-07 12:43:50 -04:00
Mert
0aa5d3daeb fix(web): reset to default button always being shown (#8577) 2024-04-07 12:43:40 -04:00
Alex
4b622e6cfa Localizely: Translations update (#8584)
chore(mobile): translation update
2024-04-06 22:01:11 -05:00
Alex
82aeb3292a feat(mobile): in app language selector (#8574)
* feat(mobile): select locale in the mobile app

* add additional locale

* use the same locale variable across the app

* using different data structure

* drop down with button

* update pull locales

* open app ios

* remove dependency

* format fix
2024-04-06 21:58:35 -05:00
Mert
335c03d0b8 chore(server): better typing for system config key (#8580)
* config type safety

* typeorm fix

* typing fixes

* don't use enum in db

* add todo
2024-04-07 01:47:33 +00:00
Mert
4681ff88d0 fix(server): image config not being updated (#8579)
update system config key
2024-04-06 21:06:26 -04:00
Mert
33fd27f113 fix(web): some settings not disabled when using config file (#8576)
add disable
2024-04-06 20:59:00 -04:00
Witaut Bajaryn
527fd7d472 Fix typos: immcih -> immich (#8568) 2024-04-06 21:14:50 +00:00
Daniel Dietzler
3a69e5e819 fix(web): concurrency link on jobs page (#8572)
fix concurrency link on jobs page

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-06 21:11:53 +00:00
Alex
7e611fa99c format fix 2024-04-06 16:02:56 -05:00
mgabor
71d346207d feat(docs): update Unraid installation guide (#8540)
* Update unraid.md

* Update docs/docs/install/unraid.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: mgabor <>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-04-06 14:23:51 +00:00
Ben
56d27bc1b4 feat(web,a11y): slider accessibility improvements (#8479)
* feat(web,a11y): slider accessibility improvements

* add perceivable focus outline
* label all sliders for screen readers

* chore: add IDs to all settings sliders

* chore: add comment to id prop

* fix: switch to using CSS to add outlines

* fix: reactive sliderId

* fix: bring back the slot

* fix: add aria-describedby for the subtitle

* fix: cleanup css because disabled slider cannot be focused

* fix: add border to the slider when focus is visible

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-06 14:18:49 +00:00
Matthew Momjian
e1f8e96e28 docs: pg_dumpall refinements (#8546)
* Update backup-and-restore.md

* Update template-backup-script.md

* Update FAQ.mdx
2024-04-06 09:05:00 -05:00
Stefan H
ab97f03cb5 feat(mobile): include partner's photos on map (#8553)
* add option for showing partner images on the map

* renaming of iswithPartners variable
2024-04-06 14:04:40 +00:00
Guillermo
a2e38270e4 fix(web): bypass the onStackAssets shortcut when only one is selected (#8559)
Selecting one asset and pressing 's' would show 'Stacked 1 assets'
and result in a noop. This change prevents the notification and
exiting the select mode.
2024-04-06 13:28:39 +00:00
Ethan Margaillan
8f981b6052 feat(web): enhance ux/ui of the album list page (#8499)
* feat(web): enhance ux/ui of the album list page

* fix unit tests

* feat(web): enhance ux/ui of the album list page

* fix unit tests

* small styling

* better dot

* lint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-05 19:19:26 +00:00
Matthew Momjian
939e91f9ed docs: pre-existing postgres (#8549)
* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md
2024-04-05 14:16:35 -05:00
aviv926
22c3d26604 feat(docs): Add information about breaking changes (#8524)
* Added information about breaking updates

* PR feedback
2024-04-05 09:59:03 -05:00
Michel Heusschen
7aaf48cb0c feat(mobile): add missing translations (#8537)
* feat(mobile): add missing translations

* fix formatting
2024-04-05 09:45:37 -05:00
William Bartholomew
afd7815420 Make language gender neutral (#8535) 2024-04-05 06:45:17 +00:00
Alex
e5fe68cbf6 chore: post release tasks 2024-04-04 22:05:56 -05:00
Alex The Bot
3b0fff3b3d Version v1.101.0 2024-04-05 02:39:51 +00:00
Alex
ec7015be88 chore(mobile): add log to get file name for corrupted asset (#8527)
* chore(mobile): add log to get file name for corrupted asset

* add date
2024-04-04 21:28:05 -05:00
Alex
19fafd8c10 Localizely: Translations update (#8517)
chore(mobile): translation update
2024-04-04 18:48:17 -05:00
Lukas
e47a89b274 Add notes for facial recogniton models source (#8522)
Co-authored-by: LakesLab <lackeslab@gmail.com>
2024-04-04 18:42:27 -05:00
Michel Heusschen
66650f5944 fix(web): prevent fetching asset info twice (#8486) 2024-04-03 21:20:54 -04:00
bo0tzz
0529076ed7 docs: Update environment variable services (#8490)
* docs: Update environment variable services

* chore: format fix
2024-04-03 18:20:48 -04:00
Alex
7f854432ae fix(web): show download button correctly based on shared link permission (#8288)
* fix(web): show download button correctly based on shared link permission

* remove console log

* Define initial value

* simpler implementation

* refactor: show download in asset viewer for shared link

* chore: hook timeout

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-03 09:37:03 -05:00
renovate[bot]
15a2e6feeb fix(deps): update typescript-projects (#8471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-03 10:17:17 -04:00
renovate[bot]
4ed68cf673 fix(deps): update dependency orjson to v3.10.0 (#8473) 2024-04-02 19:22:50 +00:00
Alex
8337da183c chore: update openapi (#8470) 2024-04-02 14:21:58 -05:00
seasox
6dfa9e1146 fix(web): do not set $isShowDetail to false when navigating to a person (#8472)
do not set isShowDetail to false when navigating to a person from detail view
2024-04-02 14:12:47 -05:00
Alex
282bccaca5 chore(web): fine tuning styling for base modal (#8469)
* chore(web): refine base modal styling

* styling

* remove api spec file
2024-04-02 14:09:55 -05:00
Ben McCann
62d307321a docs: add some details for getting started as a developer (#8468) 2024-04-02 11:56:33 -05:00
Ben Basten
f7afc0334e feat(web,a11y): standardize base modal (#8388)
* consistent headings
* remove escape key handler
* add aria attributes
2024-04-02 11:05:02 -04:00
Guillermo
28e8e539f6 feat(web): add keyboard shortcut to stack selected photos (#5983)
* feat(web): add keyboard shortcut to stack selected photos

* refactor(web): deduplicate logic to stack assets

* Fix linting errors

* fix(web): incorrect count of stacked photos

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-04-02 15:04:52 +00:00
Matthew Momjian
7cc19b50fc docs: update DB_URL_FILE (#8465)
* Update environment-variables.md

* linting
2024-04-02 10:56:17 -04:00
renovate[bot]
97c340b8a4 chore(deps): update node.js to fa5d3cf (#8450)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 14:26:55 +00:00
renovate[bot]
7b1d4a6787 fix(deps): update typescript-projects to v10.3.7 (#8461)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 14:26:47 +00:00
renovate[bot]
0714d119d7 chore(deps): update node.js to ef3f477 (#8449)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 14:26:26 +00:00
Matthew Momjian
700622e521 docs: update FAQ for Docker (#8418)
* Update FAQ.mdx

* Update FAQ.mdx

* linting
2024-04-02 09:24:06 -05:00
Matthew Momjian
3682e76dee feat(docs): Supported Formats (#8394)
* Create supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* Update supported-formats.md

* linting
2024-04-02 09:23:53 -05:00
Jason Rasmussen
cd0e537e3e feat: persistent memories (#8330)
* feat: persistent memories

* refactor: use new add/remove asset utility
2024-04-02 10:23:17 -04:00
renovate[bot]
0849dbd1af fix(deps): update typescript-projects (#8451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 02:20:52 -04:00
Fynn Petersen-Frey
4ab4a35eba fix(mobile): sync all album properties (#8332) 2024-04-02 00:22:15 -05:00
Alex
e5d9372708 fix(web): weird Overpass font height (#8458) 2024-04-02 00:13:45 -05:00
Mert
8edc2fb46f refactor(server): decouple generated images from image formats (#8246)
* rename

thumbnail config

update target paths, fix tests

rename to image settings

replace legacy enum

better typing

update sql

update api

remove config option

fix

* update docs

* update other thumbnail configs in migration

* keep legacy enum for now

* fix jumbled job names

* fix jumbled job names in tests

* rename thumbhash job

* rename dto

* fix tests

* preserve order

* remove unused import

* keep old fields in dto, marked deprecated

* update sql

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-02 04:56:56 +00:00
renovate[bot]
e520c0d1f5 chore(deps): update dependency black to v24.3.0 [security] (#8109)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 00:44:57 -04:00
renovate[bot]
506f9f6fb9 chore(deps): update prom/prometheus docker digest to dec2018 (#8320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-01 23:41:23 -05:00
martin
3cb8f54307 fix(web): asset description resize (#8442)
* fix: asset description resize

* use immich-scrollbar class

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-04-02 03:11:11 +00:00
ZlabiDev
ee4d9fff16 fixes issue #8352 (#8432)
fixed issue #8352
2024-04-01 16:06:25 +00:00
Alex
27be813011 feat(mobile): search enhancement (#8392) 2024-04-01 09:45:11 -05:00
Fynn Petersen-Frey
861b72ef04 fix(mobile): update album date range on add/remove (#8324) 2024-03-31 23:14:35 -05:00
mmomjian
fd83280b70 docs: Postgres standalone fix (#8427) 2024-03-31 21:52:20 -04:00
Mert
169d9d18b0 docs: document metric env variables, add job metric env (#8406)
* update env docs

* show options
2024-03-31 17:29:11 +00:00
mmomjian
245535ee04 docs: specify Timezone (#8403) 2024-03-31 11:38:16 -05:00
Mert
5bc9158724 fix(server): penalize null geodata fields when searching places (#8408) 2024-03-31 10:59:11 -04:00
Pablo Diz
6a4bc777a2 Fix external library path validation #8319 (#8366)
* Fix isImmichPath

* prettier write

* Fis isImmichPath code comment

* Refactor isImmichPath function based on team suggestions

* Test isImmichPath

* fix: clean comments

* Refactor isImmichPath test based on team suggestions

* Clean code with lintern suggestions
2024-03-31 10:47:03 -04:00
waclaw66
34cbb18ecd fix(mobile): memories translation (#8316) 2024-03-31 06:59:11 +00:00
renovate[bot]
e2d5a8c0bb fix(deps): update machine-learning (#8280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-31 06:05:18 +00:00
mmomjian
94cd806675 docs: Nginx config update (#8397)
* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md

* Update reverse-proxy.md
2024-03-30 21:48:37 -05:00
mmomjian
b6af7788e1 feat(server): extensions for MPEG and 3GP (#8400)
* Update mime-types.spec.ts

* Update mime-types.ts
2024-03-30 21:48:01 -05:00
mmomjian
c4bb9f49ff Fix repair page typo (#8401)
Update +page.svelte
2024-03-30 21:47:00 -05:00
mmomjian
8e5695f06d Add docs for Postgres standalone setup (#8343)
* Create postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update docs/docs/administration/postgres-standalone.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/administration/postgres-standalone.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/administration/postgres-standalone.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/administration/postgres-standalone.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/administration/postgres-standalone.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update postgres-standalone.md

* Update postgres-standalone.md

Planning to write a guide in the future about setting up streaming database backups

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

* Update postgres-standalone.md

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-03-30 21:35:06 -05:00
Mert
395c28f5fa fix(server): parameter for all places query (#8346)
* fix parameter

* add e2e
2024-03-31 02:29:02 +00:00
xethlyx
3e5183606c docs: fix typo (#8396) 2024-03-30 21:57:19 -04:00
martin
6a36bbd1d1 fix(web): multiple fixes for the webUI (#8368)
fix: multiple fixes for the webUI
2024-03-30 10:14:41 -05:00
Jason Rasmussen
4b39d37cae fix: sql generation issues (#8361)
chore: fix sql gen issues
2024-03-30 00:16:06 -04:00
Jason Rasmussen
25c9b779e4 fix: map theme auth in shared links (#8359)
fix: map theme auth
2024-03-29 09:43:30 -05:00
Ben Basten
fcc3b81745 feat(web, a11y): add labels! (#8354)
* feat(web, a11y): add labels!

* fix: move required prop to the top of the list
2024-03-29 08:48:07 -04:00
Daniel Dietzler
6f677b4fae refactor(server): extract add/remove assets logic to utility function (#8329)
extract add/remove assets logic to utility function

fix tests

chore: generate sql

foo
2024-03-29 07:56:16 -04:00
mmomjian
78f202603c docs: typo on backup script (#8349)
Update backup-and-restore.md
2024-03-28 23:49:55 -04:00
Daniel Dietzler
b8c5363a15 refactor(server): move timeline operations to their own controller/service (#8325)
* move timeline operations to their own controller/service

* chore: open api

* move e2e tests
2024-03-28 23:20:40 -04:00
Daniel Dietzler
b8b3c487d4 fix(server): map style not being available for shared assets (#8341)
* fix map style not being available for shared assets

* add e2e test
2024-03-28 23:19:05 -04:00
Jonathan Jogenfors
ec48fccb30 fix(server): add missing file extensions to library files (#8342)
* fix file extensions

* fix tests

* fix formatting

* fixed bug

* fix merts comments
2024-03-28 22:51:07 -04:00
Alex
3f61019ca1 chore: post release tasks 2024-03-28 13:49:18 -05:00
Alex The Bot
16513b4a6e Version v1.100.0 2024-03-28 18:36:38 +00:00
Alex
9b705e4450 chore(server): open-api memory lane number generation (#8314)
chore(server): openaapi memory lane number generation
2024-03-27 22:27:26 -05:00
Ben Basten
e1c2135850 feat(web, a11y): focus management for modals and popups (#8298)
* feat(web, a11y): focus management for modals and popups

* feat: hide asset options dropdown on escape key
2024-03-27 15:55:27 -05:00
Jason Rasmussen
9fe80c25eb fix: memory lane assets in ascending order (#8309)
* fix: memory lane asset order

* chore: deprecate title

* chore: open-api

* chore: rename years => yearsAgo
2024-03-27 16:14:29 -04:00
Sam Holton
13b11a39a9 feat(web) add filter when viewing all people in search box (#7997)
* feat(web) add filter when viewing all people in search box

* chore: svelte check

* pr feedback: fix vertical spacing to eliminate jump when filter appears

* pr feedback

* simplify filter logic

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-27 14:58:38 -05:00
Ethan Margaillan
8bf571bf48 feat(web): better UX when creating a new album (#8270)
* feat(web): ask user before going to newly created album

* feat(web): add button option to notification cards

* feat(web): allow html messages in notification cards

* show album -> view album

* remove 'link' action from notifications

* remove unused type
2024-03-27 14:47:42 -05:00
Jason Rasmussen
613b544bf0 feat(cli): better server info output (#8307)
* feat(cli): server-info command prints url and user email

* chore: clean up

---------

Co-authored-by: 澪 <mio@mio19.uk>
2024-03-27 20:01:36 +01:00
renovate[bot]
916603d2d4 fix(deps): update typescript-projects (#8287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 12:07:49 -04:00
Jason Rasmussen
e30eecba2c chore(cli): prepare release (#8296)
chore: prepare release
2024-03-26 18:56:16 +00:00
Alex
3a94be0212 chore(web): style tab button group and search bar (#8292)
* chore(web): style tab button group and search bar

* responsive design
2024-03-26 10:36:15 -05:00
renovate[bot]
6295edcdb7 chore(deps): update base-image to v20240326 (major) (#8291)
chore(deps): update base-image to v20240326

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 09:17:48 -04:00
Jordy
335b4937ed fix(docs): fix path in readme files (#8289)
fix(docs): paths for images
2024-03-26 13:07:55 +00:00
indam
06da0469c4 Update README_zh_CN.md to sync with README.md (#8282) 2024-03-26 10:39:37 +00:00
renovate[bot]
1ad893ded4 fix(deps): update typescript-projects (#8281)
* fix(deps): update typescript-projects

* chore: regenerate sql

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-26 02:39:57 +00:00
Jordy
636f5fb933 feat(docs): removed deprecated version line in docker compose files (#8276)
Removed deprecated version line in docker compose files
2024-03-25 19:20:49 -04:00
Mert
c45e28ab53 refactor(server): metric repo (#8278)
* refactor

* redundant `implements`

* simplify

* remove `enabled`
2024-03-25 23:15:11 +00:00
Daniel Dietzler
c56c04a82b refactor(server): rename filesystem provider -> storage repo (#8277)
rename filesystem provider -> storage repo
2024-03-25 20:45:21 +00:00
Daniel Dietzler
d431d37454 feat(server): dark mode support for star history (#8259)
use theme sensitive star history graphic
2024-03-25 08:20:26 -04:00
Daniel Dietzler
1694dd146e feat(server): add immich cli to container (#8239)
add immich cli to server container
2024-03-25 08:18:33 -04:00
Mert
4a6a0aa142 fix(server): places page not working with partner sharing (#8257) 2024-03-25 01:59:11 -04:00
Keshav Prateek Pandey
c788160532 chore(docs): Update docker compose readme with wget download option (#8250)
Add download option to wget
2024-03-25 05:01:29 +00:00
James Wilson
cc66159f04 fix(web): Correct minor typo in new version check copy (#8253)
Fix typo in new-version-check-settings.svelte
2024-03-24 23:35:06 -04:00
Mert
c58a70ac8f feat(server): job metrics (#8255)
* metric repo

* add metric repo

* remove unused import

* formatting

* fix

* try disabling job metrics for e2e

* import otel in test module
2024-03-24 23:02:04 -04:00
Alex
1855aaea99 chore(web): favicon without white bg (#8251) 2024-03-24 16:44:59 -05:00
Alex
3901b5da44 fix(web): default album view (#8247)
* fix(web): default album view

* linting
2024-03-24 20:44:22 +00:00
martin
5dc59b591d refactor(web): albums list (2) (#8214)
* refactor: albums list

* fix: responsive design

* keep albums in sharing
2024-03-24 13:07:20 -05:00
Kokul Shanmugharajah
96a5710932 (docs) Update XMP sidecar docs to include the fact that Immich will look for photo.ext.xmp and photo.xmp (#8235)
Update XMP sidecar docs
2024-03-24 08:45:42 -04:00
aviv926
d36d32d07b feat(docs): Changes to the Administration section. (#8078)
* Changes to the administration section

* Add ->

* chore: better explanation about jobs

* chore: improve system config wording

* chore: remove duplicate entry

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-24 02:04:32 +00:00
Jamie
727b3b9f53 chore(docs): update storage-template.md (#8154)
Update _storage-template.md
2024-03-23 21:21:46 -04:00
Timothy Pillow
c85563da50 Update command-line-interface.md (#8213)
* Update command-line-interface.md

Update documentation for CLI commands.

* chore: update docs

* chore: login-key => login

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-23 20:24:53 +00:00
Jason Rasmussen
a771c563ba chore(server): remove pre-installed cli (#8224) 2024-03-23 16:07:39 -04:00
aviv926
3cc800f93a feat(docs): New repair and statistics pages (#8030)
* New repair and statistics page

* PR Feedback

* New

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-23 19:43:10 +00:00
mmomjian
b449feb3e1 docs: Fix documentation for running as a non-root Docker user (#8218)
* Update FAQ.mdx

* Update FAQ.mdx

* Update FAQ.mdx
2024-03-23 15:21:40 -04:00
Mert
b07a565e34 chore(server): change upsert signature for search repo (#8210)
* upsert embedding

* remove unused imports
2024-03-23 14:37:06 -04:00
Jason Rasmussen
787eebcf1e refactor(server): new password repo method (#8208) 2024-03-23 14:33:25 -04:00
Mert
604b8ff17c chore(server): remove getByDate from asset repo (#8211)
* remove getByDate

* remove unused import
2024-03-22 23:20:16 -05:00
Jason Rasmussen
6e93ddf2f1 refactor: server events (#8204)
* refactor: server events

* fix typo

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-03-22 18:24:02 -04:00
Jason Rasmussen
b6e4be72f0 chore(server): consolidate dto files (#8201)
chore: conoslidate dto files
2024-03-22 16:36:20 -04:00
Jason Rasmussen
75aa8e6621 chore(cli): rename commands (#8200)
* chore(cli): rename login command

* chore: rename key/url
2024-03-22 15:09:04 -04:00
Jason Rasmussen
5b7417bf64 refactor: cli (#8199)
* refactor(cli): upload asset

* chore: e2e tests
2024-03-22 14:38:00 -04:00
Jason Rasmussen
db744f500b refactor(cli): crawl service (#8190) 2024-03-22 10:30:24 -04:00
Alex
a56cf35d8c fix(mobile): recently add view show other user assets (#8184) 2024-03-22 08:41:55 -05:00
Kokul Shanmugharajah
d1e6843f3e feat(cli) CLI when uploading photo.EXT, it detects both photo.EXT.xmp and photo.xmp (#8186)
* Initial implementation

* chore: remove duplicate access check

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-22 13:00:27 +00:00
natedawg
d18868873e chore: update readme screenshot (#8182)
Co-authored-by: natedawg <nate@natedawg.net>
2024-03-22 04:31:36 +00:00
Eliezer Graber
827014fa4b fix(mobile): android adaptive icon new logo (#8180)
* Use new logo for Android monochrome adaptive icon

* Use new logo for Android adaptive icon

* Add Android monochrome adaptive icon

* Remove ic_launch_foreground.png from drawable res

  - The mipmap res directories have an ic_launcher.png file that will be used on versions lower than 26
   - The adaptive icon will be used over versions 26 and above
2024-03-21 21:59:49 -05:00
Alex
944b33983c fix(mobile): scroll stickiness (#8166) 2024-03-21 21:58:40 -05:00
renovate[bot]
2641185af2 chore(deps): update grafana/grafana docker tag to v10.4.1 (#8168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 20:59:13 -05:00
Alex
64aac239f0 chore: consolidate readme files (#8171) 2024-03-21 18:00:22 -05:00
Daniel Dietzler
d6823b128c fix(server): validation events actually throwing an error (#8172)
* fix validation events

* add e2e test
2024-03-21 17:59:21 -05:00
martin
508f32c08a feat(web): improvements to slideshow (#8032)
* feat: improvements to slideshow

* feat: pause video with slideshow bar

* pr feedback

* fix: remove dispatch

* fix: simplify

* pr feedback

* pr feedback

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-21 15:01:08 -05:00
Ethan Margaillan
8ed6ed4d2b feat(web): rework context menus: add icons and reorder items (#8090) 2024-03-21 13:39:33 -05:00
Fynn Petersen-Frey
1abb0bdae8 feat(mobile): faster image loader (#8140)
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-21 11:51:03 -05:00
martyfuhry
5ef6215546 chore(mobile): Bump to Flutter 3.19.0 (#7167)
* Bump to Flutter 3.19.0

* Ran pub upgrade --major-versions and removed isar_version alias

Wrong http version

* Updated share_plus to fix android build

* Updates github actions to 3.19.0

* upgrade to 3.19.3

* upgrade to 3.19.3

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-21 11:31:18 -05:00
waclaw66
95fb9c4365 fix(mobile): spacing fixes of #8087 (#8163)
fix(mobile): spacing fix of https://github.com/immich-app/immich/pull/8087
2024-03-21 11:23:06 -05:00
aviv926
fa0a5107c2 fix(docs): Immich quota claim note (#8151)
* Add a note about immich_quota_claim.

* Fix

* PR feedback

* npm run format:fix

* use ¹
2024-03-21 15:05:45 +00:00
Jason Rasmussen
dc3c329431 chore: remove unused type (#8157) 2024-03-21 14:36:10 +00:00
Jason Rasmussen
2a9f2b4515 refactor: app modules, main.ts (#8156) 2024-03-21 10:08:29 -04:00
Michel Heusschen
793049388b refactor(web): cleanup notification components (#8150)
* refactor(web): cleanup notification components

* use counter for ID
2024-03-21 09:44:54 -04:00
Jason Rasmussen
382b63954c refactor: asset v1, app.utils (#8152) 2024-03-21 09:07:47 -04:00
Ben Basten
87ccba7f9d feat(web): keyboard access for search dropdown, combobox fixes (#8079)
* feat(web): keyboard access for search dropdown

Also: fixing cosmetic issue with combobox component.

* fix: revert changing required field

* fix: create new focusChange action

* fix: combobox usability improvements

* handle escape key on the clear button
* move focus to input when clear button is clicked
* leave the dropdown closed if the user has already closed the dropdown and tabs over to the clear button
* activate the combobox if a user tabs backwards onto the clear button

* rename focusChange to focusOutside

* small fixes

* do not activate combobox on backwards tabbing
* simplify classes in "No results" option
* prevent dropdown option from being preselected when clear button is
  clicked

* fix: remove unused event dispatcher interface
2024-03-21 08:24:19 -04:00
renovate[bot]
e21c96c0ef chore(deps): update redis:6.2-alpine docker digest to 3fcb624 (#8137)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 07:14:44 -05:00
Ethan Margaillan
4de0b2f44e feat(web): add ctrl+a / ctrl+d shortcuts to select / deselect all assets (#8105)
* feat(web): use ctrl+a / ctrl+d to select / deselect all assets

* fix(web): use shortcutList for ctrl+a / ctrl+d

* fix(web): remove useless get()

* feat(web): asset interaction store can now select many assets at once
2024-03-21 07:14:13 -05:00
Daniel Dietzler
b588a87d4a chore(server): rename domain repositories -> interfaces (#8147)
rename domain repositories
2024-03-21 06:59:49 -05:00
Alex
44ed1f0919 fix(web): asset-grid padding/margin left fix (#8125)
use media query for grid padding/margin size
2024-03-21 00:18:38 -05:00
Jason Rasmussen
16d0df796c refactor: infra folder (#8138) 2024-03-20 23:15:09 -04:00
renovate[bot]
9fd5d2ad9c fix(deps): update machine-learning (#8057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 22:59:15 -04:00
Kirill
28ad004b01 Update remote-machine-learning.md (#8038)
* Update remote-machine-learning.md

provide an example to use cuda or another container

* Update docs/docs/guides/remote-machine-learning.md

Co-authored-by: aviv926 <51673860+aviv926@users.noreply.github.com>

* Update docs/docs/guides/remote-machine-learning.md

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: aviv926 <51673860+aviv926@users.noreply.github.com>
2024-03-20 22:58:52 -04:00
Daniel Dietzler
ef4a492cb1 chore(server): move services (#8133)
move services
2024-03-20 18:07:30 -05:00
Daniel Dietzler
6d9e7694b1 chore(server): move dtos (#8131)
move dtos
2024-03-20 23:53:07 +01:00
Jason Rasmussen
0c13c63bb6 refactor: infra/domain module (#8130) 2024-03-20 16:46:59 -05:00
Jason Rasmussen
907eb869bc chore: move apps and test utils (#8129) 2024-03-20 17:22:47 -04:00
Jason Rasmussen
c1402eee8e chore: migrate database files (#8126) 2024-03-20 21:02:51 +00:00
Daniel Dietzler
84f7ca855a chore(server): move domain interfaces (#8124)
move domain interfaces
2024-03-20 16:42:58 -04:00
Daniel Dietzler
2dcce03352 chore(server): move commands (#8121)
move commands
2024-03-20 20:25:33 +00:00
renovate[bot]
96a22ec3c1 chore(deps): update base-image to v20240319 (major) (#8115)
chore(deps): update base-image to v20240319

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 16:21:27 -04:00
Daniel Dietzler
4b29bccc7c chore(server): move cores (#8120)
move cores
2024-03-20 20:20:38 +00:00
Jason Rasmussen
40e079a247 chore: move controllers and middleware (#8119) 2024-03-20 16:15:01 -04:00
Jason Rasmussen
81f0265095 chore: organize config, validation, decorators (#8118)
* refactor: validation

* refactor: utilities

* refactor: config
2024-03-20 16:04:03 -04:00
Jason Rasmussen
92cc647cf6 chore: renovate grouping (#8113) 2024-03-20 15:50:01 -04:00
Michel Heusschen
048d437b0b fix(web): prevent duplicate time bucket loads (#8091) 2024-03-20 15:40:41 -04:00
renovate[bot]
ec9a6bca14 chore(deps): update dependency socket.io-client to v4.7.5 (#8111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 15:38:58 -04:00
renovate[bot]
bd5952b943 chore(deps): update vitest monorepo to v1.4.0 (#8112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 15:35:07 -04:00
renovate[bot]
3f0d54c752 fix(deps): update server (#8067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 15:34:12 -04:00
renovate[bot]
dab4595a4e chore(deps): update redis:6.2-alpine docker digest to fd35357 (#8001)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:09:10 -05:00
renovate[bot]
6d9ca82b19 chore(deps): update web (#8066)
* chore(deps): update web

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-20 14:08:01 -05:00
renovate[bot]
373a03e819 chore(deps): update dependency @types/node to v20.11.28 (#8110)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:06:58 -05:00
renovate[bot]
d97b0259fa chore(deps): update node.js to bf77dc2 (#8063)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:38:48 -04:00
renovate[bot]
2267ca1949 chore(deps): update node.js to 8765147 (#8058)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:38:28 -04:00
renovate[bot]
29be53e70d chore(deps): update prom/prometheus docker digest to 5ccad47 (#8071)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:37:22 -04:00
renovate[bot]
851fe4a49f chore(deps): update dependency @types/node to v20.11.28 (#8064)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 14:33:41 -04:00
Daniel Dietzler
30f499cf2e chore(server): use absolute import paths (#8080)
update server to use absolute import paths
2024-03-20 14:32:04 -04:00
Alex
591a641d8d chore: post release tasks 2024-03-20 10:00:35 -05:00
Alex The Bot
5b314ffd46 Version v1.99.0 2024-03-20 14:50:57 +00:00
Alex
0b078c9f99 fix(web): Share button visible when viewing album has only shared link (#8100) 2024-03-20 14:46:31 +00:00
Alex
0d5584ecbb fix(web): shift-select again (#8098) 2024-03-20 14:28:19 +00:00
waclaw66
5e090646ba fix(mobile): missing "Add name" translation (#8087)
fix(mobile): missing "Add name" translation, positioning
2024-03-20 14:26:09 +00:00
Mert
c4e910dd3d docs(server): add documentation for prometheus metrics (#8084)
* add monitoring doc

* wording

* indent

* note instead of tip

* Update docs/docs/features/monitoring.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update docs/docs/features/monitoring.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-03-20 09:20:46 -05:00
Alex
5a2394af7c fix(web): shift-select (#8093)
* fix(web): shift-select

* remove unused code

* proper fix
2024-03-20 09:16:20 -05:00
Alex
48e32269f4 chore: add prometheus.yml to release artifact (#8096) 2024-03-20 09:16:00 -05:00
Zack Pollard
dd9d90d21e test: temporarily disable flaky audit e2e test until #7436 is fixed (#8089) 2024-03-20 07:31:52 -05:00
Ethan Margaillan
0544c687b9 fix(web): missing margin on people page (#8081) 2024-03-20 07:29:30 -05:00
Michel Heusschen
e810aae212 fix(web): show search page errors and use feature flag (#8088) 2024-03-20 07:24:08 -05:00
Michel Heusschen
9c6a26de9f chore(web): add asset store unit tests (#8077)
chore(web): asset store unit tests
2024-03-19 23:41:31 -05:00
Jonathan Jogenfors
e6f2bb9f89 fix(server): use extension in originalFileName for libraries (#8083)
* use file base

* fix: test

* fix: e2e-job tests

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-19 23:40:28 -05:00
Ethan Margaillan
f908bd4a64 fix(web): prevent drag-n-drop upload overlay from showing when not dragging files (#8082) 2024-03-19 23:28:13 -05:00
Thariq Shanavas
7395b03b1f fix(docs) minor security warning raised by Borg (#8075)
* Fix minor borg security warning

* Update template-backup-script.md

* removed one unnecessary step

* Clarified optional steps

* Update template-backup-script.md
2024-03-19 23:12:36 -05:00
Alex
63b4fc6f65 chore(mobile): svg logo (#8074)
* chore(mobile): anti-aliasing logo

* use svg

* adjust height

* better sizing
2024-03-19 23:07:26 -05:00
Mert
f392fe7702 fix(server): "view all" for cities only showing 12 cities (#8035)
* view all cities

* increase limit

* rename endpoint

* optimize query

* remove pagination

* update sql

* linting

* revert sort by count in explore page for now

* fix query

* fix

* update sql

* move to search, add partner support

* update sql

* pr feedback

* euphemism

* parameters as separate variable

* move comment

* update sql

* linting
2024-03-20 03:23:57 +00:00
Mert
2daed747cd chore(server): change save -> update in asset repository (#8055)
* `save` -> `update`

* change return type

* include relations

* fix tests

* remove when mocks

* fix

* stricter typing

* simpler type
2024-03-19 22:42:10 -04:00
shenlong
9e4bab7494 feat(mobile): drag to select assets (#8004)
fear(mobile): drag to select assets

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-03-19 14:31:56 +00:00
waclaw66
9274c0701b fix(mobile): do not show hidden people (#8072)
* fix(mobile): do not show hidden people

* dart format fix
2024-03-19 09:22:44 -05:00
Alex
0bc773fd00 refactor(mobile): backup album selection (#8053)
* feat(mobile): include album with 0 assets as album option for backup

* Show icon instead of thumbnail

* Handle backupProgress state transition correctly to always load the backup info

* remove todo comment
2024-03-19 08:40:14 -05:00
Ben Basten
c6d2408517 feat(web): combobox accessibility improvements (#8007)
* bump skip link z index, to prevent overlap with the search box

* combobox refactor initial commit

* pull label into the combobox component

* feat(web): combobox accessibility improvements

* fix: replace crypto.randomUUID, fix border UI bug, simpler focus handling (#2)

* fix: handle changes in the selected option

* fix: better escape key handling in search bar

* fix: remove broken tailwind classes

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* fix: remove custom "outclick" handler logic

* fix: use focusout instead of custom key handlers to detect focus change

* fix: move escape key handling to the window

Also add escape key handling to the input box, to make sure that the "recent searches" dropdown gets closed too.

* fix: better input event handling

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* fix: highlighting selected dropdown element

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-03-19 07:56:41 -05:00
Jan
033f83a55a fix(docs): update authelia OIDC link (#8070) 2024-03-19 07:47:33 -05:00
Alex
51841d627c fix(web): load panorama in shared link (#8060)
* fix(web): load panorama in shared link

* remove console log
2024-03-18 22:39:49 -05:00
renovate[bot]
50924f0b3d chore(deps): update dependency @types/node to v20.11.27 (#8012)
* chore(deps): update dependency @types/node to v20.11.27

* fixes

* fixes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Marty Fuhry <martyfuhry@gmail.com>
2024-03-18 19:49:31 -04:00
Daniel Dietzler
4aae1da841 fix(web): repair page typo (#8051)
fix typo
2024-03-18 21:56:39 +00:00
bo0tzz
1a2554548a chore: Simplify install script (#8048)
* chore: Simplify install script

The default .env file now contains a set UPLOAD_LOCATION already

* fix: Remove leftover line
2024-03-18 16:54:30 -05:00
Jason Rasmussen
40262c30cb refactor(server): library service (#8050)
* refactor: library service

* chore: open api

* fix: checks
2024-03-18 16:59:53 -04:00
Alex
761e7fdd2d feat(server): memory includes partners assets on timeline (#7993)
* feat(server): memory includes partners assets on timeline

* remove unsued code, generate sql

* fix test

* add test
2024-03-18 14:46:52 -05:00
aviv926
cd8a124b25 feat(docs): User management new options (#8029)
* User Management

* Add photo
2024-03-18 09:00:11 -05:00
Daniel Dietzler
148428a564 feat(server): use nestjs events to validate config (#7986)
* use events for config validation

* chore: better types

* add unit tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-17 20:16:02 +01:00
Tyler Brockett
14da671bf9 fix(docs): add microservices to IMMICH_CONFIG_FILE env var documentation (#8017) 2024-03-17 13:41:55 -05:00
Davide
e8f0f82db0 feat(ml): add cache_dir option to OpenVINO EP (#8018)
* add cache_dir option to OpenVINO EP

* update provider options test to include cache_dir

* use forward slash instead of string concatenation

* fix cache_dir placement in provider options assertion
2024-03-17 13:48:59 -04:00
Alex
b8278404a0 chore(docs): update readme (#8021) 2024-03-17 10:46:42 -05:00
renovate[bot]
45671b0b8b chore(deps): update typescript-eslint monorepo to v7.2.0 (#8008)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-16 15:34:49 -05:00
Michel Heusschen
321525ead5 fix(web): updating asset store after remove (#7999) 2024-03-16 09:22:15 -04:00
DeclanE
1d24e20d22 feat(doc) Updated feature-panel.png with the new logo (#7995)
* Updated feature-panel-withnewlogo

* Updated with new Feature Panel image from docs.
2024-03-16 00:59:58 -05:00
Mert
3a045b33ca chore(deps): update onnxruntime-openvino (#7854) 2024-03-16 00:04:45 -04:00
Mert
a9438a9c2d fix(server): prevent feedback loop during library scan (#7944)
* prevent feedback loop

* add nesting

* made nesting less ugly

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-15 22:01:58 +00:00
renovate[bot]
eea0a98090 chore(deps): update machine-learning (#7890) 2024-03-15 17:19:28 -04:00
Alex
a491240aeb fix(doc): logo size on small screen (#7992) 2024-03-15 15:59:25 -05:00
renovate[bot]
8c24a994e1 fix(deps): update exiftool (#7879)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-15 15:40:32 -05:00
sevtdy
64f53e674c feat(web): add millisecond options to storage template settings (#7942)
* feat(web): add millisecond options storage template settings

* fix(web): fix test

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-15 20:13:08 +00:00
Aegeontis
54fdf33fd9 Make mobile app a "media management app" to get rid of android prompt (#7851)
Make mobile app a "media management app"
2024-03-15 15:11:28 -05:00
Michel Heusschen
997e9c5877 refactor(web): list navigation with keyboard (#7987) 2024-03-15 15:00:53 -05:00
Michel Heusschen
e21c586cc5 fix(web): logo invisible on share page (#7990) 2024-03-15 14:53:58 -05:00
renovate[bot]
abedfd1015 chore(deps): pin prom/prometheus docker tag to bc1794e (#7874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-15 12:57:36 -04:00
Jason Rasmussen
2a0e1c0d3c refactor: global validation pipe (#7985)
* refactor: global validation pipe

* chore: formatting
2024-03-15 12:51:08 -04:00
Michel Heusschen
5a6b71dda3 perf(web): batch asset store changes (#7974)
* perf(web): batch asset store changes

* update external calls to assetstore
2024-03-15 12:11:29 -04:00
Michel Heusschen
a3dfa27a53 chore(web): remove unused AssetSelectionViewer (#7981) 2024-03-15 12:04:54 -04:00
Michel Heusschen
cfb14ca80b fix(web): minor album card issues (#7975)
* fix(web): minor album card issues

* fix album grid gap
2024-03-15 12:03:54 -04:00
DeclanE
0f79c4ff46 feat(server): added support for SVG files (#7960)
* Added SVG Support

* Removed comment

* Server Test fixes

* Sorted the mimetypes

* Reverted mimetypes.assettype

* Lint

* fix test

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-15 16:02:31 +00:00
Michel Heusschen
029dd99ae0 fix(web): improve focus and shortcuts (#7983)
* fix(web): improve focus and shortcuts

* fix shiftKeyIsDown
2024-03-15 12:01:35 -04:00
Daniel Dietzler
a46366d336 chore(server): introduce proper job status (#7932)
* introduce proper job status

* fix condition for onDone jobs

* fix tests
2024-03-15 09:16:54 -04:00
Jason Rasmussen
07e8f79563 refactor: library e2e (#7969) 2024-03-15 09:16:08 -04:00
Alex
9ed7de50e7 feat(doc): new logo and screenshots (#7961)
* feat(doc): new logo and screenshots

* remove unused logo

* logo with text

* feature panel

* remove logo explaination
2024-03-14 22:15:20 -05:00
Michel Heusschen
eed8e6b67a fix(web): keyboard shortcut handling (#7946)
* fix(web): keyboard shortcut handling

* drop executeShortcuts in favor of action

* fix merge

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-14 23:16:55 +00:00
Jason Rasmussen
12fb90c232 refactor(cli): simplify (#7962)
* refactor(cli): yup

* fix missing return for authenticate

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-03-14 19:09:28 -04:00
Sam Holton
cda45f9bfb feat(web): randomize password on reest (#7943)
* feat(web): randomize password on reest

* prettier

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-14 21:33:39 +00:00
Sam Holton
ab4b8eca15 feat(web): preload assets in photo-viewer (#7920)
* feat(web): preload assets in photo-viewer

* PR feedback

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-14 16:12:32 -05:00
martyfuhry
582cdcab82 feat(mobile): Remote thumbnails and images use an on-disk image cache (#7929)
* Fixes remote full / thumbnail provider

* Adds image cache manager to both remote image providers

format

format

Fix typo in equals

remove unused import

renames image loader

* Adds height and width to the image cache for thumbs

format

* Uses a separate remote and thumbnail cache

format

* Fixes key name

* Changes uri to string, fixes comment

* Chunk events are optional and remote thumbnails don't report chunk events

* better exception handling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-14 15:29:09 -05:00
Jason Rasmussen
5a589babcb chore(cli): use lockfile v3 (#7958) 2024-03-14 16:19:07 -04:00
Jason Rasmussen
0b8edb7671 chore: remove unused dep (#7957) 2024-03-14 16:18:55 -04:00
Ben
9bd79ffc00 feat(mobile): Adds file upload progress stats (#7760)
* feat(mobile): Adds file upload progress stats: current upload file size uploaded, current file size and formatted bytes per second upload speed. Closes #7379

* chore(mobile): Fix stan issues

* chore(mobile): Remove non-'en-US' translations, as I saw on another PR review (just looking around) that localisation is done via Localizely and this was the instruction (to only provide the en-US localisation).

* fix(mobile): Provide boundary checks to ensure overflow issues are accounted for on erroneous upload speed calculation, sometimes the numbers received back from the upload handler can be a bit wild.

* fix(mobile): Some heuristic bug fixing. Whilst thinking what could trigger overflow issues or 'zero' readouts, left over values from the previous file may do that. So adding the last upload sent bytes to the values to be reset may help! The time isn't necessary, as the period/cycle is inconsequential in this circumstance, well it should be anyway.

* fix(mobile): Actually, in combination to the last commit, some more heuristic bug fixing. I was thinking it would be advantageous not to reset the update time, as it would trigger a quicker first upload speed calculation. However, I realised that could also cause the calculation to be incorrect on the first cycle as the period wouldn't align. Not really sure if it would be a big deal, but I'm taking wild guesses in the dark here. Again, some purely heuristic debugging as I can't re-produce the underlying issue. This is mainly just ensuring that the state is fully reset and is a known state at the beginning of each file as a common strategy to reduce issues.

* refactor(mobile): Move the UI for the file progress to underneath the progress bar, it makes more sense there than in the file information table which contains only static information pertaining to the file itself. Switching to a monospace font to keep the UI from jumping around as the numbers change.

* refactor(mobile): In order to have the UI always present an 'active' upload speed (as per the discussion on PR #7760), this stores the 'upload speeds' (capped at the latest 10) in a list and calculates the current upload speed as the average over them. This way the UI can always display a 'constant' upload speed during uploading, instead of starting a fresh when each file starts uploading. Limiting it to the 10 latest keeps the average somewhat recent and ensures some level of sensible memory allocation.
2024-03-14 15:15:22 -05:00
martin
c04dfdf38b refactor(web): albums list (1) (#7660)
* refactor: albums list

* fix: rename filename

* chore: fix merge

* pr feedback

* chore: fix merge

* pr feedback

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-14 14:05:57 -05:00
Jason Rasmussen
2080aeee4d chore(cli): clean up files (#7955) 2024-03-14 13:09:27 -04:00
martin
31f7e1aca3 feat(server, web): album orders (#7819)
* feat: album orders

* fix: tests

* pr feedback

* pr feedback

* pr feedback

* fix: tests

* add comment

* pr feedback

* fix: rendering issue

* wording

* fix: order value doesn't change

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-14 11:45:03 -05:00
bo0tzz
1c4637cb43 chore(ci): Clean up docker buildx workaround (#7949)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-03-14 10:16:33 -05:00
aviv926
559565d6a7 chore(web): Sharing -> Partner Sharing (#7952) 2024-03-14 10:16:20 -05:00
Jonathan Jogenfors
ba38713fbc fix(server): queue library asset refresh in batches (#7914)
* add debug logs

* scan assets in batches

* Cleanup

* don't normalize

* Removing extra log

* remove unneeded code

* change log levels
2024-03-14 14:43:05 +01:00
thielepaul
428b7b0c4e fix(mobile): make elements scrollable to avoid overflow in landscale (#7933)
fix(mobile): make elements scrollable to avoid overflow in landscape
2024-03-14 12:28:18 +00:00
dependabot[bot]
2f78bff97c chore(deps): bump docker/setup-buildx-action from 3.1.0 to 3.2.0 (#7948)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 07:55:55 -04:00
dependabot[bot]
a85b147b3a chore(deps): bump docker/build-push-action from 5.2.0 to 5.3.0 (#7947)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 07:55:46 -04:00
Mert
ee8e8a0c0f perf(server): optimize getByIds query (#7918)
* clean up usage

* i'm not updating all these tests

* update tests

* add indices

* add indices to entities

remove index from person entity

add to face entity

fix

* simplify query

* update sql

* missing await

* remove synchronize false
2024-03-14 01:58:09 -04:00
Mert
d67cc00e4e feat(server): lower library scan memory usage (#7939)
* use trie

* update tests

* formatting

* pr feedback

* linting
2024-03-14 01:52:30 -04:00
Alex
63d252b603 fix(web): FullScreenContainer logo (#7938) 2024-03-14 02:00:22 +00:00
mmomjian
bd88a241ff docs: Update backup script example (#7734)
* Update backup script example

* Update template-backup-script.md

* Update template-backup-script.md

* Update template-backup-script.md

* Update template-backup-script.md

* Update template-backup-script.md

* Update template-backup-script.md
2024-03-13 13:08:01 -05:00
Alex
76432341ed feat(mobile): update logo (#7919)
* App Icon

* In App Icon

* runner

* ios icon

* ios is done

* splash

* Notification Icon

* Immich text

* Immich text

* actually update andoir icon

* adaptive icon

* adaptive icon
2024-03-13 12:14:59 -05:00
Alex
ff2f4f8ed8 feat(web): update logo (#7798)
* feat(web): update logo

* favicon

* no text logo on small screen

* correct break point
2024-03-13 12:14:45 -05:00
Kokul Shanmugharajah
29c3a826c5 feat(server): Update XMP sidecar search to look for both photo.ext.xmp and photo.xmp (#7813)
* Add support for photo.xmp sidecars

* format

* Add comment

* Proper handling

* Handle mocking better

* Address PR feedback

* Add test coverage if both xmp files exist

* Update server/src/domain/metadata/metadata.service.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* Update server/src/domain/metadata/metadata.service.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* Update server/src/domain/metadata/metadata.service.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-13 12:14:26 -05:00
Andrew Rowson
37e5b91dc2 fix(server): ml gunicorn listen on ipv4 and ipv6 by default (#7930) 2024-03-13 12:13:56 -05:00
renovate[bot]
d67a6b7293 fix(deps): update server (#7898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 12:54:46 -04:00
Daniel Dietzler
054df27929 fix(web): url state of nested accordions (#7928)
* fix url state of nested accordions

* Use existing method to update state

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-03-13 11:15:51 -04:00
DeclanE
2b1def4e7c fix(blog/docs): Fix Milestone linking for "multi select" and "View Exif" fix(docs): Update "zoodyy" to "yfrey" (#7926)
Fix Milestone linking for "multi select" and "View Exif" on Blog; update "zoodyy" to "yfrey" in Docs
2024-03-13 09:41:15 -05:00
martyfuhry
08d64f1c25 chore(mobile): Removes analysis options for openapi directory (#7309)
* Removes analysis options for openapi directory

* Updates the generate open api script to remove the analysis_options.yaml file from the mobile/openapi directory
2024-03-13 09:27:52 -04:00
DeclanE
a7efd66ae9 fix(web): Enhance Notification Handling for Duplicate Assets (#7858)
* Duplicate reporting in upload panel file-uploader.ts

* Update upload-panel.svelte

* Reimplement Error reporting upload-panel.svelte

* Update upload-panel.svelte

* Run Prettier again

* Update web/src/lib/components/shared-components/upload-panel.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Ran Prettier

* Update web/src/lib/components/shared-components/upload-panel.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Run Prettier final

* Update web/src/lib/components/shared-components/upload-panel.svelte

Removed odd "``;"

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-13 01:37:56 +00:00
natedawg
92804fe4b2 fix(web): Remove excess spacing on #asset-grid and search bar (#7910)
* fix(web): Remove excess left-margin on #asset-grid

* fix(web): Remove excess left-padding on search bar

---------

Co-authored-by: natedawg <nate@natedawg.net>
2024-03-12 21:03:37 -04:00
Michel Heusschen
b07ed3f615 fix(web): correctly use button and link elements (#7907) 2024-03-12 15:30:19 -04:00
renovate[bot]
67b209808f fix(deps): update web (#7872)
* fix(deps): update web

* update types to follow map types

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-03-12 15:28:29 -04:00
Michel Heusschen
82aabc63f5 fix(web): prevent combobox options from disappearing (#7733) 2024-03-12 14:21:42 -05:00
Jason Rasmussen
17d7d9364f chore: publish sdk on release (#7895)
* chore: publish sdk on release

* fix: runtime dep

* chore: sync versions

* chore: update readme

* fix: use Node16 module resolution
2024-03-12 12:01:12 -04:00
ztz
779f5d9b3d feat(web): dark color-scheme css for dark mode (#7812)
* feat(web): dark color-scheme css for dark mode

* use dark classes instead of adding data property

* fix code format

* fix typo

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 15:48:23 +00:00
renovate[bot]
83198ef595 chore(deps): update grafana/grafana docker tag to v10.4.0 (#7875)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-12 10:32:19 -05:00
DeclanE
412c9bc76d feat(web): Implemented device last seen date and time with user locale support (#7863)
* Implemented last seen date and time with user locale support

* Run Prettier

* Prettier and Linter

* Updated last seen to be in line with suggestions

* Reworked datestamp
2024-03-12 10:31:46 -05:00
bo0tzz
72f9295490 feat(server): YAML config file support (#7894)
* test(server): Load config from yaml

* docs: YAML config support

* feat(server): YAML config file support

* fix format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 16:29:49 +01:00
renovate[bot]
1683bb75e1 fix(deps): update server (#7880) 2024-03-12 11:28:45 -04:00
Ben Basten
727a8cd715 feat(mobile): add labels to app bar buttons (#7865) 2024-03-12 10:12:11 -05:00
shenlong
7489db9481 refactor(mobile): app settings (#7749)
* refactor(mobile): app settings

* Font size

* refactor(mobile): backup settings ui (#7771)

* refactor: SettingsButtonListTile

* refactor: Backup settings to App settings

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

* fix: invalidate appsettingsprovider on timeline setting change

* styling

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 14:56:08 +00:00
dependabot[bot]
4733de25af chore(deps): bump softprops/action-gh-release from 1 to 2 (#7844)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 09:31:09 -04:00
Michel Heusschen
c24b6cf617 refactor(web): sidebar menu links (#7891) 2024-03-12 09:11:16 -04:00
bo0tzz
6bfa1fceec chore(cli): Version 2.1.0 (#7893) 2024-03-12 12:11:40 +00:00
Michel Heusschen
41504b9a2c fix(web): asset viewer navigation buttons (#7888) 2024-03-12 08:09:11 -04:00
renovate[bot]
3cd232f571 chore(deps): update base-image to v20240312 (major) (#7892)
chore(deps): update base-image to v20240312

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-12 08:07:56 -04:00
Michel Heusschen
1b8844cb4a fix(web): asset upload progress (#7882) 2024-03-12 07:19:38 -04:00
Mert
a097e903c9 feat(server): OpenTelemetry integration (#7356)
* wip

* span class decorator

fix typing

* improvements

* noisy postgres logs

formatting

* add source

* strict string comparison

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

* remove debug code

* execution time histogram

* remove prometheus stuff

remove prometheus data

* disable by default

disable nestjs-otel stuff by default

update imports

* re-add postgres instrumentation

formatting

formatting

* refactor: execution time histogram

* decorator alias

* formatting

* keep original method order in filesystem repo

* linting

* enable otel sdk in e2e

* actually enable otel sdk in e2e

* share exclude paths

* formatting

* fix rebase

* more buckets

* add example setup

* add envs

fix

actual fix

* linting

* update comments

* update docker env

* use more specific env

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-12 05:19:12 +00:00
Slavik
def82a7354 docs: config-file.md update config to current (v1.98) state (#7808)
* docs: config-file.md update config to current (v1.98) state

* fix format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 03:46:42 +00:00
DeclanE
a94e45260e fix: Hide play bar when there's only one image in memory (#7764)
* fix: Hide play bar when there's only one image in memory

This commit introduces a fixto hide the play bar at the top of the memory viewer when there's only one image in the memory. Previously, the play bar was displayed regardless of the number of images, leading to unnecessary UI elements for single-image memories.

* Update web/src/lib/components/memory-page/memory-viewer.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 03:36:34 +00:00
Dhrumil Shah
bbed14a9ff feat(server): Add OAuth auto-redirect enable/disable CLI commands (#7841)
* Rebase

* format fix

* docs format

* Change to enable/disable oauth master

* spell change for oauth

* Fix filename
2024-03-11 23:32:00 -04:00
Mert
d09980f646 chore(cli): clarify use of concurrency option (#7840)
* add <number>

* add e2e tests

* add test with number
2024-03-11 23:30:13 -04:00
Slavik
e732cb68a7 docs: backup-and-restore.md: fix broken link (#7806)
backup-and-restore.md: fix broken link
2024-03-11 22:27:31 -05:00
renovate[bot]
4b4ebe4f80 fix(deps): update machine-learning (#7871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 23:26:43 -04:00
Nicholas Flamy
7b5ff397b3 Fix trash permanent delete dialog (#7805)
* Fix Outdated Info for Deletion

* Undo Flutter Updating Dependencies
2024-03-11 22:25:55 -05:00
renovate[bot]
4b6206b32d chore(deps): update server (#7869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 23:22:55 -04:00
renovate[bot]
faab3aab0a fix(deps): update docs (#7870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 23:21:29 -04:00
martyfuhry
a1130b3e27 fix(mobile): Fixes local thumbnail image provider key (#7766)
* Fixes large and small image cache

* Fixes local thumb provider key

format

* format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-12 03:04:52 +00:00
martyfuhry
de28f83d0d fix(mobile): Fixes immersive mode not ending for memory lane (#7767)
Fixes immersive mode not ending for memory lane
2024-03-11 22:02:28 -05:00
Michel Heusschen
b7e5407822 fix(web): small fixes for empty placeholder (#7859) 2024-03-11 21:18:47 -04:00
renovate[bot]
4023c665cc chore(deps): update dependency @types/node to v20.11.25 (#7860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 21:17:09 -04:00
renovate[bot]
7aa75d5643 chore(deps): update dependency typescript to v5.4.2 (#7861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 21:16:42 -04:00
renovate[bot]
cfece31649 chore(deps): update @immich/cli (#7866)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 21:16:22 -04:00
renovate[bot]
a326f7c833 chore(deps): update open-api (#7867)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 21:15:57 -04:00
Ben McCann
078da36f20 fix(server): serve static directory only if it exists (#7857)
* fix(server): serve static directory only if it exists

* update

* refactor: web root

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-11 13:06:04 -04:00
Tejpal Sahota
6c8fad4cac docs: Update external-library.md (#7850)
Although it is written clearly directly below, showing an example of what to change for both containers makes it very clear for people who just skim the code sections.
2024-03-11 17:02:55 +00:00
markeeisner
8c3ff65402 docs: Add guide for album sync python script (#7736)
* Add guide for album sync python script

* Add newline for formatting test

* Run prettier

* fix hardcoded url and extension

* brevity

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* more brevity with copy and paste facepalm

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* grammar fix

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-03-11 11:55:21 -05:00
Sam Holton
b33cb5fe3f feat(web): add preference for thumbnail playback on hover (#7831)
* feat(web): add preference for thumbnail playback on hover

* pr feedback, add user settings behavior setting

* user settings consistency

* rename appearance to app settings

* collapse single trash setting into app settings
2024-03-11 12:45:01 -04:00
Jason Rasmussen
84453d2e34 fix: immich logo links (#7856) 2024-03-11 11:25:05 -05:00
Alex
d069ad5be4 Update and rename Immich-logo-inline-dark.svg to immich-logo-inline-dark.svg 2024-03-11 11:23:03 -05:00
Alex
f1fa88a67e Rename Immich-logo-inline-light.png to immich-logo-inline-light.png 2024-03-11 11:22:52 -05:00
Alex
6aa4f2e67e Update and rename Immich-logo-inline-light.svg to immich-logo-inline-light.svg 2024-03-11 11:22:41 -05:00
Alex
053e8509a5 Rename Immich-logo-stacked-dark.png to immich-logo-stacked-dark.png 2024-03-11 11:22:25 -05:00
Alex
d865e98e6f Update and rename Immich-logo-stacked-dark.svg to immich-logo-stacked-dark.svg 2024-03-11 11:22:10 -05:00
Alex
70d196dbdb Rename Immich-logo-stacked-light.png to immich-logo-stacked-light.png 2024-03-11 11:21:41 -05:00
Alex
ea2755a559 Update and rename Immich-logo-stacked-light.svg to immich-logo-stacked-light.svg 2024-03-11 11:21:24 -05:00
Alex
932dd3c885 Rename Immich-logo-inline-dark.png to immich-logo-inline-dark.png 2024-03-11 11:21:05 -05:00
Alex
2de9a92fba chore: update readme with new logo and add design materials (#7852)
* chore: readme logo

* design material
2024-03-11 11:16:57 -05:00
Jason Rasmussen
a41ffb5131 feat(web): empty external library placeholder (#7848) 2024-03-11 10:29:21 -05:00
Alex
ae34e4f59f chore: post release tasks 2024-03-11 09:48:25 -05:00
Mert
8dc62bd29a fix(server): face search results not always sorted (#7839)
* order by

* update sql
2024-03-11 09:19:20 -05:00
Alex The Bot
4027cba4eb Version v1.98.2 2024-03-11 14:17:12 +00:00
Mert
5bd597f14b fix(server): external library sync not working for large libraries (#7759) 2024-03-10 22:30:57 -04:00
Ghazi Tounsi
49d9051879 fix(mobile): archive desc sorting (#7822)
desc sort
2024-03-10 21:15:34 -05:00
DeclanE
e5978981f3 Fix: Disable 'As profile picture' option for videos in context menu a… (#7830)
* Fix: Disable 'As profile picture' option for videos in context menu asset-viewer-nav-bar.svelte

This commit modifies the context menu behavior to disable the "As profile picture" option when interacting with video assets. Previously, the option was available for all asset types, including videos, which could lead to confusion when this displayed an error.

With this change, the "As profile picture" option is conditionally rendered based on the asset type. If the asset is a video, the option is not displayed in the context menu.

This adjustment enhances the web experience by preventing users from attempting to set a video as their profile picture, which is not supported by the system.

Fixes: #7724

* Switched to check if photo instead of video
2024-03-10 18:32:27 -04:00
Sam Holton
d257cdcbbf feat(web): add sticky date headers for asset-date-group (#7824)
* feat(web): add sticky date headers for asset-date-group

* use existing classes
2024-03-10 15:32:05 -04:00
Daniel Dietzler
60c521101a chore(server): type checks for e2e (#7800)
type checks for e2e
2024-03-09 23:18:25 +00:00
Daniel Dietzler
11e7533a4d chore(server): user e2e: wait for user delete event (#7799)
* wait for user delete event

* fix update event names

* add test for hard deletion of user
2024-03-10 00:10:24 +01:00
Daniel Dietzler
ec8fb0be83 chore(server): remove unused storage repository variable from microservices app service (#7797)
remove unused storage repository from microservices app service
2024-03-09 16:06:31 -05:00
Alex
a6cd4b8427 chore(server): openapi (#7794)
* chore(server): openapi

* openapi
2024-03-09 14:01:52 -06:00
renovate[bot]
3bdd2612ce chore(deps): update typescript-eslint monorepo to v7.1.1 (#7790)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-09 13:33:11 -05:00
Jason Rasmussen
30b0b2474e refactor: asset e2e (#7769) 2024-03-09 12:51:58 -05:00
martin
8eb9dad989 fix: update e2e (#7710)
* fix: update e2e

* update package.json

* fix: version
2024-03-08 23:16:36 -05:00
Fynn Petersen-Frey
3f1d37e556 feat(server): hardware HDR tonemapping for RKMPP (#7655)
* feat(server): hardware HDR tonemapping for RKMPP

* review feedback
2024-03-08 21:17:26 -05:00
Ben McCann
ba55e867e0 perf: precompress and cache assets (#7757)
* perf: precompress and cache assets

* fix cache header

* use startswith

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-03-08 21:15:38 -05:00
Alex
4fdb0835c9 chore: post release tasks 2024-03-08 19:08:33 -06:00
Alex The Bot
430561d692 Version v1.98.1 2024-03-08 23:44:13 +00:00
Alex
e8fb529026 fix(server): getAllAssets doesn't return all assets (#7752)
* fix(server): getAllAssets doesn't return all assets

* try reverting

* fix: archive and remove unused method

* update sql

* remove unused code

* linting
2024-03-08 17:16:32 -06:00
Sam Holton
7a4ae7d142 feat(server,web): add force delete to immediately remove user (#7681)
* feat(server,web): add force delete to immediately remove user

* update wording on force delete confirmation

* fix force delete css

* PR feedback

* cleanup user service delete for force

* adding user status column

* some cleanup and tests

* more test fixes

* run npm run sql:generate

* chore: cleanup and websocket

* chore: linting

* userRepository.restore

* removed bad color class from delete-confirm-dialoge

* additional confirmation for user force delete

* shorten confirmation message

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-08 17:49:39 -05:00
Andrew Roberts
9cb0a1ffbf fix(web): modal password reset modal in dark mode (#7748)
* Fixed dark mode password reset success

* Fixed prettier issue
2024-03-08 14:05:15 -05:00
Michel Heusschen
fa32c6660c fix(web): album state after removing assets (#7745)
* fix(web): album state after removing assets

* refresh album on remove + simplify AlbumSummary
2024-03-08 14:03:37 -05:00
DeclanE
fe8c6b17a6 chore: rename "Library" to "External Library" in system settings (#7744)
* Change "Library" > "External Library" under system settings

This is intended to assist with any confusion regarding standard libraries

* Changed key from "library" to "external-library"

* Updated "Encode Clip" to "Smart Search"
2024-03-08 16:49:44 +00:00
Jason Rasmussen
89f6190fb0 refactor: search e2e (#7732) 2024-03-08 11:20:54 -05:00
Michel Heusschen
ffdd504008 refactor(web): admin and user signup forms (#7739) 2024-03-08 08:45:41 -05:00
dependabot[bot]
46597aac97 chore(deps): bump docker/build-push-action from 5.1.0 to 5.2.0 (#7737)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 08:41:39 -05:00
mmomjian
9b27a09131 docs: Update DB queries (#7730) 2024-03-07 23:28:51 -05:00
Jason Rasmussen
a50f125dd1 refactor: api validators (boolean and date) (#7709)
* refactor: api validators (boolean and date)

* chore: open api

* revert: time bucket change
2024-03-07 22:59:02 -05:00
Alex
753842745d Localizely: Translations update (#7715)
chore(mobile): translation update
2024-03-07 20:56:05 -06:00
martyfuhry
21caa06fa2 fix(mobile): Fixes large and small image cache (#7726)
Fixes large and small image cache
2024-03-07 20:55:50 -06:00
aviv926
7a7475ed67 docs: Update External Libraries Guide (#7723) 2024-03-07 18:49:30 -05:00
Sam Holton
dbb6a8dc2a fix(server): remove shared links during user delete (#7696)
* fix(server): remove shared links during user delete

* add delete cascade for shared links
2024-03-07 17:21:23 -05:00
Jonathan Jogenfors
a5a27594b8 docs: admin-only library settings (#7716)
* document admin-only library settings

* renew library guide
2024-03-07 21:27:02 +00:00
Jason Rasmussen
661409bac7 feat(server): create a person with optional values (#7706)
* feat: create person dto

* chore: open api

* fix: e2e

* fix: web usage
2024-03-07 15:34:57 -05:00
Jonathan Jogenfors
f1a8e385e9 deps(server): CVE-2024-28176 (#7717)
bumpety bump
2024-03-07 15:34:10 -05:00
renovate[bot]
a623556762 chore(deps): update dependency @playwright/test to v1.42.1 (#7684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-07 15:31:45 -05:00
Alex The Bot
7dc5e0cc4f Version v1.98.0 2024-03-07 19:22:14 +00:00
Alex Tran
ba5d5256b1 Revert "Version v1.98.0"
This reverts commit 9b1a379fa6.
2024-03-07 12:04:54 -06:00
Alex Tran
307ffc990d fix(server): admin access to edit library 2024-03-07 12:03:21 -06:00
Alex The Bot
9b1a379fa6 Version v1.98.0 2024-03-07 17:40:40 +00:00
Jonathan Jogenfors
4cb0f37918 chore(server): Move library watcher to microservices (#7533)
* move watcher init to micro

* document watcher recovery

* chore: fix lint

* add try lock

* use global library watch lock

* fix: ensure lock stays on

* fix: mocks

* unit test for library watch lock

* move statement to correct test

* fix: correct return type of try lock

* fix: tests

* add library teardown

* add chokidar error handler

* make event strings an enum

* wait for event refactor

* refactor event type mocks

* expect correct error

* don't release lock in teardown

* chore: lint

* use enum

* fix mock

* fix lint

* fix watcher await

* remove await

* simplify typing

* remove async

* Revert "remove async"

This reverts commit 84ab5abac4.

* can now change watch settings at runtime

* fix lint

* only watch libraries if enabled

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-07 11:36:53 -06:00
Alex
3278dcbcbe fix(web): save filename search in search filter box (#7704) 2024-03-07 10:16:47 -06:00
Jason Rasmussen
b733a29430 refactor: e2e (#7703)
* refactor: e2e

* fix: submodule check

* chore: extend startup timeout
2024-03-07 10:14:36 -05:00
Michel Heusschen
2dcd0e516f fix(server): add extension to filename migration (#7697) 2024-03-07 09:33:56 -05:00
Alex
e823b39579 fix(server): access face count when the value is undefined (#7694) 2024-03-06 23:21:10 -05:00
Alex
cd058fdafa chore(mobile,web): use originalFilename (#7692)
* chore(mobile,web): use originalFilename

* web

* remove unused code
2024-03-06 23:20:04 -05:00
Alex
1eea547aa2 chore(server): search filename using originalFileName (#7691) 2024-03-06 22:36:08 -05:00
martyfuhry
4323d18387 fix(mobile): Refactors exif bottom sheet to use widgets and fixes slow sliding up exif bottom sheet (#7671)
* Refactors exif bottom sheet to use widgets and fixes slow sliding up experience

format

* Refactors exif bottom sheet to use widgets and fixes slow sliding up experience

format

* Fixes people

* removes wrong exif bottom sheet

format

format

* Moved more widgets out of exit bottom sheet

format

* small styling

---------

Co-authored-by: Marty Fuhry <marty@fuhry.farm>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-07 03:27:33 +00:00
Mert
1ec5d612fa perf(server): use queries to refresh library assets (#7685)
* use queries instead of js

* missing await

* add mock methods

* fix test

* update sql

* linting
2024-03-06 21:23:10 -06:00
renovate[bot]
fcb990665c chore(deps): update base-image to v20240305 (major) (#7682)
chore(deps): update base-image to v20240305

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-06 22:22:55 -05:00
Mert
ffaa08e7ea chore(server): lower default max recognition distance for facial recognition (#7689)
lower default to 0.5
2024-03-06 22:20:38 -05:00
Michel Heusschen
5dd11ca17a fix(web): consistent modal escape behavior (#7677)
* fix(web): consistent modal escape behavior

* make onClose optional
2024-03-06 22:18:53 -05:00
Alex
3da2b05428 chore(server): save original file name with extension (#7679)
* chore(server): save original file name with extension

* extract extension

* update e2e test

* update e2e test

* download archive

* fix download archive appending name

* pr feedback

* remove unused code

* test

* unit test

* remove unused code

* migration

* noops

* pr feedback

* Update server/src/domain/download/download.service.ts

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2024-03-07 02:34:55 +00:00
Mert
f88343019d perf(web): optimize response sizes for initial page load (#7594) 2024-03-06 12:05:53 -05:00
Emanuel Bennici
ba12d92af3 feat(mobile): Add people list to exit bottom sheet (#6717)
* feat(mobile): Define constants as 'const'

* feat(mobile): Add people list to asset bottom sheet

Add a list of people per asset in the exif bottom sheet, like on the
web.

Currently the list of people is loaded by making a request each time to
the server. This is the MVP approach.
In the future, the people information can be synced like we're doing
with the assets.

* styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-06 11:15:54 -05:00
Michel Heusschen
52a52f9f40 fix(web): date input on chrome (#7669) 2024-03-06 05:47:15 -06:00
Sam Holton
9125999d1a feat(server,web): make user deletion delay configurable (#7663)
* feat(server,web): make user deletion delay configurable

* alphabetical order

* add min for user.deleteDelay in SettingInputField

* make config.user.deleteDelay SettingInputField min consistent format

* fix e2e test

* update description on user delete delay
2024-03-05 23:45:40 -06:00
Alex
52dfe5fc92 fix(server): stack info in asset response for mobile (#7346)
* fix(server): stack info in asset response for mobile

* fix(server): getAllAssets - do not filter by stack ID

* tet(server): GET /assets stack e2e

* chore(server): fix checks

* stack asset height

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-03-06 05:44:56 +00:00
renovate[bot]
4c0bb2308c fix(deps): update machine-learning (#7634)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-06 00:24:33 -05:00
martyfuhry
4ef4cc8016 refactor(mobile): Refactor video player page and gallery bottom app bar (#7625)
* Fixes double video auto initialize issue and placeholder for video controller

* WIP unravel stack index

* Refactors video player controller

format

fixing video

format

Working

format

* Fixes hide on pause

* Got hiding when tapped working

* Hides controls when video starts and fixes placeholder for memory card

Remove prints

* Fixes show controls with microtask

* fix LivePhotos not playing

* removes unused function callbacks and moves wakelock

* Update motion video

* Fixing motion photo playing

* Renames to isPlayingVideo

* Fixes playing video on change

* pause on dispose

* fixing issues with sync between controls

* Adds gallery app bar

* Switches to memoized

* Fixes pause

* Revert "Switches to memoized"

This reverts commit 234e6741de.

* uses stateful widget

* Fixes double video play by using provider and new chewie video player

wip

format

Fixes motion photos

format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-05 21:42:22 -06:00
Alex
2f53f6a62c feat(web): search by filename (#7624)
* Toggle to search by filename

* wild card search and pr feedback

* Pr feedback

* naming

* placeholder

* Create index

* pr feedback

* pr feedback

* Update web/src/lib/components/shared-components/search-bar/search-text-section.svelte

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* pr feedback

* pr feedback

* pr feedback

* pr feedback

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-05 17:08:35 -06:00
Jonathan Jogenfors
ae46188753 chore(deps): bump sanitize-html, fixing CVE-2024-21501 (#7662)
* bump sanitize-html

* bump better
2024-03-05 17:35:52 -05:00
renovate[bot]
51f6b8f23b chore(deps): update dependency @types/cookie-parser to v1.4.7 (#7661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 17:31:26 -05:00
Jonathan Jogenfors
5d377e5b0f chore(server): eslint await-thenable (#7545)
* await-thenable

* fix library watchers

* moar eslint

* fix test

* fix typo

* try to remove check void return

* fix checksVoidReturn

* move to domain utils

* remove eslint ignores

* chore: cleanup types

* chore: use logger

* fix: e2e

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-05 17:23:06 -05:00
Jason Rasmussen
972d5a3411 feat(server): deterministic download order (#7658) 2024-03-05 15:04:43 -06:00
renovate[bot]
8df63b7c94 fix(deps): update dependency archiver to v7 (#7622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 12:26:54 -05:00
renovate[bot]
ee3b2a0cf5 chore(deps): update server (#7652)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 12:16:41 -05:00
Jason Rasmussen
8988d3f886 chore: download e2e (#7651) 2024-03-05 12:07:46 -05:00
bo0tzz
4dc0fc45e7 feat(cli): Use well-known endpoint to resolve API (#6733)
* feat(cli): use immich-well-known

* chore: e2e test

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-05 12:06:24 -05:00
renovate[bot]
1c93ef1916 chore(deps): update dependency svelte-check to v3.6.6 (#7650)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 17:01:12 +00:00
renovate[bot]
9bf1d87e35 chore(deps): update dependency @types/node to v20.11.24 (#7649)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 16:30:51 +00:00
renovate[bot]
31b823058d chore(deps): update dependency @types/node to v20.11.24 (#7645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 11:29:04 -05:00
Jason Rasmussen
9a2e0e8962 chore(cli): remove unused packages (#7648) 2024-03-05 16:18:53 +00:00
renovate[bot]
e0ae936496 chore(deps): update dependency @types/node to v20.11.24 (#7646)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 15:58:40 +00:00
Alex
0675389aae Revert "fix(web): prevent duplicate calls to time bucket endpoint" (#7644)
Revert "fix(web): prevent duplicate calls to time bucket endpoint (#7563)"

This reverts commit 8b02f18e99.
2024-03-05 09:44:33 -06:00
Michel Heusschen
facd0bc3a4 Revert "perf(web): optimize date groups" (#7638)
Revert "perf(web): optimize date groups (#7593)"

This reverts commit 762c4684f8.
2024-03-05 09:43:24 -06:00
renovate[bot]
967019d9e0 chore(deps): update dependency @types/node to v20.11.23 (#7641)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 07:57:22 -05:00
renovate[bot]
e5da735918 chore(deps): update @immich/cli (#7640)
chore(deps): update dependency @types/node to v20.11.23

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 07:57:03 -05:00
waclaw66
9b3f60ffde fix(web): prettify album download filename (#7637)
fix(server): pretify download filename
2024-03-05 07:56:12 -05:00
renovate[bot]
a5d19bc945 fix(deps): update server (#7635)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 03:48:00 +00:00
renovate[bot]
9995647d63 chore(deps): update dependency prettier-plugin-svelte to v3.2.2 (#7633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 22:43:55 -05:00
Nicholas Flamy
70881bc97f Update truenas.md with permission info. (#7606)
* Update truenas.md with permission info.

This is very important information about permissions on datasets used by immich.

* Update truenas.md

* Update truenas.md with proper formatting
2024-03-05 02:51:20 +00:00
renovate[bot]
dbf0ddf3a7 chore(deps): update @immich/cli (#7629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 21:36:53 -05:00
renovate[bot]
2e62e3a0ca chore(deps): update dependency @types/node to v20.11.22 (#7630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 21:36:01 -05:00
martin
6ab404597c fix(server): incorrect number of assets for a person (#7602)
* fix: incorrect number of assets

* fix: tests

* pr feedback

* fix: e2e test

* fix: e2e test

* fix: e2e test

* feat: more tests
2024-03-04 18:11:54 -05:00
renovate[bot]
5bc13c49a4 chore(deps): update dependency @types/node to v20.11.22 (#7610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 17:42:26 -05:00
martin
935ddf3fbd fix(server, web): prevent reload when liking an asset (#7589)
pr feedback
2024-03-04 17:41:10 -05:00
Sam Holton
87c3d886ff feat(web): use lib/utils/copyToClipboard for share link (#7603) 2024-03-04 17:39:58 -05:00
Robert Vollmer
de71d8e0a3 fix(server): regular version check (#7620)
`dt.diffNow()` equals `dt.diff(DateTime.now())`, so it returns a
negative number when `dt` is in the past (which it always is in this
case).

Therefore we could only get over the condition during startup (when
`this.releaseVersionCheckedAt` isn't set yet), effectively breaking
update notifications while the server is running.
2024-03-04 08:42:22 -06:00
Sam Holton
7ef202c8b2 feat(server, web): add checkbox to create user screen for shouldChang… (#7598)
feat(server, web): add checkbox to create user screen for shouldChangePassword
2024-03-03 23:40:03 -06:00
DawidPietrykowski
e8b001f62f feat: preloading of machine learning models (#7540) 2024-03-03 19:48:56 -05:00
Mert
762c4684f8 perf(web): optimize date groups (#7593)
* optimize date groups

* remove `.values()`

* remove console.log

* remove if condition

* remove console.log

* remove outdated comment

* revert dynamic import
2024-03-03 16:12:52 -06:00
Mert
2fa10a254c feat(web): improve alt text (#7596)
* alt text

* memory lane alt text

* revert sql generator change

* use getAltText

* oops

* handle large number of people in asset

* nit

* add aria-label to search button

* update api

* fixed tests

* fixed typing

* fixed spacing

* fix displaying null
2024-03-03 16:42:17 -05:00
martin
07c926bb12 fix: bump version pipeline (#7586)
* fix: bump version pipeline

* pr feedback
2024-03-03 15:17:21 -06:00
renovate[bot]
3d410ff7dc chore(deps): update dependency @playwright/test to v1.42.0 (#7601)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-03 15:16:03 -06:00
Sam Holton
2bb7b3e60f feat(web): add share link on asset-viewer (#7595)
* feat(web): add share link on asset-viewer

* PR feedback: move download to context, make share first button
2024-03-03 15:15:35 -06:00
Sam Holton
29a4389aac feat(web): show user quota on server stats page (#7591) 2024-03-03 15:47:00 -05:00
martin
8ce18b3403 feat(machine-learning): support cuda 12 (#7569)
* feat: support cuda12

* fix: group optional

* move to cuda 12

* pr feedback
2024-03-02 23:36:16 -05:00
renovate[bot]
fd3503e77d chore(deps): update dependency @types/pg to v8.11.2 (#7585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-02 18:08:41 -05:00
martin
ebe7a14c14 fix(server): prevent leaking isFavorite and isArchived info (#7580)
* fix: prevent leaking favorites info

* add e2e test

* fix: e2e test

* fix: isArchived

* fix: keep old version
2024-03-02 18:01:24 -05:00
Sam Holton
f03381a5b1 feat(server): allow oauth claim to set 0 for no quota (#7581)
* feat(server): allow oauth claim to set 0 for no quota

* PR feedback to remove extra objects from user.stub.ts
2024-03-02 14:18:56 -06:00
martin
8d44afe915 feat(web): ascending order for slideshow (#7502)
* feat: ascending order for slideshow

* feat: use dropdown

* rename

* fix: size

* pr feedback

* fix: hide text on small screen

* Wording

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-03-02 09:50:02 -06:00
martin
db455060f0 fix(web): show history search box only when needed (#7544)
show history search box only when needed
2024-03-02 09:38:34 -06:00
Ignacy Kajdan
b63b42d3d7 docs: fix the database name env variable (#7576) 2024-03-02 08:58:07 -05:00
Michel Heusschen
a4e6c43823 perf(web): asset delete (#7555)
* perf(web): asset delete

* update asset delete on search page

* don't use arrow function in class
2024-03-01 19:49:31 -05:00
Sam Holton
7303fab9d9 feat(server/web): add oauth defaultStorageQuota and storageQuotaClaim (#7548)
* feat(server/web): add oauth defaultStorageQuota and storageQuotaClaim

* feat(server/web): fix format and use domain.util constants

* address some pr feedback

* simplify oauth storage quota logic

* adding tests and pr feedback

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-03-01 19:46:07 -05:00
Mert
8b02f18e99 fix(web): prevent duplicate calls to time bucket endpoint (#7563) 2024-03-01 14:16:07 -05:00
waclaw66
670a3838a3 fix(mobile): bottom bar Upload translation (#7553)
Co-authored-by: Václav Nováček <waclaw@waclaw.cz>
2024-03-01 11:24:55 -06:00
Simon Séhier
3e06062974 fix(immich-admin): only 1st argument was passed (#7552) 2024-03-01 07:34:59 -05:00
martin
3b772a772c fix(web): immich version (#7541)
* fix: web version

* update package-lock.json

* update typescript-sdk
2024-03-01 01:26:50 -06:00
Ben McCann
55ecfafa82 chore(web): fix eslint setup in VS Code (#7543) 2024-02-29 19:28:54 -05:00
Michel Heusschen
c89d91e006 feat: filter people when using smart search (#7521) 2024-02-29 16:14:48 -05:00
Jason Rasmussen
15a4a4aaaa chore: remove unused upload property (#7535)
* chore: remove isExternal

* chore: open-api
2024-02-29 16:02:08 -05:00
Jason Rasmussen
3d25d91e77 refactor: library e2e (#7538)
* refactor: library e2e

* refactor: remove before each usages
2024-02-29 15:10:08 -05:00
Jonathan Jogenfors
efa6efd200 feat(server,web): remove external path nonsense and make libraries admin-only (#7237)
* remove external path

* open-api

* make sql

* move library settings to admin panel

* Add documentation

* show external libraries only

* fix library list

* make user library settings look good

* fix test

* fix tests

* fix tests

* can pick user for library

* fix tests

* fix e2e

* chore: make sql

* Use unauth exception

* delete user library list

* cleanup

* fix e2e

* fix await lint

* chore: remove unused code

* chore: cleanup

* revert docs

* fix: is admin stuff

* table alignment

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-29 12:35:37 -06:00
Michel Heusschen
369acc7bea fix(web): asset disappears from album after metadata edit (#7520) 2024-02-29 11:44:30 -06:00
Jason Rasmussen
100363c7be refactor(e2e): use better dummy assets (#7536) 2024-02-29 12:07:01 -05:00
Jason Rasmussen
af0de1a768 chore: linting (#7532)
* chore: linting

* fix: broken tests

* fix: formatting
2024-02-29 11:26:55 -05:00
Jason Rasmussen
09a7291527 refactor(web): drop axios (#7490)
* refactor: downloadApi

* refactor: assetApi

* chore: drop axios

* chore: tidy up

* chore: fix exports

* fix: show notification when download starts
2024-02-29 11:22:39 -05:00
Jason Rasmussen
bb3d81bfc5 chore: build tweaks (#7484) 2024-02-29 09:22:25 -05:00
dependabot[bot]
f1331905f0 chore(deps): bump tj-actions/verify-changed-files from 18 to 19 (#7524)
Bumps [tj-actions/verify-changed-files](https://github.com/tj-actions/verify-changed-files) from 18 to 19.
- [Release notes](https://github.com/tj-actions/verify-changed-files/releases)
- [Changelog](https://github.com/tj-actions/verify-changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/verify-changed-files/compare/v18...v19)

---
updated-dependencies:
- dependency-name: tj-actions/verify-changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-29 07:56:20 -05:00
renovate[bot]
7eb8e2ff9c chore(deps): update dependency @types/pg to v8.11.1 (#7522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-29 07:54:48 -05:00
Mert
dc7a329cc8 fix(server): only queue ml / transcoding jobs after thumbnail generation on upload (#7516) 2024-02-28 23:23:21 -05:00
Mert
11de526bcf fix(server): re-add mimalloc (#7511)
add mimalloc
2024-02-28 18:23:48 -05:00
Alex
2e56e777ce chore: post release tasks 2024-02-28 16:49:02 -06:00
Alex The Bot
6f53e83d49 Version v1.97.0 2024-02-28 22:34:00 +00:00
martyfuhry
b1a896ba61 feat(mobile): Adds better precaching for assets in gallery view and memory lane (#7486)
Adds better precaching for assets in gallery view and memory lane
2024-02-28 16:13:15 -06:00
martyfuhry
d28abaad7b fix(mobile): Fixes prefer remote assets in thumbnail provider (#7485)
Fixes prefer remote assets in thumbnail provider

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-02-28 21:55:29 +00:00
martyfuhry
79442fc8a1 fix(mobile): Fixes thumbnail size with blur and alignment in video player (#7483)
* Clip the edges of the image filter

* Fixes thumbnail blur effect expanding outside of the image

* Fixes thumbs with video player and delayed loader
2024-02-28 15:48:59 -06:00
Michel Heusschen
93f0a866a3 fix(web): settings accordion open state (#7504) 2024-02-28 15:40:08 -06:00
martin
84fe41df31 fix(web): re-render albums (#7403)
* fix: re-render albums

* fix: album description

* fix: reactivity

* fix album reactivity + components for title and description

* only update AssetGrid when albumId changes

* remove title and description bindings

* remove console.log

* chore: fix merge

* pr feedback

* pr feedback

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-02-28 15:39:53 -06:00
Jonathan Jogenfors
e4f32a045d chore: remove watcher polling option (#7480)
* remove watcher polling

* fix lint

* add db migration
2024-02-28 21:20:10 +01:00
Simon Séhier
784d92dbb3 chore(deployment): add explicit registry to docker image names (#7496) 2024-02-28 09:15:32 -06:00
Michel Heusschen
c88184673a fix(web): keep notifications in view when scrolling (#7493) 2024-02-28 07:25:08 -05:00
Jason Rasmussen
74d431f881 refactor(server): format and metadata e2e (#7477)
* refactor(server): format and metadata e2e

* refactor: on upload success waiting
2024-02-28 10:21:31 +01:00
Alex
e2c0945bc1 chore: post release tasks 2024-02-27 23:09:48 -06:00
Alex
a02a24f349 chore: post release tasks 2024-02-27 23:09:40 -06:00
Fynn Petersen-Frey
87a7825cbc feat(server): rkmpp hardware decoding scaling (#7472)
* feat(server): RKMPP hardware decode & scaling

* disable hardware decoding for HDR
2024-02-27 20:32:07 -05:00
renovate[bot]
f0ea99cea9 chore(deps): update dependency @types/node to v20.11.20 (#7474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 22:45:29 +01:00
Jonathan Jogenfors
0d2a656aa1 chore: add agpl milestone (#7479)
add agpl milestone
2024-02-27 21:43:12 +00:00
Alex The Bot
6d91c23f65 Version v1.96.0 2024-02-27 20:14:58 +00:00
renovate[bot]
df02a9f5ed chore(deps): update dependency @types/node to v20.11.20 (#7476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 19:16:37 +00:00
renovate[bot]
2702bcc407 chore(deps): update dependency @types/node to v20.11.20 (#7475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 19:09:26 +00:00
Jason Rasmussen
807cd245f4 refactor(server): e2e (#7462)
* refactor: trash e2e

* refactor: asset e2e
2024-02-27 14:04:38 -05:00
renovate[bot]
dc0f8756f5 chore(deps): update dependency @types/node to v20.11.20 (#7473)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 14:03:34 -05:00
renovate[bot]
df9ab8943d chore(deps): update base-image to v20240227 (major) (#7470)
chore(deps): update base-image to v20240227

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 14:03:02 -05:00
Ben McCann
79409438a7 chore(web): upgrade dependencies (#7471) 2024-02-27 14:01:11 -05:00
martyfuhry
b15eec7ca7 refactor(mobile): Uses blurhash for memory card instead of blurred thumbnail (#7469)
* Uses blurhash for memory card instead of blurred thumbnail

New blurred backdrop widget

Comments

* Fixes video placeholder image placement

* unused import
2024-02-27 12:38:14 -06:00
Alex
908104299d chore(web): remove album's action notification (#7467) 2024-02-27 12:16:52 -06:00
renovate[bot]
c94874296c chore(deps): update web (#7448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 12:19:21 -05:00
renovate[bot]
8361130351 chore(deps): update @immich/cli (#7445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 12:19:04 -05:00
Ben McCann
907a95a746 chore(web): cleanup promise handling (#7382)
* no-misused-promises

* no-floating-promises

* format

* revert for now

* remove load function

* require-await

* revert a few no-floating-promises changes that would cause no-misused-promises failures

* format

* fix a few more

* fix most remaining errors

* executor-queue

* executor-queue.spec

* remove duplicate comments by grouping rules

* upgrade sveltekit and enforce rules

* oops. move await

* try this

* just ignore for now since it's only a test

* run in parallel

* Update web/src/routes/admin/jobs-status/+page.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* remove Promise.resolve call

* rename function

* remove unnecessary warning silencing

* make handleError sync

* fix new errors from recently merged PR to main

* extract method

* use handlePromiseError

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-27 10:37:37 -06:00
Alex
57f25855d3 fix(web/server): revert renovate hash update (#7464)
* Revert "chore(deps): update node.js to f3299f1 (#7444)"

This reverts commit cfb49c8be0.

* Revert "chore(deps): update node.js to f3299f1 (#7443)"

This reverts commit 2f121af9ec.
2024-02-27 10:28:00 -06:00
renovate[bot]
e02964ca0d chore(deps): update server (#7447)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 10:26:37 -06:00
renovate[bot]
fd301a3261 fix(deps): update dependency orjson to v3.9.15 [security] (#7438) 2024-02-27 10:59:28 -05:00
martyfuhry
d76baee50d refactor(mobile): Use ImmichThumbnail and local thumbnail image provider (#7279)
* Refactor to use ImmichThumbnail and local thumbnail image provider

format

* dart format

linter errors

linter

* Adds blurhash

format

* Fixes image blur

* uses hook instead of stateful widget to be more consistent

* Uses blurhash hook state

* Uses blurhash ref instead of state

* Fixes fade in duration for fade in placeholder

* Fixes an issue where thumbnails fail to load if too many thumbnail requests are made simultaenously

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-27 09:51:19 -06:00
Fynn Petersen-Frey
5e485e35e9 feat(server): easy RKMPP video encoding (#7460)
* feat(server): easy RKMPP video encoding

* make linter happy
2024-02-27 09:47:04 -06:00
renovate[bot]
cfb49c8be0 chore(deps): update node.js to f3299f1 (#7444)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 09:29:25 -06:00
renovate[bot]
2f121af9ec chore(deps): update node.js to f3299f1 (#7443)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 09:29:08 -06:00
Michel Heusschen
21feb69083 fix(web): don't ask password for invalid shared link (#7456)
* fix(web): don't ask password for invalid shared link

* use apiUtils for e2e test
2024-02-27 09:25:57 -06:00
Mert
fb18129843 fix(server): truncate embedding tables (#7449)
truncate
2024-02-27 09:24:23 -06:00
Michel Heusschen
9fa2424652 fix(web): shared links page broken by enhanced:img (#7453) 2024-02-27 07:44:32 -05:00
dependabot[bot]
7d1edddd51 chore(deps): bump docker/setup-buildx-action from 3.0.0 to 3.1.0 (#7459)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 07:43:06 -05:00
renovate[bot]
3f18a936b2 chore(deps): update dependency @oazapfts/runtime to v1.0.1 (#7446)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 07:37:12 -05:00
Alex
e20d3048cd chore(ci): move e2e test to macos runner (#7452)
* chore(ci): move e2e test to macos runner

* setup docker

* ubuntu test
2024-02-27 07:35:14 -05:00
renovate[bot]
8965c25f54 chore(deps): update machine-learning (#7451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 00:53:37 -05:00
Mert
7e18e69c1c fix(ml): only use openvino if a gpu is available (#7450)
use `device_type`
2024-02-27 00:45:14 -05:00
martyfuhry
d799bf7910 fix(mobile): Stop sending app to login page for unrelated auth errors (#7383)
Now we only validate access token when we have one in the store and only send you to the login page when the response from the server is a 401

linter

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-26 21:25:39 -06:00
Michel Heusschen
4272b496ff fix(web): prevent resetting date input when entering 0 (#7415)
* fix(web): prevent resetting date input when entering 0

* resolve conflict

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-26 21:07:49 -06:00
Michel Heusschen
99a002b947 fix(web): alignment of people in search box (#7430)
* refactor search suggestion handling

* chore: open api

* revert server changes

* chore: open api

* update location filters

* location filter cleanup

* refactor people filter

* refactor camera filter

* refactor display filter

* cleanup

* fix(web): alignment of people in search box

* fix bad merge

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-26 21:07:23 -06:00
Michel Heusschen
c8bdeb8fec fix(web): fetch error reporting (#7391) 2024-02-26 20:48:47 -06:00
martin
8a05ff51e9 fix(web): count hidden people (#7417)
fix: count hidden people
2024-02-26 15:58:52 -06:00
Daniel Dietzler
3e8af16270 refactor(web): search box (#7397)
* refactor search suggestion handling

* chore: open api

* revert server changes

* chore: open api

* update location filters

* location filter cleanup

* refactor people filter

* refactor camera filter

* refactor display filter

* cleanup

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-02-26 15:45:08 -06:00
Mert
45ecb629a1 fix(server): storage template migration not working (#7414)
add `withExif`
2024-02-25 13:18:09 -05:00
renovate[bot]
943105ea20 chore(deps): update vitest monorepo to v1.3.1 (#7407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-25 09:07:13 -08:00
Sourav Agrawal
2a75f884d9 Fix Smart Search when using OpenVINO (#7389)
* Fix external_path loading in OpenVINO EP

* Fix ruff lint

* Wrap block in try finally

* remove static input shape code

* add unit test

* remove unused imports

* remove repeat line

* linting

* formatting

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-02-24 18:22:27 -05:00
Daniel Mendizabal
912d723281 Update reverse-proxy.md - Apache (#7386)
Update reverse-proxy.md

Update to the Apache implementation
2024-02-24 14:31:01 -06:00
Jan108
038e69fd02 feat(web): Added password field visibility toggle (#7368)
* Added password field visibility toggle

* improvements to password input field

* fix e2e and change tabindex

* add missing name=password

* remove unnecessary type prop

---------

Co-authored-by: Jan108 <dasJan108@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-02-24 14:28:56 -06:00
Michel Heusschen
9d3ed719e0 fix(web): prevent scroll reset on search page (#7385) 2024-02-24 14:24:24 -06:00
Michel Heusschen
6ec4c5874b fix(web): timezone handling in search filter (#7384) 2024-02-24 14:23:30 -06:00
Robert Vollmer
57758293e5 fix(mobile): remove log message counter (#6865)
* fix(mobile): remove log message counter

Previously, the items in the log page were numbered starting with `#0`
and increasing from top to bottom. Being new to the app, this confused
me because I would have expected that newer messages have a higher
number than older messages.

Removing the counter completely because it doesn't add any value -
log messages are identified by their timestamp, text and other details.

* Switch timestamp and context in log overview
2024-02-23 21:40:09 -06:00
Robert Vollmer
bc3979029d refactor(mobile): move error details to separate DB column (#6898)
* Add "details" column to LoggerMessage

* Include error details in log details page

* Move error details out of log message

* Add error message to mixin

* Create extension for HTTP Response logging

* Fix analyze errors

* format

* fix analyze errors, format again
2024-02-23 21:38:57 -06:00
Michel Heusschen
878932f87e feat(web): improve search filter design (#7367)
* feat(web): improve search filter design

* restore position of people toggle button

* consistent colors for media type inputs
2024-02-23 21:32:56 -06:00
martin
a2934b8830 feat(server, web): search location (#7139)
* feat: search location

* fix: tests

* feat: outclick

* location search index

* update query

* fixed query

* updated sql

* update query

* Update search.dto.ts

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

* coalesce

* fix: tests

* feat: add alternate names

* fix: generate sql files

* single table, add alternate names to query, cleanup

* merge main

* update sql

* pr feedback

* pr feedback

* chore: fix merge

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2024-02-23 19:42:37 -05:00
AndyPro720
719dbcc4d0 Web: Revamp message for Storage Template Engine in admin pannel (#7359)
* Web: Revamp message for Storage Template Engine in admin pannel

* Web: Revamp message for Storage Template Engine in admin pannel: removed unnessary code
2024-02-23 17:18:19 +00:00
hrdl
cc6de7d1f1 fix(mobile): don't crop memories in landscape mode (#6907)
Don't crop memories in landscape mode unless aspect ratios are close

Co-authored-by: hrdl <7808331-hrdl@users.noreply.gitlab.com>
2024-02-23 17:05:36 +00:00
Sebastian Mahr
78ece4ced9 fix(web): dark mode uploading font color (#7372)
* fix: dark mode uploading font color

* chore: remove dark text by default
2024-02-23 17:05:09 +00:00
renovate[bot]
ee58569b42 fix(deps): update dependency flutter_udid to v3 (#7248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-23 16:25:25 +00:00
renovate[bot]
07d747221e fix(deps): update dependency geolocator to v11 (#7249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-23 16:10:49 +00:00
martyfuhry
3cd3411c1f refactor(mobile): Use hooks to manage Chewie controller for video (#7008)
* video loading delayed

* Chewie controller implemented in hook

* fixing look and feel

* Finalizing delay and animations

* Fixes issue with immersive mode showing immediately in videos

* format fix

* Fixes bug where video controls would hide immediately after showing while playing and reverts hide controls timer to 5 seconds

* Fixed rebase issues

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-22 23:18:02 -06:00
martin
b3b6426695 feat(web): configure slideshow (#7219)
* feat: configure slideshow delay

* feat: show/hide progressbar

* fix: slider

* refactor: use grid instead of flex

* fix: default delay

* refactor: progress bar props

* refactor: slideshow settings

* fix: enforce min/max value

* chore: linting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-22 23:01:19 -06:00
Michel Heusschen
6bb30291de fix(web): consistent combobox style + improve color contrast (#7353) 2024-02-22 13:08:55 -05:00
Ben McCann
2c9dd18f1b fix: upgrade SvelteKit to 2.5.1 (#7351) 2024-02-22 12:58:48 -05:00
Michel Heusschen
07ef008b40 fix(server): exclude archived assets from orphaned files (#7334)
* fix(server): exclude archived assets from orphaned files

* add e2e test
2024-02-22 11:16:10 -05:00
Jason Rasmussen
b3131dfe14 refactor(web): sidebar settings (#7344) 2024-02-22 10:14:11 -05:00
Ravid Yael
b4e924b0c0 web: improve storage template onboarding message (#7339)
* Style: modifing onboard message for using storage template engine

* Style: modifying onboard message for using storage template engine

* style: Fix Prettier formatting issues

* chore: cleanup message

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-22 15:14:02 +00:00
martin
01d6707b59 feat(web): add an option to change the date formats (#7174)
* feat: add an option to change the date formats

* pr feedback

* fix: change title

* fix: show list supported by the browser

* fix: tests

* fix: dates

* fix: check only if locale is set

* fix: better fallback value

* fix: fallback

* fix: fallback

* feat: add default locale option

* refactor: shared components

* refactor: shared components

* prepare for svelte 5

* don't use relative paths

* refactor: fallback value

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* fix: parsing store

* fix: lint

* refactor: locales

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-22 14:36:14 +00:00
荣顶
a224bb23d0 docs: add star history for README (#7328) 2024-02-22 09:05:13 -05:00
martin
75947ab6c2 feat(web): search albums (#7322)
* feat: search albums

* pr feedback

* fix: comparison

* pr feedback

* simplify

* chore: more compact album padding

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-22 09:04:43 -05:00
Michel Heusschen
e3cccba78c fix(server): out of memory when unstacking assets (#7332) 2024-02-22 08:50:46 -05:00
Michel Heusschen
ec55acc98c perf(server): optimize mapAsset (#7331) 2024-02-22 08:48:27 -05:00
renovate[bot]
869e9f1399 chore(deps): update base-image to v20240222 (major) (#7338)
chore(deps): update base-image to v20240222

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 08:16:56 -05:00
Michel Heusschen
46f85618db feat(web): rework combobox and add clear button (#7317)
* feat(web): rework combobox

* simplify statement and use transition-all
2024-02-22 08:12:33 -05:00
Mert
749b182f97 fix(server): fix log for setting other vector extension (#7325)
fix log
2024-02-21 18:47:43 -05:00
Jason Rasmussen
2ebb57cbd4 refactor: e2e client (#7324) 2024-02-21 17:34:11 -05:00
martin
5c0c98473d fix(server, web): people page (#7319)
* fix: people page

* fix: use locale

* fix: e2e

* fix: remove useless w-full

* fix: don't count people without thumbnail

* fix: es6 template string

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-21 17:03:45 -05:00
Jason Rasmussen
546edc2e91 refactor: album e2e (#7320)
* refactor: album e2e

* refactor: user e2e
2024-02-21 16:52:13 -05:00
Michel Heusschen
173b47033a fix(server): search with same face multiple times (#7306) 2024-02-21 09:52:38 -06:00
Michel Heusschen
d3e14fd662 feat(web): search improvements and refactor (#7291) 2024-02-21 09:50:50 -06:00
Marcel Eeken
06c134950a Localize the output of the library count to make it more readable (#7305) 2024-02-21 14:35:24 +01:00
martin
8f57bfb496 fix(web): small issues everywhere (#7207)
* multiple fix

* fix: album re-render

* fix: revert re-render album

* fix: linter

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-21 08:29:22 -05:00
Michel Heusschen
855aa8e30a fix(web): back button for gallery viewer (#7250) 2024-02-21 08:28:16 -05:00
Jason Rasmussen
f798e037d5 refactor(server): e2e (#7265)
* refactor: activity e2e

* refactor: person e2e

* refactor: shared link e2e
2024-02-21 08:28:03 -05:00
renovate[bot]
a1bc74cdd6 fix(deps): update exiftool (#7230)
* fix(deps): update exiftool

* documenting such changes would have been too easy

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-02-21 08:26:13 -05:00
renovate[bot]
aeb7081af1 chore(deps): update @immich/cli (#7235)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 08:25:59 -05:00
renovate[bot]
c5da317033 chore(deps): update dependency @types/node to v20.11.19 (#7236)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 08:25:45 -05:00
renovate[bot]
01f682134a chore(deps): update dependency @types/node to v20.11.19 (#7238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 08:25:37 -05:00
renovate[bot]
43f887e5f2 chore(deps): update dependency @types/node to v20.11.19 (#7239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 08:25:28 -05:00
renovate[bot]
ee3b3ca115 chore(deps): update dependency vite to v5.1.3 (#7247)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 08:24:50 -05:00
Michel Heusschen
e7995014f9 fix(web): search filter form events (#7285) 2024-02-21 08:21:43 -05:00
renovate[bot]
a771f33fa3 chore(deps): update machine-learning (#7225) 2024-02-21 01:12:38 -05:00
Mert
397570ad1a chore(server): change transcode default to accept all supported audio codecs (#7283)
* change transcode defaults

* don't untick accepted audio codecs

* no need to change the transcode policy

* fix tests

* remove log
2024-02-21 00:25:30 -05:00
Alex The Bot
7c34d0595e Version v1.95.1 2024-02-21 04:02:43 +00:00
Mert
eb73f6605b fix(server): don't return archived assets by default (#7278)
* don't show archived results by default

* fix e2e

* generate sql

* set default in dto

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-21 03:59:26 +00:00
Alex
bb5236ae65 fix(server): not in album filter with context search (#7275) 2024-02-20 20:44:34 -06:00
Mert
e33fd40b4c fix(server): quote database name in migration (#7277)
quote database name
2024-02-21 02:13:43 +00:00
Alex
73825918c0 fix(web): presenting modal removes the browser's scroll ability (#7257)
* fix(web): presenting modal removes the browser's scroll ability

* removed unsued code

* eslint
2024-02-20 14:02:01 -06:00
martyfuhry
a22bf99206 fix(mobile): Uses immich thumbnail for background of memory picture (#7254)
unused imports
2024-02-20 13:58:41 -06:00
Alex
578b71b961 chore: post release tasks 2024-02-20 11:05:24 -06:00
Alex The Bot
302d98ebe1 Version v1.95.0 2024-02-20 16:52:23 +00:00
martyfuhry
e338e4def6 fix(mobile): Prefer sharing local assets to remote (#7245)
Prefer sharing local assets to remote
2024-02-20 10:03:24 -06:00
Michel Heusschen
b896d45ee7 feat(web): improve feedback for favorite and archive actions (#7232) 2024-02-20 10:01:52 -06:00
Jonathan Jogenfors
b3c7bebbd4 feat(server,web) Semantic import path validation (#7076)
* add library validation api

* chore: open api

* show warning i UI

* add flex row

* fix e2e

* tests

* fix tests

* enforce path validation

* enforce validation on refresh

* return 400 on bad import path

* add limits to import paths

* set response code to 200

* fix e2e

* fix lint

* fix test

* restore e2e folder

* fix import

* use startsWith

* icon color

* notify user of failed validation

* add parent div to validation

* add docs to the import validation

* improve library troubleshooting docs

* fix button alignment

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-20 09:53:12 -06:00
Michel Heusschen
e7a875eadd fix(web): websocket reconnect (#7234)
* fix(web): websocket reconnect

* reset store after navigation completes

* remove loggedOut check
2024-02-20 08:20:09 -06:00
Jason Rasmussen
7f5459f050 fix(web): download from shared album link (#7227)
* fix(web): download in album shared link

* chore: e2e test
2024-02-19 22:39:49 -06:00
renovate[bot]
7158706296 fix(deps): update server (#7224)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 22:34:39 -05:00
Jason Rasmussen
9b20604a70 refactor(server): e2e (#7223)
* refactor: download e2e

* refactor: oauth e2e

* refactor: system config e2e

* refactor: partner e2e

* refactor: server-info e2e

* refactor: user e2e

* chore: uncomment test
2024-02-19 22:34:18 -05:00
renovate[bot]
02b9f3ee88 fix(deps): update dependency @mdx-js/react to v3.0.1 (#7222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 22:34:01 -05:00
renovate[bot]
f14a2ae099 chore(deps): update web (#7221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 22:33:52 -05:00
Alex
42ce8c5093 chore(web): show people list on a single line in filter form when not expanded (#7216) 2024-02-19 21:24:41 -06:00
Mert
6690e8edf2 fix(docs): document vector extension env variable (#7220) 2024-02-19 21:32:55 -05:00
renovate[bot]
14ca471dea chore(deps): pin dependencies (#7217)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 19:35:46 -05:00
renovate[bot]
84b2fc80a4 chore(deps): update dependency vite to v5.1.2 (#7218)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 19:34:47 -05:00
Mert
d5ef91b1ae feat(cli): concurrent upload (#7192)
* concurrent cli upload

* added concurrency flag, progress bar refinements

* no data property 🦀

* use lodash-es

* rebase

* linting

* typing

* album bug fixes

* dev dependency for lodash typing

* fixed not deleting assets if album isn't specified

* formatting

* fixed tests

* use `arrayContaining`

* add more checks

* assert updates existing assets
2024-02-19 19:32:57 -05:00
Jason Rasmussen
947bcf2d68 refactor: cli e2e (#7211) 2024-02-19 17:25:57 -05:00
Alex
870d517ce3 fix(web): don't show motion part in search result (#7210)
fix: don't show motion part in search result
2024-02-19 20:56:02 +00:00
Michel Heusschen
529a83cc72 fix(web): broken links to places search (#7208) 2024-02-19 14:55:54 -06:00
Jason Rasmussen
5e1498a279 chore: remove unused file (#7205) 2024-02-19 12:45:13 -06:00
Michel Heusschen
ea4be83ee9 fix(web): memory view broken by enhanced:img import (#7206) 2024-02-19 12:42:22 -06:00
Jason Rasmussen
a03b37ca86 refactor: server auth e2e (#7203) 2024-02-19 12:03:51 -05:00
martyfuhry
59f8a886e7 fix(mobile): Fixes memory lane progress indicator color in dark mode (#7199)
* Fixes memory lane progress indicator color in dark mode

* Removed unused import
2024-02-19 09:13:28 -06:00
Jason Rasmussen
c50d318152 chore: cleanup old jest references (#7198) 2024-02-19 08:54:41 -05:00
Alex
a8f177066b fix(server): getAllAssets endpoint includes motion part of LivePhotos (#7194) 2024-02-19 07:24:14 -06:00
martyfuhry
dd53795953 chore(mobile): Adds dart format to static analysis (#7193)
Adds dart format to static analysis
2024-02-18 22:30:24 -06:00
Alex
9e7cb52413 chore(mobile): minor housekeeping 2024-02-18 22:17:20 -06:00
Thomas
0795410a41 fix: only show scrollbars if needed (#7191)
The class 'overflow-y-scroll' will always show the scrollbar. Changing
this to 'overflow-y-auto' will only show the scrollbar when needed.

All instances of the 'overflow-y-scroll' class have been changed.

Fixes: #7190
2024-02-18 20:57:56 -06:00
martin
66d3daa074 fix: shell scripts (#7189)
* fix: bash scripts

* fix: use bash

* fix: e2e
2024-02-18 20:57:24 -06:00
martin
ddae707ea9 fix: shell scripts (#7186)
* fix: bash scripts

* pr feedback

* wrong variable

* ci: add shellcheck workflow

* fix: missing scripts
2024-02-18 17:03:01 -06:00
Michel Heusschen
4b46bb49d7 fix(server): on_asset_update event sends varying data types (#7179) 2024-02-18 16:50:32 -06:00
renovate[bot]
072f61927c chore(deps): update typescript-eslint monorepo to v7 (major) (#7171) 2024-02-18 11:26:01 -08:00
martin
36e5d298db perf(web): optimize images and modules (#7088)
* perf: optimize images and modules

* fix: tests

* fix: missing font

* fix: delay showing the loading spinner

* simplify

* simplify

* pr feedback

* chore: merge main

* fix: enum

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-18 13:18:40 -06:00
Ben McCann
3480fe5326 chore(web): remove createEventDispatcher from LoginForm (#7177) 2024-02-18 12:47:13 -06:00
Mert
857ec0451d feat(server): optimize get asset query (#7176)
* faster query

* add index

* remove legacy code

* update mock

* remove unused imports

* add relations

* add stack

* formatting

* remove stack relation

* remove unused import

* increase chunk size

* generate sql

* linting

* fix typing

* formatting
2024-02-18 12:22:25 -06:00
Alex
8e1c85fe4f fix(server): not in album filter show motion part of LivePhotos (#7175) 2024-02-18 12:17:53 -06:00
martyfuhry
88214a485b fix(mobile): Fixes bottom exif info sheet modal drag controls (#7165)
* WIPip

* Fixed show modal bottom sheet to use drag handle

* Fixes advanced bottom sheet scrolling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-02-17 22:03:01 -06:00
Ben Basten
9c1dd373a5 feat(web): add skip link to top navigation (#7091)
* feat(web): add skip link to top nav

* Styling skip link with tailwind
2024-02-17 21:34:27 -06:00
martyfuhry
70e5febb72 refactor(mobile): Use widgets in Immich asset grid (#7140)
* Refactors to use widgets in immich asset grid

Adds comments

* Fixes asset thumbnail absoluteOffset

* feat(mobile): Uses gradient image placeholders in memory lane and in the asset grid (#7142)

* Uses gradient image placeholders in memory lane and in the asset grid

* Changes to create placeholders in immmich image.thumbnail

* removed unused import

* uses context.isDarkTheme and fixed function signature for allAssetsSelected
2024-02-17 21:31:34 -06:00
Michel Heusschen
0730b54ca9 fix(server): empty/restore trash (#7161)
* fix(server): empty/restore trash

* add e2e tests

* add e2e tests - part 2
2024-02-17 14:05:43 -06:00
Alex
69983ff83a feat: enhance search (#7127)
* feat: hybrid search

* fixing normal search

* building out the query

* okla

* filters

* date

* order by date

* Remove hybrid search endpoint

* remove search hybrid endpoint

* faces query

* search for person

* search and pagination

* with exif

* with exif

* justify gallery viewer

* memory view

* Fixed userId is null

* openapi and styling

* searchdto

* lint and format

* remove term

* generate sql

* fix test

* chips

* not showing true

* pr feedback

* pr feedback

* nit name

* linting

* pr feedback

* styling

* linting
2024-02-17 11:00:55 -06:00
Michel Heusschen
60ba37b3a7 fix(web): validation when editing asset date & time (#7160) 2024-02-17 09:28:34 -05:00
Ben McCann
3915867b1b chore: remove svelte-preprocess (#7159) 2024-02-17 08:35:51 -05:00
Michel Heusschen
fab19a8583 fix(server): recognize faces when min. faces is set to 1 (#7144)
* fix(server): recognize face when min. faces is set to 1

* update logic

* clarified log

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-02-17 03:32:11 +00:00
Jason Rasmussen
a24f3805c9 chore: web e2e improvements (#7155) 2024-02-16 16:31:22 -05:00
Jan
67b1675850 fix(web) display wrong apikey-name on edit (#7131)
* fix display wrong apikey-name on edit

* use apiKey property with fallback value

* remove null fallback

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-16 16:01:44 -05:00
Michel Heusschen
c84c0bae6c refactor(web): websocket events (#7152) 2024-02-16 15:43:40 -05:00
Daniel Dietzler
bbf7a54c65 chore(web): upgrade to maplibre 4 (#7132)
upgrade to maplibre 4
2024-02-16 07:55:13 -06:00
waclaw66
0ca7adcdbf fix(mobile): bottom app bar icons (#7147) 2024-02-16 07:54:17 -06:00
Ben McCann
dabbd63a02 fix(web): update unauthorized share link handling (#7126) 2024-02-14 22:01:01 -06:00
Alex
9b814354a4 fix(web): search params (#7123)
* fix(web): search params

* format
2024-02-14 20:43:48 -06:00
martyfuhry
31ae35e9a6 chore(mobile): Fixed exclude analyzer options (#7125)
Fixed exclude analyzer options
2024-02-15 01:28:45 +00:00
Ben McCann
5abbb335c3 chore(deps): upgrade tj-actions/verify-changed-files to v18 (#7121) 2024-02-14 11:53:42 -08:00
Mert
5ff68d4cdb feat(server): only transcode streams that require it (#7106) 2024-02-14 11:24:39 -05:00
Jason Rasmussen
b823dfffdc chore: suppress abort errors (#7120)
* chore: suppress abort errors

* chore: return if aborted

* chore: linting
2024-02-14 10:24:18 -06:00
Jason Rasmussen
747df0ae86 chore(web): auto sort imports (#7118)
chore(web): auto sort impomrts
2024-02-14 10:54:32 -05:00
Ben McCann
2906950188 fix: update error handling to match new API (#7117) 2024-02-14 07:25:15 -08:00
Torbjorn Tyridal
6adff50f0a feat(server, web): Include partner's photos on map (#7065)
* feat(server): Include partner's photos on map - if included in timeline

* depend on query parameter withPartners

instead of partners.inTimeline

* web: map option to include partners images

* make open-api
2024-02-14 10:07:00 -05:00
Jason Rasmussen
7d59900662 chore: web shutdown signal (#7114) 2024-02-14 08:57:02 -06:00
Jason Rasmussen
69166fa520 chore(cli): auto-sort imports (#7116) 2024-02-14 09:55:40 -05:00
Ben McCann
87ae0be081 chore: enum support for new API (#7110)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-14 06:38:57 -08:00
martin
6f5648569a fix(web): always show asset owner when viewing an asset from a shared album (#7104)
fix: always show album owner when viewing a shared album
2024-02-14 09:08:33 -05:00
Jason Rasmussen
d8631a00bb refactor(web) open api client (#7103)
* refactor: person api

* refactor: shared link and others
2024-02-14 08:09:49 -05:00
ItsJustRuby
5fc1d43012 chore(web,mobile): Fix reoccurring typo (#7111) 2024-02-14 08:48:59 +00:00
Łukasz Wawrzyk
e9f3360f02 chore(mobile): Put the real delete button before other delete variants (#6895)
fix: put the real delete button before other delete variants
2024-02-13 20:17:21 -06:00
renovate[bot]
b2181ee6f1 chore(deps): update dependency @types/node to v20.11.17 (#7102)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 22:13:38 +00:00
renovate[bot]
021867fe6c chore(deps): update dependency @types/node to v20.11.17 (#7099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 17:08:38 -05:00
renovate[bot]
caa9673f3a chore(deps): update dependency @types/node to v20.11.17 (#7098)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 17:08:25 -05:00
Jason Rasmussen
8fd94211c0 refactor(web): use new open api client (#7097)
* refactor(web): use new open api client

* refactor: remove activity api

* refactor: trash, oauth, and partner apis

* refactor: job api

* refactor: face, library, system config

* refactor: user api

* refactor: album api
2024-02-13 17:07:37 -05:00
martyfuhry
9b4a770b9d refactor(mobile): Immich image provider (#7016)
* Adds image provider

* uses image provider

* wip load preview

* wip everything but activity asset thumbnail needs some help with a remote id

* Immich provider used in gallery

* First draft of the immich image provider, working nicely!

* Removed OriginalImageProvider

* Fixes for thumbnails

* feat(mobile): thumbhash support (#7028)

* feat(mobile): thumbhash support

* perf(mobile): store bmp thumbhash bytes in Isar

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

* Uses octoimage for fade in and placeholders

* fixes thumbnails, removes unused values, adds better thumbnail size

* removes thumbhash support for now

* Forgot one thumbhash removal

* Use big thumbnail for local image on ios

* fix(mobile): Multipart image loading for iOS double swipe (#7064)

* uses local thumb first

* Multipart thumbnail

* Clean up file delete

* await file delete

* Fynn's comments, made thumbnail smaller and doesn't crash on erroring out on thumbnail

* lint

---------

Co-authored-by: Marty Fuhry <marty@fuhry.farm>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* Moves http client to global private place for reuse

* Got rid of usePreview for local image providers since we always show a thumbnail anyway first

* linter

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Marty Fuhry <marty@fuhry.farm>
2024-02-13 15:30:32 -06:00
Alex
4b3f8d1946 feat: Search filtering logic (#6968)
* commit

* controller/service/repository logic

* use enum

* openapi

* suggest people

* suggest place/camera

* cursor hover

* refactor

* Add try catch

* Remove get people with name service

* Remove deadcode

* people selection

* People placement

* sort people

* Update server/src/domain/repositories/metadata.repository.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* pr feedback

* styling

* done

* open api

* fix test

* use string type

* remmove bad merge

* use correct type

* fix test

* fix lint

* remove unused code

* remove unused code

* pr feedback

* pr feedback

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-13 19:54:58 +00:00
Jason Rasmussen
0c45f51a29 fix(deps): bump oazapfts to v6 (#7093)
chore: bump to v6
2024-02-13 13:37:57 -06:00
Jason Rasmussen
76bd603507 web: e2e (#7063)
feat: web register e2e
2024-02-13 13:08:49 -05:00
renovate[bot]
c75adbecf3 chore(deps): update web (#7086)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 12:43:35 -05:00
renovate[bot]
3cfe2dd31f chore(deps): update machine-learning (#7084) 2024-02-13 16:04:40 +00:00
martin
dcfd1f9ea6 feat(web): navigate with keyboard on person page (#5486)
* feat: navigate with keyboard on person page

* pr feedback

* pr feedback

* pr feedback

* fix: remove unused import
2024-02-13 10:57:15 -05:00
martin
b4579e788b feat(web): add a setting to load the original file (#6753)
* feat(web): add a setting to load the original file

* fix: export

* fix: subtitle
2024-02-13 09:42:29 -05:00
renovate[bot]
e49bbf8574 fix(deps): update docs (#7068)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 14:07:16 +00:00
renovate[bot]
cd7a475578 fix(deps): update server (#7069)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 09:04:01 -05:00
renovate[bot]
a0159251d9 chore(deps): update machine-learning (#7074)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 09:02:32 -05:00
renovate[bot]
338c9b0689 chore(deps): update base-image to v20240213 (major) (#7081)
chore(deps): update base-image to v20240213

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 09:02:15 -05:00
Jason Rasmussen
b648025e2f refactor: library watching (#7071) 2024-02-13 08:48:47 -05:00
renovate[bot]
3d7a7bcb7a chore(deps): update dependency oazapfts to v5.1.5 (#7079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 07:47:44 -05:00
renovate[bot]
fc7dae99fe chore(deps): update dependency vite to v5.1.0 (#7080)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 07:46:46 -05:00
Jason Rasmussen
1d35e591e0 chore: suppress diff for generated clients (#7072) 2024-02-13 07:27:54 -05:00
renovate[bot]
43e099fb56 fix(deps): update dependency picomatch to v4 (#7073)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-12 23:37:10 -05:00
renovate[bot]
2b8ec30767 chore(deps): update machine-learning (major) (#6934)
* chore(deps): update machine-learning

* formatting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-02-12 22:29:15 -05:00
renovate[bot]
bfba81de94 chore(deps): update machine-learning (#6931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-12 21:08:17 -05:00
Mert
e334443919 feat(server, web): smart search filtering and pagination (#6525)
* initial pagination impl

* use limit + offset instead of take + skip

* wip web pagination

* working infinite scroll

* update api

* formatting

* fix rebase

* search refactor

* re-add runtime config for vector search

* fix rebase

* fixes

* useless omitBy

* unnecessary handling

* add sql decorator for `searchAssets`

* fixed search builder

* fixed sql

* remove mock method

* linting

* fixed pagination

* fixed unit tests

* formatting

* fix e2e tests

* re-flatten search builder

* refactor endpoints

* clean up dto

* refinements

* don't break everything just yet

* update openapi spec & sql

* update api

* linting

* update sql

* fixes

* optimize web code

* fix typing

* add page limit

* make limit based on asset count

* increase limit

* simpler import
2024-02-12 20:50:47 -05:00
martin
f1e4fdf175 refactor: authentication on public routes (#6765)
* refactor: authentication on public routes

* fix: remove public user

* pr feedback

* pr feedback

* pr feedback

* pr feedback

* remove unused method

* fix: tests

* fix: useless methods

* fix: tests

* pr feedback

* pr feedback

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-13 01:47:26 +00:00
renovate[bot]
45ea0bb689 chore(deps): update web (#7067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-12 20:45:51 -05:00
renovate[bot]
547d53b9f1 chore(deps): pin tensorchord/pgvecto-rs docker tag to 9072418 (#7066)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 01:01:03 +00:00
martin
c0a09d06a2 fix(web): remove warnings during the build (#7035)
* fix: remove warnings during the build

* fix: optimize chunks size

* fix: remove split vendor chunk strategy

* remove custom chunk

* Update web/src/routes/(user)/map/+page.svelte

* revert change

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
2024-02-12 16:03:26 -06:00
Ben McCann
84191e352e chore: update lockfiles (#7062) 2024-02-12 16:17:28 -05:00
Ben McCann
b43cadccee feat(web): lazy load photo sphere viewer (#7057)
* feat: lazy load photo sphere viewer

* destructure
2024-02-12 14:31:20 -06:00
Alex
afe5e17254 chore: update btc address 2024-02-12 14:29:29 -06:00
renovate[bot]
a8fefe4467 fix(deps): update dependency python-multipart to v0.0.7 [security] (#7054) 2024-02-12 13:32:12 -05:00
Fynn Petersen-Frey
49c378d706 fix(ml): re-enable ARMNN integration (#7053) 2024-02-12 13:29:55 -05:00
Alex
dca1bd22df Change license to AGPLv3 (#7046)
* Change license to AGPLv3

* Readme and documentation

* Package.json

* More replacement

* Added License MIT for previous code

* NIT

* Update LICENSE

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Update cli/LICENSE

Co-authored-by: bo0tzz <git@bo0tzz.me>

* remote mit

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-02-12 15:31:59 +00:00
Trevor Jex
d7437d31d1 feat(server): restore modified at timestamp after upload, preserve when copying (#7010) 2024-02-11 22:40:34 -06:00
Mert
0c4df216d7 feat(ml): improve test coverage (#7041)
* update e2e

* tokenizer tests

* more tests, remove unnecessary code

* fix e2e setting

* add tests for loading model

* update workflow

* fixed test
2024-02-11 17:58:56 -05:00
Jonathan Jogenfors
6e853e2a9d fix(cli): Run npm ci in sdk folder before deploying to npm (#6986)
* fix cli path

* run npm ci in sdk folder

* version bump

* build sdk before publishing cli

* dry run publish

* build cli

* fix(ci): Push CLI latest tag

* remove dry run flag

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-02-11 23:41:29 +01:00
Ben McCann
28e4f8e042 chore: upgrade to Vite 5.1.1 (#7040) 2024-02-11 16:44:32 -05:00
martin
5be7b753ff fix(web): update profile picture (#7034)
fix: update profile picture
2024-02-11 13:10:41 -05:00
Melvin Lammerts
eeeabcfef4 fix: remove dead link from docs (#7027)
Remove dead link

Closes #6932
2024-02-11 13:09:36 -05:00
martin
4e31d82bac feat(server): replace axios dependency by fetch (#7018)
* feat: replace axios dependency by fetch

* pr feedback
2024-02-11 11:15:06 -05:00
Mert
c9b7f4e690 chore(ml): make execution provider log info-level (#7024)
* change debug log to info

* update test
2024-02-11 06:12:11 +00:00
Jason Rasmussen
6ab3b2a274 fix(cli): broken fetch client (#7020) 2024-02-10 20:47:48 -05:00
Daniel Dietzler
a9e6657a37 feat(web): store accordion state in search params (#6435)
* keep admin settings accordion state in search params

* refactor: sync implementation

* fix: avoid mutating svelte's internal search params

* add query parameter to enum

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-10 18:25:02 -05:00
Dmitry Brazhenko
6e7865519a refactor(web): removed panorama-viewer.css (#7012)
removed panorama-viewer.css
2024-02-10 10:07:15 -05:00
shenlong
ec5e4dbcc2 fix(mobile): stack entity handling (#6980)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-02-09 21:09:43 -06:00
martyfuhry
fb8be51ff2 fix(mobile): Stop advancing to next memory on video ended (#7007)
Stop advancing to next asset on video ended
2024-02-09 20:29:57 -06:00
Ben McCann
8a47a87a14 chore: remove unneccessary async/awaits (#7009) 2024-02-10 00:12:51 +00:00
Jason Rasmussen
d0b5623ca7 fix: unnecessary .env file usage (#7005) 2024-02-09 17:45:26 -05:00
Ben McCann
aff71a10e5 chore: tree shake unused API methods from CLI (#6973) 2024-02-09 15:53:37 -05:00
Jonathan Jogenfors
954c1c2ef4 feat(server): server-side checking of duplicate import paths and exclusion patterns (#6993)
validate path and pattern
2024-02-09 13:02:11 -05:00
Dmitry Brazhenko
2ee9044b6a fix (web): panorama / 360 view - partial panorama: use photo-sphere-viewer (#6992)
* panorama viewer fixes

* prettifier

* fix
2024-02-09 10:17:51 -06:00
Ben McCann
e4561f26e8 chore: cleanup layout setup (#6995) 2024-02-09 10:16:59 -06:00
Ben McCann
9d072b5f55 fix: update lodash calls (#6996) 2024-02-09 11:03:17 -05:00
Jonathan Jogenfors
b67fddf4b8 fix(web): Handle duplicate library settings gracefully (#6950)
* don't add duplicate import paths

* improve library import paths form

* same for exclusion patterns

* remove newline
2024-02-09 00:09:09 +00:00
Jason Rasmussen
90a7f16817 chore(server): remove deprecated endpoints (#6984)
* chore: remove deprecated endpoints

* chore: open api
2024-02-08 16:57:54 -05:00
Manas Adepu
198e8517e5 fix(server): use luxon for deleted date calculation (#6958)
* luxon implementation

* chore: simplify

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-08 16:56:19 -05:00
Jason Rasmussen
bd1fa9377b refactor(server): asset core (#6985)
refactor: asset core
2024-02-08 16:56:06 -05:00
Alex
5088acda10 chore: add repo activity to readme (#6982)
chore: add repo acvitity to readme
2024-02-08 14:00:21 -06:00
Jonathan Jogenfors
36477d59c4 chore(cli): publish docker image on ghcr (#6964)
* build(cli): Docker release workflow

* build(cli): Run jobs for main/PR pushes

* chore(ci): Rename cli build workflow

* chore(ci): Fix CLI build event paths

* chore(ci): CLI build cleanup

* build(cli): Fix build-push-action dockerfile ref

* chore: Remove redundant comment

* build(cli): Fix registry login step

* build(cli): Manually define latest tag

* build(cli): Only push on workflow_dispatch

* build(cli): Run docker release after NPM publish

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-02-08 11:26:24 -05:00
Ben McCann
b273ea2ba4 chore: setup rollup-plugin-visualizer and remove lodash (#6974)
* chore: setup rollup-plugin-visualizer

* chore: remove lodash

* format

* remove lodash-es from build
2024-02-08 02:27:54 -05:00
Lukas
abb6922c2b fix: set default thumbnail aspect ratio to square (#6970) 2024-02-08 04:15:51 +00:00
martyfuhry
69091e5309 feat(mobile): Videos play in memories now (#6940)
* Videos play in memories now

Remove auto video advance

* to next asset after video is done playing

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-08 04:07:50 +00:00
martyfuhry
0d876a470f feat(mobile): Adds WiFi only backup option to iOS (#6724)
Adds WiFi only backup option to iOS

Co-authored-by: Marty Fuhry <marty@fuhry.farm>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-07 21:54:54 -06:00
shenlong
e0864768c2 refactor(mobile): map heatmap color and location picker (#6553)
* refactor(mobile): make location picker scaffold primary

* chore(mobile): update map heatmap colors

* style(mobile): map bottomsheet - only use borders on top

* fix(mobile): location picker show buttons above navigation bar

* fix: crash on iOS due to heatmap invalid color format

* disable rotate

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-02-08 03:07:43 +00:00
Lukas
2010c92b61 docs: fix web development setup instructions (#6969) 2024-02-08 02:59:39 +00:00
Mert
b74c84e771 fix(docs): add cuda tag to ml hwaccel example (#6972)
add `-cuda`
2024-02-07 20:58:39 -06:00
shenlong
de3ded9db0 chore(dep): add intl to ignoreDeps and remove unused packages (#6967)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-02-07 21:59:48 +01:00
Jan
4ea15a5b0c fix(server): check if sidecarPath exists (#6293)
* check if sidecarPath exists

* Revert "check if sidecarPath exists"

This reverts commit 954a1097b870585afee34974d466e51c5172fed9.

* sidecar sync remove dead sidecarPaths and discover new ones

* tests and minor cleanup

* chore: linting

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-07 17:30:38 +00:00
dependabot[bot]
cab79c04d3 chore(deps): bump stumpylog/image-cleaner-action from 0.4.0 to 0.5.0 (#6965)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.4.0...v0.5.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-07 11:57:36 -05:00
Mert
b31c7681ae feat(server): optimize face re-queueing (#6961)
* do not defer faces with no matches

* move comment
2024-02-07 09:56:39 -06:00
renovate[bot]
479fca8f02 chore(deps): pin tensorchord/pgvecto-rs docker tag to 9072418 (#6960)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-07 02:51:22 +00:00
Mert
56b0643890 feat(server)!: pgvecto.rs 0.2 and pgvector compatibility (#6785)
* basic changes

update version check

set ef_search for clip

* pgvector compatibility

Revert "pgvector compatibility"

This reverts commit 2b66a52aa4097dd27da58138c5288fd87cb9b24a.

pgvector compatibility: minimal edition

pgvector startup check

* update extension at startup

* wording

shortened vector extension variable name

* nightly docker

* fixed version checks

* update tests

add tests for updating extension

remove unnecessary check

* simplify `getRuntimeConfig`

* wording

* reindex on minor version update

* 0.2 upgrade testing

update prod compose

* acquire lock for init

* wip vector down on shutdown

* use upgrade helper

* update image tag

* refine restart check

check error message

* test reindex

testing

upstream fix

formatting

fixed reindexing

* use enum in signature

* fix tests

remove unused code

* add reindexing tests

* update to official 0.2

remove alpha from version name

* add warning test if restart required

* update test image to 0.2.0

* linting and test cleanup

* formatting

* update sql

* wording

* handle setting search path for new and existing databases

* handle new db in reindex check

* fix post-update reindexing

* get dim size

* formatting

* use vbase

* handle different db name

* update sql

* linting

* fix suggested env
2024-02-06 21:46:38 -05:00
renovate[bot]
b2775c445a chore(deps): update @immich/cli (#6951)
* chore(deps): update @immich/cli

* bumpy

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2024-02-06 22:54:36 +00:00
renovate[bot]
f80af067bf chore(deps): update dependency eslint-plugin-unicorn to v51 (#6952)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 23:53:55 +01:00
renovate[bot]
d88ca5fb2a chore(deps): update server (#6930)
* chore(deps): update server

* chore: generate sql

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-02-06 22:06:02 +00:00
renovate[bot]
8c60c21fe0 chore(deps): update web (#6933)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 17:05:23 -05:00
Michael Manganiello
4164bcfd0d chore(server): Use ChunkedSet in Access repository (#6943)
This change simplifies the Access repository methods, by using the
`ChunkedSet` decorator. As the methods expect sets, the `chunks` util
needed to be fixed, so it returns chunks of the same type it received.

Now `chunks` is overloaded, to have proper typing based on the input
parameter.
2024-02-06 17:03:25 -05:00
renovate[bot]
61768ce89e chore(deps): update base-image to v20240206 (major) (#6942)
chore(deps): update base-image to v20240206

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 17:01:07 -05:00
Daniel Dietzler
3092a72ac5 chore(web): remove maplibre dependency (#6948)
remove maplibre dependency
2024-02-06 15:30:52 -06:00
renovate[bot]
1a644dbc07 chore(deps): update dependency @types/node to v20.11.16 (#6947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 21:19:21 +01:00
renovate[bot]
2d9b9aac4e chore(deps): update dependency @types/node to v20.11.16 (#6946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 21:19:09 +01:00
Arumugam Jeganathan
16e85af564 Update command-line-interface.md (#6944)
A typo in the command
2024-02-06 18:33:00 +01:00
Ben McCann
0169707c85 chore: build API with esnext target (#6926) 2024-02-06 14:24:52 +01:00
renovate[bot]
bb3f8727a3 chore(deps): update dependency @types/node to v20.11.15 (#6929)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 12:25:06 +01:00
renovate[bot]
f7d0a8ed0a fix(deps): update dependency fastapi to v0.109.1 [security] (#6923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 12:21:24 +01:00
Jonathan Jogenfors
31eb4790dc feat(cli): dockerize (#6858)
* import dockerfile from old cli

* build works

* rename login command

* bump packages

* fix login command

* chore: remove axios dependency from CLI

* move immich script path

* can build docker

* wip

* wip

* don't externalize sdk

* can run docker

* improve entrypoint

* can save auth state between runs

* add docs

* clarify reqs

* fix lint

* bump alpine to 3.19

* add env files for api key

* remove immich cli GHA for now

* Update docs/docs/features/command-line-interface.md

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* remove redundant env variable check

* cleanup

* speling

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
2024-02-06 12:17:15 +01:00
renovate[bot]
9b3764dbcf chore(deps): update @immich/cli (#6928)
* chore(deps): update @immich/cli

* npm install

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2024-02-06 10:10:37 +00:00
Jonathan Jogenfors
755444e9a4 chore(cli): use upload api and update documentation (#6927)
* use fetch api

* bump version

* add documentation

* revert to using file blob
2024-02-06 11:00:35 +01:00
Jonathan Jogenfors
ce6dc3b7af fix(cli): auth file should be chmod 600 (#6925)
* wip new tests

* test for auth file mode

* check perms internally

* chore: lint
2024-02-06 00:40:22 +01:00
Ben McCann
6ed33da2a4 chore: remove axios dependency from CLI (#6888) 2024-02-05 20:29:00 +01:00
martyfuhry
c29976cd6f feat(mobile): Memories activity is now full screen, better image fit, adds progress indicator (#6793)
* Made memories full screen

* Uses linear bar and fits the card better for memories

* Fixes pageview close button moving with pages

* Uses hooks instead of stateful components

* Adds ticks to the progress indicator

* Rounds the edges of the progress bar

* Fixes trailing comma analyze error

* Adds padding and hero to memories

* Fixes an issue with initial index set and adds hero / proper padding

* Fixes aspect ratio calculation

* Color

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-02-05 19:12:33 +00:00
martyfuhry
f6b4024a21 feat(mobile): Adds show password field to login (#6918)
Adds show password field to login
2024-02-05 09:11:30 -06:00
bo0tzz
8e4bf30424 chore(docs): Small FAQ tweaks and nits (#6880)
* chore(docs): Small FAQ tweaks and nits

* chore: format:fix
2024-02-04 22:30:29 -05:00
shenlong
1d93889920 fix(mobile): debounce map layer update (#6861)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-02-04 21:07:08 -06:00
Emanuel Bennici
f4ab5d3ff7 feat(mobile): Add haptic feedback to asset grid (#5344)
Add a haptic feedback when jumping from one month to another in the
asset grid view.
The feedback is similar to the one implemented in the Google Photos app.
2024-02-04 21:02:51 -06:00
rovo89
5061c35c8d feat(mobile): Add support for Basic Authentication (#6840) 2024-02-04 14:35:13 -06:00
Ben McCann
b4c211cad1 fix: bundle CLI with Vite (#6893)
* fix: bundle CLI with Vite

* bundle dependencies as well

* remove unused dependencies
2024-02-03 21:39:01 -06:00
Mert
329659b2fb docs(ml,server): updated hwaccel docs (#6878) 2024-02-03 09:11:53 -05:00
Ben McCann
a4cfb51df5 chore: remove form-data dependency (#6876)
chore: remove form-data dependency
2024-02-03 00:44:53 -05:00
Mert
79d3342c3d fix(ml): openvino not working with dynamic axes (#6871)
* convert to static

* add comment about gross code

* formatting

* fixed test

* fix typing

* cleanup

* formatting

* Revert "formatting"

This reverts commit 073965c47e.

* Revert "cleanup"

This reverts commit bb56bd3297.

* formatting
2024-02-03 05:35:26 +00:00
Alex
b768eef44d fix(server): extract duration from video as ISO time (#6863)
* fix(server): extract duration from video as ISO time

* feedback and add test

* fix test
2024-02-02 14:58:13 -06:00
Alex
2d278d9ab8 feat(web): search filter form (#6651)
* refactor: search history box

* filter box component

* start adding forms

* styling

* combo box

* styling

* media types

* album option

* update

* Updated

* refactor: search history box

* filter box component

* start adding forms

* styling

* combo box

* styling

* media types

* album option

* update

* Updated

* Version v1.94.0

* Add people

* add select even for combobox

* Remove unused data

* remove unused code

* remove unused code
2024-02-02 13:30:40 -06:00
Daniel Dietzler
d3404f927c feat(server)!: oauth encryption algorithm setting (#6818)
* feat: add oauth signing algorithm setting

* chore: open api

* chore: change default to RS256

* feat: test and clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-02 00:27:54 -05:00
renovate[bot]
8a643e5e48 chore(deps): update redis:6.2-alpine docker digest to 51d6c56 (#6782)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-01 22:20:38 -05:00
renovate[bot]
b87a6abb2c fix(deps): update server (#6769)
fix(deps): update dependency @babel/runtime to v7.23.9

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-01 22:20:16 -05:00
Jonathan Jogenfors
f44fa45aa0 chore(server,cli,web): housekeeping and stricter code style (#6751)
* add unicorn to eslint

* fix lint errors for cli

* fix merge

* fix album name extraction

* Update cli/src/commands/upload.command.ts

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* es2k23

* use lowercase os

* return undefined album name

* fix bug in asset response dto

* auto fix issues

* fix server code style

* es2022 and formatting

* fix compilation error

* fix test

* fix config load

* fix last lint errors

* set string type

* bump ts

* start work on web

* web formatting

* Fix UUIDParamDto as UUIDParamDto

* fix library service lint

* fix web errors

* fix errors

* formatting

* wip

* lints fixed

* web can now start

* alphabetical package json

* rename error

* chore: clean up

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-01 22:18:00 -05:00
Andrew Roberts
e4d0560d49 feat(web): improved album view UI & album card UI (#6822)
* Modified album card to show gray background instead of purple outline on hover

* Expanded margins in album viewer

* Applied prettier to modified files
2024-02-01 20:50:14 -06:00
Ben McCann
a8dcfe4bd2 chore: simplify API build (#6841) 2024-02-01 17:55:21 -05:00
Andrew Roberts
606147be43 fix(web): Admin Settings banner/scrolling issue (#6839)
* Fixed settings page sizing causing scroll behavior when config message present

* Applied prettier to modified page
2024-02-01 21:05:30 +00:00
mmomjian
81cf653752 docs: provide details on storage engine album naming (#6812)
* Update _storage-template.md

* Update _storage-template.md
2024-01-31 22:28:30 -05:00
Mert
efdbe790ee docs(ml): hardware acceleration (#6821) 2024-01-31 19:12:57 -06:00
Alex
ada3eeb777 chore: post release tasks 2024-01-31 16:52:48 -06:00
Alex
7a6ec8b0b5 fix(mobile): video player shows black screen (#6819)
fix(mobile): video player show black screen
2024-01-31 16:38:32 -06:00
Alex The Bot
07466fa7b7 Version v1.94.1 2024-01-31 19:21:00 +00:00
Jason Rasmussen
7a075d78a3 fix(web): oauth login (#6813) 2024-01-31 19:18:40 +00:00
Alex
d2c2db2595 chore: post release tasks 2024-01-31 12:53:56 -06:00
Alex
0b5e138b1b Merge branch 'main' of github.com:immich-app/immich 2024-01-31 12:53:40 -06:00
Jason Rasmussen
b7a372c756 chore: release group labels (#6805) 2024-01-31 12:10:26 -05:00
Alex The Bot
d4c000cb5a Version v1.94.0 2024-01-31 17:01:33 +00:00
Jason Rasmussen
b0d7434e7b fix: library watching (#6802) 2024-01-31 11:26:51 -05:00
Alex The Bot
a7ed2b7132 Version v1.94.0 2024-01-31 15:41:53 +00:00
Jonathan Jogenfors
c083636c51 docs: update milestones (#6787)
* fix zero index

* fix day

* docs: add gpu acceleration milestone

---------

Co-authored-by: martabal <74269598+martabal@users.noreply.github.com>
2024-01-31 07:01:53 -05:00
Jonathan Jogenfors
068e703e88 feat(server): Automatic watching of library folders (#6192)
* feat: initial watch support

* allow offline files

* chore: ignore query errors when resetting e2e db

* revert db query

* add savepoint

* guard the user query

* chore: openapi and db migration

* wip

* support multiple libraries

* fix tests

* wip

* can now cleanup chokidar watchers

* fix unit tests

* add library watch queue

* add missing init from merge

* wip

* can now filter file extensions

* remove watch api from non job client

* Fix e2e test

* watch library with updated import path and exclusion pattern

* add library watch frontend ui

* case sensitive watching extensions

* can auto watch libraries

* move watcher e2e tests to separate file

* don't watch libraries from a queue

* use event emitters

* shorten e2e test timeout

* refactor chokidar code to filesystem provider

* expose chokidar parameters to config file

* fix storage mock

* set default config for library watching

* add fs provider mocks

* cleanup

* add more unit tests for watcher

* chore: fix format + sql

* add more tests

* move unwatch feature back to library service

* add file event unit tests

* chore: formatting

* add documentation

* fix e2e tests

* chore: fix e2e tests

* fix library updating

* test cleanup

* fix typo

* cleanup

* fixing as per pr comments

* reduce library watch config file

* update storage config and mocks

* move negative event tests to unit tests

* fix library watcher e2e

* make watch configuration global

* remove the feature flag

* refactor watcher teardown

* fix microservices init

* centralize asset scan job queue

* improve docs

* add more tests

* chore: open api

* initialize app service

* fix docs

* fix library watch feature flag

* Update docs/docs/features/libraries.md

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

* fix: import right app service

* don't be truthy

* fix test speling

* stricter library update tests

* move fs watcher mock to external file

* subscribe to config changes

* docker does not need polling

* make library watch() private

* feat: add configuration ui

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 08:15:54 +00:00
Ben McCann
4079e92bbf chore: drop CJS build from API (#6783) 2024-01-30 20:59:00 -05:00
Markus
87c38d1832 feat(server, web): Added TranscodePolicy "Bitrate higher than max bitrate or not in accepted format" (#6479)
* chore: rebase

* chore: open api

* Add Database-Migration for setting targetCodec as acceptedCodec if it was set by admin

* Add TranscodePolicy setting, to only transcode files with a bitrate higher than set max bitrate

* Rename enum value of TranscodePolicy

* calculate max_bitrate according to "k" and "m" suffix for comparison

* remove migration

* minor changes

* UnitTest for Bitrate Policy

* Fix UnitTest

* Add missing output options

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-01-30 20:25:07 -05:00
martyfuhry
149bc71eba feat(mobile): Add end page to the end to memories (#6780)
* Adding memory epilogue card

* Adds epilogue page to memories

* Fixes a next / back issue

* color

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-01-30 17:47:47 -06:00
Ben McCann
9c7dee8551 chore: migrate CLI to ESM and vitest (#6777)
* chore: migrate CLI to ESM and vitest

* fix lint

* update github workflow

* format
2024-01-30 18:23:33 -05:00
martin
1bfef200a5 fix(server): avoid leaking people data on shared links (#6779)
* fix: avoid leaking people data on shared links

* test: add e2e test
2024-01-30 15:34:00 -06:00
Alex Tran
e90d3a169c fix(docs): formatting 2024-01-30 13:45:18 -06:00
Alex Tran
102b5bedea fix(docs): formatting 2024-01-30 13:32:25 -06:00
mmomjian
b4d5f14e13 Document how to prevent HTML entity escaping. (#6773)
* Update _storage-template.md

* Update _storage-template.md
2024-01-30 13:30:58 -06:00
renovate[bot]
1461656f03 chore(deps): update dependency @sveltejs/kit to v2.5.0 (#6776)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-30 13:30:01 -06:00
Alex
e5bfe22cf1 chore(devops): use new MacOS runner (#6774)
* chore(devops): use new MacOS runner

* Up java version
2024-01-30 13:29:31 -06:00
Alex
33bf7d5d8b Localizely: Translations update (#6772)
chore(mobile): translation update
2024-01-30 13:29:12 -06:00
martyfuhry
8864d07782 chore(mobile): Corrects FVM gitignore and sets Flutter version to 3.16.9 (#6775)
Corrects FVM gitignore and sets Flutter version to 3.16.9
2024-01-30 13:28:55 -06:00
mmomjian
417a35189d docs: add FAQ for duplicate primary key errors (#6763)
* Update FAQ.mdx

* Update FAQ.mdx
2024-01-30 18:45:31 +00:00
Alex
97cd91749c fix(mobile): FR translation (#6771) 2024-01-30 12:01:03 -06:00
martin
7a1f25b515 feat(web): add warning when setting a quota superior to the disk size (#6737)
* refactor: inline warning

* fix: do not use onmount

* chore: remove outdated comment

* wording

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-30 17:21:45 +00:00
renovate[bot]
4290a29107 chore(deps): update base-image to v20240130 (major) (#6756)
chore(deps): update base-image to v20240130

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-30 09:24:44 -06:00
Alex
9e1d358168 fix(mobile): blurry memory photos (#6734)
* fix(mobile): blurry memory photos

* better naming and performance
2024-01-30 09:24:31 -06:00
renovate[bot]
dd9b08dafe chore(deps): update dependency @faker-js/faker to v8.4.0 (#6758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-30 09:49:34 -05:00
renovate[bot]
40e14fc272 fix(deps): update dependency geo-tz to v8.0.1 (#6750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-30 08:03:23 -05:00
renovate[bot]
fdf4ee193f chore(deps): update redis:6.2-alpine docker digest to afb290a (#6708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-30 07:57:47 -05:00
Jonathan Jogenfors
f6afb23d56 docs(server): Fix glob pattern in library exclusions (#6752)
fix glob pattern in library exclusions
2024-01-30 07:57:22 -05:00
Jason Rasmussen
64da2c1698 refactor(cli): organize files, simplify types, use @immich/sdk (#6747) 2024-01-30 07:55:34 -05:00
renovate[bot]
64fad67713 chore(deps): update web (#6746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-29 22:34:09 -05:00
renovate[bot]
1231d621c4 chore(deps): update server (#6744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-29 20:58:19 -05:00
renovate[bot]
d1ae46eba9 chore(deps): update @immich/cli (#6741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-29 20:57:56 -05:00
Ben McCann
a7e01bc3fe docs: fix typo (#6739) 2024-01-29 20:57:28 -05:00
renovate[bot]
2bcba526df fix(deps): update machine-learning (#6745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-29 20:43:14 -05:00
t4keda
76f8d030ce added a configuration option to select the dri node in transcoding (#6376)
* added a configuration option to select the dri node in transcoding

* chore: open api

* refactor: get hawrdware device

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-29 20:40:02 -05:00
renovate[bot]
68f8525eb1 chore(deps): update dependency @types/node to v20.11.6 (#6742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-29 20:15:24 -05:00
Jason Rasmussen
a162af0e70 docs: fix broken link (#6735) 2024-01-29 22:09:33 +00:00
Jason Rasmussen
6dca47c629 refactor: no experimental vm modules (#6719) 2024-01-29 09:11:02 -06:00
Daniel Dietzler
0af839889b docs: use organization support link in README (#6722)
orga support link in README
2024-01-29 09:10:33 -06:00
Mert
ae7f174948 refactor: rename clip -> smart search (#6713) 2024-01-29 09:51:22 -05:00
Mert
e5a70329c9 fix(server): HEVC videos not playing on Apple devices (#6712)
* add hvc1 tag

* formatting
2024-01-28 21:17:20 -05:00
Mert
0770ad15e5 fix(server): do not process faces of deleted assets (#6710)
* return if asset is not found

* add unit test

* formatting
2024-01-29 01:17:54 +00:00
Mert
28806d03e3 fix(server): fix person pagination when deleting (#6707)
fix person delete pagination
2024-01-28 17:02:01 -05:00
Mert
f52994e8ca fix(ml): model paths not working (#6705)
* fix str enum string repr

* fixed typing
2024-01-28 20:54:33 +00:00
renovate[bot]
be55396086 chore(deps): update redis:6.2-alpine docker digest to e37f165 (#6693)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-28 14:07:49 -06:00
Mert
a84b6f5fb1 feat(ml): conditionally download .armnn models (#6650) 2024-01-28 10:31:59 -05:00
martin
fa0913120d feat(web,server): search people (#5703)
* feat: search peoples

* fix: responsive design

* use existing count

* generate sql file

* fix: tests

* remove visible people

* fix: merge, hide...

* use component

* fix: linter

* chore: regenerate api

* fix: change name when searching for a face

* save search

* remove duplicate

* use enums for query parameters

* fix: increase to 20 for the local search

* use constants

* simplify

* fix: number of people more visible

* fix: merge

* fix: search

* fix: loading spinner position

* pr feedback
2024-01-27 19:54:31 -05:00
Mert
2249f7d42a fix(ml): handle missing context_length field (#6695)
* handle missing `context_length` field

* specify list type
2024-01-27 19:50:50 -05:00
Giuseppe Speranza
e2ac019f51 Fixed errors regarding the installation script (#6644)
install.sh: fix bash error

Error 1:
./install.sh: 26: [[: not found

Error 2:
docker: 'compose' is not a docker command.

Signed-off-by: Peppe289 <gsperanza204@protonmail.com>
2024-01-27 19:50:12 -05:00
Daniel Dietzler
e9333837bf chore(server): use fs to read package.json (#6692)
use fs readsync instead of js import for reading package json
2024-01-27 17:39:33 -05:00
Emanuel Bennici
9422359b51 fix(mobile): Fix single element archiving (#6668) 2024-01-27 18:57:51 +00:00
Zack Pollard
25cad79657 refactor: move asset stacks to their own entity (#6353)
* feat: auto-stack burst photos

* feat: move stacks to asset stack entity

* chore: pin node version with volta in server

* chore: update e2e cases

* chore: cleanup

* feat: migrate existing stacks

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-27 18:52:14 +00:00
Michael Lyon
c4b8c853bc feat(wip): add Combobox component for timezone picker (#6154)
* add initial Combobox

* add basic input to Combobox

* add search functionality

* adjust styling

* add Combobox icon and adjust styling

* styling

* refactored

* refactored

* better display of timezone

* fix: clicks

* fix: eslint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-27 18:36:40 +00:00
AxGD
64ab09bbb6 Update fr-FR.json (#6633)
* Update fr-FR.json

* Update fr-FR.json

commit after the feedback from @martabal

* Update fr-FR.json

some mistakes in the previous commit
2024-01-27 18:17:27 +00:00
Ben McCann
5cec8d1c63 chore: remove unused test util methods (#6689)
* chore: remove unused test util methods

* format
2024-01-27 12:27:55 -05:00
renovate[bot]
7404688622 chore(deps): update redis:6.2-alpine docker digest to 60727c1 (#6688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-27 11:54:49 -05:00
shenlong
27488ceb67 deps(mobile): flutter 3.16 (#6677)
* dep(mobile): update flutter and deps

* chore: dart analyzer

* chore: update flutter workflow version

* chore: dart format

* fix: gallery_viewer PopScope

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-27 10:14:32 -06:00
renovate[bot]
0522058fdf chore(deps): update redis:6.2-alpine docker digest to 201502e (#6684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-27 08:41:18 -05:00
debricked[bot]
70aeb82c5d fix(deps) CVE–2023–45857 (bump axios) (#6665)
* fix(deps) CVE–2023–45857

* bump axios in docs

---------

Co-authored-by: debricked[bot] <47180885+debricked[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2024-01-26 19:26:31 -05:00
Emanuel Bennici
77f11e3ae5 feat(web): places page (#6669)
Add a place overview page, like the "People" page.
This adds the same functionality as available on mobile.
2024-01-26 13:11:54 -05:00
Markus
8aef92affc feat(server, web): accepted codecs (#6460)
* chore: rebase

* chore: open api

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-26 12:02:56 -05:00
Jason Rasmussen
96b7885583 refactor(server): trash endpoints (#6652)
* refactor(server): trash endpoints

* chore: open api

* chore: fix wrong rename
2024-01-26 11:48:37 -05:00
Jonathan Jogenfors
33757689fe fix(deps) bump msgpackr (#6673)
bump msgpackr
2024-01-26 16:41:12 +00:00
Jason Rasmussen
2e39243670 deps: open-api generator (#6655)
* deps: open-api generator

* fix: unused sed/replace
2024-01-26 11:40:28 -05:00
Jonathan Jogenfors
78a2fa8569 fix(deps): bump lodash (#6672)
bump lodash
2024-01-26 11:39:47 -05:00
Jonathan Jogenfors
0d3929f732 fix(deps) bump marked to 11.1.1 (#6670)
bump marked to 11.1.1
2024-01-26 11:32:01 -05:00
Jonathan Jogenfors
2d0db5d0f2 fix(deps) CVE-2022-25883 (#6667)
fix CVE-2022-25883
2024-01-26 09:24:35 -06:00
debricked[bot]
33b3b8093e fix(deps) CVE–2022–25887 (#6664)
* fix(deps) CVE–2022–25887

* bump version

---------

Co-authored-by: debricked[bot] <47180885+debricked[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2024-01-26 10:00:43 -05:00
debricked[bot]
48fd64af56 fix(deps) CVE–2021–43138 (#6662)
* Fix CVE–2021–43138

* bump async

---------

Co-authored-by: debricked[bot] <47180885+debricked[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2024-01-26 10:00:17 -05:00
Jason Rasmussen
7ea55c7236 refactor(server): download endpoints (#6653)
* refactor(server): download controller

* chore: open api

* chore: fix mobile references
2024-01-26 08:19:13 -06:00
martin
de47a6a330 fix(web): feature photo not changing in the edit name component (#6663)
* fix: feature photo not changing in the edit name component

* fix: linter
2024-01-26 14:08:54 +00:00
debricked[bot]
741ce04e7f Fix CVE–2023–45133 (#6661)
Co-authored-by: debricked[bot] <47180885+debricked[bot]@users.noreply.github.com>
2024-01-26 07:54:12 -06:00
Ben McCann
6b011b9de0 chore: remove unused packages (#6654) 2024-01-26 00:32:29 -05:00
Ben McCann
84f8a4ac3b chore(open-api): remove no-op patch (#6649)
* chore: remove no-op patch

* address code review
2024-01-25 23:50:48 -05:00
renovate[bot]
ae4229b172 chore(deps): update base-image to v20240125 (major) (#6637)
chore(deps): update base-image to v20240125

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-25 20:59:47 -06:00
Ben McCann
2fff9071c9 chore: fix typo in generate-open-api.sh (#6648) 2024-01-26 01:11:12 +00:00
Mert
ca28e1e7a8 fix(ml): error logging (#6646)
* fix ml error logging

* exclude certain libraries from traceback
2024-01-26 00:26:27 +00:00
Jason Rasmussen
b306cf564e refactor(server): move asset detail endpoint to new controller (#6636)
* refactor(server): move asset by id to new controller

* chore: open api

* refactor: more consolidation

* refactor: asset service
2024-01-25 12:52:21 -05:00
aviv926
19d4c5e9f7 docs: Update documentation (#6430)
* Documentation corrections

* fix import

* add firewall note

* npm run format:fix

* fixs

* npm run format:fix

* space

* fix note

* admin-jobs.png image update + fixes

* Storage Template.md update

* Add new Troubleshooting about symbolic link in library

* Updating the libraries.md

* Updating the libraries.md

* Corrections

* add `/`

* ...

* Add Python script to remove-offline-files.md

* npm run format:fix

* Add info about HDR in FAQ

* My wrong merge

* add info about symlink

* [Community] + PowerShell

* add 360 photo support to Features in README

* add info about remote ML and info about orphaned files from the external library to the scripts page

* Typo

* add note about storage locations

* add info about Purge for portainer and link to info about asset types and storage locations

* npm run format:fix

* Add FAQ about "faces" that aren't faces

* Update docs/docs/administration/backup-and-restore.md

* Update docs/docs/administration/backup-and-restore.md

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-25 17:17:38 +00:00
Mohamed BOUSSAID
4eca2b0f34 feat(web): include timestamp in download filename (#5878)
* Blocking multiple downloads

* Blocking the download based on file name and not download type

* Fixing failing workflow

* Make sure the uniqueDownloadId is unique even if the selecting order is different

* Using DateTime from luxon & convering the case of downloading an album

* Fixing typo in the warning.

* Covering the case where tha list of assets is to big

* Fix format

* Fix format

* Fix format

* Undo block multi-downloads

* Running format:fix

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-25 12:14:02 -05:00
Alex
64e299ba9b fix(mobile): skip tests using mock http client to make actual network request (#6642) 2024-01-25 10:57:11 -06:00
Jason Rasmussen
7fc4abba72 feat(server): sql access checks (#6635) 2024-01-25 10:14:38 -05:00
Mert
bd87eb309c feat(server): optimize partial facial recognition (#6634)
* optimize partial facial recognition

* add tests

* use map

* bulk insert faces
2024-01-25 01:27:39 -05:00
Jason Rasmussen
852effa998 refactor(server): e2e (#6632) 2024-01-24 17:24:53 -05:00
renovate[bot]
4424f3cb13 fix(deps): update exiftool (#6586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-24 11:01:46 -05:00
renovate[bot]
3e5448af13 chore(deps): update dependency @sveltejs/kit to v2.4.3 [security] (#6628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-24 10:51:09 -05:00
Lenart Kos
5f051e3104 docs: add reverse proxy configuration for Apache (#6625) 2024-01-24 10:11:36 -05:00
martin
965281346f fix(web): merging people when renaming (#6608)
fix: merging people when renaming
2024-01-23 23:26:40 -06:00
shenlong
3ae10c75fb fix(mobile): es-US pluralization (#6612)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-23 23:26:23 -06:00
renovate[bot]
1c35110806 fix(deps): update dependency orjson to v3.9.12 (#6600) 2024-01-23 18:10:10 -05:00
renovate[bot]
160366c5c1 fix(deps): update server (#6588)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-23 18:06:23 -05:00
Jason Rasmussen
bf64e64328 chore(server): remove unused dependency (#6606) 2024-01-23 17:50:39 -05:00
Jason Rasmussen
d801131f38 fix(docs): search (#6605) 2024-01-23 17:50:25 -05:00
Jason Rasmussen
61bb52ac11 docs: diff highlighting (#6604) 2024-01-23 18:51:02 +00:00
sybenx
4fa7005a24 spelling of "recommend" - Update command-line-interface.md (#6603) 2024-01-23 17:09:32 +00:00
renovate[bot]
7e84cd62a1 fix(deps): update dependency svelte-maplibre to v0.7.6 (#6591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-23 10:13:09 -06:00
martin
74f1000e83 fix(web): statusbox re-rendering and nav bar when trashing assets (#6581)
* fix: issues on web

* fix: description in shared album

* fix: remove unused api request

* revert

* fix: linter
2024-01-23 00:30:22 -06:00
renovate[bot]
f97f23d149 chore(deps): update dependency @sveltejs/kit to v2.3.5 (#6590)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-23 00:25:14 -06:00
Jason Rasmussen
a00768c9e5 chore(server): remove old device id endpoint (#6578)
* chore: remove old endpoint

* chore: open api

* chore: remove old tests
2024-01-22 20:54:53 -06:00
martin
234a95960b fix(web): revert descriptions (#6582)
fix: revert descriptions
2024-01-22 20:53:56 -06:00
renovate[bot]
773d093ace fix(deps): update server (#6587)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-23 02:00:29 +00:00
renovate[bot]
acf83bd678 chore(deps): update @immich/cli (#6585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 20:57:57 -05:00
renovate[bot]
1490e6c1ec chore(deps): update web (#6584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 20:53:42 -05:00
Aram Akhavan
a972dd4060 fix(server): extraction of Samsung Motionphoto videos (#6337)
* Fix extraction of samsung motionphoto videos

* Refactor binary tag extraction to the repository to consolidate exiftool usage

* format

* fix linting and swap argument orders

* Fix tag name and conditional order

* Add unit test

* Update server test assets submodule

* Remove old motion photo video assets when a new one is extracted

* delete first, then write

* Include motion photo asset uuid's in the filename

If the filenames are not uniquified, then we can't delete old/corrupt ones

* Fix formatting and fix/add tests

* chore: only use new uuid

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-22 13:04:45 -05:00
Jason Rasmussen
7b314f9435 chore(server): sort open api params (#6484)
* chore: sort spec

* chore: open api

* chore(mobile): sort auditDeletes params

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-22 11:49:51 -05:00
Jason Rasmussen
bd2dbb4944 fix(web): always use websocket transport (#6564) 2024-01-22 11:37:00 -05:00
Jason Rasmussen
a8efbc6772 deps: update renovate groups and schedule (#6579) 2024-01-22 16:09:48 +00:00
renovate[bot]
7b6fb2b206 chore(deps): update dependency @types/node to v20.11.5 (#6546)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 11:08:32 -05:00
renovate[bot]
871d0c725f chore(deps): pin dependencies (#6436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 11:08:00 -05:00
renovate[bot]
e6f260c70f chore(deps): update base-image to v20240118 (major) (#6473)
chore(deps): update base-image to v20240118

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 11:07:35 -05:00
Jason Rasmussen
42d208859e fix(web): auto generate open api build (#6561)
* fix: autogen typescript-sdk/build

* chore: refactor script
2024-01-22 09:59:35 -06:00
Jason Rasmussen
e4277128be chore: remove unused files and references (#6562) 2024-01-21 22:57:37 -06:00
martin
3845fec280 refactor(web): descriptions (#6517)
* refactor: reusable autogrow

* fix: remove useless autogrow

* fix: correct size for album description

* fix: format

* fix: move to own file

* refactor: album description

* refactor: asset description

* simplify

* fix: style when no description provided

* fix: switching assets

* feat: update description with ctrl + enter

* fix: variable name

* fix: styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-21 22:47:55 -06:00
Mert
95cfe22866 feat(ml)!: cuda and openvino acceleration (#5619)
* cuda and openvino ep, refactor, update dockerfile

* updated workflow

* typing fixes

* added tests

* updated ml test gh action

* updated README

* updated docker-compose

* added compute to hwaccel.yml

* updated gh matrix

updated gh matrix

updated gh matrix

updated gh matrix

updated gh matrix

give up

* remove cuda/arm64 build

* add hwaccel image tags to docker-compose

* remove unnecessary quotes

* add suffix to git tag

* fixed kwargs in base model

* armnn ld_library_path

* update pyproject.toml

* add armnn workflow

* formatting

* consolidate hwaccel files, update docker compose

* update hw transcoding docs

* add ml hwaccel docs

* update dev and prod docker-compose

* added armnn prerequisite docs

* support 3.10

* updated docker-compose comments

* formatting

* test coverage

* don't set arena extend strategy for openvino

* working openvino

* formatting

* fix dockerfile

* added type annotation

* add wsl configuration for openvino

* updated lock file

* copy python3

* comment out extends section

* fix platforms

* simplify workflow suffix tagging

* simplify aio transcoding doc

* update docs and workflow for `hwaccel.yml` change

* revert docs
2024-01-21 18:22:39 -05:00
Aram Akhavan
6b419a984c doc: developer setup docs (#6557) 2024-01-21 22:32:01 +00:00
Alex
b34a808fbb feat(mobile): Add Slovenian (#6558) 2024-01-21 16:27:54 -06:00
Daniel Dietzler
607fd39130 fix(server): only calculate quota usage for internal assets (#6556)
only calculate usage for internal assets
2024-01-21 15:48:29 -06:00
Mert
311261bd4e fix(server): disable sharp file caching (#6542)
don't cache files
2024-01-20 23:10:14 -05:00
renovate[bot]
4d417019c0 chore(deps): update dependency @types/node to v20.11.3 (#6533)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-20 19:48:21 -05:00
Mert
c8b33c00ec fix(server): use crf-based two pass for vp9 if max bitrate is disabled (#6535)
use crf-based two pass for vp9 if max bitrate is disabled
2024-01-20 15:05:08 -05:00
renovate[bot]
a9dc16ea6b chore(deps): update dependency vite to v5.0.12 [security] (#6526)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-20 13:52:58 -05:00
Guillermo
2c783b710e feat(web) dismiss user management modals on escape (#6530)
Other modals throughout the web app close when the user
presses the escape key, clicks outside the modal, or on
the close button. Modals from the user management page
missed the escape key functionality. This change makes
the behavior more consistent across all views.
2024-01-20 12:49:16 -06:00
Jason Rasmussen
6e066aa220 chore: svelte-kit-2 (#6103)
* chore: upgrade svelte

* chore: type imports

* chore: types
2024-01-20 12:47:41 -06:00
Alex The Bot
4ebb9974ff Version v1.93.3 2024-01-20 16:03:18 +00:00
Alex Tran
144822ddc4 chore: recap post date 2024-01-19 19:44:01 -06:00
Kiel Hurley
1efcb00a65 fix(web): Use correct unit for user quota (#6518)
Use correct unit

Already uses GiB when converting to/from bytes
2024-01-19 19:35:56 -06:00
Guillermo
732f289336 fix(web): better button placement within the user management table (#6520)
fix(web): better button placement within table
2024-01-19 18:49:14 -05:00
martin
aa02ccb731 fix(web): album description (#6512)
fix: album description
2024-01-19 15:30:00 -06:00
martin
68d4f1b946 fix(web): delete user (#6514)
fix: delete user
2024-01-19 15:22:00 -06:00
Alex The Bot
3dddc6b449 Version v1.93.2 2024-01-19 18:29:04 +00:00
Alex
88ac3c2016 fix(web): better invite shared user to album layout (#6511)
* fix(web): better invite to album design

* rounded corner

* use icon

* padding
2024-01-19 12:27:29 -06:00
martin
17eaeb695e feat: smart merge (#6508)
* pr feedback

* fix: tests

* update assets statistics

* pr feedback

* pr feedback

* fix: linter

* pr feedback

* fix: don't limit the smart merge

* pr feedback

* fix: server code

* remove slider

* fix: tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-19 17:52:26 +00:00
shenlong
f80f867976 fix(mobile): stack button not in bottom app bar (#6497)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-19 17:40:10 +00:00
martin
d15c443d9b fix(web): user list when sharing an album (#6500)
fix: user list when sharing an album

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-19 17:38:44 +00:00
Alex
07b874edda fix(web): revert smart merge (#6504)
* revert smart merge

* fix test

* fix test

* Remove Slider file
2024-01-19 11:34:20 -06:00
Jason Rasmussen
df27460f1c fix: open api pump (#6502) 2024-01-19 11:09:18 -06:00
Alex The Bot
d5af357992 Version v1.93.1 2024-01-19 15:01:17 +00:00
Jason Rasmussen
dacca4cdf1 fix(web): slider (#6485) 2024-01-19 08:57:15 -06:00
Mert
b4d1470586 fix(web): prevent layout change from scrollbar in admin setings (#6482)
stable scrollbar
2024-01-19 03:30:48 +00:00
Alex Tran
20c284407c chore: post release openapi update 2024-01-18 21:21:28 -06:00
Alex Tran
1af5fcfcde chore: post release openapi update 2024-01-18 21:19:39 -06:00
Alex
7e1b1eae41 chore: post release tasks 2024-01-18 21:15:58 -06:00
Alex The Bot
fa0b7c8563 Version v1.93.0 2024-01-19 02:14:46 +00:00
shenlong
f62678f58f feat(mobile): long-press delete button to permanently delete asset (#6240)
* feat(mobile): delete assets from device only

* mobile: add backed up only toggle for delete device only

* remove toggle inside alert and show different content

* mobile: change content color for local only

* mobile: delete local only button to dialog

* style: display bottom action in two lines

* feat: separate delete buttons

* fix: incorrect error message for ownedRemoteSelection

* feat(mobile): long-press delete to permanently delete asset

* chore: add todo to handle long press to delete in gallery_viewer

* chore: rebase on deletion branch

* feat(mobile): long-press delete to permanently delete asset

* fix(mobile): update minChildSize of control bottom app bar

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 15:01:38 -06:00
shenlong
04c783f2f0 fix(mobile): asset state when delete from trash (#6476)
* fix(mobile): handle asset removal state from trash for merged assets

* fix(mobile): use appropriate text for trash / delete

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-18 14:55:19 -06:00
haosu
660b2e908d feat(format): hif format (#6477) 2024-01-18 11:18:56 -06:00
Jason Rasmussen
91efe7f7ae chore: update bug template (#6465)
* chore: update bug template

* Update .github/ISSUE_TEMPLATE/bug_report.yaml

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-01-18 10:02:13 -06:00
martin
02393126e6 fix(web): trash or delete (#6475)
fix: trash or delete
2024-01-18 10:01:39 -06:00
Mert
68f52818ae feat(server): separate face clustering job (#5598)
* separate facial clustering job

* update api

* fixed some tests

* invert clustering

* hdbscan

* update api

* remove commented code

* wip dbscan

* cleanup

removed cluster endpoint

remove commented code

* fixes

updated tests

minor fixes and formatting

fixed queuing

refinements

* scale search range based on library size

* defer non-core faces

* optimizations

removed unused query option

* assign faces individually for correctness

fixed unit tests

remove unused method

* don't select face embedding

update sql

linting

fixed ml typing

* updated job mock

* paginate people query

* select face embeddings because typeorm

* fix setting face detection concurrency

* update sql

formatting

linting

* simplify logic

remove unused imports

* more specific delete signature

* more accurate typing for face stubs

* add migration

formatting

* chore: better typing

* don't select embedding by default

remove unused import

* updated sql

* use normal try/catch

* stricter concurrency typing and enforcement

* update api

* update job concurrency panel to show disabled queues

formatting

* check jobId in queueAll

fix tests

* remove outdated comment

* better facial recognition icon

* wording

wording

formatting

* fixed tests

* fix

* formatting & sql

* try to fix sql check

* more detailed description

* update sql

* formatting

* wording

* update `minFaces` description

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 00:08:48 -05:00
Jason Rasmussen
44873b4224 deps: update docs (#6462) 2024-01-17 22:44:45 -05:00
Jason Rasmussen
98cee8864d docs: remove tsc check (#6464) 2024-01-17 22:37:48 -05:00
Mert
9a2fa21b28 fix(server): scale transcoded videos if dimensions are odd (#6461)
scale if odd resolution
2024-01-17 22:16:44 -05:00
Bohan Zhang
b98d1bf9d3 fix(cli): uploadCounters increase only when files are uploaded (#6357)
* uploadcounters increase only when files are uploaded

* move up totalSizeUploaded counter
2024-01-18 03:15:13 +00:00
Steven Carter
d4146e3e6d feat(server): provide the ability to search archived photos (#6332)
* Feat: provide the ability to search archived photos

Adds a query parameter (`searchArchived`) to the search URL parameters
to allow the results to contain archived photos.

* chore: rename includeArchived => withArchived

* chore: open api

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-18 02:08:00 +00:00
martin
f0b328fb6b feat(server, web): smart merge (#5796)
* pr feedback

* fix: tests

* update assets statistics

* pr feedback

* pr feedback

* fix: linter

* pr feedback

* fix: don't limit the smart merge

* pr feedback

* fix: server code

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-18 01:52:11 +00:00
Alex
c55503496f fix(server): set log level of immich-admin process in boostrap function (#6458)
* fix(server): set log level of immich-admin process in boostrap function

* Remove log
2024-01-17 16:47:46 -05:00
Jason Rasmussen
6f291006e4 fix(server): handle 5 digit years (#6457) 2024-01-17 16:08:38 -05:00
waclaw66
574aecc1e2 fix(mobile): add to album - list thumbnails (#6444)
fix(mobile): add to album thumbnails
2024-01-17 14:27:55 -06:00
martin
c317feaf93 feat(web): force delete with shift key (#6239)
* feat: force delete with shift key

* fix: types import

* pr feedback

* fix: permanently delete assets

* fix: format

* fix: remove unused variable

* change info title

* simplify

* fix: rename function name

* pr feedback

* simplify

* pr feedback

* add toggle in the user settings

* fix: trash settings, input label, and wording

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-17 19:18:04 +00:00
renovate[bot]
0350058689 fix(deps): update server (#6415)
* fix(deps): update server

* chore: fix tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-17 18:24:51 +00:00
Hiren Shah
a7768cc64d docs: Update remove-offline-files.md (#6449)
The previous Windows Powershell script didn't work - resulted in a bunch of errors due to multiple reasons.  The revised code works as expected.
2024-01-17 11:40:33 -05:00
Alexander Welsing
702e91145a Move 'Add' button on album user invite to the same row as 'To' List (#6447)
Move 'Add' button on album user invite to the same row as 'To' List in order to prevent the button getting hidden by a scrollbar
2024-01-17 14:43:41 +00:00
shenlong
4c2befc68c feat(mobile): separate delete buttons (#4505)
* feat(mobile): delete assets from device only

* mobile: add backed up only toggle for delete device only

* remove toggle inside alert and show different content

* mobile: change content color for local only

* mobile: delete local only button to dialog

* style: display bottom action in two lines

* feat: separate delete buttons

* fix: incorrect error message for ownedRemoteSelection

* fix: handle remoteOnly from delete everywhere

* request confirmation for local only only when non-backed assets are in selection

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-16 21:28:23 -06:00
Alex
78de4f1312 feat(mobile): quota (#6409)
* feat(mobile): quota

* openapi

* user entity update

* Render quota

* refresh usage upon opening the app bar

* stop backup when quota exceed
2024-01-16 20:08:31 -06:00
Jason Rasmussen
abce82e235 fix(server): enable/disable password login on truenas (#6433) 2024-01-16 16:40:09 -05:00
renovate[bot]
d3ff2408bc chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 377aafa (#6434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-16 16:39:31 -05:00
renovate[bot]
76b66e42e1 chore(deps): update base-image to v20240111 (major) (#6355)
chore(deps): update base-image to v20240111

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-16 11:09:59 -05:00
renovate[bot]
7b0104f905 chore(deps): update dependency @types/node to v20.11.0 (#6424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-16 09:38:20 -05:00
Jason Rasmussen
8e2d790c2a deps: separate out reflect metadata (#6425) 2024-01-16 09:37:28 -05:00
renovate[bot]
9300946ff1 fix(deps): update docs (#6420)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-16 09:27:04 -05:00
renovate[bot]
6457436d91 chore(deps): update web (#6413) 2024-01-15 19:51:10 -05:00
renovate[bot]
9976b2ae92 chore(deps): update @immich/cli (#6412)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`20.10.6` ->
`20.10.8`](https://renovatebot.com/diffs/npm/@types%2fnode/20.10.6/20.10.8)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.10.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.10.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.10.6/20.10.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.10.6/20.10.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint)
([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin))
| [`6.17.0` ->
`6.18.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/6.17.0/6.18.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/6.17.0/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/6.17.0/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint)
([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser))
| [`6.17.0` ->
`6.18.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/6.17.0/6.18.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/6.17.0/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/6.17.0/6.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [axios](https://axios-http.com)
([source](https://togithub.com/axios/axios)) | [`1.6.4` ->
`1.6.5`](https://renovatebot.com/diffs/npm/axios/1.6.4/1.6.5) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/axios/1.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/axios/1.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/axios/1.6.4/1.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/axios/1.6.4/1.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[eslint-plugin-jest](https://togithub.com/jest-community/eslint-plugin-jest)
| [`27.6.1` ->
`27.6.2`](https://renovatebot.com/diffs/npm/eslint-plugin-jest/27.6.1/27.6.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-jest/27.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-jest/27.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-jest/27.6.1/27.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-jest/27.6.1/27.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[eslint-plugin-prettier](https://togithub.com/prettier/eslint-plugin-prettier)
| [`5.1.2` ->
`5.1.3`](https://renovatebot.com/diffs/npm/eslint-plugin-prettier/5.1.2/5.1.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-prettier/5.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-prettier/5.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-prettier/5.1.2/5.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-prettier/5.1.2/5.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/eslint-plugin)</summary>

###
[`v6.18.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6181-2024-01-08)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.0...v6.18.1)

##### 🩹 Fixes

- **eslint-plugin:** \[no-non-null-assertion] provide valid fix when
member access is on next line

- **eslint-plugin:** \[no-unnecessary-condition] improve checking
optional callee

- **eslint-plugin:** \[prefer-readonly] support modifiers of unions and
intersections

- **eslint-plugin:** \[switch-exhaustiveness-check] fix new
allowDefaultCaseForExhaustiveSwitch option

##### ❤️  Thank You

-   auvred
-   James
-   Josh Goldberg 
-   YeonJuan

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

###
[`v6.18.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6180-2024-01-06)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.17.0...v6.18.0)

##### 🚀 Features

-   **typescript-estree:** throw on invalid update expressions

- **eslint-plugin:** \[no-var-requires, no-require-imports] allow option

##### ❤️  Thank You

-   auvred
-   Joshua Chen

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/parser)</summary>

###
[`v6.18.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6181-2024-01-08)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.0...v6.18.1)

This was a version bump only for parser to align it with other projects,
there were no code changes.

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

###
[`v6.18.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6180-2024-01-06)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.17.0...v6.18.0)

This was a version bump only for parser to align it with other projects,
there were no code changes.

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

</details>

<details>
<summary>axios/axios (axios)</summary>

###
[`v1.6.5`](https://togithub.com/axios/axios/blob/HEAD/CHANGELOG.md#165-2024-01-05)

[Compare
Source](https://togithub.com/axios/axios/compare/v1.6.4...v1.6.5)

##### Bug Fixes

- **ci:** refactor notify action as a job of publish action;
([#&#8203;6176](https://togithub.com/axios/axios/issues/6176))
([0736f95](0736f95ce8))
- **dns:** fixed lookup error handling;
([#&#8203;6175](https://togithub.com/axios/axios/issues/6175))
([f4f2b03](f4f2b039dd))

##### Contributors to this release

- <img
src="https://avatars.githubusercontent.com/u/12586868?v&#x3D;4&amp;s&#x3D;18"
alt="avatar" width="18"/> [Dmitriy
Mozgovoy](https://togithub.com/DigitalBrainJS "+41/-6 (#&#8203;6176
#&#8203;6175 )")
- <img
src="https://avatars.githubusercontent.com/u/4814473?v&#x3D;4&amp;s&#x3D;18"
alt="avatar" width="18"/> [Jay](https://togithub.com/jasonsaayman "+6/-1
()")

</details>

<details>
<summary>jest-community/eslint-plugin-jest
(eslint-plugin-jest)</summary>

###
[`v27.6.2`](https://togithub.com/jest-community/eslint-plugin-jest/blob/HEAD/CHANGELOG.md#2762-2024-01-10)

[Compare
Source](https://togithub.com/jest-community/eslint-plugin-jest/compare/v27.6.1...v27.6.2)

##### Reverts

- Revert "chore: use relative path to parent `tsconfig.json`
([#&#8203;1476](https://togithub.com/jest-community/eslint-plugin-jest/issues/1476))"
([5e6199d](5e6199d621)),
closes
[#&#8203;1476](https://togithub.com/jest-community/eslint-plugin-jest/issues/1476)

</details>

<details>
<summary>prettier/eslint-plugin-prettier
(eslint-plugin-prettier)</summary>

###
[`v5.1.3`](https://togithub.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#513)

[Compare
Source](https://togithub.com/prettier/eslint-plugin-prettier/compare/v5.1.2...v5.1.3)

##### Patch Changes

-
[#&#8203;629](https://togithub.com/prettier/eslint-plugin-prettier/pull/629)
[`985b33c`](985b33c56f)
Thanks [@&#8203;JounQin](https://togithub.com/JounQin)! - chore: add
`package.json` into `exports` map

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/immich-app/immich).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMjcuMCIsInVwZGF0ZWRJblZlciI6IjM3LjEyNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 19:48:10 -05:00
Alex
76bad762d7 fix(mobile): null check on null value on top app bar (#6406)
Fixed issue with null check on null value causing the top app bar render
a gray overlay when open an asset in Album On Device section in Library
page
2024-01-16 00:25:59 +00:00
Sushain Cherivirala
7fc1954e2a fix(server): add filename search (#6394)
Fixes https://github.com/immich-app/immich/issues/5982.

There are basically three options:

1. Search `originalFileName` by dropping a file extension from the query
(if present). Lower fidelity but very easy - just a standard index &
equality.
2. Search `originalPath` by adding an index on `reverse(originalPath)`
and using `starts_with(reverse(query) + "/", reverse(originalPath)`. A
weird index & query but high fidelity.
3. Add a new generated column called `originalFileNameWithExtension` or
something. More storage, kinda jank.

TBH, I think (1) is good enough and easy to make better in the future.
For example, if I search "DSC_4242.jpg", I don't really think it matters
if "DSC_4242.mov" also shows up.

edit: There's a fourth approach that we discussed a bit in Discord and
decided we could switch to it in the future: using a GIN. The minor
issue is that Postgres doesn't tokenize paths in a useful (they're a
single token and it won't match against partial components). We can
solve that by tokenizing it ourselves. For example:

```
immich=# with vecs as (select to_tsvector('simple', array_to_string(string_to_array('upload/library/sushain/2015/2015-08-09/IMG_275.JPG', '/'), ' ')) as vec)  select * from vecs where vec @@ phraseto_tsquery('simple', array_to_string(string_to_array('library/sushain', '/'), ' '));
                                      vec
-------------------------------------------------------------------------------
 '-08':6 '-09':7 '2015':4,5 'img_275.jpg':8 'library':2 'sushain':3 'upload':1
(1 row)
```

The query is also tokenized with the 'split-by-slash-join-with-space'
strategy. This strategy results in `IMG_275.JPG`, `2015`, `sushain` and
`library/sushain` matching. But, `08` and `IMG_275` do not match. The
former is because the token is `-08` and the latter because the
`img_275.jpg` token is matched against exactly.
2024-01-15 14:40:28 -06:00
renovate[bot]
f160969894 fix(deps): update dependency com.google.guava:guava to v33 (#5390)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.guava:guava](https://togithub.com/google/guava) |
`31.0.1-android` -> `33.0.0-android` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.guava:guava/33.0.0-android?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.guava:guava/33.0.0-android?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.guava:guava/31.0.1-android/33.0.0-android?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.guava:guava/31.0.1-android/33.0.0-android?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>google/guava (com.google.guava:guava)</summary>

### [`v32.1.3`](https://togithub.com/google/guava/releases/tag/v32.1.3):
32.1.3

[Compare
Source](https://togithub.com/google/guava/compare/v32.1.2...v32.1.3)

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.1.3-jre</version>
  <!-- or, for Android: -->
  <version>32.1.3-android</version>
</dependency>
```

##### Jar files

-
[32.1.3-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.3-jre/guava-32.1.3-jre.jar)
-
[32.1.3-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.3-android/guava-32.1.3-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.1.3-jre](http://guava.dev/releases/32.1.3-jre/api/docs/)
-   [32.1.3-android](http://guava.dev/releases/32.1.3-android/api/docs/)

##### JDiff

- [32.1.3-jre vs.
32.1.2-jre](http://guava.dev/releases/32.1.3-jre/api/diffs/)
- [32.1.3-android vs.
32.1.2-android](http://guava.dev/releases/32.1.3-android/api/diffs/)
- [32.1.3-android vs.
32.1.3-jre](http://guava.dev/releases/32.1.3-android/api/androiddiffs/)

##### Changelog

- Changed Gradle Metadata to include dependency versions directly. This
may address ["Could not find `some-dependency`"
errors](https://togithub.com/google/guava/issues/6657) that some users
have reported (which might be a result of users' excluding
`guava-parent`).
([`c6d35cf`](https://togithub.com/google/guava/commit/c6d35cf1a5))
- `collect`: Changed
`Multisets.unmodifiableMultiset(set).removeIf(predicate)` to throw an
exception always, even if nothing matches `predicate`.
([`61dbccf`](https://togithub.com/google/guava/commit/61dbccfda3))
- `graph`: Fixed the behavior of `Graph`/`ValueGraph` views for a node
when that node is removed from the graph.
([`9507996`](https://togithub.com/google/guava/commit/950799691c))
- `io`: Fixed `Files.createTempDir` and `FileBackedOutputStream` under
[Windows *services*, a rare use
case](https://togithub.com/google/guava/issues/6634). (The fix actually
covers only Java 9+ because Java 8 would require an additional approach.
Let us know if you need support under Java 8.)
([`f87f68c`](https://togithub.com/google/guava/commit/f87f68cd3e))
- `net`: Made `MediaType.parse` allow and skip over whitespace around
the `/` and `=` separator tokens in addition to the `;` separator, for
which it was already being allowed.
([`2786f83`](https://togithub.com/google/guava/commit/2786f83291))
- `util.concurrent`: Tweaked `Futures.getChecked` constructor-selection
behavior: The method continues to prefer to call constructors with a
`String` parameter, but now it breaks ties based on whether the
constructor has a `Throwable` parameter. Beyond that, the choice of
constructor remains undefined. (For this and other reasons, we
discourage the use of `getChecked`.)
([`59cfb22`](https://togithub.com/google/guava/commit/59cfb2267a))

### [`v32.1.2`](https://togithub.com/google/guava/releases/tag/v32.1.2):
32.1.2

[Compare
Source](https://togithub.com/google/guava/compare/v32.1.1...v32.1.2)

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.1.2-jre</version>
  <!-- or, for Android: -->
  <version>32.1.2-android</version>
</dependency>
```

##### Jar files

-
[32.1.2-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar)
-
[32.1.2-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.2-android/guava-32.1.2-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.1.2-jre](http://guava.dev/releases/32.1.2-jre/api/docs/)
-   [32.1.2-android](http://guava.dev/releases/32.1.2-android/api/docs/)

##### JDiff

- [32.1.2-jre vs.
32.1.1-jre](http://guava.dev/releases/32.1.2-jre/api/diffs/)
- [32.1.2-android vs.
32.1.1-android](http://guava.dev/releases/32.1.2-android/api/diffs/)
- [32.1.2-android vs.
32.1.2-jre](http://guava.dev/releases/32.1.2-android/api/androiddiffs/)

##### Changelog

-
[Removed](https://togithub.com/google/guava/issues/6642#issuecomment-1656201382)
the section of our Gradle metadata that caused Gradle to report
conflicts with `listenablefuture`.
([`9ed0fa6`](https://togithub.com/google/guava/commit/9ed0fa65ab))
- Changed our Maven project to avoid [affecting which version of Mockito
our Gradle users see](https://togithub.com/google/guava/issues/6654).
([`71a16d5`](https://togithub.com/google/guava/commit/71a16d5a74))
- `collect`: Under J2CL, exposed `ImmutableList` and `ImmutableSet`
methods `copyOf` and `of` for JavaScript usage.
([`b41968f`](https://togithub.com/google/guava/commit/b41968f5f2))
- `net`: Optimized `InternetDomainName` construction.
([`3a1d18f`](3a1d18fbef),
[`eaa62eb`](eaa62eb095))

### [`v32.1.1`](https://togithub.com/google/guava/releases/tag/v32.1.1):
32.1.1

[Compare
Source](https://togithub.com/google/guava/compare/v32.1.0...v32.1.1)

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.1.1-jre</version>
  <!-- or, for Android: -->
  <version>32.1.1-android</version>
</dependency>
```

##### Jar files

-
[32.1.1-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.1-jre/guava-32.1.1-jre.jar)
-
[32.1.1-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.1-android/guava-32.1.1-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.1.1-jre](http://guava.dev/releases/32.1.1-jre/api/docs/)
-   [32.1.1-android](http://guava.dev/releases/32.1.1-android/api/docs/)

##### JDiff

- [32.1.1-jre vs.
32.1.0-jre](http://guava.dev/releases/32.1.1-jre/api/diffs/)
- [32.1.1-android vs.
32.1.0-android](http://guava.dev/releases/32.1.1-android/api/diffs/)
- [32.1.1-android vs.
32.1.1-jre](http://guava.dev/releases/32.1.1-android/api/androiddiffs/)

##### Changelog

- Fixed our broken Gradle metadata from
[32.1.0](https://togithub.com/google/guava/releases/tag/v32.1.0). Sorry
again for the trouble. If you use Gradle, please still read [the release
notes from that
version](https://togithub.com/google/guava/releases/tag/v32.1.0): You
may still see errors from the new checking that the metadata enables,
and the release notes discuss how to fix those errors.

### [`v32.1.0`](https://togithub.com/google/guava/releases/tag/v32.1.0):
32.1.0

[Compare
Source](https://togithub.com/google/guava/compare/v32.0.1...v32.1.0)

##### Warning: Our Gradle-metadata version numbers are broken. Read
these notes, but upgrade straight to
[32.1.2](https://togithub.com/google/guava/releases/tag/v32.1.2).

We made a mistake in our release script, so the new Gradle metadata
(discussed below) has [broken version
numbers](https://togithub.com/google/guava/issues/6612) in 32.1.0. Sorry
for the trouble and for the need for another quick patch release. We
recommend upgrading straight to release
[32.1.2](https://togithub.com/google/guava/releases/tag/v32.1.2),
especially if you use Gradle or if you publish a library whose users
might use Gradle. Still, read the release notes below if you use Gradle,
since the fixed Gradle metadata in 32.1.2 may still require action on
your part.

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.1.0-jre</version>
  <!-- or, for Android: -->
  <version>32.1.0-android</version>
</dependency>
```

##### Jar files

-
[32.1.0-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.0-jre/guava-32.1.0-jre.jar)
-
[32.1.0-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.1.0-android/guava-32.1.0-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.1.0-jre](http://guava.dev/releases/32.1.0-jre/api/docs/)
-   [32.1.0-android](http://guava.dev/releases/32.1.0-android/api/docs/)

##### JDiff

- [32.1.0-jre vs.
32.0.1-jre](http://guava.dev/releases/32.1.0-jre/api/diffs/)
- [32.1.0-android vs.
32.0.1-android](http://guava.dev/releases/32.1.0-android/api/diffs/)
- [32.1.0-android vs.
32.1.0-jre](http://guava.dev/releases/32.1.0-android/api/androiddiffs/)

##### Changelog

##### [Gradle Module
Metadata](https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.html)

**Warning:** We made a mistake in our release script, so this is
[broken](https://togithub.com/google/guava/issues/6612) in 32.1.0. We
recommend upgrading straight to release
[32.1.2](https://togithub.com/google/guava/releases/tag/v32.1.2),
especially if you use Gradle or if you publish a library whose users
might use Gradle. Still, read the release notes below if you use Gradle,
since the fixed Gradle metadata in 32.1.2 may still require action on
your part.

The Gradle team has contributed a metadata file for Guava. If you use
Gradle 6 or higher, you will see better handling of two kinds of
dependency conflicts, plus another small feature related to our
dependencies. As a result of this change, you may see errors, which you
can resolve as documented below. If you encounter a problem that isn't
documented below, or if the documentation is unclear, please [let us
know](https://togithub.com/google/guava/issues/new).

##### If you use Gradle 6 (not 5, not 7+)<a name="gradle-6"></a>

You may see [an error like this
one](https://togithub.com/google/guava/issues/6612#issuecomment-1614897285):

    > Could not resolve all artifacts for configuration ':classpath'.
       > Could not resolve com.google.guava:guava:30.1-jre.
         Required by:
project : >
com.google.cloud.tools.jib:com.google.cloud.tools.jib.gradle.plugin:2.8.0
> gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:2.8.0
> The consumer was configured to find a runtime of a library compatible
with Java 15, packaged as a jar, and its dependencies declared
externally. However we cannot choose between the following variants of
com.google.guava:guava:32.1.1-jre:
              - androidRuntimeElements
              - jreRuntimeElements
            All of them match the consumer attributes:
- Variant 'androidRuntimeElements' capabilities
com.google.collections:google-collections:32.1.1-jre and
com.google.guava:guava:32.1.1-jre and
com.google.guava:listenablefuture:1.0 declares a runtime of a library
compatible with Java 8, packaged as a jar, and its dependencies declared
externally:

If you do, you'll need to add [something like
this](https://togithub.com/google/guava/issues/6612#issuecomment-1614992368)
to a place where you configure the Java plugins:

```kotlin
sourceSets.all {
  configurations.getByName(runtimeClasspathConfigurationName) {
    attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
  }
  configurations.getByName(compileClasspathConfigurationName) {
    attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
  }
}
```

##### If you see an error about a duplicate `ListenableFuture` class<a
name="duplicate-ListenableFuture"></a>

For example:

    Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing
com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class com.google.common.util.concurrent.ListenableFuture
found in modules jetified-guava-32.1.1-android
(com.google.guava:guava:32.1.1-android) and
jetified-listenablefuture-1.0 (com.google.guava:listenablefuture:1.0)

This [appears to be a Gradle
bug](https://togithub.com/gradle/gradle/issues/22326#issuecomment-1617422240).

[@&#8203;mathisdt](https://togithub.com/mathisdt) has provided [a
workaround](https://togithub.com/google/guava/issues/6618):

    dependencies {
    ### dependency definitions here ...
      modules {
        module("com.google.guava:listenablefuture") {
replacedBy("com.google.guava:guava", "listenablefuture is part of
guava")
        }
      }
    }

##### Selecting the appropriate flavor<a name="selecting-flavor"></a>

When Gradle automatically selects the newest version of Guava in your
dependency graph, it will now also select the appropriate flavor
(`-android` or `-jre`) based on whether you project targets Android or
not. For example, if you depend on 32.1.0-android and 30.0-jre, Gradle
will select 32.1.0-jre. This is the version most likely to be compatible
with all your dependencies.

In the unusual event that you need to override Gradle's choice of
flavor, you can do so as follows:

```kotlin
dependencies.constraints {
  implementation("com.google.guava:guava") {
    attributes {
      attribute(
        TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, 
        objects.named(TargetJvmEnvironment, TargetJvmEnvironment.ANDROID))
    }
  }
}

// If the above leads to a conflict error because there are additional transitive dependencies to Guava, then use:
configurations.all {
  resolutionStrategy.capabilitiesResolution.withCapability("com.google.guava:guava") {
    select(candidates.find { it.variantName.contains("android") })
  }
}
```

##### Reporting dependencies that overlap with Guava<a
name="overlap"></a>

If your dependency graph contains the very old `google-collections` or
the [hacky](https://groups.google.com/g/guava-announce/c/Km82fZG68Sw)
`listenablefuture`, Gradle will now report that those libraries contain
duplicates of Guava classes. When this happens, you'll need to tell
Gradle to
[select](https://docs.gradle.org/current/userguide/dependency_capability_conflict.html#sub:selecting-between-candidates)
Guava:

```kotlin
configurations.all {
  resolutionStrategy.capabilitiesResolution.withCapability("com.google.collections:google-collections") {
    select("com.google.guava:guava:0")
  }
  // and/or
  resolutionStrategy.capabilitiesResolution.withCapability("com.google.guava:listenablefuture") {
    select("com.google.guava:guava:0")
  }
}
```

If that doesn't work, please let us know. And let us know whether [our
`replacedBy` workaround](#user-content-duplicate-ListenableFuture) or
[these other
workarounds](https://togithub.com/googleapis/sdk-platform-java/pull/1832#issuecomment-1624315236)
work instead.

##### Omitting annotations at runtime

One dependency of Guava that is not needed at runtime
(`j2objc-annotations`) is now omitted from the runtime classpath. (We
may omit others in the future. See
[#&#8203;6606](https://togithub.com/google/guava/issues/6606).)

##### Other changes

- `collect`: Tweaked more nullness annotations.
([`501a016`](501a01631f),
[`5c23590`](5c2359087a))
- `hash`: Enhanced `crc32c()` to use Java's hardware-accelerated
implementation where available.
([`65c7f10`](https://togithub.com/google/guava/commit/65c7f10ff0))
- `util.concurrent`: Added `Duration`-based `default` methods to
`ListeningExecutorService`.
([`e7714b0`](https://togithub.com/google/guava/commit/e7714b0b8b))
- Began updating [Javadoc](https://guava.dev/api) to focus less on APIs
that have been superseded by additions to the JDK. We're also looking to
add more documentation that directs users to JDK equivalents for our
APIs. Further PRs welcome!
([`c9efc47`](c9efc47995),
[`01dcc2e`](01dcc2e610))
- Fixed some problems with [using Guava from a Java
Agent](https://togithub.com/google/guava/issues/6566). (But we don't
test that configuration, and we don't know how well we'll be able to
keep it working.)
([`e42d4e8`](https://togithub.com/google/guava/commit/e42d4e863b),
[`de62703`](https://togithub.com/google/guava/commit/de62703987))
- Fixed `BootstrapMethodError` when [using `CacheBuilder` from a custom
system class loader](https://togithub.com/google/guava/issues/6565). (As
with the previous item, we're not sure how well we'll be able to keep
this use case working.)
([`a667c38`](https://togithub.com/google/guava/commit/a667c38772))
- Suppressed [a harmless `unusable-by-js`
warning](https://togithub.com/google/guava/issues/6602) seen by users of
`guava-gwt`.

### [`v32.0.1`](https://togithub.com/google/guava/releases/tag/v32.0.1):
32.0.1

[Compare
Source](https://togithub.com/google/guava/compare/v32.0.0...v32.0.1)

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.0.1-jre</version>
  <!-- or, for Android: -->
  <version>32.0.1-android</version>
</dependency>
```

##### Jar files

-
[32.0.1-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.0.1-jre/guava-32.0.1-jre.jar)
-
[32.0.1-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.0.1-android/guava-32.0.1-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.0.1-jre](http://guava.dev/releases/32.0.1-jre/api/docs/)
-   [32.0.1-android](http://guava.dev/releases/32.0.1-android/api/docs/)

##### JDiff

- [32.0.1-jre vs.
32.0.0-jre](http://guava.dev/releases/32.0.1-jre/api/diffs/)
- [32.0.1-android vs.
32.0.0-android](http://guava.dev/releases/32.0.1-android/api/diffs/)
- [32.0.1-android vs.
32.0.1-jre](http://guava.dev/releases/32.0.1-android/api/androiddiffs/)

##### Changelog

- `io`: Fixed `Files.createTempDir` and `FileBackedOutputStream` under
Windows, which broke as part of the security fix in release 32.0.0.
Sorry for the trouble.
([`fdbf77d`](https://togithub.com/google/guava/commit/fdbf77d3f2))

### [`v32.0.0`](https://togithub.com/google/guava/releases/tag/v32.0.0):
32.0.0

[Compare
Source](https://togithub.com/google/guava/compare/v31.0.1...v32.0.0)

##### Maven

```xml
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.0.0-jre</version>
  <!-- or, for Android: -->
  <version>32.0.0-android</version>
</dependency>
```

##### Jar files

-
[32.0.0-jre.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.0.0-jre/guava-32.0.0-jre.jar)
-
[32.0.0-android.jar](https://repo1.maven.org/maven2/com/google/guava/guava/32.0.0-android/guava-32.0.0-android.jar)

Guava requires [one runtime
dependency](https://togithub.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies),
which you can download here:

-
[failureaccess-1.0.1.jar](https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar)

##### Javadoc

-   [32.0.0-jre](http://guava.dev/releases/32.0.0-jre/api/docs/)
-   [32.0.0-android](http://guava.dev/releases/32.0.0-android/api/docs/)

##### JDiff

- [32.0.0-jre vs.
31.1-jre](http://guava.dev/releases/32.0.0-jre/api/diffs/)
- [32.0.0-android vs.
31.1-android](http://guava.dev/releases/32.0.0-android/api/diffs/)
- [32.0.0-android vs.
32.0.0-jre](http://guava.dev/releases/32.0.0-android/api/androiddiffs/)

##### Changelog

##### Security fixes

- Reimplemented `Files.createTempDir` and `FileBackedOutputStream` to
further address CVE-2020-8908
([#&#8203;4011](https://togithub.com/google/guava/issues/4011)) and
CVE-2023-2976
([#&#8203;2575](https://togithub.com/google/guava/issues/2575)).
([`feb83a1`](https://togithub.com/google/guava/commit/feb83a1c8f))

While CVE-2020-8908 was officially closed when we deprecated
`Files.createTempDir` in [Guava
30.0](https://togithub.com/google/guava/releases/tag/v30.0), we've heard
from users that even recent versions of Guava have been listed as
vulnerable in *other* databases of security vulnerabilities. In
response, we've reimplemented the method (and the very rarely used
`FileBackedOutputStream` class, which had a similar issue) to eliminate
the insecure behavior entirely. This change could technically affect
users in a number of different ways (discussed under "Incompatible
changes" below), but in practice, the only problem users are likely to
encounter is with Windows. If you are using those APIs under Windows,
you should skip 32.0.0 and go straight to
[32.0.1](https://togithub.com/google/guava/releases/tag/v32.0.1) which
fixes the problem. (Unfortunately, we didn't think of the Windows
problem until after the release. And while we [warn that `common.io` in
particular may not work under
Windows](https://togithub.com/google/guava#important-warnings), we
didn't intend to regress support.) Sorry for the trouble.

##### Incompatible changes

Although this release bumps Guava's major version number, it makes **no
binary-incompatible changes to the `guava` artifact**.

One change could cause issues for Widows users, and a few other changes
could cause issues for users in more usual situations:

- **The new implementations of `Files.createTempDir` and
`FileBackedOutputStream` [throw an exception under
Windows](https://togithub.com/google/guava/issues/6535).** This is fixed
in [32.0.1](https://togithub.com/google/guava/releases/tag/v32.0.1).
Sorry for the trouble.
- `guava-gwt` now
[requires](https://togithub.com/google/guava/issues/6627) GWT
[2.10.0](https://togithub.com/gwtproject/gwt/releases/tag/2.10.0).
- This release makes a binary-incompatible change to a `@Beta` API in
the **separate artifact** `guava-testlib`. Specifically, we changed the
return type of `TestingExecutors.sameThreadScheduledExecutor` to
`ListeningScheduledExecutorService`. The old return type was a
package-private class, which caused the Kotlin compiler to produce
warnings.
([`dafaa3e`](https://togithub.com/google/guava/commit/dafaa3e435))
- This release *adds* two methods to the Android flavor of Guava:
`Invokable.getAnnotatedReturnType()` and `Parameter.getAnnotatedType()`.
Those methods do not work under an Android VM; we added them only to
help our tests of the Android flavor (since we also run those tests
under a JRE). Android VMs tolerate such methods as long as the app does
not call them or perform reflection on them, and builds tolerate them
because of our new Proguard configurations (discussed below). Thus, we
expect no impact to most users. However, we could imagine build problems
for users who have set up their own build system for the Android flavor
of Guava. Please report any problems so that we can judge how safely we
might be able to add other methods to the Android flavor in the future,
such as APIs that use Java 8 classes like `Stream`.
([`b30e73c`](b30e73cfa8))
- This release removes various APIs from the `guava-gwt`. This affects
only users of [GWT](https://www.gwtproject.org/). The APIs we removed
are `Enums`, `Sets.complementOf`, and the `Enum*BiMap` classes'
`keyType()` and `valueType()` methods. These changes prepare for the
removal of reflective enum-related APIs from
[J2CL](https://togithub.com/google/j2cl). If one of these changes causes
you problems as a GWT user, let us know.
([`c3a155d`](https://togithub.com/google/guava/commit/c3a155dc85),
[`09db2c2`](https://togithub.com/google/guava/commit/09db2c29ae),
[`3de12be`](https://togithub.com/google/guava/commit/3de12be516))
- The new implementations of `Files.createTempDir` and
`FileBackedOutputStream` are annotated as `@J2ObjCIncompatible`. If you
need to use them under J2ObjC, contact us.
([`56dc928`](https://togithub.com/google/guava/commit/56dc928a25))
- Because the new version of `Files.createTempDir` restricts permissions
to the current user, it could break any caller that relies on letting
other users access the directory.
- The new versions of `Files.createTempDir` and `FileBackedOutputStream`
throw an exception if they can't create the directory or file securely.
Aside from the accidental Windows bug discussed above, this is possible
only under Android Ice Cream Sandwich, a [very
old](https://en.wikipedia.org/wiki/Android_Ice_Cream_Sandwich) version
of Android that is [the oldest one we test Guava
with](https://togithub.com/google/guava#important-warnings).

##### Other changes

- Removed `@Beta` from almost all APIs. For details, see the bottom of
the release notes. At this point, it's probably simpler to look at a
list of APIs that still *are* `@Beta`, such as [this list for
`guava-jre`](https://guava.dev/releases/32.0.0-jre/api/docs/com/google/common/annotations/class-use/Beta.html).
Most of the remaining `@Beta` APIs are in `graph` and `hash`.
- Enhanced the Guava jar to include Proguard configurations that are
picked up automatically by the Android Gradle Plugin. This should help
with warnings that were promoted to errors in Android Gradle Plugin 8.x.
([`aeba1e1`](https://togithub.com/google/guava/commit/aeba1e1b2d))
- Enhanced the Guava jar to include information about method parameters
in its class files. If you use static analyzers that look at
method-parameter names, you may see new warnings or errors if they are
now able to detect mismatches. But mostly, you may see better tooltips
and autocompletion in IDEs.
([`59d174c`](https://togithub.com/google/guava/commit/59d174cfbe))
- Improved nullness annotations on [a few
classes](https://togithub.com/google/guava/issues/6510).
- Modified classes with "serial proxies" to declare exception-throwing
`readObject` methods, in accordance with best practice.
([`e62d6a0`](https://togithub.com/google/guava/commit/e62d6a0456))
- `collect`: Fixed `Maps.newHashMapWithExpectedSize` to stop allocating
maps that were larger than they needed to be.
([`6ad621e`](https://togithub.com/google/guava/commit/6ad621e76d))
- `collect`: Made various APIs work J2CL:
`Maps.immutableEnumMap`+`toImmutableEnumMap`, `EnumMultiset`,
`CollectorTester`. Previously, the APIs were present but failed at
runtime.
([`b62c88e`](https://togithub.com/google/guava/commit/b62c88e630),
[`23ff918`](https://togithub.com/google/guava/commit/23ff91848f),
[`852a7d3`](https://togithub.com/google/guava/commit/852a7d3fe9))
- `collect`: Optimized memory usage for `Interner` and `MapMaker`.
([`a2e8f3c`](https://togithub.com/google/guava/commit/a2e8f3c7ce))
- `graph`: Changed directed graphs to [reject attempts to add undirected
edges](https://togithub.com/google/guava/issues/5843#issuecomment-1136678073).
([`76260d9`](https://togithub.com/google/guava/commit/76260d9b3c))
- `io`: Added `BaseEncoding.ignoreCase()` to support case-insensitive
decoding.
([`9c1e5de`](https://togithub.com/google/guava/commit/9c1e5dea4b))
-   `net`: Added `HttpHeaders` constants:
- `No-Vary-Search`
([`688b9c2`](https://togithub.com/google/guava/commit/688b9c2cfa))
- `Sec-CH-DPR`
([`75a3d4d`](https://togithub.com/google/guava/commit/75a3d4dd36))
- `Sec-CH-UA-Wow64`
([`49e6b9c`](https://togithub.com/google/guava/commit/49e6b9c4a1))
- `Sec-CH-Viewport-Width` and `Sec-CH-Viewport-Height`
([`44df85a`](https://togithub.com/google/guava/commit/44df85a829))
- `Supports-Loading-Mode`
([`0d5c16f`](https://togithub.com/google/guava/commit/0d5c16fc6b))
- `net`: Added the `MediaType` constant for JWT.
([`f942fd2`](https://togithub.com/google/guava/commit/f942fd2c0e))
- `primitives`: Added `rotate()` for arrays of all primitive types.
([`cd338fa`](https://togithub.com/google/guava/commit/cd338fa2bc),
[`6e9057d`](https://togithub.com/google/guava/commit/6e9057d0f2))
- `util.concurrent`: Changed `AbstractFuture` to run `interruptTask()`
just before `afterDone()`. Until this change, it ran slightly earlier
than that: We used to run it before unblocking any pending `get()`
calls, and now we run it after.
([`b337be6`](https://togithub.com/google/guava/commit/b337be6089))
- `util.concurrent`: Fixed some cases in which we could catch
`InterruptedException` but fail to restore the interrupt bit.
([`8f0350a`](https://togithub.com/google/guava/commit/8f0350a21a))

##### `@Beta` removal list

- `base`: `Utf8`
([`211907c`](https://togithub.com/google/guava/commit/211907cb8b))
- `base`: more APIs
([`b0cc461`](https://togithub.com/google/guava/commit/b0cc461da5))
- `collect`: `Multimaps.asMap(...)`
([`df0081f`](https://togithub.com/google/guava/commit/df0081f28f))
- `collect`: `FluentIterable` APIs
([`73b2f7b`](https://togithub.com/google/guava/commit/73b2f7bee0))
- `collect`: `Forwarding[Foo]` APIs
([`9760dbc`](https://togithub.com/google/guava/commit/9760dbcd4c))
- `collect`: `ImmutableFoo.Builder.builderWithExpectedSize(...)`,
`orderEntriesByValue(...)`, and `Entry`-related APIs
([`61be35c`](https://togithub.com/google/guava/commit/61be35ce49))
- `collect`: `RangeMap`, `RangeSet`, and friends
([`fe12c81`](https://togithub.com/google/guava/commit/fe12c81e79))
- `collect`: more APIs
([`98820c7`](https://togithub.com/google/guava/commit/98820c77f9),
[`e5e0f66`](https://togithub.com/google/guava/commit/e5e0f660cc))
- `io`: `ByteStreams`
([`4897930`](https://togithub.com/google/guava/commit/48979309a5))
- `io`: more APIs
([`a589256`](https://togithub.com/google/guava/commit/a5892560de))
- `math`: various APIs
([`912815e`](https://togithub.com/google/guava/commit/912815e4e2))
- `primitives`: `Longs.tryParse(...)` and friends
([`b3d4856`](https://togithub.com/google/guava/commit/b3d48564c6))
- `primitives`: `UnsignedLongs`
([`b240e8c`](https://togithub.com/google/guava/commit/b240e8ce14))
- `primitives`: more APIs
([`fcec25f`](https://togithub.com/google/guava/commit/fcec25f45e),
[`ab4302a`](https://togithub.com/google/guava/commit/ab4302aa53))
- `reflect`: `Invokable` and some methods in `TypeToken`
([`a195f7d`](https://togithub.com/google/guava/commit/a195f7d604))
- `reflect`: `Parameter` (except `getAnnotatedType()` in
`guava-android`)
([`b561eb1`](https://togithub.com/google/guava/commit/b561eb14c2))
- `testing`: various APIs
([`b331769`](https://togithub.com/google/guava/commit/b331769af3),
[`74ad9b8`](https://togithub.com/google/guava/commit/74ad9b8a1f))
- `util.concurrent`: `FluentFuture`
([`b9a2d58`](https://togithub.com/google/guava/commit/b9a2d58503))
- `util.concurrent`: `Futures`
([`15a0c9f`](https://togithub.com/google/guava/commit/15a0c9fd57))
- `util.concurrent`: `Striped`
([`ba8ad69`](https://togithub.com/google/guava/commit/ba8ad69d03))
- `util.concurrent`: various `MoreExecutors` APIs
([`a3571b4`](https://togithub.com/google/guava/commit/a3571b408f))
- `util.concurrent`: more APIs
([`bbaf76a`](https://togithub.com/google/guava/commit/bbaf76a199))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/immich-app/immich).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuMTI3LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 18:29:18 +00:00
Jason Rasmussen
3e793c582e docs: fix pgadmin links (#6403) 2024-01-15 17:19:41 +00:00
Jason Rasmussen
fff3a52e60 deps: fix guava versioning (#6402) 2024-01-15 17:03:38 +00:00
shenlong
ba5cca9348 chore(dep): update auto_route (#6390)
* chore(dep): update auto_route

* chore: rebase main

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-15 16:50:33 +00:00
Tom Vincent
984feafb90 fix(server): extract image description (#6344) 2024-01-15 11:19:41 -05:00
shenlong
4f021a74ed chore(renovate): enforce compatible flavor for guava using versionScheme (#6398)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-15 11:15:44 -05:00
shenlong
e6c0f0e3aa refactor(mobile): maplibre (#6087)
* chore: maplibre gl pubspec

* refactor(wip): maplibre for maps

* refactor(wip): dual pane + location button

* chore: remove flutter_map and deps

* refactor(wip): map zoom to location

* refactor: location picker

* open gallery_viewer on marker tap

* remove detectScaleGesture param

* test: debounce and throttle

* chore: rename get location method

* feat(mobile): Adds gps locator to map prompt for easy geolocation (#6282)

* Refactored get gps coords

* Use var for linter's sake, should handle errors better

* Cleanup

* Fix linter issues

* chore(dep): update maplibre to official lib

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Joshua Herrera <joshua.herrera227@gmail.com>
2024-01-15 09:26:13 -06:00
Justin van der Krieken
aa8c54e248 feat(mobile): Focus search on doubletap nav button (#6048)
* feat(mobile): Focus search on doubletap nav button

* Update mobile/lib/modules/search/ui/immich_search_bar.dart

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>

* Move search notifier inside search bar file

And fix naming to better represent type.

* Remove onSearchFocusRequest and call focusSearch directly

* Fix compilation error after file autosave

---------

Co-authored-by: Justin van der Krieken <justin@vdkrieken.com>
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2024-01-15 09:25:56 -06:00
Alex
d096caccac chore(web): quota enhancement (#6371)
* chore(web): quota enhancement

* show quota in user table

* update quota for single user ioption

* Add a note how to set unlimited storage

* fixed deletion doesn't update quota

* refactor relation

* fixed test

* re-refactor

* update sql

* fix e2e test

* Update server/src/domain/user/user.service.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* revert e2e test

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-15 09:04:29 -06:00
renovate[bot]
2a8cb70c98 fix(deps): update dependency geo-tz to v8 (#6388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 08:27:59 -05:00
shenlong
a09fbe5723 chore(renovate): enforce compatible flavor for guava (#6392)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-15 11:41:37 +00:00
shenlong
6ee9c8277f chore(dep): remove unused badges dep (#6384)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-15 00:02:11 -06:00
Guillermo
f3d9196a7e fix(docs) Fix command name (#6368) 2024-01-13 14:16:17 -06:00
Thariq Shanavas
9a7f987835 fix(docs) Fix relative paths leading to broken links (#6354) 2024-01-13 14:15:32 -06:00
Daniel Dietzler
5e2aec3892 fix(web): quota usage view (#6358) 2024-01-13 14:14:24 -06:00
Mert
e2666f0e74 fix(ml): remove unused import (#6356)
* remove unused import

* formatting
2024-01-13 00:25:26 -05:00
renovate[bot]
20be42cec0 chore(deps): update machine-learning (#6302)
* chore(deps): update machine-learning

* fix typing, use new lifespan syntax

* wrap in try / finally

* move log

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-01-13 05:00:09 +00:00
Alex
bd5ae9f31e fix(web): wrap long word in description (#6351) 2024-01-12 19:45:17 -05:00
cfitzw
deb1f970a8 feat(server, web): quotas (#4471)
* feat: quotas

* chore: open api

* chore: update status box and upload error message

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-12 19:43:36 -05:00
Jason Rasmussen
f4edb6c4bd feat(server): track metadata extracted at (#6352) 2024-01-12 19:39:45 -05:00
Russell Tan
19e9908ee2 fix(web): show description in shared links (#4249)
* chore: rebase

* fix: re-size issue

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-12 20:27:34 +00:00
aviv926
df4af025d7 Edit and update of FAQ+new database GUI guide (#5958)
* Update added and re -arrangement of FAQ

* Erasure of addition mistakes

* Erasure of addition mistakes

* Fix broken links

* Correcting spelling errors + adding more questions

* New required fixes

* More FAQ

* Adding questions + adding a note about a directory and an explanation about adding a path in a Windows environment

* Update docs/docs/FAQ/Albums-FAQ.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/FAQ/Assets-FAQ.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/FAQ/Machine-Learning-FAQ.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/FAQ/Machine-Learning-FAQ.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Update docs/docs/features/libraries.md

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* Corrections

* chore: updates

* import TOCinlines from all FAQ pages to one page + Corrections

* Removing privacy information + adding required Flutter version information

* Removing privacy information + adding required Flutter version information

* Revert "Removing privacy information + adding required Flutter version information"

This reverts commit da63439fd2.

* All in one page

* Guide - Remove Offline Files

* Guide - Remove Offline Files

* doc: updates

* chore: fix broken link

* docs: clean up database gui guide

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-12 14:45:41 -05:00
bo0tzz
d12a361992 fix(web): OAuth settings nits (#6330)
* fix(web): Correct oauth documentation link

* fix(web): Quotes instead of backticks
2024-01-12 18:42:59 +00:00
Daniel Dietzler
a4f49d197e refactor(web): admin settings (#6177)
* refactor admin settings

* use slots to render buttons in simplified template settings

* remove more boilerplate by looping over components

* fix: onboarding

* fix: reset/reset to default

* remove lodash since it is unecessary

* chore: standardize padding and margins

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-12 12:44:11 -05:00
Jason Rasmussen
2439c5ab57 refactor: open api (#6334) 2024-01-12 07:36:27 -05:00
Graham Steffaniak
a1523a9af0 docs: Update libraries.md (#6333) 2024-01-11 17:10:48 -05:00
Fynn Petersen-Frey
753292956e feat(ml): ARMNN acceleration (#5667)
* feat(ml): ARMNN acceleration for CLIP

* wrap ANN as ONNX-Session

* strict typing

* normalize ARMNN CLIP embedding

* mutex to handle concurrent execution

* make inputs contiguous

* fine-grained locking; concurrent network execution

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-01-11 18:26:46 +01:00
bo0tzz
29747437f6 ci: Run e2e tests on self-hosted runner (#6296) 2024-01-11 09:48:49 -06:00
shenlong
4f942bc182 fix(mobile): copy shared link (#6310)
* fix(mobile): copy shared link

* fix: handle trailing slash

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-10 09:32:09 -06:00
shenlong
0e0a472de1 fix(mobile): ensure notifier is mounted before updating state (#6308)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-10 09:31:54 -06:00
waclaw66
902977f165 fix(server): exif gps decoding (#6138) 2024-01-10 07:36:54 -05:00
Jason Rasmussen
08fcce9e90 fix(web): copy shared link (#6309) 2024-01-10 04:10:06 +00:00
Jason Rasmussen
bf1dd36fa9 refactor(server): split api and jobs into separate e2e suites (#6307)
* refactor: domain and infra modules

* refactor(server): e2e tests
2024-01-09 23:04:16 -05:00
martin
e5786b200a fix(web): large description on detail-panel (#6305) 2024-01-09 22:52:12 -05:00
Jason Rasmussen
12dc7c48c9 refactor(server): domain and infra modules (#6301) 2024-01-09 17:07:01 -05:00
renovate[bot]
26e6602ed3 fix(deps): update docs (#6284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-09 16:48:32 -05:00
Jason Rasmussen
61b97157ed chore: release note groups (#6297) 2024-01-09 18:55:59 +00:00
bo0tzz
58bd9c0018 fix(docs): Use absolute path for external library guide (#6290)
* fix(docs): Use absolute path for external library guide

* fix: Cursor in screenshot
2024-01-09 09:32:30 -06:00
Alex
8d1287ef15 fix(web): logout and clear user store when using back button on the change password form (#6288) 2024-01-09 09:32:23 -06:00
Daniel Dietzler
8d0a619e81 fix(web): handle trailing slash in external domain (#6253) 2024-01-08 23:06:02 -06:00
martin
29b204de57 fix(web): grid on people page (#5640)
* fix: grid on people page

* pr feedback

* wait before width is set

* fix: animation

* fix: use grid instead

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-01-08 22:04:38 -05:00
indam
bf8e2966c4 docs: update Chinese README (#6245)
* update Chinese README

* update Chinese README, update features
2024-01-08 10:31:54 -06:00
Alex The Bot
df59b2099f Version v1.92.1 2024-01-08 15:24:38 +00:00
Daniel Dietzler
7cc0904273 feat(server): disable onboarding when config file is set (#6256) 2024-01-08 09:22:26 -06:00
Alex The Bot
319ddfda53 Version v1.92.0 2024-01-08 05:19:11 +00:00
Alex
d095382b14 chore(mobile): translation update (#6242) 2024-01-07 23:17:35 -06:00
Zack Pollard
5a66314ead test: small improvements to database init tests (#6232) 2024-01-07 01:53:09 +00:00
Michael Manganiello
e262298090 fix(server): Split database queries based on PostgreSQL bound params limit (#6034)
* fix(server): Split database queries based on PostgreSQL bound params limit

PostgreSQL uses a 16-bit integer to indicate the number of bound
parameters.

This means that the maximum number of parameters for any query is 65535.
Any query that tries to bind more than that (e.g. searching by a list of
IDs) requires splitting the query into multiple chunks.

This change includes refactoring every Repository that runs queries
using a list of ids, and either flattening or merging results.

Fixes #5788, #5997.

Also, potentially a fix for #4648 (at least based on
[this comment](https://github.com/immich-app/immich/issues/4648#issuecomment-1826134027)).

References:

* https://github.com/typeorm/typeorm/issues/7565
* [PostgreSQL message format - Bind](https://www.postgresql.org/docs/15/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-BIND)

* misc: Create Chunked decorator to simplify implementation

* feat: Add ChunkedArray/ChunkedSet decorators
2024-01-06 20:36:12 -05:00
maxer137
6835d4519a feat(server): add postgres major version check (#6213)
* feat(server): Throw error when PostgreSQL version is not within the supported versions
The pgvecto.rs extension, though not distributed, can be built for PostgreSQL 12 and 13.
An installation of PostgreSQL 12 with the pgvecto.rs extensions installed will not be caught by immich.
This causes immich to attempt to run the database migrations without having a proper environment.
With assertPostgresql the server will throw an error if the PostgreSQL version is not within the supported range.

* Replaced assertion with lesser than comparison
As requested by @zackpollard

* Changed the comparison to use the minPostgresVersion variable.
If we define one we might as well use it. makes changing the versioning later easier

* Added two new tests, modified two existing tests

`should return if minimum supported PostgreSQL and vectors version are installed`:
Check if init returns properly and that getPostgresVersion is called twice

`should thrown an error if PostgreSQL version is below minimum supported version`:
Checks if the init function correctly returns an error

`should suggest image with postgres ${major} if database is ${major}`:
Modified to set MockResolvedValue instead of MockResolvedValueOnce. With the new check we get the PostgreSQL version twice. So it needs to be set during the entire test.

`should not suggest image if postgres version is not in 14, 15 or 16`:
Modified the bounds to [14, 18]. Because values below 14 now will not get called.
Also Modified to call `getPostgresVersion.MockResolvedValueOnce` for twice, because it gets called twice.

* Fixed two mistakes in the jest functions from previous commit #2abcb60

`should thrown an error if PostgreSQL version is below minimum supported version`:
The regex function I wrote mistakingly used the negate function which check that the error *did not* contain the phrase "PostgreSQL". Which is the opposite

`should not suggest image if postgres version is not in 14, 15 or 16`:
confused bounds for a normal javascript array. Changed the test to only check for values above 16. As values below 14 will get thrown out by test `should return if minimum supported PostgreSQL and vectors version are installed`

I apologise for the mistakes in my previous commit.

* Format fix

---------

Co-authored-by: max <wak@vanling.net>
2024-01-06 19:24:09 -05:00
martin
84e60ea155 feat(web): auto switch theme (#6176)
* move from app.html to user-page-layout.svelte

* fix: use layout.svelte

* simplify

* fix: map style don't change

* fix: auto switch theme map

* use constants

* simplify

* rename

* rename settign

* fix: remove

* pr feedback

* fix: tests

* fix: migration

* fix: migration

* pr feedback

* simplify

* simplify

* pr feedback

* fix: merge

* chore: set insetad of toggle on click

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-07 00:15:25 +00:00
Mert
41a32b4e6b feat(server): add rw2 support (#6231) 2024-01-06 23:58:04 +00:00
Alex
0750e13d3f chore(server): set onboarding for existing instances (#6229)
* chore(server): set onboarding for existing instances

* down
2024-01-06 22:18:42 +00:00
Mikhail Gorbachev
78d8783a54 docs: Russian readme (#6221)
Add Russain README_ru_RU.md and create link in README
2024-01-06 20:02:50 +00:00
martin
2cc5149d0b feat(web): previous button for on-boarding steps (#6178)
* feat: previous on the onboarding

* fix: storage full screen

* feat: transition

* use svelte files for svg

* fix: use icon component

* fix: additional check

* styling'

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-06 20:01:24 +00:00
Felix
8c784defa0 Fix typo in liberapay link (#6222) 2024-01-06 18:31:10 +00:00
Michael Manganiello
8921278447 fix(server): Execute query in AlbumRepository.removeAsset method (#6216)
The current `removeAsset` implementation just builds the query but does
not execute it. That also seems to be the reason the `@GenerateSql`
decorator was commented out.
2024-01-06 11:56:08 -06:00
shenlong
a233e176e5 fix(mobile): handle readonly and offline assets (#5565)
* feat: add isReadOnly and isOffline fields to Asset collection

* refactor: move asset iterable filters to extension

* hide asset actions based on offline and readOnly fields

* pr changes

* chore: doc comments

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 21:02:16 -06:00
Fynn Petersen-Frey
56cde0438c feat(mobile): multiselect for search & person page (#6016)
* feat(mobile): multiselect for search & person page

* merge main

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 21:23:58 +00:00
Thariq Shanavas
ad09896f58 feat(docs): Template script for 3-2-1 backup of the assets and database (#6026)
* Added borg template cron job

* moved script to guides section

* Mentioned db backup location in docs

* Added directions for restoring backups
2024-01-05 15:02:55 -06:00
shenlong
d3af2b1f69 (mobile): ios - calculate hash using CryptoKit (#5976)
* ios: calculate hash using CryptoKit

* chore: remove unused crypto dep

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 10:49:43 -06:00
bo0tzz
ac0cb4a96e Revert "docs: add step by step set up guide for external libraries (#5288)" (#6194)
This reverts commit 27be076958.
2024-01-05 09:45:50 -06:00
shenlong
af32183728 refactor(mobile): Activities (#5990)
* refactor: autoroutex pushroute

* refactor: autoroutex popRoute

* refactor: autoroutex navigate and replace

* chore: add doc comments for extension methods

* refactor: Add LoggerMixin and refactor Album activities to use mixin

* refactor: Activity page

* chore: activity user from user constructor

* fix: update current asset after build method

* refactor: tests with similar structure as lib

* chore: remove avoid-declaring-call-method rule from dcm analysis

* test: fix proper expect order

* test: activity_statistics_provider_test

* test: activity_provider_test

* test: use proper matchers

* test: activity_text_field_test & dismissible_activity_test added

* test: add http mock to return transparent image

* test: download isar core libs during test

* test: add widget tags to widget test cases

* test: activity_tile_test

* build: currentAlbumProvider to generator

* movie add / remove like to activity input tile

* test: activities_page_test.dart

* chore: better error logs

* chore: dismissibleactivity as statelesswidget

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-04 23:20:55 -06:00
Emanuel Bennici
d1e16025cf fix(server): Fix incorrect sorting with search (#6031)
The search results are not sorted by date causing confision.

Fixes #5916
2024-01-04 14:47:09 -06:00
Zack Pollard
4cf1e553d2 feat(server): in upload folder, split the files into folders based on the first four of the files uuid (#6175) 2024-01-04 14:45:16 -06:00
shenlong
2aaf941dda refactor(mobile): use startOAuth and server features flags (#6155)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-04 14:44:40 -06:00
Alex
13ba83dce6 chore(server): better ML error messages (#5914)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-04 21:34:50 +01:00
martin
4f6f79a392 feat(web): go back on the onboarding (#6171)
* feat: go back on the onboarding

* fix: state

* rename variable
2024-01-04 11:20:19 -06:00
Jason Rasmussen
ba4a20a181 chore: group 'dependencies' (#6167) 2024-01-04 11:21:24 -05:00
martin
aefd93e43a feat(server): add env for reverse geocoding path (#6163)
* feat: add env for reverse geocoding path

* fix: quote in doc
2024-01-04 13:36:52 +00:00
Alex
18f59f78e3 feat(web): onboarding (#6066)
* feat(web): onboarding

* feat: openapi

* feat: modulization

* feat: page advancing

* Animation

* Add storage templaete settings

* sql

* more style

* Theme

* information and styling

* hide/show table

* Styling

* Update user property

* fix test

* fix test:

* fix e2e

* test

* Update web/src/lib/components/onboarding-page/onboarding-hello.svelte

Co-authored-by: bo0tzz <git@bo0tzz.me>

* naming

* use System Metadata

* better return type

* onboarding using server metadata

* revert previous changes in user entity

* sql

* test web

* fix test server

* server/web test

* more test

* consolidate color theme change logic

* consolidate save button to storage template

* merge main

* fix web

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-01-04 05:28:32 +00:00
Jason Rasmussen
f8d64be13c feat(server)!: move welcome message to settings (#6157)
* feat(server): move welcome message to settings

* chore: open api
2024-01-04 05:00:17 +00:00
Jason Rasmussen
52e92e9bb4 docs: unused geocoding env variable (#6158) 2024-01-04 04:56:18 +00:00
Jason Rasmussen
7b40c20ea5 chore(server): time bucket sql (#6156) 2024-01-03 22:32:52 -06:00
Jason Rasmussen
317adc5c28 feat(web,server): external domain setting (#6146)
* feat: external domain setting

* chore: open api

* mobile: handle serverconfig-externalDomain

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-03 21:54:48 -05:00
Jason Rasmussen
1e503c3212 chore(cli): remove chai and unused types (#6153)
* chore: remove chai

* remove more deps
2024-01-03 23:07:02 +00:00
renovate[bot]
282f7803bd fix(deps): update web (#6152)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 23:02:24 +00:00
renovate[bot]
2950d84820 chore(deps): update @immich/cli (#6150)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 22:54:13 +00:00
Jonathan Jogenfors
ee82327d2a add tests for cli exclusion pattern (#6148) 2024-01-03 17:42:26 -05:00
renovate[bot]
13fb32513c fix(deps): update server (#6119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 17:41:30 -05:00
renovate[bot]
103c3ee2f1 fix(deps): update docs (#6120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 16:55:59 -05:00
Colin
40fbe81c7b docs: typo detial -> detail (#6135)
Also added missing "."
2024-01-03 03:34:42 +00:00
renovate[bot]
093e61eee9 chore(deps): update @immich/cli (#6118)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-02 03:35:50 +00:00
renovate[bot]
23b38a0474 fix(deps): update dependency @nestjs/schedule to v4 (#5348)
* fix(deps): update dependency @nestjs/schedule to v4

* fix: change CronJob in addCronJob to match new type required by nestjs schedule module

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-01-01 22:25:25 -05:00
jcianci12
27be076958 docs: add step by step set up guide for external libraries (#5288)
* Update libraries.md - External Library step by step set up guide added

When setting up immmich external libraries, I found some missing details around the relationship between external paths and import paths. By providing an example, I am hoping it helps new users.

* chore: fix formatting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-01 22:18:28 -05:00
martin
c24d0e82bb fix: use loading spinner for library spinner (#6116) 2024-01-01 22:10:48 -05:00
Jason Rasmussen
9a04014f98 feat(mobile): use new endpoint (#6108) 2024-01-01 19:02:30 -05:00
Jason Rasmussen
a7d9e25fb0 fix(web): use submit event instead of button click (#6112) 2024-01-01 17:45:09 -05:00
Jason Rasmussen
014adf175a fix(cli): file handles (#6110)
* fix: file handles

* chore: bump for patch release
2024-01-01 22:37:52 +00:00
Fynn Petersen-Frey
cc7ba3c21a feat(server): search across own+partner assets (#5966)
* feat(server): search across own+partner assets

* generate sql

* fix sql parameter
2024-01-01 17:25:22 -05:00
Davis Clark
2688e05033 docs: update hardware-transcoding.md (#5968)
* Update hardware-transcoding.md

I accidentally closed #5924 for some odd reason. Copied the same code changes to this one.

* updated formatting

* Update hardware-transcoding.md

Added line 66 saying that `NVIDIA_DRIVER_CAMPABILITITES` is no longer required.
2024-01-01 20:50:03 +00:00
Michael Manganiello
4a5b8c3770 feat(server): Enqueue jobs in bulk (#5974)
* feat(server): Enqueue jobs in bulk

The Job Repository now has a `queueAll` method, that enqueues messages
in bulk (using BullMQ's
[`addBulk`](https://docs.bullmq.io/guide/queues/adding-bulks)),
improving performance when many jobs must be enqueued within the same
operation.

Primary change is in `src/domain/job/job.service.ts`, and other services
have been refactored to use `queueAll` when useful.

As a simple local benchmark, triggering a full thumbnail generation
process over a library of ~1,200 assets and ~350 faces went from
**~600ms** to **~250ms**.

* fix: Review feedback
2024-01-01 15:45:42 -05:00
Jan
7dd88c4114 fix(server): sanitize storagelabel when creating a user #3346 (#5717)
* sanitize storagelabel when creating a user #3346

* code formatting
2024-01-01 15:37:39 -05:00
Michael Lyon
523e7d4742 fix(docs): update broken links (#6094)
* fix(docs): update broken link

* fix(docs): change to path

* fix(docs): second broken link

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-01 20:32:16 +00:00
Jason Rasmussen
e01c96c637 chore: group svelte major deps (#6104) 2024-01-01 21:27:23 +01:00
renovate[bot]
13390d0c87 chore(deps): update dependency eslint-plugin-unicorn to v50 (#6100)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 19:28:19 +00:00
Opbod
a5a71e6b5c Update en-US.json - spelling changes (#5868) 2024-01-01 19:27:45 +00:00
renovate[bot]
a53b2de3c4 chore(deps): update dependency @types/supertest to v6 (#6099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 19:27:00 +00:00
renovate[bot]
cb3f18bb9f chore(deps): update base-image to v20231228 (#6095)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 13:44:02 -05:00
renovate[bot]
c80e37aded chore(deps): update redis:6.2-alpine docker digest to c5a607f (#5979)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 13:18:38 -05:00
Jason Rasmussen
03eb5ffc5c refactor(server): simplify config init process (#5702) 2024-01-01 13:16:44 -05:00
Jorge Avila
5f6d09d3da chore(web): migrate to vitest (#5754)
* Updated vite and ts config file with vtest options and a new alias to fix the dev command error

* Updated package script and update the packages
 -- this removes jest dependencies

* Added new setup file needed in vitest in order to be able to use the jest-dom matchers in tests

* Updated deprecated utilities when using faker

* Updated test files and mocks to use vitest instead of jest

* Enabled web test check in GitHub actions

* remove babel dependencies as they are no longer needed with vitest

* move the jest config files to a folder in case we need to go back to jest

* chore: remove old files

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-01 12:36:49 -05:00
martin
9de557916b fix(web): cancel select all (#6047)
* fix: cancel select all

* rename var
2024-01-01 11:18:22 -05:00
martin
0ed89e61ec fix: remove archived people from explore (#6091) 2024-01-01 11:07:42 -05:00
Zack Pollard
ca9cad20bc feat: storage template locking + fix for database locks (#6054)
* fix: locks need to be acquired and released using the same session

* feat: only allow a single storage template operation at a single time

this has been added to avoid possible rare race conditions where two files are moved at once to the same path with the same name, causing our duplicate iterator to not detect them and therefore both files will have the same name and overwrite eachother
2023-12-30 09:09:33 -06:00
Zack Pollard
2e38fa73bf feat: storage template file move hardening (#5917)
* fix: pgvecto.rs extension breaks typeorm schema:drop command

* fix: parse postgres bigints to javascript number types when selecting data

* feat: verify file size is the same as original asset after copying file for storage template job

* feat: allow disabling of storage template job, defaults to disabled for new instances

* fix: don't allow setting concurrency for storage template migration, can cause race conditions above 1

* feat: add checksum verification when file is copied for storage template job

* fix: extract metadata for assets that aren't visible on timeline
2023-12-29 18:41:33 +00:00
Michael Manganiello
5f6bd4ae7e fix(server): Reduce number of bound parameters in Access queries (#6015)
* fix(server): Reduce number of bound parameters in Access queries

According to https://github.com/typeorm/typeorm/issues/7565, the
introduction of bulk queries for permission checks could quickly reach
the limit of 65536 bound parameters allowed by the PostgreSQL
connection.

To avoid reaching that limit, this first change refactors the Access
queries that are expanding the set of ids multiple times. For example,
`asset.checkSharedLinkAccess` expands the ids 4 times, so providing just
~16400 ids is enough to break the query.

Refactored queries:

* activity.checkCreateAccess

```sql
-- Before
SELECT "AlbumEntity"."id" AS "AlbumEntity_id"
FROM "albums" "AlbumEntity"
    LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
        ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
    LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
        ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
        AND ("AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL)
WHERE
    (
        (
            "AlbumEntity"."id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
            AND "AlbumEntity"."isActivityEnabled" = $11
            AND "AlbumEntity__AlbumEntity_sharedUsers"."id" = $12
        )
        OR (
            "AlbumEntity"."id" IN ($13, $14, $15, $16, $17, $18, $19, $20, $21, $22)
            AND "AlbumEntity"."isActivityEnabled" = $23
            AND "AlbumEntity"."ownerId" = $24
        )
    )
    AND "AlbumEntity"."deletedAt" IS NULL

-- After
SELECT "album"."id" AS "album_id"
FROM "albums" "album"
    LEFT JOIN "albums_shared_users_users" "album_sharedUsers"
        ON "album_sharedUsers"."albumsId"="album"."id"
    LEFT JOIN "users" "sharedUsers"
        ON "sharedUsers"."id"="album_sharedUsers"."usersId"
        AND "sharedUsers"."deletedAt" IS NULL
WHERE
    "album"."id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
    AND "album"."isActivityEnabled" = true
    AND (
        "album"."ownerId" = $11
        OR "sharedUsers"."id" = $12
    )
    AND "album"."deletedAt" IS NULL
```

* asset.checkAlbumAccess

```sql
-- Before
SELECT
    "asset"."id" AS "assetId",
    "asset"."livePhotoVideoId" AS "livePhotoVideoId"
FROM "albums" "album"
    INNER JOIN "albums_assets_assets" "album_asset"
        ON "album_asset"."albumsId"="album"."id"
    INNER JOIN "assets" "asset"
        ON "asset"."id"="album_asset"."assetsId"
        AND "asset"."deletedAt" IS NULL
    LEFT JOIN "albums_shared_users_users" "album_sharedUsers"
        ON "album_sharedUsers"."albumsId"="album"."id"
    LEFT JOIN "users" "sharedUsers"
        ON "sharedUsers"."id"="album_sharedUsers"."usersId"
        AND "sharedUsers"."deletedAt" IS NULL
WHERE
    (
        "album"."ownerId" = $1
        OR "sharedUsers"."id" = $2
    )
    AND (
        "asset"."id" IN ($3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
        OR "asset"."livePhotoVideoId" IN ($13, $14, $15, $16, $17, $18, $19, $20, $21, $22)
    )
    AND "album"."deletedAt" IS NULL

-- After
WITH "assetIds" AS (
    SELECT unnest(array[$1, $2, $3, $4, $5, $6, $7, $8, $9, $10])::uuid AS "id"
    FROM (SELECT 1 AS dummy_column) "dummy_table"
)
SELECT
    "asset"."id" AS "assetId",
    "asset"."livePhotoVideoId" AS "livePhotoVideoId"
FROM "albums" "album"
    INNER JOIN "albums_assets_assets" "album_asset"
        ON "album_asset"."albumsId"="album"."id"
    INNER JOIN "assets" "asset"
        ON "asset"."id"="album_asset"."assetsId"
        AND "asset"."deletedAt" IS NULL
    LEFT JOIN "albums_shared_users_users" "album_sharedUsers"
        ON "album_sharedUsers"."albumsId"="album"."id"
    LEFT JOIN "users" "sharedUsers"
        ON "sharedUsers"."id"="album_sharedUsers"."usersId"
        AND "sharedUsers"."deletedAt" IS NULL
WHERE
    (
        "album"."ownerId" = $11
        OR "sharedUsers"."id" = $12
    )
    AND (
        "asset"."id" IN (SELECT id FROM "assetIds")
        OR "asset"."livePhotoVideoId" IN (SELECT id FROM "assetIds")
    )
    AND "album"."deletedAt" IS NULL
```

* asset.checkSharedLinkAccess

```sql
-- Before
SELECT
    "assets"."id" AS "assetId",
    "assets"."livePhotoVideoId" AS "assetLivePhotoVideoId",
    "albumAssets"."id" AS "albumAssetId",
    "albumAssets"."livePhotoVideoId" AS "albumAssetLivePhotoVideoId"
FROM "shared_links" "sharedLink"
    LEFT JOIN "albums" "album"
        ON "album"."id"="sharedLink"."albumId"
        AND "album"."deletedAt" IS NULL
    LEFT JOIN "shared_link__asset" "assets_sharedLink"
        ON "assets_sharedLink"."sharedLinksId"="sharedLink"."id"
    LEFT JOIN "assets" "assets"
        ON "assets"."id"="assets_sharedLink"."assetsId"
        AND "assets"."deletedAt" IS NULL
    LEFT JOIN "albums_assets_assets" "album_albumAssets"
        ON "album_albumAssets"."albumsId"="album"."id"
    LEFT JOIN "assets" "albumAssets"
        ON "albumAssets"."id"="album_albumAssets"."assetsId"
        AND "albumAssets"."deletedAt" IS NULL
WHERE
    "sharedLink"."id" = $1
    AND (
        "assets"."id" IN ($2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
        OR "albumAssets"."id" IN ($12, $13, $14, $15, $16, $17, $18, $19, $20, $21)
        OR "assets"."livePhotoVideoId" IN ($22, $23, $24, $25, $26, $27, $28, $29, $30, $31)
        OR "albumAssets"."livePhotoVideoId" IN ($32, $33, $34, $35, $36, $37, $38, $39, $40, $41)
    )

-- After
WITH "assetIds" AS (
    SELECT unnest(array[$1, $2, $3, $4, $5, $6, $7, $8, $9, $10])::uuid AS "id"
    FROM (SELECT 1 AS dummy_column) "dummy_table"
)
SELECT
    "assets"."id" AS "assetId",
    "assets"."livePhotoVideoId" AS "assetLivePhotoVideoId",
    "albumAssets"."id" AS "albumAssetId",
    "albumAssets"."livePhotoVideoId" AS "albumAssetLivePhotoVideoId"
FROM "shared_links" "sharedLink"
    LEFT JOIN "albums" "album"
        ON "album"."id"="sharedLink"."albumId"
        AND "album"."deletedAt" IS NULL
    LEFT JOIN "shared_link__asset" "assets_sharedLink"
        ON "assets_sharedLink"."sharedLinksId"="sharedLink"."id"
    LEFT JOIN "assets" "assets"
        ON "assets"."id"="assets_sharedLink"."assetsId"
        AND "assets"."deletedAt" IS NULL
    LEFT JOIN "albums_assets_assets" "album_albumAssets"
        ON "album_albumAssets"."albumsId"="album"."id"
    LEFT JOIN "assets" "albumAssets"
        ON "albumAssets"."id"="album_albumAssets"."assetsId"
        AND "albumAssets"."deletedAt" IS NULL
    WHERE
        "sharedLink"."id" = $11
        AND (
            "assets"."id" IN (SELECT id FROM "assetIds")
            OR "albumAssets"."id" IN (SELECT id FROM "assetIds")
            OR "assets"."livePhotoVideoId" IN (SELECT id FROM "assetIds")
            OR "albumAssets"."livePhotoVideoId" IN (SELECT id FROM "assetIds")
        )
```

* fix: Use array overlapping instead of CTEs
2023-12-27 23:50:54 -06:00
renovate[bot]
4fff2c75aa chore(deps): update base-image to v20231221 (#6029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-27 23:47:27 -06:00
Mert
a1e1f11399 feat(server): delete unnecessary encoded videos (#6027)
* delete unnecessary transcodes

* added test
2023-12-27 23:34:00 -06:00
Emanuel Bennici
fd3a1a4da8 fix(mobile): Fix "Live Images" and "Recently added" page (#6030)
* fix(mobile): Load assets on "Live-Images" page

Instead of requesting the server for the relevant entries, we can use
the local DB.

This change fixes loading errors when going to the "Live-Images" page.
It is similar to the work done with #5971.

* fix(mobile): Fix Recently added page
2023-12-27 23:33:37 -06:00
renovate[bot]
27bc777581 chore(deps): pin dependencies (#5945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-27 19:40:49 -06:00
Mert
8119d4bb26 chore(server): refactor locks (#5953)
* lock refactor

* add mocks

* add await

* move database repo injection to service

* update tests

* add mock implementation

* remove unused imports

* this
2023-12-27 18:36:51 -05:00
dependabot[bot]
1af27fcc47 chore(deps): bump @babel/traverse from 7.23.0 to 7.23.6 in /docs (#6021)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.6/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 21:24:43 +00:00
dependabot[bot]
59cf17e5e1 chore(deps-dev): bump @babel/traverse from 7.23.0 to 7.23.6 in /cli (#6020)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.6/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 21:23:10 +00:00
dependabot[bot]
5596b3a6a5 chore(deps-dev): bump @babel/traverse from 7.23.0 to 7.23.6 in /web (#6019)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.6/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 21:20:17 +00:00
RenautMestdagh
f7a78618e5 fix(web): "undefined" in error message when error at uploading (#5973) 2023-12-26 15:42:46 -06:00
Fynn Petersen-Frey
733fa28aa2 feat(mobile): load search result assets from local DB (#5971) 2023-12-26 15:41:51 -06:00
Thomas
c0ebc943d2 fix(server): strip metadata from thumbnails (#4438)
included all thumbnail metadata. It seems this has to be explicitly disabled.

Refs: #4382

feat. basic metadata e2e test

fix: use tiff thumbnails in first step + e2e fix

fix: revert switch to tiff

feat: test metadata of both webp and jpg

feat: use upload in e2e test

fix: lint

strip metadata with exiftool

use `withIccProfile`

fix e2e

formatting

run jobs in e2e
2023-12-26 16:27:51 -05:00
Marios Kerasiotis
1d0dbdff67 fix(documentation): entities path in migrations (#5985) (#5986)
Changed path: server/src/infra/database/entities to server/src/infra/entities
2023-12-26 14:04:41 +00:00
renovate[bot]
3edc87f684 fix(deps): update machine-learning (#5180)
* fix(deps): update machine-learning

* updated ruff command

* use isinstance

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2023-12-25 22:37:48 -05:00
jpsak09
a7889e5e11 feat(web): display age in months when age is 0 (#5961)
* display age in months when age is 0

* simplifying conditionals, using full word "month" over abbreviation
2023-12-25 10:38:14 -06:00
Alex
dea1063b17 chore(mobile): translation update (#5960) 2023-12-24 10:29:53 -06:00
Alex
17ef411b0a Localizely: Translations update (#5902)
* chore(mobile): translation update

* fix localizely plurals form

* more fix
2023-12-24 10:20:34 -06:00
Michael Manganiello
83da1c74fc chore(web): Use percentage sign for uploads (#5952)
Tiny change, but matches the rest of the progress indicators.
2023-12-23 21:52:35 +00:00
Daniel Dietzler
8fdd3aaed1 fix(server): init library scanning on start up (#5951) 2023-12-23 20:46:42 +00:00
Alex
aaa7a613b2 fix(web): cannot open detail panel in public shared link (#5946)
* fix(web): cannot open detail panel in public shared link

* fix websocket auth message

* refactor
2023-12-23 10:07:12 -06:00
Ikko Eltociear Ashimine
45cf3291a2 docs: fix README_ja_JP.md (#5939)
minor fix
2023-12-23 09:20:04 -06:00
renovate[bot]
612590feda fix(deps): update dependency pillow to v10 [security] (#5944) 2023-12-23 14:10:05 +00:00
Mert
19ea0ead85 renovate: use in-range-only strategy for python (#5937) 2023-12-23 09:04:36 -05:00
Alex
e47e25e671 fix(server): access system config before database migration complete (#5912) 2023-12-21 12:52:49 -06:00
Mert
4dd7412a86 pin python (#5904) 2023-12-21 11:54:56 -05:00
Mert
cc2dc12f6c fix(server): run migrations after database checks (#5832)
* run migrations after checks

* optional migrations

* only run checks in server and e2e

* re-add migrations for microservices

* refactor

* move e2e init

* remove assert from migration

* update providers

* update microservices app service

* fixed logging

* refactored version check, added unit tests

* more version tests

* don't use mocks for sut

* refactor tests

* suggest image only if postgres is 14, 15 or 16

* review suggestions

* fixed regexp escape

* fix typing

* update migration
2023-12-21 10:06:26 -06:00
waclaw66
2790a46703 pin fix (#5909) 2023-12-21 09:28:45 -06:00
Mert
f602295bf9 chore(dev): move envs to image (#5906) 2023-12-21 09:28:23 -06:00
Mert
092a23fd7f feat(server,ml): remove image tagging (#5903)
* remove image tagging

* updated lock

* fixed tests, improved logging

* be nice

* fixed tests
2023-12-20 20:47:56 -05:00
shenlong
154292242f fix(mobile): use proper id for gellery_viewer hero attribute (#5894)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-20 11:23:17 -06:00
Jonathan Jogenfors
8295542941 feat(cli): Add existing assets to album and allow album name (#5838)
* Allow building and installing cli

* feat: add format fix

* docs: remove cli folder

* feat: use immich scoped package

* feat: rewrite cli readme

* docs: add info on running without building

* cleanup

* chore: remove import functionality from cli

* feat: add logout to cli

* docs: add todo for file format from server

* docs: add compilation step to cli

* fix: success message spacing

* feat: can create albums

* fix: add check step to cli

* fix: typos

* feat: pull file formats from server

* chore: use crawl service from server

* chore: fix lint

* docs: add cli documentation

* chore: rename ignore pattern

* chore: add version number to cli

* feat: use sdk

* fix: cleanup

* feat: album name on windows

* chore: remove skipped asset field

* feat: add more info to server-info command

* chore: cleanup

* wip

* chore: remove unneeded packages

* e2e test can start

* git ignore for geocode in cli

* add cli e2e to github actions

* can do e2e tests in the cli

* simplify e2e test

* cleanup

* set matrix strategy in workflow

* run npm ci in server

* choose different working directory

* check out submodules too

* increase test timeout

* set node version

* cli docker e2e tests

* fix cli docker file

* run cli e2e in correct folder

* set docker context

* correct docker build

* remove cli from dockerignore

* chore: fix docs links

* feat: add cli v2 milestone

* fix: set correct cli date

* remove submodule

* chore: add npmignore

* chore(cli): push to npm

* fix: server e2e

* run npm ci in server

* remove state from e2e

* run npm ci in server

* reshuffle docker compose files

* use new e2e composes in makefile

* increase test timeout to 10 minutes

* make github actions run makefile e2e tests

* cleanup github test names

* assert on server version

* chore: split cli e2e tests into one file per command

* chore: set cli release working dir

* chore: add repo url to npmjs

* chore: bump node setup to v4

* chore: normalize the github url

* check e2e code in lint

* fix lint

* test key login flow

* feat: allow configurable config dir

* fix session service tests

* create missing dir

* cleanup

* bump cli version to 2.0.4

* remove form-data

* feat: allow single files as argument

* add version option

* bump dependencies

* fix lint

* wip use axios as upload

* version bump

* cApiTALiZaTiON

* don't touch package lock

* wip: don't use job queues

* don't use make for cli e2e

* fix server e2e

* feat: always skip hashing when adding albums

* feat: create album with specific name

* check asset duplication before adding to album

* update documentation

* use correct check for when to create albums

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-20 09:51:53 -06:00
André Pinto
4505ebc315 fix(mobile): Fix pt-PT locale. Add missing pt-PT localizely entry (#5892) 2023-12-20 09:46:20 -06:00
Jan
19d66296fe chore(web): redirect share page redirect to base path (#5889) 2023-12-20 09:06:23 -06:00
martin
64176d2ff4 fix(web): multiple small issues on the web app (#5875) 2023-12-19 15:56:55 -06:00
Alex
cabc2d57dd Revert "chore(mobile): translation update (#5867)" (#5871)
This reverts commit 4e06ccd052.
2023-12-19 13:17:20 -06:00
Jonathan Jogenfors
5a3a2c7293 feat(cli): Allow uploading a single file (#5837)
* Allow building and installing cli

* feat: add format fix

* docs: remove cli folder

* feat: use immich scoped package

* feat: rewrite cli readme

* docs: add info on running without building

* cleanup

* chore: remove import functionality from cli

* feat: add logout to cli

* docs: add todo for file format from server

* docs: add compilation step to cli

* fix: success message spacing

* feat: can create albums

* fix: add check step to cli

* fix: typos

* feat: pull file formats from server

* chore: use crawl service from server

* chore: fix lint

* docs: add cli documentation

* chore: rename ignore pattern

* chore: add version number to cli

* feat: use sdk

* fix: cleanup

* feat: album name on windows

* chore: remove skipped asset field

* feat: add more info to server-info command

* chore: cleanup

* wip

* chore: remove unneeded packages

* e2e test can start

* git ignore for geocode in cli

* add cli e2e to github actions

* can do e2e tests in the cli

* simplify e2e test

* cleanup

* set matrix strategy in workflow

* run npm ci in server

* choose different working directory

* check out submodules too

* increase test timeout

* set node version

* cli docker e2e tests

* fix cli docker file

* run cli e2e in correct folder

* set docker context

* correct docker build

* remove cli from dockerignore

* chore: fix docs links

* feat: add cli v2 milestone

* fix: set correct cli date

* remove submodule

* chore: add npmignore

* chore(cli): push to npm

* fix: server e2e

* run npm ci in server

* remove state from e2e

* run npm ci in server

* reshuffle docker compose files

* use new e2e composes in makefile

* increase test timeout to 10 minutes

* make github actions run makefile e2e tests

* cleanup github test names

* assert on server version

* chore: split cli e2e tests into one file per command

* chore: set cli release working dir

* chore: add repo url to npmjs

* chore: bump node setup to v4

* chore: normalize the github url

* check e2e code in lint

* fix lint

* test key login flow

* feat: allow configurable config dir

* fix session service tests

* create missing dir

* cleanup

* bump cli version to 2.0.4

* remove form-data

* feat: allow single files as argument

* add version option

* bump dependencies

* fix lint

* wip use axios as upload

* version bump

* cApiTALiZaTiON

* don't touch package lock

* wip: don't use job queues

* don't use make for cli e2e

* fix server e2e

* feat: can upload single file

* fix upload options dto

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-19 13:15:11 -06:00
martin
7e216809f3 fix(server): remove shared link with removed asset (#5845) 2023-12-19 11:05:18 -06:00
martin
81af48af7b fix(web): open image in new tab with memories on firefox (#5847)
* fix: open image in new tab with memories on firefox

* don't use z-index

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-12-19 11:01:22 -06:00
Alex
4e06ccd052 chore(mobile): translation update (#5867) 2023-12-19 10:45:11 -06:00
Mohamed BOUSSAID
234449f3c6 fix(server, web): Prevent the user from setting a future date of birth (#5803)
* Hide the person age if it is negative

* Add validation to prevent future birth dates

* Add comment

* Add test, Add birth date validation and update birth date modal

* Add birthDate validation in PersonService and SetBirthDateModal

* Running npm run format:fix

* Generating the migration file propoerly, and Make the birthdate form logic simpler

* Make birthDate type only string

* Adding useLocationPin back
2023-12-19 10:07:38 -06:00
RenautMestdagh
95a7bf7fac Update README_nl_NL.md (#5840) 2023-12-19 10:02:25 -06:00
waclaw66
1c69dff967 feat(web): bigger dialog box of location change (#5862) 2023-12-19 09:49:09 -06:00
Jonathan Jogenfors
f4c5bdfa1c fix(cli): don't open too many files (#5841)
* Allow building and installing cli

* feat: add format fix

* docs: remove cli folder

* feat: use immich scoped package

* feat: rewrite cli readme

* docs: add info on running without building

* cleanup

* chore: remove import functionality from cli

* feat: add logout to cli

* docs: add todo for file format from server

* docs: add compilation step to cli

* fix: success message spacing

* feat: can create albums

* fix: add check step to cli

* fix: typos

* feat: pull file formats from server

* chore: use crawl service from server

* chore: fix lint

* docs: add cli documentation

* chore: rename ignore pattern

* chore: add version number to cli

* feat: use sdk

* fix: cleanup

* feat: album name on windows

* chore: remove skipped asset field

* feat: add more info to server-info command

* chore: cleanup

* wip

* chore: remove unneeded packages

* e2e test can start

* git ignore for geocode in cli

* add cli e2e to github actions

* can do e2e tests in the cli

* simplify e2e test

* cleanup

* set matrix strategy in workflow

* run npm ci in server

* choose different working directory

* check out submodules too

* increase test timeout

* set node version

* cli docker e2e tests

* fix cli docker file

* run cli e2e in correct folder

* set docker context

* correct docker build

* remove cli from dockerignore

* chore: fix docs links

* feat: add cli v2 milestone

* fix: set correct cli date

* remove submodule

* chore: add npmignore

* chore(cli): push to npm

* fix: server e2e

* run npm ci in server

* remove state from e2e

* run npm ci in server

* reshuffle docker compose files

* use new e2e composes in makefile

* increase test timeout to 10 minutes

* make github actions run makefile e2e tests

* cleanup github test names

* assert on server version

* chore: split cli e2e tests into one file per command

* chore: set cli release working dir

* chore: add repo url to npmjs

* chore: bump node setup to v4

* chore: normalize the github url

* check e2e code in lint

* fix lint

* test key login flow

* feat: allow configurable config dir

* fix session service tests

* create missing dir

* cleanup

* bump cli version to 2.0.4

* remove form-data

* feat: allow single files as argument

* add version option

* bump dependencies

* fix lint

* wip use axios as upload

* version bump

* cApiTALiZaTiON

* don't touch package lock

* wip: don't use job queues

* don't use make for cli e2e

* fix server e2e

* chore: remove old gha step

* add npm ci to server

* feat: use graceful-fs

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-19 09:40:29 -06:00
Alex The Bot
b40859551b Version v1.91.4 2023-12-19 03:34:19 +00:00
Jonathan Jogenfors
4e9b96ff1a test(cli): e2e testing (#5101)
* Allow building and installing cli

* feat: add format fix

* docs: remove cli folder

* feat: use immich scoped package

* feat: rewrite cli readme

* docs: add info on running without building

* cleanup

* chore: remove import functionality from cli

* feat: add logout to cli

* docs: add todo for file format from server

* docs: add compilation step to cli

* fix: success message spacing

* feat: can create albums

* fix: add check step to cli

* fix: typos

* feat: pull file formats from server

* chore: use crawl service from server

* chore: fix lint

* docs: add cli documentation

* chore: rename ignore pattern

* chore: add version number to cli

* feat: use sdk

* fix: cleanup

* feat: album name on windows

* chore: remove skipped asset field

* feat: add more info to server-info command

* chore: cleanup

* wip

* chore: remove unneeded packages

* e2e test can start

* git ignore for geocode in cli

* add cli e2e to github actions

* can do e2e tests in the cli

* simplify e2e test

* cleanup

* set matrix strategy in workflow

* run npm ci in server

* choose different working directory

* check out submodules too

* increase test timeout

* set node version

* cli docker e2e tests

* fix cli docker file

* run cli e2e in correct folder

* set docker context

* correct docker build

* remove cli from dockerignore

* chore: fix docs links

* feat: add cli v2 milestone

* fix: set correct cli date

* remove submodule

* chore: add npmignore

* chore(cli): push to npm

* fix: server e2e

* run npm ci in server

* remove state from e2e

* run npm ci in server

* reshuffle docker compose files

* use new e2e composes in makefile

* increase test timeout to 10 minutes

* make github actions run makefile e2e tests

* cleanup github test names

* assert on server version

* chore: split cli e2e tests into one file per command

* chore: set cli release working dir

* chore: add repo url to npmjs

* chore: bump node setup to v4

* chore: normalize the github url

* check e2e code in lint

* fix lint

* test key login flow

* feat: allow configurable config dir

* fix session service tests

* create missing dir

* cleanup

* bump cli version to 2.0.4

* remove form-data

* feat: allow single files as argument

* add version option

* bump dependencies

* fix lint

* wip use axios as upload

* version bump

* cApiTALiZaTiON

* don't touch package lock

* wip: don't use job queues

* don't use make for cli e2e

* fix server e2e

* chore: remove old gha step

* add npm ci to server

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-18 20:29:26 -06:00
martin
baed16dab6 fix(web): shared link background color on dark mode (#5846) 2023-12-18 20:26:55 -06:00
Jon Howell
a7b4727c20 feat(docs): Add a linear quick-start guide (#5812)
* feat(docs): Add a linear quick-start guide

* prettier

* fix: format

* removed unused text

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-18 20:45:49 +00:00
Alex
9834693fab fix(web): access /search throw error (#5834) 2023-12-18 14:42:25 -06:00
shenlong
085dc6cd93 fix(mobile): use safe area for gallery_viewer bottom sheet (#5831)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-18 11:22:06 -06:00
Mert
de1514a441 chore(server): startup check for pgvecto.rs (#5815)
* startup check for pgvecto.rs

* prefilter after assertion

* formatting

* add assert to migration

* more specific import

* use runner
2023-12-18 10:38:25 -06:00
Alex
fade8b627f chore(web): display places on a single row (#5825) 2023-12-18 10:34:25 -06:00
Jason Rasmussen
d3e1572229 fix(server): file sending and cache control (#5829)
* fix: file sending

* fix: tests
2023-12-18 10:33:46 -06:00
Alex
ffc31f034c chore(mobile): handle delete file error (#5827) 2023-12-18 09:54:42 -06:00
Alex
3beeffaaf0 fix(server): metadata search does not return all EXIF info (#5810)
* docs: update default config content

* fix(server): metadata search does not return all EXIF info

* remove console log

* generate sql

* Correct sql generation
2023-12-18 07:13:36 -06:00
Ferdinand Mütsch
b68800d45c chore(docs): add caddy reverse proxy config example (#5777) 2023-12-18 02:22:59 +00:00
Mert
b520955d0e fix(server): add more conditions to smart search (#5806)
* add more asset conditions

* udpate sql
2023-12-17 20:17:30 -06:00
Mert
6e7b3d6f24 fix(server): fix metadata search not working (#5800)
* don't require ml

* update e2e

* fixes

* fix e2e

* add additional conditions

* select all exif columns

* more fixes

* update sql
2023-12-17 20:16:08 -06:00
Alex
c45e8cc170 fix(web): cannot open map cluster (#5797) 2023-12-17 20:13:55 -06:00
Michael Manganiello
c6f56d9591 chore(server): Check activity permissions in bulk (#5775)
Modify Access repository, to evaluate `asset` permissions in bulk.
This is the last set of permission changes, to migrate all of them to
run in bulk!
Queries have been validated to match what they currently generate for single ids.

Queries:

* `activity` owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "activity" "ActivityEntity"
  WHERE
    "ActivityEntity"."id" = $1
    AND "ActivityEntity"."userId" = $2
)
LIMIT 1

-- After
SELECT "ActivityEntity"."id" AS "ActivityEntity_id"
FROM "activity" "ActivityEntity"
WHERE
  "ActivityEntity"."id" IN ($1)
  AND "ActivityEntity"."userId" = $2
```

* `activity` album owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "activity" "ActivityEntity"
    LEFT JOIN "albums" "ActivityEntity__ActivityEntity_album"
      ON "ActivityEntity__ActivityEntity_album"."id"="ActivityEntity"."albumId"
      AND "ActivityEntity__ActivityEntity_album"."deletedAt" IS NULL
  WHERE
    "ActivityEntity"."id" = $1
    AND "ActivityEntity__ActivityEntity_album"."ownerId" = $2
)
LIMIT 1

-- After
SELECT "ActivityEntity"."id" AS "ActivityEntity_id"
FROM "activity" "ActivityEntity"
  LEFT JOIN "albums" "ActivityEntity__ActivityEntity_album"
    ON "ActivityEntity__ActivityEntity_album"."id"="ActivityEntity"."albumId"
    AND "ActivityEntity__ActivityEntity_album"."deletedAt" IS NULL
WHERE
  "ActivityEntity"."id" IN ($1)
  AND "ActivityEntity__ActivityEntity_album"."ownerId" = $2
```

* `activity` create access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "albums" "AlbumEntity"
    LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
    LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
      AND "AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL
  WHERE
    (
      (
        "AlbumEntity"."id" = $1
        AND "AlbumEntity"."isActivityEnabled" = $2
        AND "AlbumEntity__AlbumEntity_sharedUsers"."id" = $3
      )
      OR (
        "AlbumEntity"."id" = $4
        AND "AlbumEntity"."isActivityEnabled" = $5
        AND "AlbumEntity"."ownerId" = $6
      )
    )
    AND "AlbumEntity"."deletedAt" IS NULL
)
LIMIT 1

-- After
SELECT "AlbumEntity"."id" AS "AlbumEntity_id"
FROM "albums" "AlbumEntity"
  LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
    ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
  LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
    ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
    AND "AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL
WHERE
  (
    (
      "AlbumEntity"."id" IN ($1)
      AND "AlbumEntity"."isActivityEnabled" = $2
      AND "AlbumEntity__AlbumEntity_sharedUsers"."id" = $3
    )
    OR (
      "AlbumEntity"."id" IN ($4)
      AND "AlbumEntity"."isActivityEnabled" = $5
      AND "AlbumEntity"."ownerId" = $6
    )
  )
  AND "AlbumEntity"."deletedAt" IS NULL
```
2023-12-17 12:10:21 -06:00
Alex
691e20521d docs: update default config content (#5798) 2023-12-17 12:07:53 -06:00
Quek
27f8dd6040 doc: documentation of the Immich Flutter Architectural Pattern (#5748)
* Added Documentation of the Immich Flutter Architectural Pattern

* Update README.md

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-12-17 17:51:03 +00:00
Mert
e3fa32ad23 fix(server): fix inconsistent explore queries (#5774)
* remove limits

* update sql
2023-12-17 11:04:35 -06:00
Alex The Bot
08f66c2ae5 Version v1.91.3 2023-12-17 16:57:16 +00:00
Mert
4f38a283b4 fix(server): stricter dim size check for pgvecto.rs migration (#5767)
* stricter dim size check

* remove unused import

* added null check
2023-12-17 10:55:35 -06:00
Jon Howell
00771899da fix(docs): remove inline dev inquiries (#5733)
* fix(docs): correct link; remove inline dev inquiries

* unfix relative path
2023-12-17 10:46:29 -05:00
Mert
09402eb6d0 fix(ml): disable core dumps (#5770)
* update dockerfile

* remove sysctl line
2023-12-16 20:30:29 -06:00
Jon Howell
d9b5adf0f7 fix(docs): remove spurious hyphen in docker compose cmd (#5771)
The command example is correct, but the text just before it still references the old docker-compose command.
2023-12-16 19:49:14 -05:00
Alex The Bot
a15c799ba3 Version v1.91.2 2023-12-16 23:19:58 +00:00
Daniel Dietzler
bda9fd9dfe fix(web): settings switch state when disabled, simplify classes (#5762) 2023-12-16 17:17:38 -06:00
Daniel Dietzler
19754d4b21 fix clip concurrency not being persisted after queue renaming (#5769) 2023-12-16 22:32:15 +00:00
Alex
62347edf43 chore(web): improve map pin (#5761)
* chore(web): improve map pin

* zoom level
2023-12-16 20:21:13 +00:00
Daniel Dietzler
67f020380f disable version check settings when config file is set (#5756) 2023-12-16 20:39:17 +01:00
Alex The Bot
0aae9696f6 Version v1.91.1 2023-12-16 17:26:51 +00:00
martin
2f95cb89c1 fix(web): use env for web folder path (#5753)
* fix: use env for web folder path

* feat: use constant

* fix: use join

* update docs

* fix: icon
2023-12-16 11:15:30 -06:00
Mert
cb1201e690 chore(web): update job dashboard (#5745)
* rename clip encoding to smart search

* update job subtitles

* update api

* update smart search job title and subtitle

* fix `getJobName`

* change smart search icon

* formatting

* wording

* update reference to clip

* formatting

* update reference to Encode CLIP
2023-12-16 10:50:46 -06:00
Daniel Dietzler
a2deba4734 fix(web): never ungroup map markers. ever. (#5730) 2023-12-16 10:49:58 -06:00
Alex
ae2608e31d fix(web): cannot save exclusion pattern (#5738)
* fix(web): Ccannot save exclusive pattern

* remove console log
2023-12-16 10:48:49 -06:00
Mert
d8756f3897 fix(web): searching places (#5746) 2023-12-16 10:48:27 -06:00
Mohamed BOUSSAID
7839be3b49 Adding the new models to the whitelist (#5736) 2023-12-15 22:45:14 +00:00
Jason Rasmussen
94e11d52dc docs: fix redirects for cloudflare (#5734) 2023-12-15 15:20:50 -06:00
Jon Howell
05a1283500 fix(docs): Add title for External Library guide (#5732) 2023-12-15 14:38:14 -05:00
Alex
f8519d60c7 chore: post release tasks 2023-12-15 13:25:37 -06:00
Jon Howell
899c71f297 docs: add a walk-through guide for External Libraries (#5594)
* Add a walk-through guide for External Libraries

* Apply prettier to markdown

* Add screenshots for GUI elements

* fix format
2023-12-15 12:46:43 -06:00
martin
2aa5f55cbf docs: update milestone page (#5663) 2023-12-15 09:50:13 -06:00
Alex The Bot
e9a8daa924 Version v1.91.0 2023-12-15 15:22:37 +00:00
Alex
c2cda5f3b0 fix(web): map thumbnail stretch (#5721) 2023-12-15 09:17:28 -06:00
bo0tzz
e29b80845b chore: Update docs url config (#5716) 2023-12-15 08:57:36 -06:00
dependabot[bot]
6c3bfc6f0f chore(deps): bump actions/upload-artifact from 3 to 4 (#5719)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 08:56:47 -05:00
dependabot[bot]
9cc904fb2a chore(deps): bump actions/download-artifact from 3 to 4 (#5718)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 08:56:11 -05:00
Mert
3e54ee5052 feat(ml): add new models (#5710) 2023-12-14 23:34:41 -06:00
Mert
458257847e fix(server): disable classification by default (#5708)
* disable classification by default

* fixed tests
2023-12-14 23:34:18 -06:00
renovate[bot]
16f385626e chore(deps): update dependency sql-formatter to v15 (#5709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-15 00:28:05 -05:00
renovate[bot]
e05c7f5b76 chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 5ea70d2 (#5707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-14 23:09:48 -05:00
renovate[bot]
5c8eaa6859 chore(deps): update base-image to v20231214 (#5705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-14 21:22:06 -06:00
martin
4c5397d7e6 feat(web): add types to dispatcher (#5700)
* feat: add types to dispatcher

* fix: create album name

* pr feedback

* pr feedback

* pr feedback

* fix: api key name

* remove newSharedAlbum

* pr feedback

* fix: api key creation

* on:close

* fix: owner

* fix: onclose

* remove unused code

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-14 20:54:21 -06:00
martin
502495883d fix(web): log out (#5706)
* fix: logging out

* fix: websocket

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-15 02:29:05 +00:00
bo0tzz
2836b8cda9 fix: Catchall category for release notes (#5701) 2023-12-14 14:01:17 -06:00
bo0tzz
e4ee224e16 feat(ci): Automatic categories in generated release notes (#5684)
* feat(ci): Automatic categories in generated release notes

* ci: Enforce PR labels

* chore: Job name

* fix: Label names
2023-12-14 13:54:37 -06:00
Mert
d729c863c8 chore(ml): improve shutdown (#5689) 2023-12-14 13:51:24 -06:00
Jason Rasmussen
9768931275 feat(web,server)!: runtime log level (#5672)
* feat: change log level at runtime

* chore: open api

* chore: prefer env over runtime

* chore: remove default env value
2023-12-14 16:55:40 +00:00
martin
f2270ad757 fix(web): user management responsive design (#5698)
* fix: user management tailwind

* use top instead of inset-y-0

* add types to createEventDispatcher
2023-12-14 10:55:15 -06:00
Po-Ru, Lin
8e39d389b5 feat: lazy loading on album/sharing/search (#5696)
* feat(frontend): Lazy loading on album

* feat(frontend): Lazy loading on search & sharing

Issue #5418
2023-12-14 10:48:29 -06:00
Jason Rasmussen
9bb6befc92 docs: clean-up old references (#5697)
* docs: clean-up old references

* chore: fix ref
2023-12-14 09:53:08 -05:00
waclaw66
3a2e9b6298 feat(web): increase map max zoom (#5693)
* increate max zoom

* increase max zoom on mobile
2023-12-14 08:40:56 -05:00
dependabot[bot]
a4c057ba63 chore(deps): bump github/codeql-action from 2 to 3 (#5694)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-14 08:08:22 -05:00
Slavik
679b22fada docs: remove citiesFileOverride from config-file.md; fixes #5682 (#5683)
as a result of PR #5301, the citiesFileOverride  variable is not used anymore.
2023-12-13 14:54:51 -05:00
Jason Rasmussen
b34abf25f0 feat(server): server-side events (#5669) 2023-12-13 12:23:51 -05:00
Jason Rasmussen
36196f2a5d fix(immich-admin): in dev mode (#5670) 2023-12-13 11:10:00 -06:00
martin
f13dce7d0d fix: warning when building web (#5680) 2023-12-13 12:02:26 -05:00
Jan
e5e6fcc46d #5519 shared page redirect to host (#5678)
* #5519 shared page redirect to host

* #5519 file formatting
2023-12-13 16:15:39 +00:00
martin
523d01068f fix(web): no icon with firefox (#5679)
* fix: no icon with firefox

* remove FaviconHeader.svelte
2023-12-13 11:04:06 -05:00
Alex
885eba2b7c fix(mobile): simplify state management in backup selection page (#5655)
* fix(mobile): simplify album selection backup state management

* remove search bar'

* log available albums
2023-12-12 21:06:04 -06:00
Alex
f7429c3615 docs: recap 2023 (#5665)
* docs: recap 2023

* fix: format
2023-12-13 03:03:15 +00:00
shenlong
ec0526dbcb chore(mobile): move mocktail to dev dep (#5666)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-12 20:49:14 -06:00
martin
7a9a9473d1 fix: prevent loop on search (#5664) 2023-12-12 16:55:18 -06:00
Jason Rasmussen
a0b2cbe123 feat: update arch diagram (#5662)
* feat: update arch diagram

* chore: alt test
2023-12-12 16:16:39 -06:00
bo0tzz
05550647eb docs: FAQ for thumbnail jobs (#5661) 2023-12-12 22:39:56 +01:00
Alex
c7df800d27 fix(mobile): Fix upload hang on iOS when deleting stale files (#5658)
* fix(mobile): Fix upload hang on iOS when deleting stale files

* Cleaner fix
2023-12-12 11:36:37 -06:00
martin
c602eaea4a feat(web): automatically update user info (#5647)
* use svelte store

* fix: websocket error when not authenticated

* more routes
2023-12-12 10:35:28 -06:00
Jason Rasmussen
cbca69841a refactor(server): immich file responses (#5641)
* refactor(server): immich file response

* chore: open api

* chore: tests

* chore: fix logger import

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-12 08:58:25 -06:00
Alex
af7c4ae090 fix(mobile): better error message (#5653) 2023-12-12 08:58:13 -06:00
martin
fba9e784fb feat: use <a> tag for albums in list view (#5645)
* fix: multiple improvements

* pr feedback

* optimize
2023-12-11 20:35:57 -06:00
shenlong
fb4b4e5895 fix: handle livePhotos using originFileWithSubType (#5602)
* fix: handle livePhotos using originFileWithSubType

* remove livePhoto asset cache

* fetch live photo video name from entity

* fix: video file not detected

* chore: pull main

* fix: set correct header

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-12-11 20:20:36 -06:00
Alex Tran
c8da1c07dc chore: add _redirects to docs for CloudFlare 2023-12-11 16:13:39 -06:00
Alex Tran
ed05785005 chore: remove orphaned package-lock.json 2023-12-11 16:01:33 -06:00
Jason Rasmussen
81603fddc8 chore: fix ssr in dev (#5637) 2023-12-11 14:19:27 -06:00
Jason Rasmussen
ed4358741e feat(web): re-add open graph tags for public share links (#5635)
* feat: re-add open graph tags for public share links

* fix: undefined in html

* chore: tests
2023-12-11 13:37:47 -06:00
renovate[bot]
ac2a36bd53 chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a (#5632)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 14:00:46 -05:00
Łukasz Wawrzyk
f6ef226b64 chore(mobile): put delete button before metadata editing (#5633) 2023-12-11 12:53:11 -06:00
pjsxw
f798e9beed docs: update backup-and-restore.md (#5616)
Removes `BACKUP_KEEP_NUM` option from docker-compose example for database dumping, since it no longer exists in the linked image. 

The image has sensible defaults for backups to keep (7 daily, 4 weekly, 6 monthly), so I haven't replaced the argument with an alternative.
2023-12-11 10:57:30 -06:00
renovate[bot]
08570875eb chore(deps): update redis:6.2-alpine docker digest to b6124ab (#5599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 10:38:26 -06:00
Alex
64e985d600 fix(mobile): Revert - upload motion and live part of LivePhotos together (#5601) 2023-12-11 10:38:02 -06:00
Sushain Cherivirala
e3e4fb40fd fix(server): don't associate assets with Null Island (#5623)
* Don't associate assets with Null Island

* Fix lint
2023-12-11 09:00:23 -06:00
shenlong
960b68b02f fix(mobile): live / motion photo download (#5607)
* reverts: 5566

* fix: stitch livePhoto only in iOS

* fix: PMProgressHandler only on iOS

* ios: fallback to saving image if livephoto fails

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-10 09:56:39 -06:00
Jason Rasmussen
33529d1d9b refactor(server): auth dto (#5593)
* refactor: AuthUserDto => AuthDto

* refactor: reorganize auth-dto

* refactor: AuthUser() => Auth()
2023-12-09 23:34:12 -05:00
Mert
8057c375ba docs: remove typesense from faq (#5600) 2023-12-10 03:23:40 +00:00
renovate[bot]
d2ad01cd2f chore(deps): update python:3.11-slim-bookworm docker digest to cfd7ed5 (#5572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-09 21:15:15 -06:00
Jason Rasmussen
8e07b35786 docs: add sponsor link (#5597) 2023-12-09 20:59:00 -06:00
Jason Rasmussen
b7b4483a33 fix(server): connection aborted logging (#5595) 2023-12-09 20:46:56 -06:00
shenlong
3a794d7a2b fix: use avatarColor as the text background when no avatar available (#5566)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-09 20:32:39 -06:00
shenlong
68c0112aaa fix(mobile): memory lane not displayed in mobile app (#5587)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-09 20:32:20 -06:00
shenlong
8847ebeef2 fix(mobile): mobile album sort not persisting (#5584)
* chore(deps): use mocktail instead of mockito

* refactor: move stubs to fixtures/

* fix: fetch assetsortmode based on storeindex

* test: validate AlbumSortByOptions provider

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-09 20:31:23 -06:00
Jon Howell
188cdf9367 docs: Add tip showing common error messages (#5592)
I encountered two errors trying to use Ubuntu-distributed docker. These tips make the error messages searchable, with a pointer to the solution (use docker's packages).
2023-12-10 01:05:58 +00:00
Jason Rasmussen
6acd8eb4ba chore(server): faster shutdown (#5577)
* chore(server): faster shutdown

* fix: e2e test entrypoint
2023-12-08 21:58:07 -05:00
Jason Rasmussen
92b4284b5a feat(server): use postgres-adapter for websockets (#5569)
* feat(server): use postgres-adapter for websockets

* refactor: create attachment table via migration
2023-12-08 20:38:25 -05:00
Alex
a426ea8fbc fix(web): remove always on delay badge (#5574) 2023-12-08 18:19:42 -06:00
Alex
f206cb9403 chore(server): simplify search face query and better clustering (#5573)
* chore(server): simplify search face query and better clustering

* update sql

* Use correct syntax for utilizing the index

* Update sql
2023-12-08 16:26:17 -06:00
renovate[bot]
2234394aa6 chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a (#5570)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-08 14:38:45 -05:00
renovate[bot]
8a6284569a chore(deps): pin dependencies (#5567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-08 14:24:17 -05:00
renovate[bot]
80591ea609 fix(deps): update server (#5506)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-08 13:57:05 -05:00
Mert
2553c54b26 fix(server): select asset face columns explicitly (#5564)
* select columns explicitly

* updated sql

* formatting
2023-12-08 12:43:35 -06:00
Jason Rasmussen
2f4ee622ab chore(deps): remove unused cron types (#5563) 2023-12-08 12:08:27 -05:00
Jason Rasmussen
02d55644e5 fix(deps): bump sharp (#5509)
* fix(deps): bump sharp

* fixed sharp dependencies

* chore: use date tag

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2023-12-08 11:52:43 -05:00
Jason Rasmussen
1e99ba8167 feat: use pgvecto.rs (#3605) 2023-12-08 11:15:46 -05:00
Alex The Bot
429ad28810 Version v1.90.2 2023-12-08 14:23:04 +00:00
martin
7b3465621f fix(web): don't limit merge face selector to 10 people (#5551)
* fix: don't limit merge face selector to 10 people

* fix: don't use class to hide people in detail-panel

* fix: map faces and person in asset response
2023-12-08 08:21:29 -06:00
Alex The Bot
d2fbbe790b Version v1.90.1 2023-12-08 04:20:27 +00:00
martin
bc65bbfcc4 fix(web): create face from video (#5544)
* fix: create face from video

* fix: remove comment

* fix: inaccurate bounding boxes
2023-12-07 22:18:33 -06:00
Alex
e4b24b6e04 fix(web): cannot edit bulk metadata (#5543) 2023-12-07 17:21:51 -06:00
Luca Andrea Rossi
68d467f0e9 Update README_it_IT.md (#5541) 2023-12-07 22:20:41 +00:00
martin
866aaf00ff fix(web): name truncation on detail panel (#5542) 2023-12-07 22:04:59 +00:00
Alex
e086fa6931 chore: post release tasks 2023-12-07 12:48:43 -06:00
Alex The Bot
c174f0e871 Version v1.90.0 2023-12-07 18:32:45 +00:00
shenlong
3581069c2b fix(mobile): do not show loading overlay on grid refresh (#5531)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-07 12:21:07 -06:00
shenlong
c5504aae6e refactor(mobile): album sort (#5510)
* refactor: migrate album sort option to provider

* refactor: use sort order in add to album sheet list

* test(mobile): album_sort_options_provider unit tests

* refactor: sort shared albums with user selected sort

* refactor: use listview to render shared albums

* refactor: rename to AlbumSortByOptions

* refactor: remove filtering inside sort functions

* font size

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-07 18:14:09 +00:00
Alex
2e59b07cc6 feat(mobile): handle backup iCloud asset (#5508)
* feat(mobile): handle backup iCloud asset

* additional state

* Download progress

* Added a separate page for backup options

* handle ingore iCloud asset upload'

* fix init backup service

* PR feedback

* fix negative count

* get file title
2023-12-07 09:53:15 -06:00
Fynn Petersen-Frey
c25556bb08 feat(mobile): unify asset grid multiselect actions (#5407)
* feat(mobile): unify asset grid multiselect actions

* add favorite & archive page

* show edit date&place on main photos screen

* Reposition exit button

* Sort favorite with the same order as other view

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-07 09:38:22 -06:00
dependabot[bot]
b9a9a3956c chore(deps): bump actions/setup-python from 4 to 5 (#5528)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-07 08:14:19 -05:00
shenlong
e1739ac4fc fix(mobile): allow editing asset dates in the future (#5522)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-06 20:04:03 -06:00
martin
8736c77f7a fix(web): align all edit buttons and not correctly rounded buttons on detail-panel (#5524)
* fix: align all pencils

* fix: format
2023-12-06 20:03:28 -06:00
James Keane
338a028185 fix(server): awaitsendFile (#5515)
Fixes the intermittent EPIPE errors that myself and others are seeing.

By explicitly returning a promise we ensure the caller correctly waits until the `sendFile` is complete before potentially closing or cleaning the socket. This is the most likely bug that would cause EPIPE errors.

Fix was confirmed on a live system -- would benefit from a unit test
though.
2023-12-06 20:51:51 -05:00
shenlong
e2d0e944eb chore(renovate): ignore openapi pubspec (#5521)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-06 14:21:57 -06:00
shenlong
f53b70571b fix: notify mobile app when live photos are linked (#5504)
* fix(mobile): album thumbnail list tile overflow on large album title

* fix: notify clients about live photo linked event

* refactor: notify clients during meta extraction

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-06 08:56:09 -06:00
renovate[bot]
2814de4420 chore(deps): update dependency vite to v4.5.1 [security] (#5513)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-05 22:14:39 -05:00
martin
024fe1141b fix(web): background when re-assigning faces (#5512) 2023-12-05 23:05:22 +00:00
shenlong
086a957a2b feat(mobile): edit date time & location (#5461)
* chore: text correction

* fix: update activities stat only when the widget is mounted

* feat(mobile): edit date time

* feat(mobile): edit location

* chore(build): update gradle wrapper - 7.6.3

* style: dropdownmenu styling

* style: wrap locationpicker in singlechildscrollview

* test: add unit test for getTZAdjustedTimeAndOffset

* pr changes

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-05 13:34:37 -06:00
Alex
84c5b08c25 feat(web): UI/UX improvement for date time edit form (#5505) 2023-12-05 14:16:37 -05:00
renovate[bot]
7e8488694d chore(deps): update web (#5502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-05 11:20:07 -06:00
renovate[bot]
231b89c9c0 chore(deps): update postgres docker digest to 6dfee32 (#5492)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-05 10:17:33 -06:00
shenlong
d5f6584e1d fix(mobile): use zoomedpagetransition for galleryvieweroute (#5495)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-05 09:45:04 -06:00
martin
7702560b12 feat(web): re-assign person faces (2) (#4949)
* feat: unassign person faces

* multiple improvements

* chore: regenerate api

* feat: improve face interactions in photos

* fix: tests

* fix: tests

* optimize

* fix: wrong assignment on complex-multiple re-assignments

* fix: thumbnails with large photos

* fix: complex reassign

* fix: don't send people with faces

* fix: person thumbnail generation

* chore: regenerate api

* add tess

* feat: face box even when zoomed

* fix: change feature photo

* feat: make the blue icon hoverable

* chore: regenerate api

* feat: use websocket

* fix: loading spinner when clicking on the done button

* fix: use the svelte way

* fix: tests

* simplify

* fix: unused vars

* fix: remove unused code

* fix: add migration

* chore: regenerate api

* ci: add unit tests

* chore: regenerate api

* feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it

* reorganize

* chore: regenerate api

* feat: global edit

* pr feedback

* pr feedback

* simplify

* revert test

* fix: face generation

* fix: tests

* fix: face generation

* fix merge

* feat: search names in unmerge face selector modal

* fix: merge face selector

* simplify feature photo generation

* fix: change endpoint

* pr feedback

* chore: fix merge

* chore: fix merge

* fix: tests

* fix: edit & hide buttons

* fix: tests

* feat: show if person is hidden

* feat: rename face to person

* feat: split in new panel

* copy-paste-error

* pr feedback

* fix: feature photo

* do not leak faces

* fix: unmerge modal

* fix: merge modal event

* feat(server): remove duplicates

* fix: title for image thumbnails

* fix: disable side panel when there's no face until next PR

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 09:43:15 -06:00
Clement Ong
982183600d feat(web): clear failed jobs (#5423)
* add clear failed jobs button

* refactor: clean up code

* chore: open api

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-05 02:07:20 +00:00
Dan Taylor
933c24ea6f fix(web): delete modal z-index (#5416)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-12-05 01:32:33 +00:00
Jason Rasmussen
05e9697dff fix(web): runtime issue (#5493) 2023-12-04 20:29:35 -05:00
renovate[bot]
259700c45f chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to e296d47 (#5487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 19:37:08 -05:00
Jason Rasmussen
22d79850f6 refactor(web): asset viewer actions (#5488) 2023-12-04 19:18:28 -05:00
renovate[bot]
56aed8246d chore(deps): update python:3.11-slim-bookworm docker digest to cc75851 (#5462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 13:26:41 -06:00
Quek
ca1be71bca fix(mobile): new album icon has different height to existing album cover (#5422) 2023-12-04 13:26:17 -06:00
martin
6111bf157e fix(web): stick action bar on search (#5459) 2023-12-04 10:24:19 -06:00
martin
2195730fa6 fix(web): keep url query parameters when swapping people (#5468) 2023-12-04 10:23:14 -06:00
waclaw66
1dc832d392 fix(web): new album title fix (#5467)
* new album title fix

* Naming

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-04 16:22:31 +00:00
PyKen
1a63d3837e fix(server): Return correct asset count in album (#5465)
* fix(server): Return correct asset count in album

* Update album.repository.sql

Add generated sql
2023-12-04 10:22:00 -06:00
Fynn Petersen-Frey
bdbaa166d9 fix(mobile): clear album provider on logout (#5477) 2023-12-04 10:21:05 -06:00
shenlong
812e67d55d fix(server): send upload_success notification only for non hidden assets (#5471)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-12-03 16:35:22 -06:00
martin
dfd6846deb fix(server): video orientation (#5455)
* fix: video orientation

* pr feedback
2023-12-03 16:34:23 -06:00
renovate[bot]
6d3421a505 chore(deps): update postgres:14-alpine docker digest to 6a0e352 (#5451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-02 18:54:30 +00:00
renovate[bot]
ede9de146a chore(deps): update base-image to v20231201 (#5452)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-02 18:52:10 +00:00
renovate[bot]
6959cf689b chore(deps): update python:3.11-bookworm docker digest to ba7a7ac (#5438)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-02 18:35:23 +00:00
Alex
36ba48b8ae chore(web): toggle hide face in context menu (#5440) 2023-12-02 09:23:11 -06:00
Thomas
8a2b36ad55 docs(readme): correct wording and grammar in README_de_DE.md (#5447)
* fix wording and grammar in de_DE readme

* change Du+Eure to uppercase
2023-12-02 13:44:28 +01:00
Daniel Dietzler
6000c7f3bc update docs to use docker compose (#5446) 2023-12-02 12:48:49 +01:00
Michael Manganiello
5aa658de59 chore(server): Check asset permissions in bulk (#5329)
Modify Access repository, to evaluate `asset` permissions in bulk.
Queries have been validated to match what they currently generate for single ids.

Queries:

* `asset` album access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "albums" "AlbumEntity"
    LEFT JOIN "albums_assets_assets" "AlbumEntity_AlbumEntity__AlbumEntity_assets"
      ON "AlbumEntity_AlbumEntity__AlbumEntity_assets"."albumsId"="AlbumEntity"."id"
    LEFT JOIN "assets" "AlbumEntity__AlbumEntity_assets"
      ON "AlbumEntity__AlbumEntity_assets"."id"="AlbumEntity_AlbumEntity__AlbumEntity_assets"."assetsId"
      AND "AlbumEntity__AlbumEntity_assets"."deletedAt" IS NULL
    LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
    LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
      AND "AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL
  WHERE
    (
      ("AlbumEntity"."ownerId" = $1 AND "AlbumEntity__AlbumEntity_assets"."id" = $2)
      OR ("AlbumEntity__AlbumEntity_sharedUsers"."id" = $3 AND "AlbumEntity__AlbumEntity_assets"."id" = $4)
      OR ("AlbumEntity"."ownerId" = $5 AND "AlbumEntity__AlbumEntity_assets"."livePhotoVideoId" = $6)
      OR ("AlbumEntity__AlbumEntity_sharedUsers"."id" = $7 AND "AlbumEntity__AlbumEntity_assets"."livePhotoVideoId" = $8)
    )
    AND "AlbumEntity"."deletedAt" IS NULL
)
LIMIT 1

-- After
SELECT
  "asset"."id" AS "assetId",
  "asset"."livePhotoVideoId" AS "livePhotoVideoId"
FROM "albums" "album"
  INNER JOIN "albums_assets_assets" "album_asset"
    ON "album_asset"."albumsId"="album"."id"
  INNER JOIN "assets" "asset"
    ON "asset"."id"="album_asset"."assetsId"
    AND "asset"."deletedAt" IS NULL
  LEFT JOIN "albums_shared_users_users" "album_sharedUsers"
    ON "album_sharedUsers"."albumsId"="album"."id"
  LEFT JOIN "users" "sharedUsers"
    ON "sharedUsers"."id"="album_sharedUsers"."usersId"
    AND "sharedUsers"."deletedAt" IS NULL
WHERE
  (
    "album"."ownerId" = $1
    OR "sharedUsers"."id" = $2
  )
  AND (
    "asset"."id" IN ($3, $4)
    OR "asset"."livePhotoVideoId" IN ($5, $6)
  )
  AND "album"."deletedAt" IS NULL
```

* `asset` owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "assets" "AssetEntity"
  WHERE
    "AssetEntity"."id" = $1
    AND "AssetEntity"."ownerId" = $2
)
LIMIT 1

-- After
SELECT
  "AssetEntity"."id" AS "AssetEntity_id"
FROM "assets" "AssetEntity"
WHERE
  "AssetEntity"."id" IN ($1, $2)
  AND "AssetEntity"."ownerId" = $3
```

* `asset` partner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "partners" "PartnerEntity"
    LEFT JOIN "users" "PartnerEntity__PartnerEntity_sharedWith"
      ON "PartnerEntity__PartnerEntity_sharedWith"."id"="PartnerEntity"."sharedWithId"
      AND "PartnerEntity__PartnerEntity_sharedWith"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__PartnerEntity_sharedBy"
      ON "PartnerEntity__PartnerEntity_sharedBy"."id"="PartnerEntity"."sharedById"
      AND "PartnerEntity__PartnerEntity_sharedBy"."deletedAt" IS NULL
    LEFT JOIN "assets" "0aabe9f4a62b794e2c24a074297e534f51a4ac6c"
      ON "0aabe9f4a62b794e2c24a074297e534f51a4ac6c"."ownerId"="PartnerEntity__PartnerEntity_sharedBy"."id"
      AND "0aabe9f4a62b794e2c24a074297e534f51a4ac6c"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__sharedBy"
      ON "PartnerEntity__sharedBy"."id"="PartnerEntity"."sharedById"
      AND "PartnerEntity__sharedBy"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__sharedWith"
      ON "PartnerEntity__sharedWith"."id"="PartnerEntity"."sharedWithId"
      AND "PartnerEntity__sharedWith"."deletedAt" IS NULL
  WHERE
    "PartnerEntity__PartnerEntity_sharedWith"."id" = $1
    AND "0aabe9f4a62b794e2c24a074297e534f51a4ac6c"."id" = $2
)
LIMIT 1

-- After
SELECT
  "asset"."id" AS "assetId"
FROM "partners" "partner"
  INNER JOIN "users" "sharedBy"
    ON "sharedBy"."id"="partner"."sharedById"
    AND "sharedBy"."deletedAt" IS NULL
  INNER JOIN "assets" "asset"
    ON "asset"."ownerId"="sharedBy"."id"
    AND "asset"."deletedAt" IS NULL
WHERE
  "partner"."sharedWithId" = $1
  AND "asset"."id" IN ($2, $3)
```

* `asset` shared link access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "shared_links" "SharedLinkEntity"
    LEFT JOIN "albums" "SharedLinkEntity__SharedLinkEntity_album"
      ON "SharedLinkEntity__SharedLinkEntity_album"."id"="SharedLinkEntity"."albumId"
      AND "SharedLinkEntity__SharedLinkEntity_album"."deletedAt" IS NULL
    LEFT JOIN "albums_assets_assets" "760f12c00d97bdcec1ce224d1e3bf449859942b6"
      ON "760f12c00d97bdcec1ce224d1e3bf449859942b6"."albumsId"="SharedLinkEntity__SharedLinkEntity_album"."id"
    LEFT JOIN "assets" "4a35f463ae8c5544ede95c4b6d9ce8c686b6bfe6"
      ON "4a35f463ae8c5544ede95c4b6d9ce8c686b6bfe6"."id"="760f12c00d97bdcec1ce224d1e3bf449859942b6"."assetsId"
      AND "4a35f463ae8c5544ede95c4b6d9ce8c686b6bfe6"."deletedAt" IS NULL
    LEFT JOIN "shared_link__asset" "SharedLinkEntity__SharedLinkEntity_assets_SharedLinkEntity"
      ON "SharedLinkEntity__SharedLinkEntity_assets_SharedLinkEntity"."sharedLinksId"="SharedLinkEntity"."id"
    LEFT JOIN "assets" "SharedLinkEntity__SharedLinkEntity_assets"
      ON "SharedLinkEntity__SharedLinkEntity_assets"."id"="SharedLinkEntity__SharedLinkEntity_assets_SharedLinkEntity"."assetsId"
      AND "SharedLinkEntity__SharedLinkEntity_assets"."deletedAt" IS NULL
  WHERE (
    ("SharedLinkEntity"."id" = $1 AND "4a35f463ae8c5544ede95c4b6d9ce8c686b6bfe6"."id" = $2)
    OR ("SharedLinkEntity"."id" = $3 AND "SharedLinkEntity__SharedLinkEntity_assets"."id" = $4)
    OR ("SharedLinkEntity"."id" = $5 AND "4a35f463ae8c5544ede95c4b6d9ce8c686b6bfe6"."livePhotoVideoId" = $6)
    OR ("SharedLinkEntity"."id" = $7 AND "SharedLinkEntity__SharedLinkEntity_assets"."livePhotoVideoId" = $8)
  )
)
LIMIT 1

-- After
SELECT
  "assets"."id" AS "assetId",
  "assets"."livePhotoVideoId" AS "assetLivePhotoVideoId",
  "albumAssets"."id" AS "albumAssetId",
  "albumAssets"."livePhotoVideoId" AS "albumAssetLivePhotoVideoId"
FROM "shared_links" "sharedLink"
  LEFT JOIN "albums" "album"
    ON "album"."id"="sharedLink"."albumId"
    AND "album"."deletedAt" IS NULL
  LEFT JOIN "shared_link__asset" "assets_sharedLink"
    ON "assets_sharedLink"."sharedLinksId"="sharedLink"."id"
  LEFT JOIN "assets" "assets"
    ON "assets"."id"="assets_sharedLink"."assetsId"
    AND "assets"."deletedAt" IS NULL
  LEFT JOIN "albums_assets_assets" "album_albumAssets"
    ON "album_albumAssets"."albumsId"="album"."id"
  LEFT JOIN "assets" "albumAssets"
    ON "albumAssets"."id"="album_albumAssets"."assetsId"
    AND "albumAssets"."deletedAt" IS NULL
WHERE
  "sharedLink"."id" = $1
  AND (
    "assets"."id" IN ($2, $3)
    OR "albumAssets"."id" IN ($4, $5)
    OR "assets"."livePhotoVideoId" IN ($6, $7)
    OR "albumAssets"."livePhotoVideoId" IN ($8, $9)
  )
```
2023-12-02 02:56:41 +00:00
Dan Taylor
6673f1eb24 fix(web): status box rendering (#5410)
* fix(web): status box rendering

* Syntax improvement for api import

Co-authored-by: martin <74269598+martabal@users.noreply.github.com>

---------

Co-authored-by: Daniel Taylor <daniel.k.taylor1@gmail.com>
Co-authored-by: martin <74269598+martabal@users.noreply.github.com>
2023-12-01 20:26:48 -06:00
Andrew Brock
a02e91169d feat(web): Allow showing hidden people in image asset details view (#5420)
* Allow showing hidden people in image asset details view

This makes it possible to easily find people/faces that have accidentally been hidden.
Unhiding them still requires clicking on the person to go to their page to unhide them.

* Update web/src/lib/components/asset-viewer/detail-panel.svelte

Co-authored-by: martin <74269598+martabal@users.noreply.github.com>

---------

Co-authored-by: brokeh <git@brocky.net>
Co-authored-by: martin <74269598+martabal@users.noreply.github.com>
2023-12-01 20:17:05 -06:00
martin
ec92608024 fix(web): disable metadata edit if user is not owner (#5415)
* fix(web): disable metadata edit if user is not owner

* pr feedback

* pr feedback

* get data from page data

* fix: better representation

* feat: warn user if there's issues with the selected assets

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-01 14:58:24 -06:00
Andrew Brock
5a50d32748 chore: make running local dev instance on Windows work regardless of git config (#5419)
The only issue was that line endings of shell scripts may be \r\n when cloned on Windows with autocrlf and shells don't like that.

Co-authored-by: brokeh <git@brocky.net>
2023-12-01 20:30:34 +00:00
renovate[bot]
cbdcbd3ab4 chore(deps): update python:3.11-slim-bookworm docker digest to 8f82989 (#5435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 20:24:50 +00:00
renovate[bot]
cb00d45e3d chore(deps): update python:3.11-bookworm docker digest to 47c1829 (#5434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 20:13:23 +00:00
Jason Rasmussen
2b2b1bba63 chore(deps): base image min age (#5433) 2023-12-01 14:42:21 -05:00
renovate[bot]
031420bc78 chore(deps): update base-image to v20231130 (#5431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 14:27:42 -05:00
renovate[bot]
387faa13d5 chore(deps): update redis:6.2-alpine docker digest to 60e49e2 (#5430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 19:25:21 +00:00
renovate[bot]
6979d43650 chore(deps): update postgres:14-alpine docker digest to 5491670 (#5429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 19:25:08 +00:00
renovate[bot]
af8bb132d0 chore(deps): update dependency @types/node to v20.10.1 (#5427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 18:44:22 +00:00
renovate[bot]
40964187bb chore(deps): update python:3.11-slim-bookworm docker digest to 23f5220 (#5388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 18:36:54 +00:00
renovate[bot]
fe3d951f26 chore(deps): update python:3.11-bookworm docker digest to c56b0c6 (#5387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 18:36:30 +00:00
Jason Rasmussen
6e365b37db fix(server): immich command (#5408)
* fix: immich command

* chore: use absolute paths
2023-11-30 14:59:47 -06:00
Jason Rasmussen
5e55a17b2a chore(server): sql versioning (#5346)
* chore(server): sql versioning

* chore: always add newline to end of file

* refactor: generator

* chore: pr feedback

* chore: pr feedback
2023-11-30 10:10:30 -05:00
dependabot[bot]
ffecfbe075 chore(deps): bump actions/setup-java from 3 to 4 (#5405)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-30 09:03:24 -05:00
YFrendo
644e52b153 feat: Edit metadata (#5066)
* chore: rebase and clean-up

* feat: sync description, add e2e tests

* feat: simplify web code

* chore: unit tests

* fix: linting

* Bug fix with the arrows key

* timezone typeahead filter

timezone typeahead filter

* small stlying

* format fix

* Bug fix in the map selection

Bug fix in the map selection

* Websocket basic

Websocket basic

* Update metadata visualisation through the websocket

* Update timeline

* fix merge

* fix web

* fix web

* maplibre system

* format fix

* format fix

* refactor: clean up

* Fix small bug in the hour/timezone

* Don't diplay modify for readOnly asset

* Add log in case of failure

* Formater + try/catch error

* Remove everything related to websocket

* Revert "Remove everything related to websocket"

This reverts commit 14bcb9e1e4.

* remove notification

* fix test

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-30 03:52:28 +00:00
martin
b396e0eee3 fix(web): whitespace in person name (#5401)
* fix(web): whitespace in person name

* pr feedback
2023-11-29 21:08:54 -06:00
Alex The Bot
8b6a79ad9e Version v1.89.0 2023-11-29 19:20:24 +00:00
Thomas
696900228b fix(web): use native image decoder (#3074)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-29 15:09:22 +00:00
Jason Rasmussen
e5d083fe79 chore(deps): remove unused cookie type (#5385) 2023-11-29 04:24:38 +00:00
Jason Rasmussen
d4b3fb942f feat(web): job concurrency order (#5386) 2023-11-29 04:24:20 +00:00
shenlong
527d602a9f refactor(mobile): immich loading overlay (#5320)
* refactor: dcm fixes

* refactor: ImmichLoadingOverlay to custom hook

* chore: dart fixes

* pr changes

* fix: process overlay add / remove in postframecallback

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-29 04:20:00 +00:00
shenlong
513f252a0c refactor(mobile): log asyncvalue errors (#5327)
* refactor: scaffoldwhen to log errors during scaffold body render

* refactor: onError and onLoading scaffoldbody

* refactor: more scaffold body to custom extension

* refactor: add skiploadingonrefresh

* Snackbar color

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-29 04:17:29 +00:00
renovate[bot]
0fe704c6f9 fix(deps): update dependency clsx to v2 (#5383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 04:07:05 +00:00
avaness
5a2fc20b20 fix(mobile): server endpoint input auto parse https when not specified (#5326)
This fixes issue #4397 and automatically adds the https protocol to the server endpoint url if it is missing

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-29 04:02:19 +00:00
renovate[bot]
2a45ad147c chore(deps): update server (#5380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 23:00:25 -05:00
renovate[bot]
fa3f2237eb chore(deps): update @immich/cli to v6.13.1 (#5379)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 22:59:45 -05:00
renovate[bot]
6aa356e69f chore(deps): update web (#5381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 22:57:20 -05:00
Jason Rasmussen
a04360f625 chore: fix min release age (#5382) 2023-11-28 22:46:31 -05:00
Jason Rasmussen
48c9e66ae5 chore: update job names (#5375) 2023-11-28 22:07:47 -05:00
renovate[bot]
05ca555b6e chore(deps): update dependency typescript to v5 (#5265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 22:06:09 -05:00
Jason Rasmussen
2bb75b6aa9 chore: add renovate grouping for docs and consolidate schedule (#5368) 2023-11-28 21:32:21 -05:00
renovate[bot]
869d400617 chore(deps): update dependency prettier to v3 (#5371)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 02:30:53 +00:00
Jason Rasmussen
6ae7a92e03 fix(docs): build (#5374) 2023-11-29 02:27:01 +00:00
renovate[bot]
a67f57c0e0 chore(deps): pin postgres docker tag to 71da05d (#5370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 02:13:36 +00:00
renovate[bot]
b04cd4edee chore(deps): pin dependencies (#5369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 02:12:35 +00:00
renovate[bot]
cd1b6e6976 chore(deps): update typescript-eslint monorepo to v6 (#5343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 21:11:43 -05:00
renovate[bot]
1fa5e220a1 chore(deps): pin dependencies (#5367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 02:09:11 +00:00
Thariq Shanavas
b21b7f0721 chore(docs): add guide on remote access (#5350)
* Added guide on remote access

* update reverse proxy section

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-29 00:49:36 +00:00
Jason Rasmussen
21ed8d5c79 chore(web): run as root in dev (#5365) 2023-11-28 17:52:37 -05:00
Jason Rasmussen
6ac4e98d4b chore(web): handle signals for faster restart (#5366) 2023-11-28 17:50:43 -05:00
shenlong
b0db8ed6c4 style(mobile): asset selection animation (#5322)
* refactor: replace navigator.pop with context.pop

* mobile: use demo instance credentials for test login

* style(mobile): centre align add partner button

* mobile: add thumbnail selection animation

* differnt gesture for test instance

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-28 22:05:13 +00:00
bo0tzz
6522707b49 chore(renovate): Only update to node LTS versions (#5355)
* chore(ci): Use LTS codenames for node base images

* chore(renovate): Only match node LTS versions

* chore(renovate): Pin docker digests
2023-11-28 14:50:48 -06:00
Jason Rasmussen
9483c456d4 fix(web): storage decimals (#5363) 2023-11-28 15:50:23 -05:00
Emanuel Bennici
5781ae9d82 feat(web): Lazy load thumbnails on the people page (#5356)
* feat(web): Lazy load thumbnails on the people page

Instead of loading all people thumbnails at once, only the first few
should be loaded eagerly.
This reduces the load on client and server side.

* chore: change name

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-28 20:23:27 +00:00
Jason Rasmussen
4d727708e2 chore(web): curly braces (#5362) 2023-11-28 14:16:27 -06:00
Jason Rasmussen
5c1c174db1 chore(server): curly braces (#5361) 2023-11-28 15:09:20 -05:00
Daniel Dietzler
cffdd9c86a web and proxy no more! (#5347) 2023-11-27 22:59:40 +00:00
Jason Rasmussen
ebd64ded62 feat(web): prefer higher GiB values (#5340) 2023-11-27 12:40:29 -06:00
Jason Rasmussen
0758d55dea chore(deps): remove unused package (#5337) 2023-11-27 11:48:07 -05:00
Jason Rasmussen
3992119e32 fix(deps): prettier 3 (#5336) 2023-11-27 11:42:04 -05:00
bo0tzz
87871e4df9 chore: fix renovate minimumReleaseAge (#5331) 2023-11-27 10:07:16 +01:00
bo0tzz
ef45e9f490 chore(renovate): Add per-group schedule (#5319) 2023-11-26 21:21:32 -06:00
Alex
4e5eef129d fix(server): get album's assets in getAlbumInfo route (#5325)
* fix(server): get album's assets in getAlbumInfo route

* unit test

* test: e2e tests
2023-11-26 21:21:04 -06:00
martin
034b308ddc feat(web): search names when merging faces (#5209)
* feat: search names when merging faces

* fix: reactive

* styling

* small stlying

* remove unused variable

* fix: reactive

* feat: reset

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-26 12:58:09 -06:00
martin
3aa2927dae fix(web): sorting options for albums (#5233)
* fix: albums

* pr feedback

* fix: current behavior

* rename

* fix: album metadatas

* fix: tests

* fix: e2e test

* simplify

* fix: cover shared links

* rename function

* merge main

* merge main

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-26 15:23:43 +00:00
Michael Manganiello
c04340c63e chore(server): Check more permissions in bulk (#5315)
Modify Access repository, to evaluate `authDevice`, `library`, `partner`,
`person`, and `timeline` permissions in bulk.
Queries have been validated to match what they currently generate for
single ids.

As an extra performance improvement, we now use a custom QueryBuilder
for the Partners queries, to avoid the eager relationships that add
unneeded `LEFT JOIN` clauses. We only filter based on the ids present in
the `partners` table, so those joins can be avoided.

Queries:

* `library` owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "libraries" "LibraryEntity"
  WHERE
    "LibraryEntity"."id" = $1
    AND "LibraryEntity"."ownerId" = $2
    AND "LibraryEntity"."deletedAt" IS NULL
)
LIMIT 1

-- After
SELECT "LibraryEntity"."id" AS "LibraryEntity_id"
FROM "libraries" "LibraryEntity"
WHERE
  "LibraryEntity"."id" IN ($1, $2)
  AND "LibraryEntity"."ownerId" = $3
  AND "LibraryEntity"."deletedAt" IS NULL
```

* `library` partner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "partners" "PartnerEntity"
    LEFT JOIN "users" "PartnerEntity__sharedBy"
      ON "PartnerEntity__sharedBy"."id"="PartnerEntity"."sharedById"
      AND "PartnerEntity__sharedBy"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__sharedWith"
      ON "PartnerEntity__sharedWith"."id"="PartnerEntity"."sharedWithId"
      AND "PartnerEntity__sharedWith"."deletedAt" IS NULL
  WHERE
    "PartnerEntity"."sharedWithId" = $1
    AND "PartnerEntity"."sharedById" = $2
)
LIMIT 1

-- After
SELECT
  "partner"."sharedById" AS "partner_sharedById",
  "partner"."sharedWithId" AS "partner_sharedWithId"
FROM "partners" "partner"
WHERE
  "partner"."sharedById" IN ($1, $2)
  AND "partner"."sharedWithId" = $3
```

* `authDevice` owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "user_token" "UserTokenEntity"
  WHERE
    "UserTokenEntity"."userId" = $1
    AND "UserTokenEntity"."id" = $2
)
LIMIT 1

-- After
SELECT "UserTokenEntity"."id" AS "UserTokenEntity_id"
FROM "user_token" "UserTokenEntity"
WHERE
  "UserTokenEntity"."userId" = $1
  AND "UserTokenEntity"."id" IN ($2, $3)
```

* `timeline` partner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "partners" "PartnerEntity"
    LEFT JOIN "users" "PartnerEntity__sharedBy"
      ON "PartnerEntity__sharedBy"."id"="PartnerEntity"."sharedById"
      AND "PartnerEntity__sharedBy"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__sharedWith"
      ON "PartnerEntity__sharedWith"."id"="PartnerEntity"."sharedWithId"
      AND "PartnerEntity__sharedWith"."deletedAt" IS NULL
  WHERE
    "PartnerEntity"."sharedWithId" = $1
    AND "PartnerEntity"."sharedById" = $2
)
LIMIT 1

-- After
SELECT
  "partner"."sharedById" AS "partner_sharedById",
  "partner"."sharedWithId" AS "partner_sharedWithId"
FROM "partners" "partner"
WHERE
  "partner"."sharedById" IN ($1, $2)
  AND "partner"."sharedWithId" = $3
```

* `person` owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "person" "PersonEntity"
  WHERE
    "PersonEntity"."id" = $1
    AND "PersonEntity"."ownerId" = $2
)
LIMIT 1

-- After
SELECT "PersonEntity"."id" AS "PersonEntity_id"
FROM "person" "PersonEntity"
WHERE
  "PersonEntity"."id" IN ($1, $2)
  AND "PersonEntity"."ownerId" = $3
```

* `partner` update access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "partners" "PartnerEntity"
    LEFT JOIN "users" "PartnerEntity__sharedBy"
      ON "PartnerEntity__sharedBy"."id"="PartnerEntity"."sharedById"
      AND "PartnerEntity__sharedBy"."deletedAt" IS NULL
    LEFT JOIN "users" "PartnerEntity__sharedWith"
      ON "PartnerEntity__sharedWith"."id"="PartnerEntity"."sharedWithId"
      AND "PartnerEntity__sharedWith"."deletedAt" IS NULL
  WHERE
    "PartnerEntity"."sharedWithId" = $1
    AND "PartnerEntity"."sharedById" = $2
)
LIMIT 1

-- After
SELECT
  "partner"."sharedById" AS "partner_sharedById",
  "partner"."sharedWithId" AS "partner_sharedWithId"
FROM "partners" "partner"
WHERE
  "partner"."sharedById" IN ($1, $2)
  AND "partner"."sharedWithId" = $3
```
2023-11-26 07:50:41 -05:00
renovate[bot]
f97dca7707 chore(deps): update web (#5239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-26 00:14:06 -06:00
Romon Wafa
cf58649a99 Change wording (#5312) 2023-11-26 00:12:51 -06:00
shenlong
e65d1d5930 refactor: mobile - send livephoto as a separate request (#5275)
* refactor: mobile - send livephoto as a separate request

* fix: create new request for live asset

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-25 21:45:18 -06:00
renovate[bot]
ad06502539 chore(deps): update dependency @types/node to v20.10.0 (#5313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-25 23:54:34 +00:00
renovate[bot]
1ffe862810 chore(deps): update server (#5311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-25 23:48:48 +00:00
renovate[bot]
69d096df17 chore(deps): update server (#5257)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-25 18:42:58 -05:00
Michael Manganiello
6d1b325b34 chore(server): Check album permissions in bulk (#5290)
* chore(server): Check album permissions in bulk

Modify Access repository, to evaluate `album` permissions in bulk.
Queries have been validated to match what they currently generate for
single ids.

Queries:

* Owner access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "albums" "AlbumEntity"
  WHERE
    "AlbumEntity"."id" = $1
    AND "AlbumEntity"."ownerId" = $2
    AND "AlbumEntity"."deletedAt" IS NULL
)
LIMIT 1

-- After
SELECT
  "AlbumEntity"."id" AS "AlbumEntity_id"
FROM "albums" "AlbumEntity"
WHERE
  "AlbumEntity"."id" IN ($1, $2)
  AND "AlbumEntity"."ownerId" = $3
  AND "AlbumEntity"."deletedAt" IS NULL
```

* Shared link access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "shared_links" "SharedLinkEntity"
  WHERE
    "SharedLinkEntity"."id" = $1
    AND "SharedLinkEntity"."albumId" = $2
)
LIMIT 1

-- After
SELECT
  "SharedLinkEntity"."albumId" AS "SharedLinkEntity_albumId",
  "SharedLinkEntity"."id" AS "SharedLinkEntity_id"
FROM "shared_links" "SharedLinkEntity"
WHERE
  "SharedLinkEntity"."id" = $1
  AND "SharedLinkEntity"."albumId" IN ($2, $3)
```

* Shared album access:

```sql
-- Before
SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (
  SELECT 1
  FROM "albums" "AlbumEntity"
    LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
    LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
      ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
      AND "AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL
  WHERE
    "AlbumEntity"."id" = $1
    AND "AlbumEntity__AlbumEntity_sharedUsers"."id" = $2
    AND "AlbumEntity"."deletedAt" IS NULL
)
LIMIT 1

-- After
SELECT
  "AlbumEntity"."id" AS "AlbumEntity_id"
FROM "albums" "AlbumEntity"
  LEFT JOIN "albums_shared_users_users" "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"
    ON "AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."albumsId"="AlbumEntity"."id"
  LEFT JOIN "users" "AlbumEntity__AlbumEntity_sharedUsers"
    ON "AlbumEntity__AlbumEntity_sharedUsers"."id"="AlbumEntity_AlbumEntity__AlbumEntity_sharedUsers"."usersId"
    AND "AlbumEntity__AlbumEntity_sharedUsers"."deletedAt" IS NULL
WHERE
  "AlbumEntity"."id" IN ($1, $2)
  AND "AlbumEntity__AlbumEntity_sharedUsers"."id" = $3
  AND "AlbumEntity"."deletedAt" IS NULL
```

* chore(server): Add set utils, avoid double queries for same ids

* chore(server): Review feedback
2023-11-25 17:56:23 -05:00
Zack Pollard
698226634e feat: postgres reverse geocoding (#5301)
* feat: add system metadata repository for storing key values for internal usage

* feat: add database entities for geodata

* feat: move reverse geocoding from local-reverse-geocoder to postgresql

* infra: disable synchronization for geodata_places table until typeorm supports earth column

* feat: remove cities override config as we will default all instances to cities500 now

* test: e2e tests don't clear geodata tables on reset
2023-11-25 18:53:30 +00:00
shenlong
0108211c0f refactor: deprecate getUserAssetsByDeviceId (#5273)
* refactor: deprecated getUserAssetsByDeviceId

* prevent breaking changes

* chore: add deprecation

* prevent breaking changes

* prevent breaking changes

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-25 15:46:20 +00:00
renovate[bot]
155ccbc870 chore(deps): update base-image to v20231125 (#5307)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-25 09:17:53 -06:00
shenlong
f222e47651 fix(mobile): update password change description text to use user name (#5105)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-24 15:32:21 -06:00
Daniel Dietzler
4684094b9b fix(web): Map clustering when zoomed in (#5299)
* raise maxZoom to a value that cannot be reached

* set max zoom for the entire map
2023-11-24 15:30:57 -06:00
Michael Manganiello
8a8d3811b9 fix(mobile): Add translatable strings for shared links info (#5292)
Mark more strings as translatable, regarding shared link information and
expiration.
2023-11-24 15:29:49 -06:00
Emanuel Bennici
309be88ccd feat(server): load face entities faster (#5281)
The query executed when loading the "People" page joins, among others, over "personId".
The added indices improve the overall performance of those JOIN queries.

Additionally, one ORDER BY clause is dropped since the resulting values
will always be TRUE, and thus, sorting them does not change the result.
2023-11-24 14:38:54 +00:00
renovate[bot]
4987bbb712 chore(deps): update base-image to v20231123 (#5285)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-23 18:55:25 -06:00
bo0tzz
a6676907b4 chore(renovate): Group base image updates (#5284) 2023-11-23 21:55:36 +01:00
waclaw66
df9ec9327d chore(web): adjust album thumbnail size (#5277) 2023-11-23 08:33:26 -06:00
Michael Manganiello
030cd8c4c4 chore(server): Prepare access interfaces for bulk permission checks (#5223)
* chore(server): Prepare access interfaces for bulk permission checks

This change adds the `AccessCore.getAllowedIds` method, to evaluate
permissions in bulk, along with some other `getAllowedIds*` private
methods.

The added methods still calculate permissions by id, and are not
optimized to reduce the amount of queries and execution time, which will
be implemented in separate pull requests.

Services that were evaluating permissions in a loop have been refactored
to make use of the bulk approach.

* chore(server): Apply review suggestions

* chore(server): Make multiple-permission check more readable
2023-11-22 23:04:52 -05:00
Mert
6e10d15f2c pin python (#5272) 2023-11-22 19:42:17 -05:00
Aamir Azad
6eadca330b docs: change github sponsor link to organization (#5267) 2023-11-22 18:17:56 +00:00
Jason Rasmussen
309ba7d67e fix(web): navigate to album from search (#5241) 2023-11-22 09:54:58 -06:00
renovate[bot]
106bae4a31 chore(deps): update dependency svelte-jester to v3 (#5252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-22 08:08:11 -06:00
Alex Tran
95280fd692 chore(mobile): remove unused import 2023-11-22 08:00:28 -06:00
3urobeat
82fffd2c56 Add German README (#5262)
* docs: Add german README translation

* docs: Link german README translation

* docs: Address review comments
2023-11-22 13:49:01 +01:00
PyKen
ff275ea175 chore(mobile): Add log when saving asset (#5259) 2023-11-22 03:55:51 +00:00
renovate[bot]
8c2851fbc4 chore(deps): update @immich/cli (#5255)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 20:24:28 -06:00
Jason Rasmussen
c1d9ce8679 Update FUNDING.yml 2023-11-21 19:43:51 -05:00
Jason Rasmussen
29c154c681 Update FUNDING.yml 2023-11-21 19:31:09 -05:00
renovate[bot]
a861b93d7d chore(deps): update dependency macos to v13 (#5244)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 17:06:28 -06:00
renovate[bot]
0280d15d9d fix(deps): update dependency @immich/cli to v2.0.4 (#5250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 17:05:51 -06:00
Alex
c8aa782fef fix(cli): upload large file (#5242)
* fix(cli): upload large file

* fix: use known configuration

* chore: version bump

* chore: fix repo url

* fix conflict

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-11-21 15:52:12 -06:00
Alex
8ff4a08a2c fix(cli): upload large file with openAPI api (#5246)
* fix(cli): upload large file with openAPI

* function name

* fix: use boolean false

* chore: version bump

* fix: package-lock version

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-11-21 21:09:19 +00:00
Alex
af1113bf9e chore(cli): add version option (#5237)
* chore(cli): add version option

* chore: update build path

* fix: defer to package details for path to entrypoint

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-21 13:12:40 -06:00
renovate[bot]
55f7cf3ca9 chore(deps): update dependency typescript to v5.3.2 (#5236)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:48:31 -05:00
renovate[bot]
c72063280c chore(deps): update @immich/cli (#5235)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:47:57 -05:00
renovate[bot]
b06c2b786c chore(deps): update web (#4961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:46:07 -05:00
renovate[bot]
c607615e41 fix(deps): update exiftool (#4988)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:45:22 -05:00
renovate[bot]
566471444f chore(deps): update dependency eslint-plugin-prettier to v5 (#5174)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:31:50 -05:00
renovate[bot]
bf82ce24e0 chore(deps): update dependency eslint-plugin-unicorn to v49 (#5178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:01:42 -05:00
renovate[bot]
afd78652f2 fix(deps): update server (#5187)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 12:59:41 -05:00
YFrendo
0f657da5a4 fix(server): override date via xmp (#5199)
* Fix

* open api

* Change to list and delete

* Bug fix

* Change name

* refactor: clean up code and add test

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-21 10:58:56 -06:00
Alex The Bot
55fa3234fd Version v1.88.2 2023-11-21 16:09:18 +00:00
Alex
f094ff2aa1 fix(server): album perf query (#5232)
* Revert "fix: album performances (#5224)"

This reverts commit c438e17954.

* Revert "fix: album sorting options (#5127)"

This reverts commit 725f30c494.
2023-11-21 10:07:49 -06:00
Alex Tran
a13052e24c Revert "Version v1.88.2"
This reverts commit bc2c73e499.
2023-11-21 09:07:50 -06:00
Alex The Bot
bc2c73e499 Version v1.88.2 2023-11-21 15:01:06 +00:00
bo0tzz
bcb885422a feat(docs): Add no-ssr milestone (#5220)
* Add no-ssr milestone

* chore: formatting

* feat: activity

---------

Co-authored-by: martabal <74269598+martabal@users.noreply.github.com>
2023-11-21 08:50:56 -06:00
martin
c438e17954 fix: album performances (#5224)
* fix: album performances

* fix: tests
2023-11-21 08:49:53 -06:00
dependabot[bot]
c46e82561e chore(deps): bump actions/checkout from 2 to 4 (#5219)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 09:37:28 -05:00
Jason Rasmussen
5c0821330f chore(deps): cli grouping (#5193) 2023-11-21 11:44:59 +01:00
Alex Tran
69e0db56b3 Merge branch 'main' of github.com:immich-app/immich 2023-11-20 21:20:51 -06:00
Alex Tran
e8bf498236 fix(web): non-null error 2023-11-20 21:19:37 -06:00
Alex The Bot
9cf40afaf0 Version v1.88.1 2023-11-21 03:00:19 +00:00
Alex
28a15365d6 fix(web): search returns all value (#5210) 2023-11-20 20:58:22 -06:00
Alex
d49b353c49 fix(web): Fix year label calculation (#5211)
* fix(web): revert, fix year label overlapse

* not too bold

* fix
2023-11-20 20:58:05 -06:00
Jason Rasmussen
8b966a0f15 fix(server): date time calculation (#5204) 2023-11-20 17:26:53 -05:00
Alex
30e9763888 chore: post release tasks 2023-11-20 15:11:56 -06:00
Alex The Bot
0f596e278c Version v1.88.0 2023-11-20 20:47:37 +00:00
Alex
74ad8b37bb docs: update requirement for CLI (#5198) 2023-11-20 19:54:46 +00:00
Jason Rasmussen
ec6b56f63c feat(format): bmp format (#5197) 2023-11-20 13:47:24 -06:00
Alex
1fbbb5a236 chore(web): album thumbnail size (#5196) 2023-11-20 13:22:35 -06:00
martin
725f30c494 fix: album sorting options (#5127)
* fix: album sort options

* fix: don't load assets

* pr feedback

* fix: albumStub

* fix(web): album shared without assets

* fix: tests

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-20 13:01:21 -06:00
Alex
347e6191c5 chore(mobile): minor font fix 2023-11-20 12:59:53 -06:00
Alex
94c8fe1098 chore(web): small font size improvement (#5190) 2023-11-20 11:23:47 -06:00
Alex
cb32b5cd7b chore(server): update new CLI into the image (#5192) 2023-11-20 11:23:28 -06:00
Mert
ddf04a7eb4 chore(ml): increase spool threshold to 64MiB (#5176) 2023-11-20 09:05:35 -06:00
Alex
acf099e481 chore(mobile): Mobile make over (#5129)
* chore: added overpass font

* Setting page

* style: app bar dialog

* style: backup controller and album selection page

* style: asset grid

* blanket fix

* blanket fix

* remove description input for local only asset

* revert

* merge main

* style: search page

* sharing page

* text size in sharing page

* style: library page

* library page

* album page + album creation page

* Navigationbar

* style: minor

* update

* album bottom sheet

* album option page

* minor style fix

* remove unused fonts

* remove fonts in pubspec
2023-11-20 08:58:03 -06:00
Mert
f7ada7351e update onnxruntime (#5175) 2023-11-20 08:44:45 -06:00
renovate[bot]
2a5cf20c9f chore(deps): update dependency eslint-config-prettier to v9 (#5173)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:39:00 -06:00
Jonathan Jogenfors
81259115d1 chore(cli): set cli workdir in npm publish (#5185)
* chore: set cli release working dir

* chore: add repo url to npmjs

* chore: bump node setup to v4

* chore: normalize the github url
2023-11-20 13:36:17 +00:00
bo0tzz
f20a6cb321 chore(docs): Redirect old CLI paths (#5183)
* chore(docs): Redirect old CLI paths

* Update docs/vercel.json

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-20 13:20:58 +00:00
Jason Rasmussen
81af3b6f20 chore(cli): push to npm (#5168) 2023-11-20 14:04:20 +01:00
Jason Rasmussen
235b82b3fc chore(build): renovate grouping (#5167) 2023-11-20 09:19:10 +01:00
권중혁
e2317ea35e Add Korean README (#5128)
* docs: add Korean README and links

* chore: correction of some words
2023-11-19 21:10:59 -06:00
Alex
f5d73b0499 feat(web): new fonts (#5165)
* feat(web): new fonts

* remove old fonts and make default font size larger

* fine tunning
2023-11-19 21:06:16 -06:00
Jonathan Jogenfors
c1239a7337 docs: remove old CLI first (#5163) 2023-11-19 16:41:42 -06:00
Jonathan Jogenfors
7e38e7c949 feat(cli): refactor and add album support (#4434)
* Allow building and installing cli

* feat: add format fix

* docs: remove cli folder

* feat: use immich scoped package

* feat: rewrite cli readme

* docs: add info on running without building

* cleanup

* chore: remove import functionality from cli

* feat: add logout to cli

* docs: add todo for file format from server

* docs: add compilation step to cli

* fix: success message spacing

* feat: can create albums

* fix: add check step to cli

* fix: typos

* feat: pull file formats from server

* chore: use crawl service from server

* chore: fix lint

* docs: add cli documentation

* chore: rename ignore pattern

* chore: add version number to cli

* feat: use sdk

* fix: cleanup

* feat: album name on windows

* chore: remove skipped asset field

* feat: add more info to server-info command

* chore: cleanup

* chore: remove unneeded packages

* chore: fix docs links

* feat: add cli v2 milestone

* fix: set correct cli date

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-11-19 22:16:24 +00:00
digitaljamie
88b5f5b500 chore(docs): Update machine-learning.md 2023-11-19 18:47:42 +00:00
shenlong
983473261b refactor(mobile): riverpod codegen + riverpod lint (#4836)
* build(mobile): add riverpod_lint

* refactor(mobile): riverpod_generator for providers

* test(mobile): fix integration test helper

* refactor: ApiService to riverpod codegen

* refactor(mobile): return curatedcontent instead of people dto

* refactor: person provider to asyncnotifier

* mobile: update service providers to use lambda

* mobile: update scaffoldbody default error icon

* remove logger mixin

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-19 10:04:44 -06:00
Guillermo
bfab86b70d fix(web): improve year label position (#5141) 2023-11-19 09:31:06 -06:00
renovate[bot]
5b25d5140c chore(deps): update dependency @types/archiver to v6 (#5146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-19 09:29:51 -06:00
renovate[bot]
904756bbc5 chore(deps): update docker/build-push-action action to v5.1.0 (#5145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-19 08:34:43 -05:00
renovate[bot]
3a6e2c92cf chore(deps): update dependency eslint to v8.54.0 (#5140)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-19 08:17:11 -05:00
renovate[bot]
4ade8eae17 chore(deps): update dependency @types/node to v20.9.2 (#5139)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-19 05:23:21 +00:00
shenlong
41d43acf5f mobile: add initial DCM analysis_options (#5136)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-18 23:17:08 -06:00
renovate[bot]
fa71641ea4 chore(deps): update redis:6.2-alpine docker digest to 80cc851 (#5131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-18 23:16:52 -06:00
shenlong
fce8d48de6 fix(mobile): use proper context for popping out from share (#5138)
* fix(mobile): use proper context for popping out from share

* mobile: use proper context for popping

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-18 23:13:38 -06:00
Michael Manganiello
6d310d6297 fix(mobile): Mark more strings for translation (#5132)
* fix(mobile): Mark more strings for translation

Moving more strings to the `i18n` JSON file, and also including their
es-US translations.

* Add more translatable strings
2023-11-18 20:32:28 -06:00
renovate[bot]
f5ce3deb3a fix(deps): update server (#5057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-18 15:59:04 -06:00
Daniel Dietzler
767fe87b2e fix typo (#5124) 2023-11-18 17:49:30 +00:00
Daniel Dietzler
f2877c3a6e chore: add warning to compose file and readme (#5123)
* add warning to compose file

* add readme
2023-11-18 11:43:10 -06:00
Jason Rasmussen
adae5dd758 feat(web)!: SPA (#5069)
* feat(web): SPA

* chore: remove unnecessary prune

* feat(web): merge with immich-server

* Correct method name

* fix: bugs, docs, workflows, etc.

* chore: keep dockerignore for dev

* chore: remove license

* fix: expose 2283

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-17 22:13:36 -06:00
Alex
5118d261ab chore(web): remove deprecation message (#5115)
* chore(web): remove deprecation message

* keep the slot
2023-11-17 22:13:23 -06:00
Alex
cc15c5c69f chore: post release tasks 2023-11-17 21:25:13 -06:00
Alex The Bot
ec51a9f6d6 Version v1.87.0 2023-11-18 02:58:26 +00:00
Jason Rasmussen
9b2ac6aaca feat(server): decomissioned warning (#5113) 2023-11-17 20:31:34 -06:00
shenlong
4daf2478aa feat(mobile): remove announcement overlay and show in app bar dialog (#5104)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-17 15:46:18 -06:00
Fynn Petersen-Frey
63a745c7ad fix(mobile): update local deleted assets in sync (#5099) 2023-11-17 15:35:57 -06:00
davidacampos
47a4984a56 feat(web): add (lower) thumbnail resolution options (#5107)
* Added extra lower resolution options for thumbnails

Added 200p and 720p as options for small and large thumbnails resolutions respectively.

* Also included 1080p in large thumbnails resolution options
2023-11-17 20:25:35 +00:00
Jason Rasmussen
82f12b8ee6 chore(server): remove import file endpoint (#5093)
* chore(server): remove import file endpoint

* chore: open api
2023-11-17 05:44:59 +00:00
Jason Rasmussen
c7b3039a1a chore(server): remove asset search endpoint (#5094)
* chore(server): remove unused search endpoint

* chore: open api
2023-11-16 22:24:31 -06:00
Alex
ed68c49c16 chore(web): annoucement box for breaking change (#5091)
* chore(web): annoucement box for breaking change

* log
2023-11-17 03:38:32 +00:00
Mert
a6af4892e3 fix(ml): better model unloading (#3340)
* restart process on inactivity

* formatting

* always update `last_called`

* load models sequentially

* renamed variable, updated docs

* formatting

* made poll env name consistent with model ttl env
2023-11-16 20:42:44 -06:00
Jordy
98f87c6548 feat(readme): added new zcash donation option in readme (#5087)
* Added ZCash in Dutch(nl) readme

* Added ZCash in Turkish(tr) readme

* Added ZCash in Italian(it) readme

* Added ZCash in French(fr) readme

* Added ZCash in Spanish(es) readme

* Added ZCash in Catalan(ca) readme
2023-11-16 20:10:49 +00:00
Alex
54d770df8a Update README.md 2023-11-16 09:36:35 -06:00
renovate[bot]
b82db1edaa chore(deps): update dependency @testing-library/jest-dom to v6 (#5073)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-15 22:52:34 -06:00
Jason Rasmussen
87f02cc775 chore(server): shared link e2e for add/remove assets (#5052) 2023-11-15 17:50:55 -06:00
renovate[bot]
69030ea9a7 chore(deps): update dependency @faker-js/faker to v8 (#5059)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-15 17:50:07 -06:00
martin
956ca816bc fix(web): previous url in person page (#5071) 2023-11-15 17:14:18 -06:00
Fynn Petersen-Frey
343afea713 fix(mobile): rebuild of unified partner timeline (#5065) 2023-11-15 08:31:38 -06:00
renovate[bot]
f54e6fc09f chore(deps): update postgres:14-alpine docker digest to 50d9be7 (#5054)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-15 02:34:42 +00:00
renovate[bot]
f4ef259ba0 fix(deps): update dependency commander to v11.1.0 (#5003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 20:28:58 -06:00
dependabot[bot]
bced117eb4 chore(deps): bump actions/github-script from 6 to 7 (#5032)
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-14 20:27:43 -06:00
Alex
54b9bfaeef chore(mobile): translation update (#5053) 2023-11-14 20:27:01 -06:00
Michael Manganiello
c4f7cfc2a6 feat(mobile): Add es-US translations (#4997)
Adding es-US translations for all current strings in the application.
2023-11-14 20:23:58 -06:00
Jason Rasmussen
4b722517f0 chore: cleanup e2e (#5051) 2023-11-14 20:31:06 -05:00
Jason Rasmussen
6127fd4c5c chore(server): improve e2e test speed (#5026)
* feat: improve shared link (41s to 8s)

* feat: improve activity (18s to 8s)

* feat: improve partner (20s to 10s)

* feat: improve server-info (10s to 6s)

* feat: improve system-config

* fix: e2e

* chore: linting
2023-11-14 20:08:22 -05:00
martin
6214d510d6 fix(web): back button from person detail page (#5047)
* feat: return button to the main page

* add album route

* feat: do not use explicit routes
2023-11-14 17:55:03 -05:00
Alex
ecbe7beb6c chore: readme feature list (#5048)
* chore: update feature list

* typo

* typo
2023-11-14 17:54:06 -05:00
Jason Rasmussen
753dab8b3c feat(server): asset search endpoint (#4931)
* feat(server): GET /assets endpoint

* chore: open api

* chore: use dumb name

* feat: search by make, model, lens, city, state, country

* chore: open api

* chore: pagination validation and tests

* chore: pr feedback
2023-11-14 22:47:15 +00:00
Jonathan Jogenfors
7a8f8e5472 chore: don't set max old space (#5050) 2023-11-14 16:32:58 -06:00
Fynn Petersen-Frey
5d8af5f94c fix(mobile): partner assets in albums & share (#5029) 2023-11-14 14:32:38 -06:00
Fynn Petersen-Frey
5145c33ed4 feat(mobile): use app without storage permission (#5014)
* feat(mobile): use app without storage permission

* address review feedback
2023-11-14 14:30:27 -06:00
Ishan Jain
8f3ed8ba8e fix(server): print extra config keys on error (#5036) 2023-11-14 08:13:42 -05:00
Alex
dc4e6c4629 chore: post release tasks 2023-11-13 22:19:24 -06:00
Alex The Bot
a7cacafe25 Version v1.86.0 2023-11-14 04:08:18 +00:00
martin
d25a245049 feat(web,server): user avatar color (#4779) 2023-11-14 03:10:35 +00:00
opdelta
14c7187539 feat(mobile): Added fr-CA translations (#5023)
Co-authored-by: Ziad Lteif <cj291059>
2023-11-13 20:20:54 -06:00
Jason Rasmussen
24670178dc feat(web): use css vraiables (#5022) 2023-11-13 17:16:26 -05:00
Dmitriy P
72fb421f54 feat(web): Add file path info for owned assets (#4943)
* feat(web): Add file path info for external assets

Add file path information to the asset details panel for External assets. This will allow a user to easily locate said asset in the filesystem, to perform any desired tasks on that asset. Styling was chosen to be as unobtrusive as possible.

* feat(web): toggleable file path info for external assets

If the user is the owner of the current asset and it's an external asset, then add a button next to the filename to reveal the asset's file path.

* show path on owned asset and styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-13 21:57:58 +00:00
Alex
ac7e8bcdf4 fix(mobile): freeze at splash screen when updating from 1.85 to the new version (#5012)
* fix(mobile): Cannot return to logged in screen due to name changes

* fix(mobile): Cannot return to logged in screen due to name changes

* remove deadcode

* test deprecate

* Add deprecated decorator

* revert api change
2023-11-13 14:15:36 -06:00
Fynn Petersen-Frey
38983838fd fix(mobile): better app state handling (#4989)
* fix(mobile): better app state handling

* watch -> read

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-13 19:51:16 +00:00
Mert
291159e7fc fixed tests (#5017) 2023-11-13 19:37:39 +00:00
Fynn Petersen-Frey
464cf903f4 fix(mobile): better icon spacing in bottom bar (#5010)
* fix(mobile): better icon spacing in bottom bar

* wider buttons
2023-11-13 10:19:51 -06:00
Mert
935f471ccb chore(ml): use strict mypy (#5001)
* improved typing

* improved export typing

* strict mypy & check export folder

* formatting

* add formatting checks for export folder

* re-added init call
2023-11-13 10:18:46 -06:00
Fynn Petersen-Frey
9fa9ad05b1 feat(mobile): unify partner assets on timeline (#4974)
* feat(mobile): unify partner assets on timeline

* skip non-owned assets in bulk actions

* add message when trying to delete partner assets
2023-11-13 09:54:41 -06:00
waclaw66
0c482960ce fix(web): better year labels (#5009)
* better year labels

* fixes

* lint fixes
2023-11-13 09:37:50 -06:00
Alex
c3f8dc8c22 chore(mobile): translation update (#5011) 2023-11-13 09:24:00 -06:00
bo0tzz
a959f2a51d chore(renovate): Ignore un-bumpable mobile deps (#5007) 2023-11-13 10:46:32 +01:00
renovate[bot]
880f4f61d2 chore(deps): update dependency @types/jest to v29.5.8 (#4995)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 03:54:25 +00:00
renovate[bot]
ab1d1ef4e7 chore(deps): update dependency eslint to v8.53.0 (#4986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:46:22 -06:00
renovate[bot]
89255d0889 fix(deps): update dependency yaml to v2.3.4 (#4981)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:46:06 -06:00
renovate[bot]
14acee9090 fix(deps): update dependency systeminformation to v5.21.17 (#4979)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:45:52 -06:00
renovate[bot]
8399130f05 chore(deps): update dependency eslint-plugin-jest to v27.6.0 (#4987)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:45:23 -06:00
renovate[bot]
1188012279 fix(deps): update server (#4982)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:44:42 -06:00
renovate[bot]
04a8bde7ac chore(deps): update ghcr.io/nginxinc/nginx-unprivileged docker tag to v1.25.1 (#4978)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 21:38:43 -06:00
Fynn Petersen-Frey
069a32dcdb fix(mobile): run user sync operation with lock (#4984) 2023-11-12 10:35:08 -06:00
bo0tzz
388144823a chore(renovate): PR exiftool updates separately (#4985) 2023-11-12 17:07:55 +01:00
renovate[bot]
c23d84be39 chore(deps): update dependency @types/node to v20.9.0 (#4983)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 15:15:44 +00:00
renovate[bot]
66120025b7 fix(deps): update dependency tailwindcss to v3.3.5 (#4980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 10:04:24 -05:00
renovate[bot]
da33653b0a chore(deps): update dependency @types/js-yaml to v4.0.9 (#4970)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 09:51:24 -05:00
renovate[bot]
3ea0210c1d chore(deps): update dependency @types/mime-types to v2.1.4 (#4971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 09:50:55 -05:00
Ploonet
98f1e85c87 fix(docs): Typo in libraries exclusion pattern (#4972)
Co-authored-by: Antony Mota <amota.confluenceconseil@boiron.fr>
2023-11-12 09:49:47 -05:00
renovate[bot]
d2509c619e chore(deps): update dependency jest-extended to v4.0.2 (#4976)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 09:48:43 -05:00
renovate[bot]
2bfe5d1573 chore(deps): update dependency @types/mock-fs to v4.13.4 (#4975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 09:48:17 -05:00
Daniel Dietzler
d7d464570f fix maplibre latlng import (#4977) 2023-11-12 14:46:17 +01:00
Alex Tran
2e82476cff chore: styling for partner stylesheet 2023-11-11 23:02:26 -06:00
renovate[bot]
2f462717aa chore(deps): update dependency @types/cli-progress to v3.11.5 (#4968)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 22:36:03 -05:00
renovate[bot]
86e04832a1 chore(deps): update dependency @types/jest to v29.5.8 (#4969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 22:35:33 -05:00
Alex
96f1a271ef chore: update Makefile to use docker compose (#4967) 2023-11-12 01:31:01 +00:00
Sergey Kondrikov
55e3605ca4 feat(web): uniform random asset selection in slideshow mode (#4953)
* Implement weighted asset selection

* Rename totalAssets -> bucketCount

* Remove redundant check
2023-11-12 01:23:15 +00:00
renovate[bot]
0bf55d8e32 chore(deps): update dependency @types/chai to v4.3.10 (#4966)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 01:10:37 +00:00
renovate[bot]
2dcad93d9c chore(deps): update dependency @types/byte-size to v8.1.2 (#4965)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 01:09:16 +00:00
Mert
328a58ac0d feat(ml): add face models (#4952)
added models to config dropdown

fixed downloading

updated tests

use hf for face models

formatting
2023-11-11 19:04:49 -06:00
Brian Austin
7fca0d8da5 fix: replace first and last name with single field (#4915) 2023-11-11 19:03:32 -06:00
renovate[bot]
413ab2c538 chore(deps): update postgres:14-alpine docker digest to 874f566 (#4963)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 19:58:46 -05:00
renovate[bot]
394e0dfe37 chore(deps): update redis:6.2-alpine docker digest to 3995fe6 (#4964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 19:58:01 -05:00
renovate[bot]
a9b6acec28 chore(deps): update ghcr.io/nginxinc/nginx-unprivileged:1.25.0-alpine3.17 docker digest to 5ebb90a (#4960)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 16:54:55 -06:00
Daniel Dietzler
ad4cbf20de refactor: map (#4957)
* fix mixed up lng lat for asset map

* minor cleanup

* update packages
2023-11-11 16:32:39 -06:00
bo0tzz
26fd797ac9 chore: re-enable renovate (#4955)
* Chore: reenable renovate

* chore(renovate): Don't group major updates

* chore(renovate): Use matchFileNames
2023-11-11 16:31:58 -06:00
Alex
35767591d2 feat(web): show partners assets on the main timeline (#4933) 2023-11-11 21:06:19 +00:00
aphymi
3b11854702 fix(mobile): fix JSON-format typos in Asset model (#4942) 2023-11-10 02:56:30 +00:00
Mansour
895129c997 feat!: add docker project name (#4906)
* add: docker project name

* chore: linting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-09 21:43:21 -05:00
martin
92ec1ce77f fix(server,web): correctly show album level like (#4916)
* fix: like in global activity

* refactor: rename isGlobal to ReactionLevel.Album

* chore: open api

* chore: e2e test for album vs comment duplicate like checking

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-09 21:32:31 -05:00
Sushain Cherivirala
986bbfa831 feat(server): don't re-run face recognition on assets without any faces (#4854)
* Add AssetJobStatus

* fentity

* Add jobStatus field to AssetEntity

* Fix the migration doc paths

* Filter on facesRecognizedAt

* Set facesRecognizedAt field

* Test for facesRecognizedAt

* Done testing

* Adjust FK properties

* Add tests for WithoutProperty.FACES

* chore: non-nullable

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-09 20:55:00 -05:00
Jason Rasmussen
75c065c83a chore(server): e2e test (#4941) 2023-11-09 20:23:03 -05:00
Alex
9c0805c37a fix(server): non-admin cannot use map (#4934)
* fix(server): non-admin cannot user map

* fix: admin route

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-09 13:52:10 -06:00
shenlong
bffc2cdf60 refactor(mobile): build context extensions (#4923)
* refactor: move all extensions to separate package

* refactor(mobile): add BuildContext extension

* refactor(mobile): use theme getters from context

* refactor(mobile): use media query size from context

* refactor(mobile): use auto router methods from context

* refactor(mobile): use navigator methods from context

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-09 10:19:53 -06:00
Daniel Dietzler
a147dee4b6 feat: Maplibre (#4294)
* maplibre on web, custom styles from server

Actually use new vector tile server, custom style.json

support multiple style files, light/dark mode

cleanup, use new map everywhere

send file directly instead of loading first

better light/dark mode switching

remove leaflet

fix mapstyles dto, first draft of map settings

delete and add styles

fix delete default styles

fix tests

only allow one light and one dark style url

revert config core changes

fix server config store

fix tests

move axios fetches to repo

fix package-lock

fix tests

* open api

* add assets to docker container

* web: use mapSettings color for style

* style: add unique ids to map styles

* mobile: use style json for vector / raster

* do not use svelte-material-icons

* add click events to markers, simplify asset detail map

* improve map performance by using asset thumbnails for markers instead of original file

* Remove custom attribution

(by request)

* mobile: update map attribution

* style: map dark mode

* style: map light mode

* zoom level for state

* styling

* overflow gradient

* Limit maxZoom to 14

* mobile: listen for mapStyle changes in MapThumbnail

* mobile: update concurrency

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-11-09 10:10:56 -06:00
Jason Rasmussen
5423f1c25b refactor(server): auth dtos (#4881)
* refactor: auth dtos

* chore: open api
2023-11-09 10:14:15 -05:00
shenlong
5c602bf4d4 fix(mobile): add label for expire after in shared link edit page (#4920)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-09 08:36:57 -06:00
bo0tzz
5db73c5c5c chore(ci): use custom base for server image build (#4456)
* Use base image for server build
* Clean up build scripts
* target tags for base image
* use prod tag instead of runtime
* use runtime stage for dev

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-11-09 13:12:05 +00:00
Michael Manganiello
52fe392a9e fix(mobile): display simple album date when range is single day (#4919)
This change makes albums with same start and end date, to just display a
single date.

Currently, date range is displayed as `Nov 9 - Nov 9 2023`. With this
change, just `Nov 9 2023` is displayed. No changes are made for albums
where start and end dates do not match.
2023-11-09 03:16:56 +00:00
Alex
5e1c0fb465 chore: post release tasks 2023-11-08 12:51:34 -06:00
Alex The Bot
37ab37bffc Version v1.85.0 2023-11-08 03:20:59 +00:00
shenlong
664b7106ca feat(mobile): shared album activity disable handling (#4890)
* feat(mobile): shared album activity disable handling

* not show comment/like option on non-shared album, alternative text when activity is disabled

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-08 03:07:43 +00:00
Alex
bb28cae671 docs: update (#4893)
* docs: update

* chore:format
2023-11-07 15:52:44 -06:00
shenlong
c2c26c471a fix(mobile): do not show trashed assets in album viewer page (#4894)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-07 13:19:45 -06:00
Strubbl
2dca2850dc Update README.md (#4892)
fix alt parameter spelling of the Discord image tag
2023-11-07 18:57:30 +00:00
dependabot[bot]
7fc8f6433b chore(deps): bump stumpylog/image-cleaner-action from 0.3.0 to 0.4.0 (#4886)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.3.0 to 0.4.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.3.0...v0.4.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-07 13:54:18 -05:00
Jason Rasmussen
f6180fccdc chore(server): compose updates (#4878)
* chore: compose updates

* chore: docs for troubleshooting

* chore: add reference in docker compose to docs
2023-11-07 11:34:03 -05:00
martin
9d01885b58 feat(server, web): Album's options (#4870)
* feat: disable activity

* fix: disable reactions

* fix: tests

* fix: tests

* fix: tests

* pr feedback

* pr feedback

* chore: styling & wording

* refactor component

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-07 04:37:21 +00:00
Jason Rasmussen
ace0a5911c fix(web): optimize deps (#4877) 2023-11-06 22:02:46 -06:00
Fynn Petersen-Frey
21f2d3058a feat(mobile)!: batched full/initial sync (#4840)
* feat(mobile): batched full/initial sync

* use OptionalBetween

* skip/take as integer

---------

Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-06 11:40:43 -06:00
shenlong
26fd9d7e5f feat(mobile): shared album activities (#4833)
* fix(server): global activity like duplicate search

* mobile: user_circle_avatar - fallback to text icon if no profile pic available

* mobile: use favourite icon in search "your activity"

* feat(mobile): shared album activities

* mobile: align hearts with user profile icon

* styling

* replace bottom sheet with dismissible

* add auto focus to the input

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-11-06 09:46:26 -06:00
Jason Rasmussen
c74ea7282a docs: python upload guide (#4867) 2023-11-06 09:08:36 -05:00
Jason Rasmussen
279481ad54 feat(server): make is favorite optional on asset upload (#4865)
* feat(server): make isFavorite optional

* chore: open api

* chore: e2e
2023-11-06 09:04:39 -05:00
Mert
9e7a32804b chore(server): set relations for getByIds (#4855) 2023-11-05 20:15:12 -06:00
martin
a0743d8b7d feat(web): global activity (#4796)
* feat: global activity

* fix: tests

* pr feedback

* use flexbox

* fix: deleted control actions

* fix: flex box

* fix: do not show activity tab by default

* feat: better grouping

* fix: set isShared default value to false

* fix: prevent re-rendering the asset grid

* fix: activity status above the scrollbar

* fix: prevent re-rendering the asset grid

* fix: prevent re-rendering the asset grid

* pr feedback

* pr feedback

* pr feedback

* styling and better thumbnail

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-11-05 11:24:43 -06:00
Fynn Petersen-Frey
68000c21a8 fix(mobile): backup indicator wrong when only background backup is enabled (#4842)
Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
2023-11-05 10:07:57 -06:00
Jason Rasmussen
e671b30aaf fix(server): duplicate faces bug (#4844) 2023-11-05 10:07:29 -06:00
Sergey Kondrikov
cf1dfdc776 fix(web): unstack after stack child selection (#4834) 2023-11-04 07:59:21 -05:00
doggo
de29480dda fix(mobile): first stack list asset is now highlighted on view (#4802) 2023-11-03 20:43:43 -05:00
Jason Rasmussen
2e424fe249 feat(server): better api error messages (for unhandled exceptions) (#4817)
* feat(server): better error messages

* chore: open api

* chore: remove debug log

* fix: syntax error

* fix: e2e test
2023-11-03 20:33:15 -05:00
Wingy
d4ef6f52bb chore(mobile): change version mismatch text (#4831)
* change version mismatch text

* change text
2023-11-03 20:20:42 -05:00
martin
e1e45f3f32 fix(web): show one face for the same person in the detail panel (#4822) 2023-11-03 16:02:05 -05:00
Jesbin
330f4cadda docs: changes to docker compose command. (#4828) 2023-11-03 16:01:17 -05:00
waclaw66
621eef0edc feat(mobile): share assets from album (#4821)
* share from album

* fix case

* enhance conditional array items
2023-11-03 16:00:55 -05:00
waclaw66
33ce2b7bba fix(mobile): shows asset datetime with original timezone (#4774) 2023-11-03 09:04:41 -05:00
shenlong
81792a5342 fix(mobile): immich app bar tap radius (#4816)
* mobile: tool-tip for server url in app bar dialog

* fix: Add Inkwell around the entire profile image

* mobile: open documentation and github in browser

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-03 09:04:06 -05:00
shenlong
5f43971ccf mobile: allow upload if local asset in selection (#4815)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-11-03 09:03:01 -05:00
Sergey Kondrikov
38443a6068 fix(web): unstacking issues (#4792)
* Fix typo

* Restore asset store consistency after unstacking

* Fix aspect ratio after unstacking
2023-11-03 09:01:48 -05:00
waclaw66
92bb42950e fix(web): scrollbar year label visibility (#4820)
* fixes year label visibility

* format fix
2023-11-03 08:54:02 -05:00
Jason Rasmussen
b58edae134 fix(web): timeline alignment (#4808) 2023-11-02 15:11:59 -05:00
martin
2b9f20a1b5 fix: update like status (#4803) 2023-11-02 14:43:27 -04:00
Alex
d5f8199655 fix(web): scrollbar not showing year (#4782)
* fix(web): scrollbar not showing year

* grammar

* fix test
2023-11-01 20:50:24 -05:00
Alex
d8903de92e docs: remove read-only related content (#4781)
* docs: remove read-only related content

* format

* broken link
2023-11-01 20:49:57 -05:00
Jason Rasmussen
1d35965d03 feat(web): shuffle slideshow order (#4277)
* feat(web): shuffle slideshow order

* Fix play/stop issues

* Enter/exit fullscreen mode
* Prevent navigation to the next asset after exiting slideshow mode

* Fix entering the slideshow mode from an album page

* Simplify markup of the AssetViewer

Group viewer area and navigation (prev/next/slideshow bar) controls together

* Select a random asset from a random bucket

* Preserve assets order in random mode

* Exit fullscreen mode only if it is active

* Extract SlideshowHistory class

* Use traditional functions instead of arrow functions

* Refactor SlideshowHistory class

* Extract SlideshowBar component

* Fix comments

* Hide Say something in slideshow mode

---------

Co-authored-by: brighteyed <sergey.kondrikov@gmail.com>
2023-11-01 21:34:30 -04:00
Alex
309bf1ad22 chore: post release tasks 2023-11-01 14:43:10 -05:00
Jason Rasmussen
0130591a0f fix: show/set activity like per user (#4775)
* fix: like per user

* chore: open api

* chore: e2e test for userId filtering
2023-11-01 11:49:12 -04:00
Alex The Bot
cf4ec06750 Version v1.84.0 2023-11-01 14:46:59 +00:00
Alex
e8712e6694 fix(server): import scheduler module (#4766) 2023-10-31 23:40:35 -05:00
martin
ce5966c23d feat(web,server): activity (#4682)
* feat: activity

* regenerate api

* fix: make asset owner unable to delete comment

* fix: merge

* fix: tests

* feat: use textarea instead of input

* fix: do actions only if the album is shared

* fix: placeholder opacity

* fix(web): improve messages UI

* fix(web): improve input message UI

* pr feedback

* fix: tests

* pr feedback

* pr feedback

* pr feedback

* fix permissions

* regenerate api

* pr feedback

* pr feedback

* multiple improvements on web

* fix: ui colors

* WIP

* chore: open api

* pr feedback

* fix: add comment

* chore: clean up

* pr feedback

* refactor: endpoints

* chore: open api

* fix: filter by type

* fix: e2e

* feat: e2e remove own comment

* fix: web tests

* remove console.log

* chore: cleanup

* fix: ui tweaks

* pr feedback

* fix web test

* fix: unit tests

* chore: remove unused code

* revert useless changes

* fix: grouping messages

* fix: remove nullable on updatedAt

* fix: text overflow

* styling

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-31 22:13:34 -05:00
Jason Rasmussen
68f6446718 fix(cli): ignore web socket when unavailable and skip metadata init (#4748) 2023-10-31 22:08:21 -05:00
Jason Rasmussen
197f336b5f fix(web): no preload repair report (#4749) 2023-10-31 20:37:32 +00:00
Daniel Dietzler
cd375a976e feat(server): custom library scanning interval (#4390)
* add automatic library scan config options

* add validation

* open api

* use CronJob instead of cron-validator

* fix tests

* catch potential error of the library scan initialization

* better description for input field

* move library scan job initialization to server app service

* fix tests

* add comments to all parameters of cronjob contructor

* make scan a child of a more general library object

* open api

* chore: cleanup

* move cronjob handling to job repoistory

* web: select for common cron expressions

* fix open api

* fix tests

* put scanning settings in nested accordion

* fix system config validation

* refactor, tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-31 15:19:12 -05:00
Jason Rasmussen
088d5addf2 refactor(server): user core (#4733) 2023-10-31 11:01:32 -04:00
shenlong
2377df9dae fix(mobile): store exposure time as string (#4589)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-31 05:33:45 -05:00
waclaw66
ad5ba82f50 fix(mobile): don't show lens info if it's not available (#4737) 2023-10-31 05:33:08 -05:00
Michael Manganiello
b6f18cbe81 fix(server): Correctly set album start and end dates (#4698)
* fix(server): Correctly set album start and end dates

Currently, the query that retrieves album assets uses
`ORDER BY assets.fileCreatedAt DESC`, which makes the existing logic
return the start/end dates reversed (with `startDate` being taken from
the first asset in the array).

Instead of using the index-based approach, this change iterates through
assets to get the min/max `fileCreatedAt`. This will avoid any future
issues, if the query ordering changes, or becomes customizable (e.g. in
case the user prefers to visualize older assets first).

* fix: Maintain constant cost and only swap variables if needed
2023-10-31 05:08:34 -05:00
Mert
87a0ba3db3 feat(ml): export clip models to ONNX and host models on Hugging Face (#4700)
* export clip models

* export to hf

refactored export code

* export mclip, general refactoring

cleanup

* updated conda deps

* do transforms with pillow and numpy, add tokenization config to export, general refactoring

* moved conda dockerfile, re-added poetry

* minor fixes

* updated link

* updated tests

* removed `requirements.txt` from workflow

* fixed mimalloc path

* removed torchvision

* cleaner np typing

* review suggestions

* update default model name

* update test
2023-10-31 05:02:04 -05:00
Jason Rasmussen
3212a47720 refactor(server): user profile picture (#4728) 2023-10-30 19:38:34 -04:00
Jason Rasmussen
431536cdbb refactor(server): user core (#4722) 2023-10-30 17:02:36 -04:00
martin
9a60578088 fix(web): multiple improvements for people page (1) (#4717)
* fix(web): multiple improvements for people page

* feat: better responsive icons
2023-10-30 14:40:28 -05:00
Jason Rasmussen
8dcd159bd6 chore(server): remove user count endpoint (#4724)
* chore: remove unused endpoint

* chore: open api
2023-10-30 19:29:18 +00:00
Skyler Mäntysaari
2f87463170 fix(server): better fix for the OAuth Discovery errors (#4695)
* fix(server/oauth): Handle errors from OAuth Discovery.

* fix(server/oauth): Better fix for OAuth discovery error.

* This doesn't break tests.

* Update server/tsconfig.json

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* Revert back to the mostly original way.

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-30 13:22:30 -04:00
shenlong
9f56bf0ab9 refactor(mobile): app bar (#4687)
* refactor(mobile): add app bar to library and sharing

* mobile: add app bar dialog

* fix(mobile): refetch profile image only when path is changed

* mobile: add server url to dialog

* mobile: move trash to library app bar

* replace discord link with github

* user confirmation before sign out

* edit some styles

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-30 12:17:34 -05:00
Jason Rasmussen
603b056512 refactor(server): auth delete device (#4720)
* refactor(server): auth delete device

* fix: person e2e
2023-10-30 11:48:38 -04:00
Fynn Petersen-Frey
ce04e9e07a feat(server): hardware video acceleration for Rockchip SOCs via RKMPP (#4645)
* feat(server): hardware video acceleration for Rockchip SOCs via RKMPP

* add tests

* use LD_LIBRARY_PATH for custom ffmpeg

* incorporate review feedback

* code re-use for ffmpeg call

* review feedback
2023-10-30 09:39:37 -05:00
Alex
c54a188154 fix(web): sidebar setting not updating when there is a new property added to the data payload (#4708) 2023-10-30 09:17:37 -05:00
Mayuresh Dharwadkar
c77ba46d60 docs: fix typos (#4713) 2023-10-30 09:17:10 -05:00
martin
cc3149c520 fix(server): do not leak people (#4710) 2023-10-30 03:44:05 -05:00
shenlong
512f672e9e fix(mobile): cache key for assets from dto (#4699)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-29 15:28:54 -05:00
shenlong
b117985f66 fix(mobile): first char miss in new description (#4697)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-29 14:16:25 -05:00
Kalyani Mhala
b92a2b2a56 chore: add contribution section to readme (#4690)
* Update README.md

Successfully added contribution section to readme.md file.

* reordering

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-29 13:58:26 -05:00
Alex
a6f39bc74f fix(web): Improve UI/UX for shared link form (#4685)
* chore(web): Improve shared link form

* add verification for password

* improve ux
2023-10-29 13:50:43 -05:00
doggo
daad02504f feat(web): added toggle for Sharing button in the sidebar (#4674)
* Added toggle for Sharing button in the sidebar

* fix: format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-29 01:42:51 +00:00
jarvis2f
8a6889529c feat(server,web,mobile): Add optional password option for share links. (#4655)
* feat(server,web,mobile): Add optional password option for share links.

Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com>

* feat(server,web): Update shared-link.controller and page.svelte for improved cookie handling and metadata updates.

Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com>

---------

Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com>
2023-10-28 20:35:38 -05:00
Alex
b34cbd881a fix(web): scrollbar does not show all years (#4684) 2023-10-29 01:31:33 +00:00
martin
f6eaaab725 docs: update milestone page (#4683)
* docs: update milestone page

* docs: add 20k milestone
2023-10-28 20:20:05 -05:00
shenlong
2a2c74e081 fix(mobile): handle shared assets in viewer (#4679)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-28 14:48:30 -05:00
Skyler Mäntysaari
c653e0f261 fix(server/oauth): Handle errors from OAuth Discovery. (#4678) 2023-10-28 14:35:09 -05:00
martin
f0dd1d715a fix(web): table headers when there's no album (#4673) 2023-10-28 14:34:45 -05:00
Alex The Bot
d98a2a5f79 Version v1.83.0 2023-10-28 13:32:48 +00:00
Alex Tran
275717b8e3 chore(web): motion photo icon 2023-10-27 23:59:44 -05:00
Alex Tran
51dc197b33 fix(web): stacked vs normal asset rendering 2023-10-27 20:57:37 -05:00
shenlong
a42c95a781 mobile: show stack indicator for videos (#4671)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-27 20:09:17 -05:00
Alex
8b5b6d0821 feat(web): manual stacking asset (#4650)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-27 20:34:01 +00:00
Wingy
72dcde9e0f run dev-down on unclean dev-new exit (#4665) 2023-10-27 14:30:17 -05:00
Wingy
a08a687951 refactor(server, web): standardize theme api response (#4664)
* web: standardize theme api response

* revert makefile change that i didn't mean to commit
2023-10-27 02:32:33 +00:00
Jason Rasmussen
7ff68223ab fix(server): config update queue] (#4661) 2023-10-26 20:26:59 -05:00
Jason Rasmussen
c76c1d6bf8 refactor: always use the same bucket size (#4662) 2023-10-26 13:55:10 -05:00
Daniel Dietzler
0167407370 update jobs screenshot in docs (#4660) 2023-10-26 12:55:46 -05:00
shenlong
b49b10141e fix(mobile): stack count reset when navigating to library (#4647)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-26 09:19:06 -05:00
Wingy
cb0e37e76e fix(web): fix Theme Custom CSS endpoint requiring the user to be logged in as the server admin (#4633)
* fix custom css requiring the user to be the admin and logged in

* move theme api to custom endpoint

* add e2e test
2023-10-25 22:13:05 +00:00
Alex
237d1c1bf4 fix(mobile): incorrect date range (#4644)
* fix(mobile): incorrect date range

* remove comment

* pr feedback
2023-10-25 16:56:31 -05:00
Alex
cf71a41bae fix(web): asset ownership does not update when navigating (#4643) 2023-10-25 12:14:15 -05:00
shenlong
52e09b4857 fix(mobile): asset deletion state management (#4568) 2023-10-25 11:02:59 -05:00
Alex
aefd052888 feat(mobile): clear local storage option (#4635)
* feat(mobile): clear local storage option

* en json
2023-10-25 09:53:16 -05:00
Alex
e47a11b8ba chore(mobile): translation update (#4641) 2023-10-25 09:34:34 -05:00
Jason Rasmussen
2ad389f64e refactor(web): material icons (#4636) 2023-10-25 13:48:25 +00:00
Bogdan Cerovac
d5e19e45cd fix(web): fix #4574 link button + improves accessibility (#4575)
* Fixed semantic problem in navigation-bar.svelte

Closes [4574]

* Reintroduced styling for navigation-bar.svelte

Based on button styling

* Horizontal rule set as decoration in navigation-bar.svelte

* aria-current added as an assistive technology indication for current page

Horizontal rule indicates current page for users that can see the screen and with aria-current screen-reader users get the same information

* Temporary fix for accessibility name of the link when SVG replaces text

This is a temporary fix as we first need to fix the svelte-material-icons to support role="img" on rendered SVGs.

* fix(web): horizontal rule replaced with div

hr is not semantically correct, therefore we tried with role="decoration" (that should be role="presentation") but it's actually better to just use a div as it's best practice to not override semantics when we can avoid that...

Btw. the semantics for active element for assistive technology is added with previous commit setting aria-current on the link...

* chore: format

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-25 12:53:44 +00:00
bo0tzz
4a5654a247 chore(compose): Remove unnecessary env values from proxy container (#4398) 2023-10-25 00:23:52 -04:00
Wingy
d4c60eab0d docs: clarify that the server must be run in development mode to generate openapi specs (#4634) 2023-10-24 21:55:40 -05:00
Jason Rasmussen
0fb1d33f17 fix(web,server): web socket auth (for web) (#4632) 2023-10-24 18:07:24 -04:00
Jason Rasmussen
3021eca8e5 chore(server): remove unused method (#4627)
* chore(server): remove unused method

* chore: open api
2023-10-24 12:59:06 -04:00
Jason Rasmussen
5921ec9a58 fix(server): dot files (#4625) 2023-10-24 11:08:18 -05:00
martin
3e3598fd92 fix: suggest people (#4566)
* fix: suggest people

* feat: remove hidden people

* add hidden people when merging faces

* pr feedback

* fix: don't use reactive statement

* fixed section height

* improve merging

* fix: migration

* fix migration

* feat: add asset count

* fix: test

* rename endpoint

* add server test

* improve responsive design

* fix: remove videos from live photos in the asset count

* pr feedback

* fix: rename asset count endpoint

* fix: return firstname and lastname

* fix: reset people only on error

* fix: search

* fix: responsive design & div flickering

* fix: cleanup

* chore: open api

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-24 15:53:49 +00:00
martin
1aae29a0b8 refactor(server, web)!: store latest immich version available on the server (#3565)
* refactor: store latest immich version available on the server

* don't store admins acknowledgement

* merge main

* fix: api

* feat: custom interval

* pr feedback

* remove unused code

* update environment-variables

* pr feedback

* ci: fix server tests

* fix: dart number

* pr feedback

* remove proxy

* pr feedback

* feat: make stringToVersion more flexible

* feat(web): disable check

* feat: working version

* remove env

* fix: check if interval exists when updating the interval

* feat: show last check

* fix: tests

* fix: remove availableVersion when updated

* fix merge

* fix: web

* fix e2e tests

* merge main

* merge main

* pr feedback

* pr feedback

* fix: tests

* pr feedback

* pr feedback

* pr feedback

* pr feedback

* pr feedback

* fix: migration

* regenerate api

* fix: typo

* fix: compare versions

* pr feedback

* fix

* pr feedback

* fix: checkIntervalTime on startup

* refactor: websockets and interval logic

* chore: open api

* chore: remove unused code

* fix: use interval instead of cron

* mobile: handle WS event data as json object

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-24 11:05:42 -04:00
martin
99c6f8fb13 feat(server): allow unassigned asset-faces (#4474)
* feat: un-assign people

* regenerate api

* edit migration script

* fix: tests

* fix: typeorm

* fix: typo

* fix: type

* fix: migration

* fix: update

* fix: contraints

* fix: remove set

* feat: add assetId

* remove assetId

* remove unassignedFaces

* fix: migration

* regenerate api

* fix: tests

* remove changes to the api

* fix: migration

* fix migration

* pr feedback

* fix: revert change

* fix: tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-24 13:12:42 +00:00
DjP-iX
d4c23c8df8 docs: TrueNAS install guide (community) (#4615)
* Create truenas.md

* add truenas images

* complete truenas.md

* fix: sizebar position

* fix: missing quote

* formatting

* formatting

* ordering

* sizing

* styling

* sizing

* update link

* formatting

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-23 20:08:39 +00:00
Wingy
62a11283af feat(web): custom stylesheets (#4602)
* add initial ui and api definitions for stylesheets

* proper saving

* make custom css work

* add textarea

* rebuild api

* run prettier

* add typecast

* update typings

* move css accordion to be sorted alphabetically

* set content-type properly

* rename stylesheets to theme

* fix server test
2023-10-23 18:38:41 +00:00
shenlong
28d35bf04e fix(mobile): unique hero tag for assets from api response (#4600)
* fix(mobile): render error on switching asset while video playing

* fix(mobile): generate proper hero tags for assets from DTOs

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-23 13:28:12 -05:00
Markus
dd52ff2d33 feat(server): "{album}" in storage template (#2973)
* feat(server): add  to storage template

* feat: add album preset

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-23 18:00:31 +00:00
Sergey Kondrikov
093347c7ab fix(web): timeline scrolling up (#4612) 2023-10-23 16:35:17 +00:00
Bogdan Cerovac
755649a3c8 fix(web): trash link wrongly wrapped (#4586)
* Added missing alt text on logo in documentation

* Better to use CSS to do the uppercases

Some assistive technology can spell each letter instead of read the word, depends a lot on internals but it's better to prevent...

* Semantic fix - single paragraph instead of many + uppercase via CSS

Single sentence in single paragraph, using css instead

* React requires className instead of class...

* Unnest Trash link from Archive
2023-10-23 12:24:58 -04:00
Daniel Dietzler
6b25435b4f refactor(server): make storage core singleton (#4608) 2023-10-23 11:52:21 -04:00
Michael Manganiello
2288b022bc fix(server): Check album asset membership in bulk (#4603)
Add `AlbumRepository` method to retrieve an album's asset ids, with an
optional parameter to only filter by the provided asset ids. With this,
we can now check asset membership using a single query.

When adding or removing assets to an album, checking whether each asset
is already present in the album now requires a single query, instead of
one query per asset.

Related to #4539 performance improvements.

Before:
```
// Asset membership and permissions check (2 queries per asset)
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "albums" "AlbumEntity" LEFT JOIN "albums_assets_assets" "AlbumEntity_AlbumEntity__AlbumEntity_assets" ON "AlbumEntity_AlbumEntity__AlbumEntity_assets"."albumsId"="AlbumEntity"."id" LEFT JOIN "assets" "AlbumEntity__AlbumEntity_assets" ON "AlbumEntity__AlbumEntity_assets"."id"="AlbumEntity_AlbumEntity__AlbumEntity_assets"."assetsId" AND ("AlbumEntity__AlbumEntity_assets"."deletedAt" IS NULL) WHERE ( ("AlbumEntity"."id" = $1 AND "AlbumEntity__AlbumEntity_assets"."id" = $2) ) AND ( "AlbumEntity"."deletedAt" IS NULL )) LIMIT 1 -- PARAMETERS: ["3fdf0e58-a1c7-4efe-8288-06e4c3f38df9","b666ae6c-afa8-4d6f-a1ad-7091a0659320"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["b666ae6c-afa8-4d6f-a1ad-7091a0659320","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "albums" "AlbumEntity" LEFT JOIN "albums_assets_assets" "AlbumEntity_AlbumEntity__AlbumEntity_assets" ON "AlbumEntity_AlbumEntity__AlbumEntity_assets"."albumsId"="AlbumEntity"."id" LEFT JOIN "assets" "AlbumEntity__AlbumEntity_assets" ON "AlbumEntity__AlbumEntity_assets"."id"="AlbumEntity_AlbumEntity__AlbumEntity_assets"."assetsId" AND ("AlbumEntity__AlbumEntity_assets"."deletedAt" IS NULL) WHERE ( ("AlbumEntity"."id" = $1 AND "AlbumEntity__AlbumEntity_assets"."id" = $2) ) AND ( "AlbumEntity"."deletedAt" IS NULL )) LIMIT 1 -- PARAMETERS: ["3fdf0e58-a1c7-4efe-8288-06e4c3f38df9","c656ab1c-7775-4ff7-b56f-01308c072a76"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["c656ab1c-7775-4ff7-b56f-01308c072a76","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "albums" "AlbumEntity" LEFT JOIN "albums_assets_assets" "AlbumEntity_AlbumEntity__AlbumEntity_assets" ON "AlbumEntity_AlbumEntity__AlbumEntity_assets"."albumsId"="AlbumEntity"."id" LEFT JOIN "assets" "AlbumEntity__AlbumEntity_assets" ON "AlbumEntity__AlbumEntity_assets"."id"="AlbumEntity_AlbumEntity__AlbumEntity_assets"."assetsId" AND ("AlbumEntity__AlbumEntity_assets"."deletedAt" IS NULL) WHERE ( ("AlbumEntity"."id" = $1 AND "AlbumEntity__AlbumEntity_assets"."id" = $2) ) AND ( "AlbumEntity"."deletedAt" IS NULL )) LIMIT 1 -- PARAMETERS: ["3fdf0e58-a1c7-4efe-8288-06e4c3f38df9","cf82adb2-1fcc-4f9e-9013-8fc03cc8d3a9"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["cf82adb2-1fcc-4f9e-9013-8fc03cc8d3a9","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
```

After:
```
// Asset membership check (1 query for all assets)
immich_server            | query: SELECT "albums_assets"."assetsId" AS "assetId" FROM "albums_assets_assets" "albums_assets" WHERE "albums_assets"."albumsId" = $1 AND "albums_assets"."assetsId" IN ($2, $3, $4) -- PARAMETERS: ["ca870d76-6311-4e89-bf9a-f5b51ea2452c","b666ae6c-afa8-4d6f-a1ad-7091a0659320","c656ab1c-7775-4ff7-b56f-01308c072a76","cf82adb2-1fcc-4f9e-9013-8fc03cc8d3a9"]
// Permissions check (1 query per asset)
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["b666ae6c-afa8-4d6f-a1ad-7091a0659320","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["c656ab1c-7775-4ff7-b56f-01308c072a76","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
immich_server            | query: SELECT 1 AS "row_exists" FROM (SELECT 1 AS dummy_column) "dummy_table" WHERE EXISTS (SELECT 1 FROM "assets" "AssetEntity" WHERE ("AssetEntity"."id" = $1 AND "AssetEntity"."ownerId" = $2)) LIMIT 1 -- PARAMETERS: ["cf82adb2-1fcc-4f9e-9013-8fc03cc8d3a9","6bc60cf1-bd18-4501-a1c2-120b51276fda"]
```
2023-10-23 09:02:27 -04:00
martin
64e4ae7e4b fix(docs): dates and responsive design in milestone page (#4606)
* fix: dates and responsive design

* fix: overflow

* add tags for birthday

* use cake for birthday icon

* use uppercase for enum
2023-10-23 08:44:47 -04:00
Daniel Dietzler
c6b4bc883b refactor(server): make user core singleton (#4607) 2023-10-23 08:38:48 -04:00
Daniel Dietzler
50bc92aac0 refactor(server): make access core singleton (#4609) 2023-10-23 08:37:51 -04:00
Jason Rasmussen
36b3521be8 docs: milestones (#4593)
* docs: milestones

* fix: light mode

* feat: dates and links

* use item interface from timeline

* fix ssr build

* responseive design and styling

---------

Co-authored-by: martabal <74269598+martabal@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-22 21:34:23 -05:00
shenlong
b05132a01a refactor(mobile): server info to use data classes instead of dtos (#4591)
* refactor: server info model to use data classes instead of dtos

* mobile: add return types and refactor private variables in map / stack

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-22 15:15:34 -05:00
shenlong
9b418642a6 refactor(mobile): stack only through merging from timeline (#4598)
* mobile: remove stack selection page

* mobile: require at-least 2 assets to stack

* mobile: sort stack children by fileCreatedAt

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-22 15:07:27 -05:00
Daniel Dietzler
013da0aa3d refactor(server): streamline get config, enable the use of arrays (#4562) 2023-10-22 10:14:32 -05:00
shenlong
8dcc01b2be feat(mobile): shared-links (#4490)
* add shared links page

* feat(mobile): shared link items

* feat(mobile): create / edit shared links page

* server: add changeExpiryTime to SharedLinkEditDto

* fix(mobile): edit expiry to never

* mobile: add icon when shares list is empty

* mobile: create new share from album / timeline

* mobile: add translation texts

* mobile: minor ui fixes

* fix: handle serverURL with /api path

* mobile: show share link on successful creation

* mobile: shared links list - 2 column layout

* mobile: use sharedlink pod class instead of dto

* mobile: show error on link creation

* mobile: show share icon only when remote assets are in selection

* mobile: use server endpoint instead of server url

* styling

* styling

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-22 15:05:10 +00:00
shenlong
cf08ac7538 feat: manual stack assets (#4198) 2023-10-21 21:38:07 -05:00
Bogdan Cerovac
5ead4af2dc docs: Semantic fixes and improvements for the main documentation page (#4576)
* Added missing alt text on logo in documentation

* Better to use CSS to do the uppercases

Some assistive technology can spell each letter instead of read the word, depends a lot on internals but it's better to prevent...

* Semantic fix - single paragraph instead of many + uppercase via CSS

Single sentence in single paragraph, using css instead

* React requires className instead of class...
2023-10-21 16:08:58 -04:00
Bogdan Cerovac
f2c20f60f7 Alternative text that reflects the text in the image (#4577)
Small but important detail
2023-10-21 16:26:16 +00:00
Alex Tran
e0fc6b753c chore: remove outdated docs information 2023-10-20 16:27:58 -05:00
Alessandro (Ale) Segala
ab3f82cfe4 feat(server): add storage template variable assetId (#4555)
* Added assetId as template

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* styling

* styling

---------

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-20 16:17:17 -05:00
Alessandro (Ale) Segala
383f11019a feat(server): Two updates to dev environment (#4556)
1. In the `docker-compose.dev.yml` file, increased ulimits for the containers that use TS code. This was one of the reasons for failures in my Podman (on macOS/arm64) environment. It wasn't the only failure with Podman, and didn't investigate further (I switched to Docker on Linux/amd64 after), but it can still help others.

2. Added a `make dev-down` to perform a `docker-compose down` on the dev environment

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
2023-10-20 13:26:28 -05:00
Federico Micelli
250f7fc55c chore: README update italian link (#4551)
* Adding italian version of README and relative links

* Correction

* README update italian link
2023-10-19 19:10:32 -04:00
shenlong
22172a680b fix(mobile): validate response code from download file (#4543)
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2023-10-19 15:19:00 -05:00
Russell Tan
5156d76194 fix(web): Prevents nav loop from person->album->albums (#4522) 2023-10-19 14:36:03 -05:00
Alex
decfb9687b fix(server): add exif info to memory response (#4550) 2023-10-19 14:33:35 -05:00
Jason Rasmussen
5e17b3199f chore: add logo to docs homepage (#4549) 2023-10-19 14:31:26 -05:00
Alex
cfec6a8fdb fix(server): avoid getting timebucket in the future (#4540) 2023-10-19 13:52:37 -05:00
Federico Micelli
2ec63f7914 Adding italian version of README file and relative links (#4537)
* Adding italian version of README and relative links

* Correction
2023-10-19 13:52:16 -05:00
Jason Rasmussen
29182cfc9a fix(server): exif duration with scale (#4541) 2023-10-19 13:51:56 -05:00
Daniel Dietzler
5a7ef02387 refactor(web): Allow dropdown for more general use (#4515) 2023-10-18 21:46:06 -05:00
Jason Rasmussen
4b59f83288 refactor: e2e tests (#4536) 2023-10-18 17:02:42 -05:00
Alex The Bot
31987bc043 Version v1.82.1 2023-10-18 17:14:26 +00:00
Alex
23f0eb6fe8 fix(web): fix websocket mode (#4531) 2023-10-18 12:12:19 -05:00
Jason Rasmussen
0994575bf3 fix(server): album add/remove asset performance (#4516) 2023-10-18 10:56:00 -05:00
Jason Rasmussen
f4a12acd29 fix(web): scrollbar offset (#4518)
* fix(web): scrollbar offset

* fix offset on photo page

* proper fix

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-18 10:54:20 -05:00
Jason Rasmussen
335216f6dd feat(server): allow underscores in ML url (#4517) 2023-10-17 21:34:16 +00:00
Efren
5a9acbc05b Fix Issues hyperlink pointing to Releases (#4508) 2023-10-17 07:38:42 +00:00
Alex The Bot
219f99e516 Version v1.82.0 2023-10-17 01:24:08 +00:00
Jason Rasmussen
1890c0ab6b fix(server): time buckets (#4498) 2023-10-16 13:11:50 -05:00
shenlong
a78e08bac1 fix(mobile): handle asset trash, restore and delete ws events (#4482)
* server: add ASSET_RESTORE ws event

* mobile: handle ASSET_TRASH, ASSET_RESTORE and ASSET_DELETE ws events

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-10-16 13:01:38 -05:00
shenlong
634169235a fix(mobile): reset trashed state for local assets on remote asset deletion (#4501) 2023-10-16 12:26:35 -05:00
shenlong
45ffa65173 feat(web): show trash days info in trash page (#4484) 2023-10-16 11:04:22 -05:00
shenlong
62cb14e4b6 fix(server): include trashed assets in existing assets list (#4483) 2023-10-16 08:47:17 -05:00
cfitzw
3d7e9b7184 chore: ignore default UPLOAD_LOCATION (#4486) 2023-10-15 09:44:20 -04:00
Jason Rasmussen
d2807b8d6a feat(web,server): offline/untracked files admin tool (#4447)
* feat: admin repair orphans tool

* chore: open api

* fix: include upload folder

* fix: bugs

* feat: empty placeholder

* fix: checks

* feat: move buttons to top of page

* feat: styling and clipboard

* styling

* better clicking hitbox

* fix: show title on hover

* feat: download report

* restrict file access to immich related files

* Add description

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2023-10-14 19:12:59 +02:00
GenericGuy
ed386dd12a fix(server): always show people with name, ignore count (#4414) 2023-10-13 20:50:18 -05:00
Jonathan Jogenfors
dadcf49eca fix(server,web): correctly remove metadata from shared links (#4464)
* wip: strip metadata

* fix: authenticate time buckets

* hide detail panel

* fix tests

* fix lint

* add e2e tests

* chore: open api

* fix web compilation error

* feat: test with asset with gps position

* fix: only import fs.promises.cp

* fix: cleanup mapasset

* fix: format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-14 01:46:30 +00:00
Jason Rasmussen
4a9f58bf9b fix(web): empty placeholders (#4470) 2023-10-13 14:47:31 -04:00
Jason Rasmussen
9d225d3d06 refactor(web): admin layout (#4461) 2023-10-13 15:02:28 +00:00
Jason Rasmussen
268a9c4803 chore(web): move trash to alphabetical order (#4462) 2023-10-13 09:40:53 -05:00
Jason Rasmussen
bddeb03fd5 docs: immich title (#4463) 2023-10-13 09:15:29 -05:00
Jonathan Jogenfors
f0bb50b61a fix(server,cli): don't float promises (#4433)
* fix: don't allow floating promises

* fix: await all promises

* fix: download archives

* fix cli tests

* fix: skip web
2023-10-13 01:22:40 -04:00
Alex
7e9fc4aa97 fix(mobile): remove debug description text 2023-10-12 13:23:41 -05:00
Alexander Groß
e57c926676 feat(mobile): offer the same album sorting options on mobile as on web (#3804)
* Add translations for new album sort options

* Support additional album sort options like on web

* Update generated code

* Fix lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-10-12 13:18:54 -05:00
shenlong
f3b17d8f73 fix(server): include trashed asset during face re-index and cleanup (#4450) 2023-10-12 11:35:49 -05:00
martin
41af76bbe2 fix(web): previous previous route when hiding person (#4452) 2023-10-12 10:31:34 -05:00
Alex
9af5e7838f fix(mobile): description not render on first opening (#4451) 2023-10-12 10:30:56 -05:00
shenlong
5dacea6f74 fix(mobile): asset state change not updated in gallery app bar (#4441) 2023-10-11 21:10:59 -05:00
shenlong
18fcca2884 style(mobile): update video indicator (#4443) 2023-10-11 14:03:04 -05:00
martin
8222327299 fix: people initialization on the merge face selector (#4435) 2023-10-11 06:21:02 -04:00
Alex
eebe9bcd5f fix(docs): production build (#4431) 2023-10-10 21:49:24 -05:00
Jonathan Jogenfors
41befc0948 fix(server): don't publicly reveal user count (#4409)
* fix: don't reveal user count publicly

* fix: mobile and user controller

* fix: update other frontend endpoints

* fix: revert openapi change

* chore: open api

* fix: initialize

* openapi

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-11 02:37:13 +00:00
Daniel Dietzler
09bf1c9175 feat(server): harden move file (#4361)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-10 21:14:44 -05:00
Alex
332a8d80f2 chore: update flutter build version (#4429) 2023-10-10 20:12:01 -05:00
Jonathan Jogenfors
56eb7bf0fc fix(server): improve library scan queuing performance (#4418)
* fix: inline mark asset as offline

* fix: improve log message

* chore: lint

* fix: offline asset algorithm

* fix: use set comparison to check what to import

* fix: only mark new offline files as offline

* fix: compare the correct array

* fix: set default library concurrency to 5

* fix: remove one db call when scanning new files

* chore: remove unused import

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-10 18:59:13 -04:00
Jason Rasmussen
99e9c2ada6 fix(server): schema generation (#4424) 2023-10-10 13:16:57 -05:00
Mert
d8ecefaea5 chore(ml): removed vit-b check and st warning (#4422) 2023-10-10 12:26:30 -05:00
martin
b8d6cc1e09 feat(server,web): improve performances in person page (1) (#4387)
* feat: improve performances in people page

* feat: add loadingspinner when searching

* fix: reset people on error

* fix: case insensitive

* feat: better sql query

* fix: reset people list before api request

* fix: format
2023-10-10 09:34:25 -05:00
Nassos Kat
f36c40bc6b feat(web) add hover background to image toolbar icons (#4402)
* feat: add hover background to image toolbar icons

* not use background color when not set

---------

Co-authored-by: katsadim <athanasios.katsadimas@refurbed.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-10 14:34:17 +00:00
Jonathan Jogenfors
83b63ca12e fix: only check external path once (#4419) 2023-10-10 13:44:43 +00:00
Jonathan Jogenfors
f57acc0802 fix(server): add original path and library id index to asset (#4410)
* fix: add original path index

* fix: use libraryId for index, too

* fix: revert openapi change
2023-10-10 09:38:26 -04:00
Alex
29981b1088 chore(mobile): pump photo_manager version (#4412) 2023-10-10 08:20:52 -05:00
debricked[bot]
43f4dac3ad chore(server,web,docs) bulk bump of dependencies with vulnerabilities (#4312)
* chore: bump node version to 20.8

* chore(server,web) upgrade vulnerable dependencies

* fix: revert node change

* fix: commander version

* fix: set country to null if undefined

* fix: set docs module resolution

* fix(web): correct return type of interval

* fix(docs): set node in tsconfig

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
Co-authored-by: debricked[bot] <47180885+debricked[bot]@users.noreply.github.com>
2023-10-10 08:31:21 -04:00
Jonas Mayer
2370c9ef41 feat(web): save album sort direction (#4401) 2023-10-09 21:29:04 -05:00
Jason Rasmussen
ebb50476ac fix(server): timeline bucket access for shared links (#4404) 2023-10-09 15:57:36 +00:00
Jason Rasmussen
2ea080cacd refactor: domain repositories (#4403) 2023-10-09 14:25:03 +00:00
Jonathan Jogenfors
b56f22aac3 docs: add troubleshooting info to libraries + minor docs tweaks (#4377)
* docs: add troubleshooting info to libraries

* fix: revert docker-compose
2023-10-09 09:13:47 -05:00
Jason Rasmussen
9033e7f179 refactor(server): filesystem crawl (#4395)
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-10-09 08:25:26 -04:00
Jason Rasmussen
9070a361bc chore: organize library imports (#4396) 2023-10-08 22:52:12 -05:00
Jason Rasmussen
d8e66acd02 chore: use force instead of forceRefresh (#4394) 2023-10-08 23:16:13 -04:00
Jason Rasmussen
687d896c63 fix(server): deletable motion assets (#4393) 2023-10-08 20:36:02 -05:00
Daniel Dietzler
0243570c0b fix(server): make system config core singleton (#4392)
* make system config core singleton

* refactor

* fix tests

* chore: fix tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-09 00:51:03 +00:00
Daniel Dietzler
66ccf298ba fix library deletion actually deleting assets (#4386) 2023-10-07 16:42:08 -04:00
Jason Rasmussen
982dcd7b8d refactor(server): library asset deletion (#4366) 2023-10-07 13:44:10 -04:00
martin
c68702c0a7 fix(web): merge faces (#4383)
* fix(web): merge faces

* pr feedback
2023-10-07 11:04:08 +00:00
Mert
98a7412855 fix(web): dev mode repeatedly optimizing dependencies (#4379)
* added glob for checking imports

* prettier
2023-10-07 05:49:34 -05:00
shenlong
104880a729 feat(web): ws - on_config_update (#4378) 2023-10-07 05:21:05 -05:00
shenlong
c48d4f01dc Fix/mobile remove upload soft limit (#4380)
* fix(mobile): remove soft limit for manual upload

* chore(mobile): remove translation text
2023-10-07 05:17:50 -05:00
Jason Rasmussen
8d5bf93360 test(server): full backend end-to-end testing with microservices (#4225)
* feat: asset e2e with job option

* feat: checkout test assets

* feat: library e2e tests

* fix: use node 21 in e2e

* fix: tests

* fix: use normalized external path

* feat: more external path tests

* chore: use parametrized tests

* chore: remove unused test code

* chore: refactor test asset path

* feat: centralize test app creation

* fix: correct error message for missing assets

* feat: test file formats

* fix: don't compare checksum

* feat: build libvips

* fix: install meson

* fix: use immich test asset repo

* feat: test nikon raw files

* fix: set Z timezone

* feat: test offline library files

* feat: richer metadata tests

* feat: e2e tests in docker

* feat: e2e test with arm64 docker

* fix: manual docker compose run

* fix: remove metadata processor import

* fix: run e2e tests in test.yml

* fix: checkout e2e assets

* fix: typo

* fix: checkout files in app directory

* fix: increase e2e memory

* fix: rm submodules

* fix: revert action name

* test: mark file offline when external path changes

* feat: rename env var to TEST_ENV

* docs: new test procedures

* feat: can run docker e2e tests manually if needed

* chore: use new node 20.8 for e2e

* chore: bump exiftool-vendored

* feat: simplify test launching

* fix: rename env vars to use immich_ prefix

* feat: asset folder is submodule

* chore: cleanup after 20.8 upgrade

* fix: don't log postgres in e2e

* fix: better warning about not running all tests

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-10-06 23:32:28 +02:00
Jason Rasmussen
2f9d0a2404 feat: jpe extension (#4374) 2023-10-06 15:55:20 -05:00
Alex
36b21948bf feat(web): enable websocket (#3765)
* send store event to page

* fix format

* add new asset to existing bucket

* format

* debouncing

* format

* load bucket

* feedback

* feat: listen to deletes and auto-subscribe on all asset grid pages

* feat: auto refresh on person thumbnail

* chore: skip upload event for now

* fix: person thumbnail event

* fix merge

* update handleAssetDeletion with websocket communication

* update info box on mount

* fix test

* fix test

* feat: event for trash asset

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-06 15:48:11 -05:00
Jonathan Jogenfors
4dffae3f39 fix(server): normalize external path (#4239)
* fix: use normalized external path

* fix: move normalization to user core
2023-10-06 20:47:38 +00:00
Jason Rasmussen
35fa6397ea fix: time buckets (#4358)
* fix: time buckets

* chore: update entity metadata

* fix: set correct localDateTime

* fix: display without timezone shifting

* fix: handle non-utc databases

* fix: scrollbar

* docs: comment how buckets are sorted

* chore: remove test/log

* chore: lint

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-10-06 12:12:09 +00:00
shenlong
4a8887f37b feat(server): trash asset (#4015)
* refactor(server): delete assets endpoint

* fix: formatting

* chore: cleanup

* chore: open api

* chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs

* feat: trash an asset

* chore(server): formatting

* chore: open api

* chore: wording

* chore: open-api

* feat(server): add withDeleted to getAssets queries

* WIP: mobile-recycle-bin

* feat(server): recycle-bin to system config

* feat(web): use recycle-bin system config

* chore(server): domain assetcore removed

* chore(server): rename recycle-bin to trash

* chore(web): rename recycle-bin to trash

* chore(server): always send soft deleted assets for getAllByUserId

* chore(web): formatting

* feat(server): permanent delete assets older than trashed period

* feat(web): trash empty placeholder image

* feat(server): empty trash

* feat(web): empty trash

* WIP: mobile-recycle-bin

* refactor(server): empty / restore trash to separate endpoint

* test(server): handle failures

* test(server): fix e2e server-info test

* test(server): deletion test refactor

* feat(mobile): use map settings from server-config to enable / disable map

* feat(mobile): trash asset

* fix(server): operations on assets in trash

* feat(web): show trash statistics

* fix(web): handle trash enabled

* fix(mobile): restore updates from trash

* fix(server): ignore trashed assets for person

* fix(server): add / remove search index when trashed / restored

* chore(web): format

* fix(server): asset service test

* fix(server): include trashed assts for duplicates from uploads

* feat(mobile): no dialog for trash, always dialog for permanent delete

* refactor(mobile): use isar where instead of dart filter

* refactor(mobile): asset provide - handle deletes in single db txn

* chore(mobile): review changes

* feat(web): confirmation before empty trash

* server: review changes

* fix(server): handle library changes

* fix: filter external assets from getting trashed / deleted

* fix(server): empty-bin

* feat: broadcast config update events through ws

* change order of trash button on mobile

* styling

* fix(mobile): do not show trashed toast for local only assets

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 02:01:14 -05:00
Jason Rasmussen
fc93762230 fix: migration efficiency (#4359)
* fix: migration efficiency

* fix: workflow
2023-10-05 12:35:58 -04:00
Jason Rasmussen
ebd3f7f125 fix: dev compose (#4357) 2023-10-05 09:16:23 -05:00
Jonathan Jogenfors
81009c17bf fix(server): use fileCreatedAt in buckets (#4354) 2023-10-05 08:26:42 -05:00
Daniele Ricci
beb92e8ffb fix: open external link in new tab (#4353) 2023-10-05 12:22:14 +02:00
Oliver Wipfli
7b4e36e990 Update nginx config docs (#4346) 2023-10-04 21:06:20 -04:00
Jason Rasmussen
192e950567 fix: use local time for time buckets and improve memories (#4072)
* fix: timezone bucket timezones

* chore: open api

* fix: interpret local time in utc

* fix: tests

* fix: refactor memory lane

* fix(web): use local date in memory viewer

* chore: set localDateTime non-null

* fix: filter out memories from the current year

* wip: move localDateTime to asset

* fix: correct sorting from db

* fix: migration

* fix: web typo

* fix: formatting

* fix: e2e

* chore: localDateTime is non-null

* chore: more non-nulliness

* fix: asset stub

* fix: tests

* fix: use extract and index for day of year

* fix: don't show memories before today

* fix: cleanup

* fix: tests

* fix: only use localtime for tz

* fix: display memories in client timezone

* fix: tests

* fix: svelte tests

* fix: bugs

* chore: open api

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2023-10-04 22:11:11 +00:00
Alex The Bot
126dd45751 Version v1.81.1 2023-10-04 17:53:42 +00:00
Daniel Dietzler
ff331ffad9 fix(server): Offset of random endpoint could be higher than user's asset count (#4342)
* fix offset of all assets with correct ownerId

* (e2e): test if user does not have all assets
2023-10-04 12:51:44 -05:00
Daniel Dietzler
e571880c16 feat(web, mobile): Options to show archived assets in map (#4293)
* Add include archive setting to map on web

* open api

* better naming for web isArchived variable

* add withArchived setting to mobile

* (e2e): tests for mapMarker endpoint and isArchived

* isArchived to mobile

* chore: cleanup test

* chore: optimize e2e

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-04 09:51:07 -04:00
markeeisner
e5b4d09827 Remove /etc/timezone volume mount from compose (#4336) 2023-10-04 04:01:00 -05:00
Alex The Bot
81d51fbd7e Version v1.81.0 2023-10-03 20:48:23 +00:00
Alex
02f9b40d67 fix(server): library control doesn't apply to new library from the third row (#4331) 2023-10-03 14:05:14 -05:00
Jason Rasmussen
260a600bbc chore(server): dev compose changes (#4316) 2023-10-03 13:06:08 -05:00
Jason Rasmussen
818005fcb5 fix(server): fallback to local timezone when rendering storage template (#4317) 2023-10-03 13:05:44 -05:00
Daniel Dietzler
e5f704cf3b fix asset upload permissions for shared links (#4325) 2023-10-03 12:36:51 -04:00
Jonathan Jogenfors
e2f1e38472 chore(server,web): bump node version to 20.8 (#4311)
* chore: bump node version to 20.8

* fix: remove node hash
2023-10-03 09:34:35 -05:00
Alex
b3c82d5ba2 fix(server): incorrect video creation date EXIF extraction (#4309)
* fix(server): incorrect video creation date EXIF extraction

* update dependency

* update dependency

* revert

* remove unused code
2023-10-03 08:51:40 -05:00
Jonathan Jogenfors
6d1868a6e0 feat: server containers use host timezone (#4313) 2023-10-02 20:50:27 -05:00
Daniel Dietzler
98db9331d8 fix(server): delete face thumbnails when merging people (#4310)
* new job for person deletion, including face thumbnail deletion

* fix tests, delete files directly instead queueing jobs
2023-10-02 21:15:11 -04:00
3931 changed files with 376390 additions and 228122 deletions

2
.devcontainer/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.env
library

16
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
FROM ${BASEIMAGE}
# Flutter SDK
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
ENV FLUTTER_CHANNEL="stable"
ENV FLUTTER_VERSION="3.24.5"
ENV FLUTTER_HOME=/flutter
ENV PATH=${PATH}:${FLUTTER_HOME}/bin
# Flutter SDK
RUN mkdir -p ${FLUTTER_HOME} \
&& curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
&& tar -xf flutter.tar.xz --strip-components=1 -C ${FLUTTER_HOME} \
&& rm flutter.tar.xz \
&& chown -R 1000:1000 ${FLUTTER_HOME}

View File

@@ -0,0 +1,26 @@
{
"name": "Immich",
"service": "immich-devcontainer",
"dockerComposeFile": [
"docker-compose.yml",
"../docker/docker-compose.dev.yml"
],
"customizations": {
"vscode": {
"extensions": [
"Dart-Code.dart-code",
"Dart-Code.flutter",
"dbaeumer.vscode-eslint",
"dcmdev.dcm-vscode-extension",
"esbenp.prettier-vscode",
"svelte.svelte-vscode"
]
}
},
"forwardPorts": [],
"initializeCommand": "bash .devcontainer/scripts/initializeCommand.sh",
"onCreateCommand": "bash .devcontainer/scripts/onCreateCommand.sh",
"overrideCommand": true,
"workspaceFolder": "/immich",
"remoteUser": "node"
}

View File

@@ -0,0 +1,8 @@
services:
immich-devcontainer:
build:
dockerfile: Dockerfile
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- ..:/immich:cached

View File

@@ -0,0 +1,6 @@
#!/bin/bash
# If .env file does not exist, create it by copying example.env from the docker folder
if [ ! -f ".devcontainer/.env" ]; then
cp docker/example.env .devcontainer/.env
fi

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# Enable multiarch for arm64 if necessary
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
sudo dpkg --add-architecture amd64 && \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
qemu-user-static \
libc6:amd64 \
libstdc++6:amd64 \
libgcc1:amd64
fi
# Install DCM
wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
sudo echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
sudo apt-get update
sudo apt-get install dcm
dart --disable-analytics
# Install immich
cd /immich || exit
make install-all

33
.dockerignore Normal file
View File

@@ -0,0 +1,33 @@
.vscode/
.github/
.git/
design/
docker/
!docker/scripts
docs/
e2e/
fastlane/
machine-learning/
misc/
mobile/
cli/coverage/
cli/dist/
cli/node_modules/
open-api/typescript-sdk/build/
open-api/typescript-sdk/node_modules/
server/coverage/
server/node_modules/
server/upload/
server/src/queries
server/dist/
server/www/
web/node_modules/
web/coverage/
web/.svelte-kit
web/build/
web/.env

View File

@@ -16,4 +16,4 @@ max_line_length = off
trim_trailing_whitespace = false
[*.{yml,yaml}]
quote_type = double
quote_type = single

15
.gitattributes vendored
View File

@@ -2,16 +2,11 @@ mobile/openapi/**/*.md -diff -merge
mobile/openapi/**/*.md linguist-generated=true
mobile/openapi/**/*.dart -diff -merge
mobile/openapi/**/*.dart linguist-generated=true
mobile/openapi/.openapi-generator/FILES -diff -merge
mobile/openapi/.openapi-generator/FILES linguist-generated=true
mobile/lib/**/*.g.dart -diff -merge
mobile/lib/**/*.g.dart linguist-generated=true
cli/src/api/open-api/**/*.md -diff -merge
cli/src/api/open-api/**/*.md linguist-generated=true
cli/src/api/open-api/**/*.ts -diff -merge
cli/src/api/open-api/**/*.ts linguist-generated=true
open-api/typescript-sdk/fetch-client.ts -diff -merge
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
web/src/api/open-api/**/*.md -diff -merge
web/src/api/open-api/**/*.md linguist-generated=true
web/src/api/open-api/**/*.ts -diff -merge
web/src/api/open-api/**/*.ts linguist-generated=true
*.sh text eol=lf

View File

@@ -1,11 +1,21 @@
title: "[Feature] <feature-name-goes-here>"
title: "[Feature] feature-name-goes-here"
labels: ["feature"]
body:
- type: markdown
attributes:
value: |
Please use this form to request new feature for Immich
Please use this form to request new feature for Immich.
Stick to only a single feature per request. If you list multiple different features at once,
your request will be closed.
- type: checkboxes
attributes:
label: I have searched the existing feature requests to make sure this is not a duplicate request.
options:
- label: "Yes"
required: true
- type: textarea
id: feature
attributes:

6
.github/FUNDING.yml vendored
View File

@@ -1,5 +1 @@
# These are supported funding model platforms
github: alextran1502
liberapay: alex.tran1502
custom: https://www.buymeacoffee.com/altran1502
custom: ['https://buy.immich.app']

View File

@@ -1,7 +1,5 @@
name: Report an issue with Immich
description: Report an issue with Immich
labels: ["bug", "need triage"]
title: "[BUG] <title>"
body:
- type: markdown
attributes:
@@ -85,10 +83,19 @@ body:
2.
3.
...
render: bash
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant logs below. (code formatting is
enabled, no need for backticks)
render: shell
validations:
required: false
- type: textarea
attributes:
label: Additional information

View File

@@ -1,11 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: I have a question or need support
url: https://discord.gg/D8JsnBEuKb
- name: I have a question or need support
url: https://discord.immich.app
about: We use GitHub for tracking bugs, please check out our Discord channel for freaky fast support.
- name: Feature Request
- name: 📷 My photo or video has a date, time, or timezone problem
url: https://github.com/immich-app/immich/discussions/12650
about: Upload a sample file to this discussion and we will take a look
- name: 🌟 Feature request
url: https://github.com/immich-app/immich/discussions/new?category=feature-request
about: Please use our GitHub Discussion for making feature requests.
- name: I'm unsure where to go
url: https://discord.gg/D8JsnBEuKb
- name: 🫣 I'm unsure where to go
url: https://discord.immich.app
about: If you are unsure where to go, then joining our Discord is recommended; Just ask!

View File

@@ -1,7 +0,0 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

38
.github/labeler.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
cli:
- changed-files:
- any-glob-to-any-file:
- cli/src/**
documentation:
- changed-files:
- any-glob-to-any-file:
- docs/blob/**
- docs/docs/**
- docs/src/**
- docs/static/**
🖥web:
- changed-files:
- any-glob-to-any-file:
- web/src/**
- web/static/**
📱mobile:
- changed-files:
- any-glob-to-any-file:
- mobile/lib/**
- mobile/test/**
🗄server:
- changed-files:
- any-glob-to-any-file:
- server/src/**
- server/test/**
🧠machine-learning:
- changed-files:
- any-glob-to-any-file:
- machine-learning/app/**
changelog:translation:
- head-branch: ['^chore/translations$']

33
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
changelog:
categories:
- title: 🚨 Breaking Changes
labels:
- changelog:breaking-change
- title: 🫥 Deprecated Changes
labels:
- changelog:deprecated
- title: 🔒 Security
labels:
- changelog:security
- title: 🚀 Features
labels:
- changelog:feature
- title: 🌟 Enhancements
labels:
- changelog:enhancement
- title: 🐛 Bug fixes
labels:
- changelog:bugfix
- title: 📚 Documentation
labels:
- changelog:documentation
- title: 🌐 Translations
labels:
- changelog:translation

View File

@@ -16,11 +16,29 @@ concurrency:
cancel-in-progress: true
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: found_paths
uses: dorny/paths-filter@v3
with:
filters: |
mobile:
- 'mobile/**'
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
build-sign-android:
name: Build and sign Android
needs: pre-job
# Skip when PR from a fork
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
runs-on: macos-12
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && needs.pre-job.outputs.should_run == 'true' }}
runs-on: macos-14
steps:
- name: Determine ref
@@ -35,17 +53,17 @@ jobs:
with:
ref: ${{ steps.get-ref.outputs.ref }}
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "12.x"
cache: "gradle"
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: "3.13.3"
channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml
cache: true
- name: Create the Keystore
@@ -69,7 +87,7 @@ jobs:
flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64,android-x64
- name: Publish Android Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: release-apk-signed
path: mobile/build/app/outputs/flutter-apk/*.apk

View File

@@ -1,4 +1,4 @@
name: Clean up actions cache on PR close
name: Cache Cleanup
on:
pull_request:
types:
@@ -10,6 +10,7 @@ concurrency:
jobs:
cleanup:
name: Cleanup
runs-on: ubuntu-latest
steps:
- name: Check out code

99
.github/workflows/cli.yml vendored Normal file
View File

@@ -0,0 +1,99 @@
name: CLI Build
on:
push:
branches: [main]
paths:
- 'cli/**'
- '.github/workflows/cli.yml'
pull_request:
branches: [main]
paths:
- 'cli/**'
- '.github/workflows/cli.yml'
release:
types: [published]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
packages: write
jobs:
publish:
name: CLI Publish
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cli
steps:
- uses: actions/checkout@v4
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v4
with:
node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org'
- name: Prepare SDK
run: npm ci --prefix ../open-api/typescript-sdk/
- name: Build SDK
run: npm run build --prefix ../open-api/typescript-sdk/
- run: npm ci
- run: npm run build
- run: npm publish
if: ${{ github.event_name == 'release' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
docker:
name: Docker
runs-on: ubuntu-latest
needs: publish
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get package version
id: package-version
run: |
version=$(jq -r '.version' cli/package.json)
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Generate docker image tags
id: metadata
uses: docker/metadata-action@v5
with:
flavor: |
latest=false
images: |
name=ghcr.io/${{ github.repository_owner }}/immich-cli
tags: |
type=raw,value=${{ steps.package-version.outputs.version }},enable=${{ github.event_name == 'release' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
- name: Build and push image
uses: docker/build-push-action@v6.12.0
with:
file: cli/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name == 'release' }}
cache-from: type=gha
cache-to: type=gha,mode=max
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}

View File

@@ -46,7 +46,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -60,7 +60,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -73,6 +73,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

View File

@@ -1,26 +0,0 @@
name: Update Immich SDK
on:
workflow_dispatch:
push:
branches: ["main"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
update-sdk-repos:
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.head.repo.fork }}
steps:
- uses: actions/github-script@v6
with:
github-token: ${{ secrets.GH_TOKEN }}
script: |
await github.rest.actions.createWorkflowDispatch({
owner: 'immich-app',
repo: 'immich-sdk-typescript-axios',
workflow_id: 'build.yml',
ref: 'main'
})

View File

@@ -5,7 +5,7 @@
#
# This workflow will not trigger runs on forked repos.
name: Cleanup Old Docker Images
name: Docker Cleanup
on:
pull_request:
@@ -22,23 +22,20 @@ concurrency:
jobs:
cleanup-images:
name: Cleanup Stale Images Tags for ${{ matrix.primary-name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- primary-name: "immich-server"
- primary-name: "immich-machine-learning"
- primary-name: "immich-web"
- primary-name: "immich-proxy"
env:
# Requires a personal access token with the OAuth scope delete:packages
TOKEN: ${{ secrets.PACKAGE_DELETE_TOKEN }}
steps:
-
name: Clean temporary images
- name: Clean temporary images
if: "${{ env.TOKEN != '' }}"
uses: stumpylog/image-cleaner-action/ephemeral@v0.3.0
uses: stumpylog/image-cleaner-action/ephemeral@v0.9.0
with:
token: "${{ env.TOKEN }}"
owner: "immich-app"
@@ -51,7 +48,7 @@ jobs:
cleanup-untagged-images:
name: Cleanup Untagged Images Tags for ${{ matrix.primary-name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs:
- cleanup-images
strategy:
@@ -60,17 +57,14 @@ jobs:
include:
- primary-name: "immich-server"
- primary-name: "immich-machine-learning"
- primary-name: "immich-web"
- primary-name: "immich-proxy"
- primary-name: "immich-build-cache"
env:
# Requires a personal access token with the OAuth scope delete:packages
TOKEN: ${{ secrets.PACKAGE_DELETE_TOKEN }}
steps:
-
name: Clean untagged images
- name: Clean untagged images
if: "${{ env.TOKEN != '' }}"
uses: stumpylog/image-cleaner-action/untagged@v0.3.0
uses: stumpylog/image-cleaner-action/untagged@v0.9.0
with:
token: "${{ env.TOKEN }}"
owner: "immich-app"

View File

@@ -1,4 +1,4 @@
name: Build and Push Docker Images
name: Docker
on:
workflow_dispatch:
@@ -17,122 +17,115 @@ permissions:
packages: write
jobs:
build_and_push:
pre-job:
runs-on: ubuntu-latest
outputs:
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: found_paths
uses: dorny/paths-filter@v3
with:
filters: |
server:
- 'server/**'
- 'openapi/**'
- 'web/**'
- 'i18n/**'
machine-learning:
- 'machine-learning/**'
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ github.event_name == 'workflow_dispatch' || github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
retag_ml:
name: Re-Tag ML
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_ml == 'false' && !github.event.pull_request.head.repo.fork }}
runs-on: ubuntu-latest
strategy:
# Prevent a failure in one image from stopping the other builds
fail-fast: false
matrix:
include:
- context: "web"
image: "immich-web"
platforms: "linux/amd64,linux/arm64"
- context: "machine-learning"
image: "immich-machine-learning"
platforms: "linux/amd64,linux/arm64"
- context: "nginx"
image: "immich-proxy"
platforms: "linux/amd64,linux/arm64"
suffix: ["", "-cuda", "-openvino", "-armnn"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
# Workaround to fix error:
# failed to push: failed to copy: io: read/write on closed pipe
# See https://github.com/docker/build-push-action/issues/761
with:
driver-opts: |
image=moby/buildkit:v0.10.6
- name: Login to Docker Hub
# Only push to Docker Hub when making a release
if: ${{ github.event_name == 'release' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image
run: |
REGISTRY_NAME="ghcr.io"
REPOSITORY=${{ github.repository_owner }}/immich-machine-learning
TAG_OLD=main${{ matrix.suffix }}
TAG_NEW=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_NEW $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
retag_server:
name: Re-Tag Server
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'false' && !github.event.pull_request.head.repo.fork }}
runs-on: ubuntu-latest
strategy:
matrix:
suffix: [""]
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
# Skip when PR from a fork
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate docker image tags
id: metadata
uses: docker/metadata-action@v5
with:
flavor: |
# Disable latest tag
latest=false
images: |
name=ghcr.io/${{ github.repository_owner }}/${{matrix.image}}
name=altran1502/${{matrix.image}},enable=${{ github.event_name == 'release' }}
tags: |
# Tag with branch name
type=ref,event=branch
# Tag with pr-number
type=ref,event=pr
# Tag with git tag on release
type=ref,event=tag
type=raw,value=release,enable=${{ github.event_name == 'release' }}
- name: Determine build cache output
id: cache-target
- name: Re-tag image
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
# Essentially just ignore the cache output (PR can't write to registry cache)
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
else
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ matrix.image }}" >> $GITHUB_OUTPUT
fi
REGISTRY_NAME="ghcr.io"
REPOSITORY=${{ github.repository_owner }}/immich-server
TAG_OLD=main${{ matrix.suffix }}
TAG_NEW=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_NEW $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
- name: Build and push image
uses: docker/build-push-action@v5.0.0
with:
context: ${{ matrix.context }}
platforms: ${{ matrix.platforms }}
# Skip pushing when PR from a fork
push: ${{ !github.event.pull_request.head.repo.fork }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{matrix.image}}
cache-to: ${{ steps.cache-target.outputs.cache-to }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
build_and_push_server_arm_64:
runs-on: self-hosted
build_and_push_ml:
name: Build and Push ML
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
runs-on: ubuntu-latest
env:
image: immich-machine-learning
context: machine-learning
file: machine-learning/Dockerfile
strategy:
# Prevent a failure in one image from stopping the other builds
fail-fast: false
matrix:
include:
- context: "server"
image: "immich-server"
platforms: "linux/arm64,linux/amd64"
- platforms: linux/amd64,linux/arm64
device: cpu
- platforms: linux/amd64
device: cuda
suffix: -cuda
- platforms: linux/amd64
device: openvino
suffix: -openvino
- platforms: linux/arm64
device: armnn
suffix: -armnn
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
# Workaround to fix error:
# failed to push: failed to copy: io: read/write on closed pipe
# See https://github.com/docker/build-push-action/issues/761
with:
driver-opts: |
image=moby/buildkit:v0.10.6
uses: docker/setup-buildx-action@v3.8.0
- name: Login to Docker Hub
# Only push to Docker Hub when making a release
@@ -159,16 +152,16 @@ jobs:
# Disable latest tag
latest=false
images: |
name=ghcr.io/${{ github.repository_owner }}/${{matrix.image}}
name=altran1502/${{matrix.image}},enable=${{ github.event_name == 'release' }}
name=ghcr.io/${{ github.repository_owner }}/${{env.image}}
name=altran1502/${{env.image}},enable=${{ github.event_name == 'release' }}
tags: |
# Tag with branch name
type=ref,event=branch
type=ref,event=branch,suffix=${{ matrix.suffix }}
# Tag with pr-number
type=ref,event=pr
type=ref,event=pr,suffix=${{ matrix.suffix }}
# Tag with git tag on release
type=ref,event=tag
type=raw,value=release,enable=${{ github.event_name == 'release' }}
type=ref,event=tag,suffix=${{ matrix.suffix }}
type=raw,value=release,enable=${{ github.event_name == 'release' }},suffix=${{ matrix.suffix }}
- name: Determine build cache output
id: cache-target
@@ -177,17 +170,141 @@ jobs:
# Essentially just ignore the cache output (PR can't write to registry cache)
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
else
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ matrix.image }}" >> $GITHUB_OUTPUT
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
fi
- name: Build and push image
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@v6.12.0
with:
context: ${{ matrix.context }}
context: ${{ env.context }}
file: ${{ env.file }}
platforms: ${{ matrix.platforms }}
# Skip pushing when PR from a fork
push: ${{ !github.event.pull_request.head.repo.fork }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{matrix.image}}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{env.image}}
cache-to: ${{ steps.cache-target.outputs.cache-to }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
build-args: |
DEVICE=${{ matrix.device }}
BUILD_ID=${{ github.run_id }}
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.metadata.outputs.tags }}
BUILD_SOURCE_REF=${{ github.ref_name }}
BUILD_SOURCE_COMMIT=${{ github.sha }}
build_and_push_server:
name: Build and Push Server
runs-on: ubuntu-latest
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
env:
image: immich-server
context: .
file: server/Dockerfile
strategy:
fail-fast: false
matrix:
include:
- platforms: linux/amd64,linux/arm64
device: cpu
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
- name: Login to Docker Hub
# Only push to Docker Hub when making a release
if: ${{ github.event_name == 'release' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
# Skip when PR from a fork
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate docker image tags
id: metadata
uses: docker/metadata-action@v5
with:
flavor: |
# Disable latest tag
latest=false
images: |
name=ghcr.io/${{ github.repository_owner }}/${{env.image}}
name=altran1502/${{env.image}},enable=${{ github.event_name == 'release' }}
tags: |
# Tag with branch name
type=ref,event=branch,suffix=${{ matrix.suffix }}
# Tag with pr-number
type=ref,event=pr,suffix=${{ matrix.suffix }}
# Tag with git tag on release
type=ref,event=tag,suffix=${{ matrix.suffix }}
type=raw,value=release,enable=${{ github.event_name == 'release' }},suffix=${{ matrix.suffix }}
- name: Determine build cache output
id: cache-target
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
# Essentially just ignore the cache output (PR can't write to registry cache)
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
else
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
fi
- name: Build and push image
uses: docker/build-push-action@v6.12.0
with:
context: ${{ env.context }}
file: ${{ env.file }}
platforms: ${{ matrix.platforms }}
# Skip pushing when PR from a fork
push: ${{ !github.event.pull_request.head.repo.fork }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{env.image}}
cache-to: ${{ steps.cache-target.outputs.cache-to }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
build-args: |
DEVICE=${{ matrix.device }}
BUILD_ID=${{ github.run_id }}
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.metadata.outputs.tags }}
BUILD_SOURCE_REF=${{ github.ref_name }}
BUILD_SOURCE_COMMIT=${{ github.sha }}
success-check-server:
name: Docker Build & Push Server Success
needs: [build_and_push_server, retag_server]
runs-on: ubuntu-latest
if: always()
steps:
- name: Any jobs failed?
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
- name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
success-check-ml:
name: Docker Build & Push ML Success
needs: [build_and_push_ml, retag_ml]
runs-on: ubuntu-latest
if: always()
steps:
- name: Any jobs failed?
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
- name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"

64
.github/workflows/docs-build.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: Docs build
on:
push:
branches: [main]
pull_request:
branches: [main]
release:
types: [published]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: found_paths
uses: dorny/paths-filter@v3
with:
filters: |
docs:
- 'docs/**'
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ github.event_name == 'release' || github.ref_name == 'main' }}" >> "$GITHUB_OUTPUT"
build:
name: Docs Build
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./docs
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './docs/.nvmrc'
- name: Run npm install
run: npm ci
- name: Check formatting
run: npm run format
- name: Run build
run: npm run build
- name: Upload build output
uses: actions/upload-artifact@v4
with:
name: docs-build-output
path: docs/build/
retention-days: 1

202
.github/workflows/docs-deploy.yml vendored Normal file
View File

@@ -0,0 +1,202 @@
name: Docs deploy
on:
workflow_run:
workflows: ["Docs build"]
types:
- completed
jobs:
checks:
name: Docs Deploy Checks
runs-on: ubuntu-latest
outputs:
parameters: ${{ steps.parameters.outputs.result }}
artifact: ${{ steps.get-artifact.outputs.result }}
steps:
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
run: echo 'The triggering workflow did not succeed' && exit 1
- name: Get artifact
id: get-artifact
uses: actions/github-script@v7
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "docs-build-output"
})[0];
if (!matchArtifact) {
console.log("No artifact found with the name docs-build-output, build job was skipped")
return { found: false };
}
return { found: true, id: matchArtifact.id };
- name: Determine deploy parameters
id: parameters
uses: actions/github-script@v7
with:
script: |
const eventType = context.payload.workflow_run.event;
const isFork = context.payload.workflow_run.repository.fork;
let parameters;
console.log({eventType, isFork});
if (eventType == "push") {
const branch = context.payload.workflow_run.head_branch;
console.log({branch});
const shouldDeploy = !isFork && branch == "main";
parameters = {
event: "branch",
name: "main",
shouldDeploy
};
} else if (eventType == "pull_request") {
let pull_number = context.payload.workflow_run.pull_requests[0]?.number;
if(!pull_number) {
const response = await github.rest.search.issuesAndPullRequests({q: 'repo:${{ github.repository }} is:pr sha:${{ github.event.workflow_run.head_sha }}',per_page: 1,})
const items = response.data.items
if (items.length < 1) {
throw new Error("No pull request found for the commit")
}
const pullRequestNumber = items[0].number
console.info("Pull request number is", pullRequestNumber)
pull_number = pullRequestNumber
}
const {data: pr} = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number
});
console.log({pull_number});
parameters = {
event: "pr",
name: `pr-${pull_number}`,
pr_number: pull_number,
shouldDeploy: true
};
} else if (eventType == "release") {
parameters = {
event: "release",
name: context.payload.workflow_run.head_branch,
shouldDeploy: !isFork
};
}
console.log(parameters);
return parameters;
deploy:
name: Docs Deploy
runs-on: ubuntu-latest
needs: checks
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Load parameters
id: parameters
uses: actions/github-script@v7
with:
script: |
const json = `${{ needs.checks.outputs.parameters }}`;
const parameters = JSON.parse(json);
core.setOutput("event", parameters.event);
core.setOutput("name", parameters.name);
core.setOutput("shouldDeploy", parameters.shouldDeploy);
- run: |
echo "Starting docs deployment for ${{ steps.parameters.outputs.event }} ${{ steps.parameters.outputs.name }}"
- name: Download artifact
uses: actions/github-script@v7
with:
script: |
let artifact = ${{ needs.checks.outputs.artifact }};
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: artifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/docs-build-output.zip`, Buffer.from(download.data));
- name: Unzip artifact
run: unzip "${{ github.workspace }}/docs-build-output.zip" -d "${{ github.workspace }}/docs/build"
- name: Deploy Docs Subdomain
env:
TF_VAR_prefix_name: ${{ steps.parameters.outputs.name}}
TF_VAR_prefix_event_type: ${{ steps.parameters.outputs.event }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@v2
with:
tg_version: "0.58.12"
tofu_version: "1.7.1"
tg_dir: "deployment/modules/cloudflare/docs"
tg_command: "apply"
- name: Deploy Docs Subdomain Output
id: docs-output
env:
TF_VAR_prefix_name: ${{ steps.parameters.outputs.name}}
TF_VAR_prefix_event_type: ${{ steps.parameters.outputs.event }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@v2
with:
tg_version: "0.58.12"
tofu_version: "1.7.1"
tg_dir: "deployment/modules/cloudflare/docs"
tg_command: "output -json"
- name: Output Cleaning
id: clean
run: |
TG_OUT=$(echo '${{ steps.docs-output.outputs.tg_action_output }}' | sed 's|%0A|\n|g ; s|%3C|<|g' | jq -c .)
echo "output=$TG_OUT" >> $GITHUB_OUTPUT
- name: Publish to Cloudflare Pages
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ fromJson(steps.clean.outputs.output).pages_project_name.value }}
workingDirectory: "docs"
directory: "build"
branch: ${{ steps.parameters.outputs.name }}
wranglerVersion: '3'
- name: Deploy Docs Release Domain
if: ${{ steps.parameters.outputs.event == 'release' }}
env:
TF_VAR_prefix_name: ${{ steps.parameters.outputs.name}}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@v2
with:
tg_version: '0.58.12'
tofu_version: '1.7.1'
tg_dir: 'deployment/modules/cloudflare/docs-release'
tg_command: 'apply'
- name: Comment
uses: actions-cool/maintain-one-comment@v3
if: ${{ steps.parameters.outputs.event == 'pr' }}
with:
number: ${{ fromJson(needs.checks.outputs.parameters).pr_number }}
body: |
📖 Documentation deployed to [${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }}](https://${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }})
emojis: 'rocket'
body-include: '<!-- Docs PR URL -->'

33
.github/workflows/docs-destroy.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Docs destroy
on:
pull_request_target:
types: [closed]
jobs:
deploy:
name: Docs Destroy
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Destroy Docs Subdomain
env:
TF_VAR_prefix_name: "pr-${{ github.event.number }}"
TF_VAR_prefix_event_type: "pr"
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@v2
with:
tg_version: "0.58.12"
tofu_version: "1.7.1"
tg_dir: "deployment/modules/cloudflare/docs"
tg_command: "destroy -refresh=false"
- name: Comment
uses: actions-cool/maintain-one-comment@v3
with:
number: ${{ github.event.number }}
delete: true
body-include: '<!-- Docs PR URL -->'

52
.github/workflows/fix-format.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
name: Fix formatting
on:
pull_request:
types: [labeled]
jobs:
fix-formatting:
runs-on: ubuntu-latest
if: ${{ github.event.label.name == 'fix:formatting' }}
permissions:
pull-requests: write
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: 'Checkout'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.generate-token.outputs.token }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './server/.nvmrc'
- name: Fix formatting
run: make install-all && make format-all
- name: Commit and push
uses: EndBug/add-and-commit@v9
with:
default_author: github_actions
message: 'chore: fix formatting'
- name: Remove label
uses: actions/github-script@v7
if: always()
with:
script: |
github.rest.issues.removeLabel({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'fix:formatting'
})

View File

@@ -0,0 +1,22 @@
name: PR Label Validation
on:
pull_request_target:
types: [opened, labeled, unlabeled, synchronize]
jobs:
validate-release-label:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- name: Require PR to have a changelog label
uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 1
use_regex: true
labels: "changelog:.*"
add_comment: true
message: "Label error. Requires {{errorString}} {{count}} of: {{ provided }}. Found: {{ applied }}. A maintainer will add the required label."

12
.github/workflows/pr-labeler.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5

View File

@@ -0,0 +1,15 @@
name: PR Conventional Commit Validation
on:
pull_request:
types: [opened, synchronize, reopened, edited]
jobs:
validate-pr-title:
runs-on: ubuntu-latest
steps:
- name: PR Conventional Commit Validation
uses: ytanikin/PRConventionalCommits@1.3.0
with:
task_types: '["feat","fix","docs","test","ci","refactor","perf","chore","revert"]'
add_label: 'false'

View File

@@ -4,16 +4,16 @@ on:
workflow_dispatch:
inputs:
serverBump:
description: "Bump server version"
description: 'Bump server version'
required: true
default: "false"
default: 'false'
type: choice
options:
- "false"
- 'false'
- minor
- patch
mobileBump:
description: "Bump mobile build number"
description: 'Bump mobile build number'
required: false
type: boolean
@@ -29,10 +29,17 @@ jobs:
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.ORG_RELEASE_TOKEN }}
token: ${{ steps.generate-token.outputs.token }}
- name: Install Poetry
run: pipx install poetry
@@ -44,10 +51,8 @@ jobs:
id: push-tag
uses: EndBug/add-and-commit@v9
with:
author_name: Alex The Bot
author_email: alex.tran1502@gmail.com
default_author: user_info
message: "Version ${{ env.IMMICH_VERSION }}"
default_author: github_actions
message: 'chore: version ${{ env.IMMICH_VERSION }}'
tag: ${{ env.IMMICH_VERSION }}
push: true
@@ -63,18 +68,25 @@ jobs:
needs: build_mobile
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.ORG_RELEASE_TOKEN }}
token: ${{ steps.generate-token.outputs.token }}
- name: Download APK
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: release-apk-signed
- name: Create draft release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
draft: true
tag_name: ${{ env.IMMICH_VERSION }}
@@ -83,5 +95,7 @@ jobs:
files: |
docker/docker-compose.yml
docker/example.env
docker/hwaccel.yml
docker/hwaccel.ml.yml
docker/hwaccel.transcoding.yml
docker/prometheus.yml
*.apk

31
.github/workflows/sdk.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Update Immich SDK
on:
release:
types: [published]
permissions:
packages: write
jobs:
publish:
name: Publish `@immich/sdk`
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./open-api/typescript-sdk
steps:
- uses: actions/checkout@v4
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v4
with:
node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'
- name: Install deps
run: npm ci
- name: Build
run: npm run build
- name: Publish
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -10,8 +10,27 @@ concurrency:
cancel-in-progress: true
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: found_paths
uses: dorny/paths-filter@v3
with:
filters: |
mobile:
- 'mobile/**'
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
mobile-dart-analyze:
name: Run Dart Code Analysis
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run == 'true' }}
runs-on: ubuntu-latest
@@ -22,8 +41,8 @@ jobs:
- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: "3.13.3"
channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml
- name: Install dependencies
run: dart pub get
@@ -32,3 +51,16 @@ jobs:
- name: Run dart analyze
run: dart analyze --fatal-infos
working-directory: ./mobile
- name: Run dart format
run: dart format lib/ --set-exit-if-changed
working-directory: ./mobile
- name: Run dart custom_lint
run: dart run custom_lint
working-directory: ./mobile
# Enable after riverpod generator migration is completed
# - name: Run dart custom lint
# run: dart run custom_lint
# working-directory: ./mobile

View File

@@ -10,48 +10,48 @@ concurrency:
cancel-in-progress: true
jobs:
e2e-tests:
name: Run end-to-end test suites
pre-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./server
outputs:
should_run_web: ${{ steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_cli: ${{ steps.found_paths.outputs.cli == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_e2e: ${{ steps.found_paths.outputs.e2e == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_mobile: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_e2e_web: ${{ steps.found_paths.outputs.e2e == 'true' || steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_e2e_server_cli: ${{ steps.found_paths.outputs.e2e == 'true' || steps.found_paths.outputs.server == 'true' || steps.found_paths.outputs.cli == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: found_paths
uses: dorny/paths-filter@v3
with:
filters: |
web:
- 'web/**'
- 'i18n/**'
- 'open-api/typescript-sdk/**'
server:
- 'server/**'
cli:
- 'cli/**'
- 'open-api/typescript-sdk/**'
e2e:
- 'e2e/**'
mobile:
- 'mobile/**'
machine-learning:
- 'machine-learning/**'
- name: Run npm install
run: npm ci
- name: Run e2e tests
run: npm run test:e2e
if: ${{ !cancelled() }}
doc-tests:
name: Run documentation checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./docs
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run npm install
run: npm ci
- name: Run formatter
run: npm run format
if: ${{ !cancelled() }}
- name: Run tsc
run: npm run check
if: ${{ !cancelled() }}
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
server-unit-tests:
name: Run server unit test suites and checks
name: Test & Lint Server
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
@@ -61,6 +61,11 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './server/.nvmrc'
- name: Run npm install
run: npm ci
@@ -76,12 +81,14 @@ jobs:
run: npm run check
if: ${{ !cancelled() }}
- name: Run unit tests & coverage
- name: Run small tests & coverage
run: npm run test:cov
if: ${{ !cancelled() }}
cli-unit-tests:
name: Run cli test suites
name: Unit Test CLI
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
@@ -91,7 +98,16 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Run npm install
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './cli/.nvmrc'
- name: Setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
- name: Install deps
run: npm ci
- name: Run linter
@@ -102,12 +118,52 @@ jobs:
run: npm run format
if: ${{ !cancelled() }}
- name: Run tsc
run: npm run check
if: ${{ !cancelled() }}
- name: Run unit tests & coverage
run: npm run test:cov
if: ${{ !cancelled() }}
cli-unit-tests-win:
name: Unit Test CLI (Windows)
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
runs-on: windows-latest
defaults:
run:
working-directory: ./cli
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './cli/.nvmrc'
- name: Setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
- name: Install deps
run: npm ci
# Skip linter & formatter in Windows test.
- name: Run tsc
run: npm run check
if: ${{ !cancelled() }}
- name: Run unit tests & coverage
run: npm run test:cov
if: ${{ !cancelled() }}
web-unit-tests:
name: Run web unit test suites and checks
name: Test & Lint Web
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_web == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
@@ -117,6 +173,15 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './web/.nvmrc'
- name: Run setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
- name: Run npm install
run: npm ci
@@ -136,26 +201,172 @@ jobs:
run: npm run check:typescript
if: ${{ !cancelled() }}
# - name: Run unit tests & coverage
# run: npm run test:cov
# if: ${{ !cancelled() }}
- name: Run unit tests & coverage
run: npm run test:cov
if: ${{ !cancelled() }}
e2e-tests-lint:
name: End-to-End Lint
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./e2e
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './e2e/.nvmrc'
- name: Run setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }}
- name: Install dependencies
run: npm ci
if: ${{ !cancelled() }}
- name: Run linter
run: npm run lint
if: ${{ !cancelled() }}
- name: Run formatter
run: npm run format
if: ${{ !cancelled() }}
- name: Run tsc
run: npm run check
if: ${{ !cancelled() }}
medium-tests-server:
name: Medium Tests (Server)
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
runs-on: mich
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Production build
if: ${{ !cancelled() }}
run: docker compose -f e2e/docker-compose.yml build
- name: Run medium tests
if: ${{ !cancelled() }}
run: make test-medium
e2e-tests-server-cli:
name: End-to-End Tests (Server & CLI)
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e_server_cli == 'true' }}
runs-on: mich
defaults:
run:
working-directory: ./e2e
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './e2e/.nvmrc'
- name: Run setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }}
- name: Run setup cli
run: npm ci && npm run build
working-directory: ./cli
if: ${{ !cancelled() }}
- name: Install dependencies
run: npm ci
if: ${{ !cancelled() }}
- name: Docker build
run: docker compose build
if: ${{ !cancelled() }}
- name: Run e2e tests (api & cli)
run: npm run test
if: ${{ !cancelled() }}
e2e-tests-web:
name: End-to-End Tests (Web)
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e_web == 'true' }}
runs-on: mich
defaults:
run:
working-directory: ./e2e
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './e2e/.nvmrc'
- name: Run setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }}
- name: Install dependencies
run: npm ci
if: ${{ !cancelled() }}
- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium
if: ${{ !cancelled() }}
- name: Docker build
run: docker compose build
if: ${{ !cancelled() }}
- name: Run e2e tests (web)
run: npx playwright test
if: ${{ !cancelled() }}
mobile-unit-tests:
name: Run mobile unit tests
name: Unit Test Mobile
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_mobile == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: "3.13.3"
channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml
- name: Run tests
working-directory: ./mobile
run: flutter test -j 1
ml-unit-tests:
name: Run ML unit tests and checks
name: Unit Test ML
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
@@ -164,41 +375,69 @@ jobs:
- uses: actions/checkout@v4
- name: Install poetry
run: pipx install poetry
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: 3.11
cache: "poetry"
cache: 'poetry'
- name: Install dependencies
run: |
poetry install --with dev
poetry run pip install --no-deps -r requirements.txt
poetry install --with dev --with cpu
- name: Lint with ruff
run: |
poetry run ruff check --format=github app
poetry run ruff check --output-format=github app export
- name: Check black formatting
run: |
poetry run black --check app
poetry run black --check app export
- name: Run mypy type checking
run: |
poetry run mypy --install-types --non-interactive app/
poetry run mypy --install-types --non-interactive --strict app/
- name: Run tests and coverage
run: |
poetry run pytest --cov app
poetry run pytest app --cov=app --cov-report term-missing
generated-api-up-to-date:
name: Check generated files are up-to-date
shellcheck:
name: ShellCheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
ignore_paths: >-
**/open-api/**
**/openapi/**
**/node_modules/**
generated-api-up-to-date:
name: OpenAPI Clients
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './server/.nvmrc'
- name: Install server dependencies
run: npm --prefix=server ci
- name: Build the app
run: npm --prefix=server run build
- name: Run API generation
run: npm --prefix server run api:generate
run: make open-api
- name: Find file changes
uses: tj-actions/verify-changed-files@v13.1
uses: tj-actions/verify-changed-files@v20
id: verify-changed-files
with:
files: |
mobile/openapi
web/src/api/open-api
open-api/typescript-sdk
open-api/immich-openapi-specs.json
- name: Verify files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true'
run: |
@@ -207,11 +446,11 @@ jobs:
exit 1
generated-typeorm-migrations-up-to-date:
name: Check generated TypeORM migrations are up-to-date
name: TypeORM Checks
runs-on: ubuntu-latest
services:
postgres:
image: postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
@@ -223,28 +462,67 @@ jobs:
--health-retries 5
ports:
- 5432:5432
defaults:
run:
working-directory: ./server
steps:
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: './server/.nvmrc'
- name: Install server dependencies
run: npm --prefix server ci
run: npm ci
- name: Build the app
run: npm run build
- name: Run existing migrations
run: npm --prefix server run typeorm:migrations:run
run: npm run typeorm:migrations:run
- name: Test npm run schema:reset command works
run: npm run typeorm:schema:reset
- name: Generate new migrations
continue-on-error: true
run: npm --prefix server run typeorm:migrations:generate ./src/infra/migrations/TestMigration
run: npm run typeorm:migrations:generate ./src/migrations/TestMigration
- name: Find file changes
uses: tj-actions/verify-changed-files@v13.1
uses: tj-actions/verify-changed-files@v20
id: verify-changed-files
with:
files: |
server/src/infra/migrations/
- name: Verify files have not changed
server/src/migrations/
- name: Verify migration files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true'
run: |
echo "ERROR: Generated files not up to date!"
echo "ERROR: Generated migration files not up to date!"
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}"
exit 1
- name: Run SQL generation
run: npm run sync:sql
env:
DB_URL: postgres://postgres:postgres@localhost:5432/immich
- name: Find file changes
uses: tj-actions/verify-changed-files@v20
id: verify-changed-sql-files
with:
files: |
server/src/queries
- name: Verify SQL files have not changed
if: steps.verify-changed-sql-files.outputs.files_changed == 'true'
run: |
echo "ERROR: Generated SQL files not up to date!"
echo "Changed files: ${{ steps.verify-changed-sql-files.outputs.changed_files }}"
exit 1
# mobile-integration-tests:
# name: Run mobile end-to-end integration tests
# runs-on: macos-latest

13
.gitignore vendored
View File

@@ -1,12 +1,25 @@
**/node_modules/**
.DS_Store
.vscode/*
!.vscode/launch.json
.idea
docker/upload
docker/library
uploads
coverage
mobile/gradle.properties
mobile/openapi/pubspec.lock
mobile/*.jks
mobile/libisar.dylib
mobile/openapi/test
mobile/openapi/doc
mobile/openapi/.openapi-generator/FILES
open-api/typescript-sdk/build
mobile/android/fastlane/report.xml
mobile/ios/fastlane/report.xml
vite.config.js.timestamp-*

3
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "mobile/.isar"]
path = mobile/.isar
url = https://github.com/isar/isar
[submodule "e2e/test-assets"]
path = e2e/test-assets
url = https://github.com/immich-app/test-assets

8
.vscode/launch.json vendored
View File

@@ -5,8 +5,8 @@
"type": "node",
"request": "attach",
"restart": true,
"port": 9230,
"name": "Immich Server",
"port": 9231,
"name": "Immich API Server",
"remoteRoot": "/usr/src/app",
"localRoot": "${workspaceFolder}/server"
},
@@ -14,8 +14,8 @@
"type": "node",
"request": "attach",
"restart": true,
"port": 9231,
"name": "Immich Microservices",
"port": 9230,
"name": "Immich Workers",
"remoteRoot": "/usr/src/app",
"localRoot": "${workspaceFolder}/server"
}

44
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,44 @@
{
"editor.formatOnSave": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode",
"editor.tabSize": 2
},
"svelte.enable-ts-plugin": true,
"eslint.validate": [
"javascript",
"svelte"
],
"typescript.preferences.importModuleSpecifier": "non-relative",
"[dart]": {
"editor.formatOnSave": true,
"editor.selectionHighlight": false,
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first",
"editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": "off",
"editor.defaultFormatter": "Dart-Code.dart-code"
},
"cSpell.words": [
"immich"
],
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.ts": "${capture}.spec.ts,${capture}.mock.ts"
}
}

5
CODEOWNERS Normal file
View File

@@ -0,0 +1,5 @@
/.github/ @bo0tzz
/docker/ @bo0tzz
/server/ @danieldietzler
/machine-learning/ @mertalev
/e2e/ @danieldietzler

View File

@@ -131,4 +131,4 @@ conduct enforcement ladder](https://github.com/mozilla/diversity).
For answers to common questions about this code of conduct, see the
FAQ at https://www.contributor-covenant.org/faq. Translations are
available at https://www.contributor-covenant.org/translations.
available at https://www.contributor-covenant.org/translations.

633
LICENSE
View File

@@ -1,21 +1,620 @@
MIT License
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (c) 2022 Hau Tran
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Preamble
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

102
Makefile
View File

@@ -1,35 +1,95 @@
dev:
docker-compose -f ./docker/docker-compose.dev.yml up --remove-orphans
docker compose -f ./docker/docker-compose.dev.yml up --remove-orphans || make dev-down
dev-new:
docker compose -f ./docker/docker-compose.dev.yml up --remove-orphans
dev-new-update:
docker compose -f ./docker/docker-compose.dev.yml up --build -V --remove-orphans
dev-down:
docker compose -f ./docker/docker-compose.dev.yml down --remove-orphans
dev-update:
docker-compose -f ./docker/docker-compose.dev.yml up --build -V --remove-orphans
docker compose -f ./docker/docker-compose.dev.yml up --build -V --remove-orphans
dev-scale:
docker-compose -f ./docker/docker-compose.dev.yml up --build -V --scale immich-server=3 --remove-orphans
docker compose -f ./docker/docker-compose.dev.yml up --build -V --scale immich-server=3 --remove-orphans
stage:
docker-compose -f ./docker/docker-compose.staging.yml up --build -V --remove-orphans
pull-stage:
docker-compose -f ./docker/docker-compose.staging.yml pull
test-e2e:
docker-compose -f ./docker/docker-compose.test.yml --env-file ./docker/.env.test -p immich-test-e2e up --renew-anon-volumes --abort-on-container-exit --exit-code-from immich-server-test --remove-orphans --build
.PHONY: e2e
e2e:
docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans
prod:
docker-compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans
docker compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans
prod-scale:
docker-compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans
docker compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans
api:
cd ./server && npm run api:generate
.PHONY: open-api
open-api:
cd ./open-api && bash ./bin/generate-open-api.sh
open-api-dart:
cd ./open-api && bash ./bin/generate-open-api.sh dart
open-api-typescript:
cd ./open-api && bash ./bin/generate-open-api.sh typescript
sql:
npm --prefix server run sync:sql
attach-server:
docker exec -it docker_immich-server_1 sh
docker exec -it docker_immich-server_1 sh
renovate:
LOG_LEVEL=debug npx renovate --platform=local --repository-cache=reset
MODULES = e2e server web cli sdk docs
audit-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) audit fix
install-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) i
build-cli: build-sdk
build-web: build-sdk
build-%: install-%
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run build
format-%:
npm --prefix $* run format:fix
lint-%:
npm --prefix $* run lint:fix
check-%:
npm --prefix $* run check
check-web:
npm --prefix web run check:typescript
npm --prefix web run check:svelte
test-%:
npm --prefix $* run test
test-e2e:
docker compose -f ./e2e/docker-compose.yml build
npm --prefix e2e run test
npm --prefix e2e run test:web
test-medium:
docker run \
--rm \
-v ./server/src:/usr/src/app/src \
-v ./server/test:/usr/src/app/test \
-v ./server/vitest.config.medium.mjs:/usr/src/app/vitest.config.medium.mjs \
-v ./server/tsconfig.json:/usr/src/app/tsconfig.json \
-e NODE_ENV=development \
immich-server:latest \
-c "npm ci && npm run test:medium -- --run"
test-medium-dev:
docker exec -it immich_server /bin/sh -c "npm run test:medium"
build-all: $(foreach M,$(filter-out e2e,$(MODULES)),build-$M) ;
install-all: $(foreach M,$(MODULES),install-$M) ;
check-all: $(foreach M,$(filter-out sdk cli docs,$(MODULES)),check-$M) ;
lint-all: $(foreach M,$(filter-out sdk docs,$(MODULES)),lint-$M) ;
format-all: $(foreach M,$(filter-out sdk,$(MODULES)),format-$M) ;
audit-all: $(foreach M,$(MODULES),audit-$M) ;
hygiene-all: lint-all format-all check-all sql audit-all;
test-all: $(foreach M,$(filter-out sdk docs,$(MODULES)),test-$M) ;
clean:
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
find . -name "dist" -type d -prune -exec rm -rf '{}' +
find . -name "build" -type d -prune -exec rm -rf '{}' +
find . -name "svelte-kit" -type d -prune -exec rm -rf '{}' +
docker compose -f ./docker/docker-compose.dev.yml rm -v -f || true
docker compose -f ./e2e/docker-compose.yml rm -v -f || true

115
README.md
View File

@@ -1,30 +1,41 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
<a href="https://opensource.org/license/agpl-v3"><img src="https://img.shields.io/badge/License-AGPL_v3-blue.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: AGPLv3"></a>
<a href="https://discord.immich.app">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" alt="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login With Custom URL">
<img src="design/immich-logo-stacked-light.svg" width="300" title="Login With Custom URL">
</p>
<h3 align="center">Immich - High performance self-hosted photo and video backup solution</h3>
<h3 align="center">High performance self-hosted photo and video management solution</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
<a href="readme_i18n/README_ca_ES.md">Català</a>
<a href="readme_i18n/README_es_ES.md">Español</a>
<a href="readme_i18n/README_fr_FR.md">Français</a>
<a href="readme_i18n/README_it_IT.md">Italiano</a>
<a href="readme_i18n/README_ja_JP.md">日本語</a>
<a href="readme_i18n/README_ko_KR.md">한국어</a>
<a href="readme_i18n/README_de_DE.md">Deutsch</a>
<a href="readme_i18n/README_nl_NL.md">Nederlands</a>
<a href="readme_i18n/README_tr_TR.md">Türkçe</a>
<a href="readme_i18n/README_zh_CN.md">中文</a>
<a href="readme_i18n/README_uk_UA.md">Українська</a>
<a href="readme_i18n/README_ru_RU.md">Русский</a>
<a href="readme_i18n/README_pt_BR.md">Português Brasileiro</a>
<a href="readme_i18n/README_sv_SE.md">Svenska</a>
<a href="readme_i18n/README_ar_JO.md">العربية</a>
<a href="readme_i18n/README_vi_VN.md">Tiếng Việt</a>
<a href="readme_i18n/README_th_TH.md">ภาษาไทย</a>
</p>
## Disclaimer
@@ -34,43 +45,39 @@
- ⚠️ **Do not use the app as the only way to store your photos and videos.**
- ⚠️ Always follow [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan for your precious photos and videos!
## Content
> [!NOTE]
> You can find the main documentation, including installation guides, at https://immich.app/.
- [Official Documentation](https://immich.app/docs)
- [Roadmap](https://github.com/orgs/immich-app/projects/1)
## Links
- [Documentation](https://immich.app/docs)
- [About](https://immich.app/docs/overview/introduction)
- [Installation](https://immich.app/docs/install/requirements)
- [Roadmap](https://immich.app/roadmap)
- [Demo](#demo)
- [Features](#features)
- [Introduction](https://immich.app/docs/overview/introduction)
- [Installation](https://immich.app/docs/install/requirements)
- [Contribution Guidelines](https://immich.app/docs/overview/support-the-project)
- [Support The Project](#support-the-project)
## Documentation
You can find the main documentation, including installation guides, at https://immich.app/.
- [Translations](https://immich.app/docs/developer/translations)
- [Contributing](https://immich.app/docs/overview/support-the-project)
## Demo
You can access the web demo at https://demo.immich.app
Access the demo [here](https://demo.immich.app). The demo is running on a Free-tier Oracle VM in Amsterdam with a 2.4Ghz quad-core ARM64 CPU and 24GB RAM.
For the mobile app, you can use `https://demo.immich.app/api` for the `Server Endpoint URL`
```bash title="Demo Credential"
The credential
email: demo@immich.app
password: demo
```
### Login credentials
```
Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
```
| Email | Password |
| --------------- | -------- |
| demo@immich.app | demo |
# Features
## Features
| Features | Mobile | Web |
| -------------------------------------------- | ------ | --- |
| :------------------------------------------- | ------ | --- |
| Upload and view videos and photos | Yes | Yes |
| Auto backup when the app is opened | Yes | N/A |
| Prevent duplication of assets | Yes | Yes |
| Selective album(s) for backup | Yes | N/A |
| Download photos and videos to local device | Yes | Yes |
| Multi-user support | Yes | Yes |
@@ -84,9 +91,10 @@ Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
| Virtual scroll | Yes | Yes |
| OAuth support | Yes | Yes |
| API Keys | N/A | Yes |
| LivePhoto backup and playback | iOS | Yes |
| LivePhoto/MotionPhoto backup and playback | Yes | Yes |
| Support 360 degree image display | No | Yes |
| User-defined storage structure | Yes | Yes |
| Public Sharing | No | Yes |
| Public Sharing | Yes | Yes |
| Archive and Favorites | Yes | Yes |
| Global Map | Yes | Yes |
| Partner Sharing | Yes | Yes |
@@ -94,19 +102,34 @@ Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
| Memories (x years ago) | Yes | Yes |
| Offline support | Yes | No |
| Read-only gallery | Yes | Yes |
| Stacked Photos | Yes | Yes |
| Tags | No | Yes |
| Folder View | No | Yes |
# Support the project
## Translations
I've committed to this project, and I will not stop. I will keep updating the docs, adding new features, and fixing bugs. But I can't do it alone. So I need your help to give me additional motivation to keep going.
Read more about translations [here](https://immich.app/docs/developer/translations).
As our hosts in the [selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) said, this is a massive undertaking of what the team and I are doing. And I would love to someday be able to do this full-time, and I am asking for your help to make that happen.
<a href="https://hosted.weblate.org/engage/immich/">
<img src="https://hosted.weblate.org/widget/immich/immich/multi-auto.svg" alt="Translation status" />
</a>
If you feel like this is the right cause and the app is something you are seeing yourself using for a long time, please consider supporting the project with the option below.
## Repository activity
## Donation
![Activities](https://repobeats.axiom.co/api/embed/9e86d9dc3ddd137161f2f6d2e758d7863b1789cb.svg "Repobeats analytics image")
- [Monthly donation](https://github.com/sponsors/alextran1502) via GitHub Sponsors
- [One-time donation](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX
## Star history
<a href="https://star-history.com/#immich-app/immich&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=immich-app/immich&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=immich-app/immich&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=immich-app/immich&type=Date" width="100%" />
</picture>
</a>
## Contributors
<a href="https://github.com/alextran1502/immich/graphs/contributors">
<img src="https://contrib.rocks/image?repo=immich-app/immich" width="100%"/>
</a>

View File

@@ -1,111 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=Llicència&logoColor=000000&labelColor=ececec" alt="Llicència: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Iniciar sessió amb URL personalitzada">
</p>
<h3 align="center">Immich - Solució de còpia de seguretat d'alta rendiment per a fotos i vídeos auto-allotjada</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Captura de pantalla principal">
</a>
<br/>
<p align="center">
<a href="README.md">English</a>
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## Avís legal
- ⚠️ El projecte està en desenvolupament **molt actiu**.
- ⚠️ Espereu errors i canvis que poden trencar coses.
- ⚠️ **No utilitzeu l'aplicació com a única manera de guardar les vostres fotos i vídeos!**
## Contingut
- [Documentació oficial](https://immich.app/docs)
- [Mapa de ruta](https://github.com/orgs/immich-app/projects/1)
- [Demo](#demo)
- [Funcionalitats](#funcionalitats)
- [Introducció](https://immich.app/docs/overview/introduction)
- [Instal·lació](https://immich.app/docs/install/requirements)
- [Directrius de contribució](https://immich.app/docs/overview/support-the-project)
- [Donar suport al projecte](#suportar-el-projecte)
## Documentació
Podeu trobar la documentació principal, incloent les guies d'instal·lació, a https://immich.app/.
## Demo
Podeu accedir a la demostració web a https://demo.immich.app
Per a l'aplicació mòbil, podeu utilitzar `https://demo.immich.app/api` com a "URL de punt final del servidor".
```bash title="Credencials de la demo"
Les credencials
email: demo@immich.app
contrasenya: demo
```
```
Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
```
# Funcionalitats
| Característiques | Mòbil | Web |
| -------------------------------------------- | ------ | --- |
| Pujar i veure vídeos i fotos | Sí | Sí |
| Còpia de seguretat automàtica en obrir l'aplicació | Sí | N/A |
| Selecció d'àlbums per a la còpia de seguretat | Sí | N/A |
| Descarregar fotos i vídeos a l'aparell local | Sí | Sí |
| Suport per a múltiples usuaris | Sí | Sí |
| Àlbums i àlbums compartits | Sí | Sí |
| Barra de desplaçament amb funció de rasclet/arrossegament | Sí | Sí |
| Suport per a formats raw | Sí | Sí |
| Visualització de metadades (EXIF, mapa) | Sí | Sí |
| Cerca per metadades, objectes, cares i CLIP | Sí | Sí |
| Funcions administratives (gestió d'usuaris) | No | Sí |
| Còpia de seguretat en segon pla | Sí | N/A |
| Desplaçament virtual | Sí | Sí |
| Suport per a OAuth | Sí | Sí |
| Claus d'API | N/A | Sí |
| Còpia de seguretat i reproducció de LivePhoto | iOS | Sí |
| Estructura d'emmagatzematge definida per l'usuari | Sí | Sí |
| Compartició pública | No | Sí |
| Arxiu i preferits | Sí | Sí |
| Mapa global | No | Sí |
| Compartició amb associats | Sí | Sí |
| Reconeixement facial i agrupament | Sí | Sí |
| Records (fa x anys) | Sí | Sí |
| Suport fora de línia | Sí | No |
| Galeria de només lectura | Sí | Sí |
# Donar suport al projecte
M'he compromès amb aquest projecte i no em detindré. Continuaré actualitzant la documentació, afegint noves funcionalitats i solucionant errors. Però no ho puc fer sol. Per això, necessito la vostra ajuda per donar-me motivació addicional per seguir endavant.
Com van dir els nostres amfitrions a l'episodi [selfhosted.show - 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418), això és una tasca enorme del que l'equip i jo estem fent. I m'encantaria poder dedicar-m'hi a temps complet, per la qual cosa us demano la vostra ajuda per fer-ho possible.
Si creieu que aquesta és una causa justa i l'aplicació és alguna cosa que us veieu utilitzant durant molt de temps, considereu donar suport al projecte amb alguna de les opcions següents.
## Donació
- [Donació mensual](https://github.com/sponsors/alextran1502) a través de GitHub Sponsors
- [Donació única](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) a través de GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,110 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="Licencia: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Iniciar sesión con URL personalizada">
</p>
<h3 align="center">Immich: Una solución Self-Hosted de copia de seguridad de fotos y videos de alto rendimiento</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Captura de pantalla principal">
</a>
<br/>
<p align="center">
<a href="README.md">English</a>
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## Descargo de responsabilidad
- ⚠️ El proyecto está en **desarrollo muy activo**.
- ⚠️ Es probable que haya errores y cambios disruptivos.
- ⚠️ **¡No utilices la aplicación como única forma de almacenar tus fotos y videos!**
## Contenido
- [Documentación oficial](https://immich.app/docs)
- [Hoja de ruta](https://github.com/orgs/immich-app/projects/1)
- [Demostración](#demo)
- [Funciones](#features)
- [Introducción](https://immich.app/docs/overview/introduction)
- [Instalación](https://immich.app/docs/install/requirements)
- [Directrices para contribuir](https://immich.app/docs/overview/support-the-project)
- [Apoya el proyecto](#support-the-project)
## Documentación
Puedes encontrar la documentación principal, incluidas las guías de instalación, en <https://immich.app/>.
## Demostración
Puedes acceder a la demostración web en <https://demo.immich.app>
Para la aplicación móvil, puedes usar `https://demo.immich.app/api` como `URL de la terminal del servidor`.
```bash title="Credenciales de la demostración"
Las credenciales son
correo electrónico: demo@immich.app
contraseña: demo
```
```bash
Especificaciones: VM de nivel gratuito de Oracle - Ámsterdam - CPU ARM64 de cuatro núcleos a 2.4 GHz, 24 GB de RAM
```
## Funcionalidades
| Funcionalidades | Móvil | Web |
| ----------------------------------------------------- | ------ | --- |
| Cargar y ver videos y fotos | Sí | Sí |
| Copia de seguridad automática al abrir la aplicación | Sí | N/D |
| Álbum(es) selectivo(s) para copia de seguridad | Sí | N/D |
| Descargar fotos y videos al dispositivo local | Sí | Sí |
| Soporte multiusuario | Sí | Sí |
| Álbum y álbumes compartidos | Sí | Sí |
| Barra de desplazamiento con función de búsqueda | Sí | Sí |
| Soporte para formatos RAW | Sí | Sí |
| Visualización de metadatos (EXIF, map) | Sí | Sí |
| Búsqueda por metadatos, objetos, rostros y CLIP | Sí | Sí |
| Funciones administrativas (gestión de usuarios) | No | Sí |
| Copia de seguridad en segundo plano | Sí | N/D |
| Desplazamiento virtual | Sí | Sí |
| Soporte de OAuth | Sí | Sí |
| Claves de API | N/D | Sí |
| Copia de seguridad y reproducción de LivePhoto | iOS | Sí |
| Estructura de almacenamiento definida por el usuario | Sí | Sí |
| Compartir públicamente | No | Sí |
| Archivar y marcar como favorito | Sí | Sí |
| Mapa global | No | Sí |
| Compartir con colaboradores | Sí | Sí |
| Reconocimiento facial y agrupación | Sí | Sí |
| Recuerdos (hace x años) | Sí | Sí |
| Soporte sin conexión | Sí | No |
| Galería de solo lectura | Sí | Sí |
## Apoya el proyecto
Me he comprometido con este proyecto, y no me detendré. Continuaré actualizando la documentación, agregando nuevas funcionalidades y corrigiendo errores. Pero no puedo hacerlo solo. Por eso, necesito tu ayuda para darme una motivación adicional para seguir adelante.
Como dijeron nuestros anfitriones en [selfhosted.show - En el episodio 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418), esto es una gran tarea de lo que el equipo y yo estamos haciendo. Y me encantaría poder dedicarme a esto a tiempo completo algún día, así que te pido tu ayuda para que eso sea posible.
Si consideras que esta es una causa justa y la aplicación es algo que te gustaría usar durante mucho tiempo, por favor, considera apoyar el proyecto con las siguientes opciones.
## Donación
- [Donación mensual](https://github.com/sponsors/alextran1502) a través de GitHub Sponsors
- [Donación única](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) a través de GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,112 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login With Custom URL">
</p>
<h3 align="center">Immich - Solution de sauvegarde performante et auto-hébergée des photos et des vidéos</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## Clause de non-responsabilité
- ⚠️ Le projet est en **très fort** développement.
- ⚠️ Attendez-vous à rencontrer des bugs et des changements importants.
- ⚠️ **N'utilisez pas cette application comme seule façon de sauvegarder vos photos et vos vidéos.**
- ⚠️ Ayez toujours un plan de sauvegarde en [3-2-1](https://www.seagate.com/fr/fr/blog/what-is-a-3-2-1-backup-strategy/) pour vos précieuses photos et vidéos !
## Sommaire
- [Documentation officielle](https://immich.app/docs)
- [Feuille de route](https://github.com/orgs/immich-app/projects/1)
- [Démo](#demo)
- [Fonctionnalités](#features)
- [Introduction](https://immich.app/docs/overview/introduction)
- [Installation](https://immich.app/docs/install/requirements)
- [Contribution](https://immich.app/docs/overview/support-the-project)
- [Soutenir le projet](#support-the-project)
## Documentation
Vous pouvez trouver la documentation principale ainsi que les guides d'installation sur https://immich.app/.
## Démo
Vous pouvez accéder à la démo Web sur https://demo.immich.app
Pour l'application mobile, vous pouvez utiliser `https://demo.immich.app/api` dans le champ 'URL du point d'accès au serveur'
```bash title="Demo Credential"
Les identifiants
email: demo@immich.app
mot de passe: demo
```
```
Caractéristiques: Plan gratuit Oracle VM - Amsterdam - 2.4Ghz quatre-cœurs ARM64 CPU, 24GB RAM
```
# Fonctionnalités
| Fonctionnalités | Mobile | Web |
| ---------------------------------------------------------------- | ------ | --- |
| Téléverser et voir les vidéos et photos | Oui | Oui |
| Sauvegarde automatique quand l'application est ouverte | Oui | N/A |
| Sélection des albums à sauvegarder | Oui | N/A |
| Télécharger les photos et les vidéos sur l'appareil | Oui | Oui |
| Support multi-utilisateur | Oui | Oui |
| Albums et albums partagés | Oui | Oui |
| Barre de défilement mobile | Oui | Oui |
| Support des formats raw | Oui | Oui |
| Vue sur les métadonnées (EXIF, carte) | Oui | Oui |
| Rechercher par métadonnées, objets, faces et CLIP | Oui | Oui |
| Fonctions d'administration (gestion des utilisateurs) | Non | Oui |
| Sauvegarde en tâche de fond | Oui | N/A |
| Défilement virtuel | Oui | Oui |
| Support de l'OAuth | Oui | Oui |
| Clés d'API | N/A | Oui |
| Sauvegarde et lecture des LivePhotos | iOS | Oui |
| Structure de stockage définissable | Oui | Oui |
| Partage public | Non | Oui |
| Archives et favoris | Oui | Oui |
| Carte globale | Non | Oui |
| Partage entre utilisateurs | Oui | Oui |
| Reconnaissance et regroupement facial | Oui | Oui |
| Souvenirs (il y a x années) | Oui | Oui |
| Support hors-ligne | Oui | Non |
| Gallerie en lecture seule | Oui | Oui |
# Soutenir le projet
Je me suis engagé sur ce projet, et je ne compte pas m'arrêter. Je continuerai à mettre à jour les documentations, d'ajouter de nouvelles fonctionnalités et de résoudre des bugs. Mais je ne peux pas faire cela seul. Donc j'ai besoin de votre aide pour me donner encore plus de motivation et ainsi continuer.
Comme l'ont dit nos hôtes dans le [selfhosted.show - Dans l'épisode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418), c'est un travail colossal ce que l'équipe et moi faisons. J'aimerais un jour être capable de faire ça à temps plein, c'est pourquoi je vous demande votre aide pour rendre cela possible.
Si vous estimez que c'est pour la bonne cause et que vous prévoyez d'utiliser l'application pour un moment, s'il-vous-plaît, pensez à soutenir le projet avec les moyens ci-dessous.
## Donation
- [Donation mensuelle](https://github.com/sponsors/alextran1502) via GitHub Sponsors
- [Donation occasionnelle](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,111 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login With Custom URL">
</p>
<h3 align="center">Immich - 高性能なセルフホスト 写真/ビデオバックアップソリューション</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
</p>
## 免責事項
- ⚠️ このプロジェクトは **非常に活発に** 開発中です。
- ⚠️ バグの存在や変更が入ることも予想されます。
- ⚠️ **写真やビデオを保存する唯一の方法としてこのアプリを使用しないでください。**
- ⚠️ 大切な写真やビデオは、常に [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) のバックアッププランに従ってください!
## コンテンツ
- [公式ドキュメント](https://immich.app/docs)
- [ロードマップ](https://github.com/orgs/immich-app/projects/1)
- [デモ](#デモ)
- [機能](#機能)
- [紹介](https://immich.app/docs/overview/introduction)
- [インストール](https://immich.app/docs/install/requirements)
- [コントリビューションガイド](https://immich.app/docs/overview/support-the-project)
- [プロジェクトのサポート](#プロジェクトのサポート)
## ドキュメント
インストールガイドを含む主なドキュメントは、https://immich.app/ です。
## デモ
web デモは https://demo.immich.app からアクセスできます
モバイルアプリの場合、`Server Endpoint URL` には `https://demo.immich.app/api` を使用することができます
```bash title="Demo Credential"
The credential
email: demo@immich.app
password: demo
```
```
Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
```
# 機能
| 機能 | モバイル | Web |
| ------------------------------------------- | ------ | --- |
| ビデオや写真のアップロードと表示 | はい | はい |
| アプリを開いたとき自動バックアップ | はい | N/A |
| バックアップ用アルバム選択 | はい | N/A |
| 写真やビデオをローカルデバイスにダウンロード | はい | はい |
| マルチユーザー対応 | はい | はい |
| アルバムと共有アルバム | はい | はい |
| スクラブ可能/ドラッグ可能スクロールバ | はい | はい |
| 生のフォーマットに対応 | はい | はい |
| メタデータ表示EXIF、地図 | はい | はい |
| メタデータ、オブジェクト、フェース、CLIPによる検索 | はい | はい |
| 管理機能(ユーザー管理) | いいえ | はい |
| バックグラウンドバックアップ | はい | N/A |
| 仮想スクロール | はい | はい |
| OAuth サポート | はい | はい |
| API キー | N/A | はい |
| LivePhoto のバックアップと再生 | iOS | はい |
| ユーザー定義のストレージ構造 | はい | はい |
| 公開シェアリング | いいえ | はい |
| アーカイブとお気に入り | はい | はい |
| グローバルマップ | はい | はい |
| パートナー共有 | はい | はい |
| 思い出x 年前)顔認識とクラスタリング | はい | はい |
| 思い出x 年前) | はい | はい |
| オフラインサポート | はい | いいえ |
| 読み取り専用ギャラリー | はい | はい |
# プロジェクトのサポート
私はこのプロジェクトにコミットしてきました。ドキュメントを更新し、新しい機能を追加し、バグを修正し続けるつもりですが、私ひとりではできません。だから、続けるためのモチベーションをさらに高めてくれる皆さんの助けが必要なのです。
[selfhosted.show - In the episode 'The-organization-must-いいえt-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) のホストが言ったように、これはチームと私がやっていることの大規模な事業だ。そしていつの日か、フルタイムでこの仕事ができるようになりたいと思っています。
もし、あなたがこのプロジェクトに賛同し、このアプリを長く使い続けたいと思われるのであれば、以下のオプションから支援をご検討ください。
## 寄付
- GitHub スポンサー経由の[毎月の寄付](https://github.com/sponsors/alextran1502)
- GitHub スポンサー経由の[一回寄付](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,112 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login met aangepaste URL">
</p>
<h3 align="center">Immich - Hoogwaardige, self-hosted back-up oplossing voor foto's en video's</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README_zh_CN.md">中文</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## Disclaimer
- ⚠️ Het project wordt momenteel **zeer actief** ontwikkeld.
- ⚠️ Verwacht bugs en ingrijpende wijzigingen.
- ⚠️ **Gebruik de app niet als de enige manier om uw foto's en video's op te slaan.**
- ⚠️ Volg altijd het [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan voor je kostbare foto's en video's!
## Inhoud
- [Officiële documentatie](https://immich.app/docs)
- [Roadmap](https://github.com/orgs/immich-app/projects/1)
- [Demo](#demo)
- [Functies](#functies)
- [Introductie](https://immich.app/docs/overview/introduction)
- [Installatie](https://immich.app/docs/install/requirements)
- [Richtlijnen voor bijdragen](https://immich.app/docs/overview/support-the-project)
- [Steun het project](#steun-het-project)
## Documentatie
De belangrijkste documentatie, inclusief installatie handleidingen, zijn te vinden op https://immich.app/.
## Demo
De demo is te bekijken op https://demo.immich.app.
Voor de mobiele app kunt u gebruik maken van `https://demo.immich.app/api` voor de `Server Endpoint URL`
```bash title="Demo Credential"
De inloggegevens
email: demo@immich.app
wachtwoord: demo
```
```
Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
```
# Functies
| Functies | Mobiel | Web |
|-----------------------------------------------------|--------|-----|
| Upload en bekijk video's en foto's | Ja | Ja |
| Automatische back-up wanneer de app wordt geopend | Ja | NVT |
| Selectieve album(s) voor back-up | Ja | NVT |
| Download foto's en video's naar een lokaal apparaat | Ja | Ja |
| Ondersteuning voor meerdere gebruikers | Ja | Ja |
| Album en gedeelde albums | Ja | Ja |
| Versleepbare scroll balk | Ja | Ja |
| Ondersteuning voor het RAW formaat | Ja | Ja |
| Metagegevensweergave (EXIF, kaart) | Ja | Ja |
| Zoek op metagegevens, objecten, gezichten en CLIP | Ja | Ja |
| Administratieve functies (gebruikersbeheer) | Nee | Ja |
| Back-up op de achtergrond | Ja | NVT |
| Virtueel scrollen | Ja | Ja |
| OAuth-ondersteuning | Ja | Ja |
| API-sleutels | NVT | Ja |
| LivePhoto-back-up en weergave | iOS | Ja |
| Door de gebruiker gedefinieerde opslagstructuur | Ja | Ja |
| Openbaar delen | Nee | Ja |
| Archief en Favorieten | Ja | Ja |
| Wereldkaart | Ja | Ja |
| Delen met partner | Ja | Ja |
| Gezichtsherkenning en groepering | Ja | Ja |
| Herinneringen (x jaar geleden) | Ja | Ja |
| Offline-ondersteuning | Ja | Nee |
| Alleen-lezen galerij | Ja | Ja |
# Steun het project
Ik ben trouw aan dit project en ik zal niet stoppen. Ik zal de documenten blijven bijwerken, nieuwe functies toevoegen en bugs oplossen. Maar ik kan het niet alleen. Ik heb dus jouw hulp nodig om mij extra motivatie te geven om door te gaan.
Als onze gastheren in de [selfhosted.show - In de aflevering 'The-organization-must-Neet-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) zeiden, dit is een eNeerme onderneming van wat het team en ik doen. En ik zou dit graag fulltime willen doen, ik vraag jouw hulp om dat mogelijk te maken.
Als je denkt dat dit het juiste doel is en de app iets is dat je jezelf al heel lang ziet gebruiken, overweeg dan om het project te steunen met de onderstaande optie.
## Doneren
- [Maandelijkse donatie](https://github.com/sponsors/alextran1502) via GitHub Sponsors
- [Eenmalige donatie](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,109 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login With Custom URL">
</p>
<h3 align="center">Immich - Yüksek performanslı, kendine ait barındırılan fotoğraf ve video yedekleme çözümü</h3>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README.md">English</a>
<a href="README_zh_CN.md">中文</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## Feragatname
- ⚠️ Proje **çok aktif** bir şekilde geliştirilmektedir.
- ⚠️ Hatalar ve uygulama yapısını bozan değişiklikler olabilir.
- ⚠️ **Uygulamayı, fotoğraflarınızı ve videolarınızı saklamanın tek yöntemi olarak kullanmayın!**
## Content
- [Resmi Belgeler](https://immich.app/docs)
- [Yol Haritası](https://github.com/orgs/immich-app/projects/1)
- [Demo](#demo)
- [Özellikler](#özellikler)
- [Giriş](https://immich.app/docs/overview/introduction)
- [Kurulum](https://immich.app/docs/install/requirements)
- [Katkı Sağlama Rehberi](https://immich.app/docs/overview/support-the-project)
- [Projeyi Destekle](#projeyi-destekle)
## Belgeler
Kurulum dahil olmak üzere resmi belgeleri https://immich.app/ adresinde bulabilirsiniz.
## Demo
Web demo adresi: https://demo.immich.app
Mobil uygulama için `Server Endpoint URL` olarak `https://demo.immich.app/api` adresini kullanabilirsiniz.
```bash title="Demo Bilgileri"
Giriş bilgileri:
email: demo@immich.app
password: demo
```
```
Server Özellikleri: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM
```
# Özellikler
| Özellikler | Mobile | Web |
| ----------------------------------------------------| ------ | --- |
| Videoları ve fotoğrafları yükleme ve görüntüleme | Evet | Evet |
| Uygulama açıldığında otomatik yedekleme | Evet | N/A |
| Yedekleme için seçilebilir albüm(ler) | Evet | N/A |
| Fotoğrafları ve videoları yerel cihaza yükleme | Evet | Evet |
| Çoklu kullanıcı desteği | Evet | Evet |
| Albüm ve paylaşılan albümler | Evet | Evet |
| Silinebilir/sürüklenebilir kaydırma çubuğu | Evet | Evet |
| RAW (HEIC, HEIF, DNG, Apple ProRaw) format desteği | Evet | Evet |
| Metadata'ya uygun görüntüleme (EXIF, map) | Evet | Evet |
| Metadata, objects, faces ve CLIP'e göre arama | Evet | Evet |
| Yönetimsel işlevler (kullanıcı yönetimi) | Hayır | Evet |
| Arka planda yedekleme | Evet | N/A |
| Sanal kaydırma | Evet | Evet |
| OAuth desteği | Evet | Evet |
| API anahtarları | N/A | Evet |
| LivePhoto yedekleme ve oynatma | iOS | Evet |
| Kullanıcı tanımlı depolama yapısı | Evet | Evet |
| Herkese açık paylaşım | Hayır | Evet |
| Arşiv ve Favoriler | Evet | Evet |
| Dünya haritası | Hayır | Evet |
| Partner paylaşımı | Evet | Evet |
| Yüz tanıma ve kümeleme | Hayır | Evet |
| Çevrimdışı destek | Evet | Hayır|
# Projeyi Destekle
Bu projeye bağlı kaldım ve durmayacağım. Belgeleri güncellemeye, yeni özellikler eklemeye ve hataları düzeltmeye devam edeceğim. Ancak bunu tek başıma yapamam. Bu yüzden devam etme konusunda bana motivasyon sağlamanız için yardımınıza ihtiyacım var.
[selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) bölümünde söylendiği üzere,bu projede takımımın ve benim projeye harcadağımız büyük bir çaba var. Bir gün bunu tam zamanlı olarak yapabilmeyi çok isterim. Bunu gerçekleştirebilmek için gerçekten sizlerin desteğine ihtiyacım var.
Eğer bu size doğru bir amaç gibi geliyorsa ve uygulamanın uzun bir süre boyunca kullanacağınız bir şey olduğunu düşünüyorsanız, aşağıdaki bağlantılardan birini kullanarak bana destek olabilirsiniz.
## Bağış
- [Aylık bağış](https://github.com/sponsors/alextran1502) via GitHub Sponsors
- [Bir seferlik bağış](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via GitHub Sponsors
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -1,118 +0,0 @@
<p align="center">
<br/>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?color=3F51B5&style=for-the-badge&label=License&logoColor=000000&labelColor=ececec" alt="License: MIT"></a>
<a href="https://discord.gg/D8JsnBEuKb">
<img src="https://img.shields.io/discord/979116623879368755.svg?label=Discord&logo=Discord&style=for-the-badge&logoColor=000000&labelColor=ececec" atl="Discord"/>
</a>
<br/>
<br/>
</p>
<p align="center">
<img src="design/immich-logo.svg" width="150" title="Login With Custom URL">
</p>
<h3 align="center">Immich - 高性能的自托管照片和视频备份方案</h3>
<p align="center">
请注意: 此 README 不是由 Immich 团队维护, 而是依靠贡献者来更新的,这意味着它可能并不会被及时更新。感谢理解。
</p>
<br/>
<a href="https://immich.app">
<img src="design/immich-screenshots.png" title="Main Screenshot">
</a>
<br/>
<p align="center">
<a href="README.md">English</a>
<a href="README_tr_TR.md">Türkçe</a>
<a href="README_ca_ES.md">Català</a>
<a href="README_es_ES.md">Español</a>
<a href="README_fr_FR.md">Français</a>
<a href="README_nl_NL.md">Nederlands</a>
<a href="README_ja_JP.md">日本語</a>
</p>
## 免责声明
- ⚠️ 本项目正在 **非常活跃** 地开发中。
- ⚠️ 可能存在 bug 或者随时有重大变更。
- ⚠️ **不要把本软件作为您存储照片或视频的唯一方式。**
- ⚠️ 为了您宝贵的照片与视频,始终遵守 [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) 备份方案!
## 目录
- [官方文档](https://immich.app/docs)
- [路线图](https://github.com/orgs/immich-app/projects/1)
- [示例](#示例)
- [功能特性](#功能特性)
- [介绍](https://immich.app/docs/overview/introduction)
- [安装](https://immich.app/docs/install/requirements)
- [贡献指南](https://immich.app/docs/overview/support-the-project)
- [支持本项目](#支持本项目)
## 官方文档
您可以在 https://immich.app/ 找到官方文档(包含安装手册)。
## 示例
您可以在 https://demo.immich.app 访问示例。
在移动端, 您可以使用 `https://demo.immich.app/api` 获取 `服务终端链接`
```bash title="示例认证信息"
认证信息
邮箱: demo@immich.app
密码: demo
```
```
规格: 甲骨文免费虚拟机套餐——阿姆斯特丹 4核 2.4Ghz ARM64 CPU, 24GB RAM。
```
# 功能特性
| 功能特性 | 移动端 | 网页端 |
| ------------------------------------------- | ------- | --- |
| 上传并查看照片和视频 | 是 | 是 |
| 软件运行时自动备份 | 是 | N/A |
| 选择需要备份的相册 | 是 | N/A |
| 下载照片和视频到本地 | 是 | 是 |
| 多用户支持 | 是 | 是 |
| 相册 | 是 | 是 |
| 共享相册 | 是 | 是 |
| 可拖动的快速导航栏 | 是 | 是 |
| 支持RAW格式 (HEIC, HEIF, DNG, Apple ProRaw) | 是 | 是 |
| 元数据视图EXIF, 地图) | 是 | 是 |
| 通过元数据、对象和标签进行搜索 | 是 | 是 |
| 管理功能(用户管理) | 否 | 是 |
| 后台备份 | 是 | N/A |
| 虚拟滚动 | 是 | 是 |
| OAuth 支持 | 是 | 是 |
| API Keys|N/A|是|
| 实况照片备份和查看 | 仅 iOS | 是 |
|用户自定义存储结构|是|是|
|公共分享|否|是|
|归档与收藏功能|是|是|
|全局地图|否|是|
|好友分享|是|是|
|人像识别与分组|是|是|
|回忆(那年今日)|是|是|
|离线支持|是|否|
|只读相册|是|是|
# 支持本项目
我已经致力于本项目并且将我会持续更新文档、新增功能和修复问题。但是独木不成林,我需要您给予我坚持下去的动力。
就像我在 [selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) 节目里说的一样,这是我和团队的一项艰巨任务。并且我希望某一天我能够全职开发本项目,在此我请求您能够助我梦想成真。
如果您使用了本项目一段时间,并且觉得上面的话有道理,那么请您考虑通过下列任一方式支持我吧。
## 捐赠
- 通过 GitHub Sponsors [按月捐赠](https://github.com/sponsors/alextran1502)
- 通过 Github Sponsors [单次捐赠](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
- [Librepay](https://liberapay.com/alex.tran1502/)
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- 比特币: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

View File

@@ -2,4 +2,4 @@
## Reporting a Vulnerability
Please report security issues to `alex.tran1502@gmail.com`
Please report security issues to `security@immich.app`

View File

@@ -1 +0,0 @@
/dist

View File

@@ -1,23 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
root: true,
env: {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'prettier/prettier': 0,
},
};

4
cli/.gitignore vendored
View File

@@ -10,4 +10,6 @@ oclif.manifest.json
.vscode
.idea
/coverage/
/coverage/
.reverse-geocoding-dump/
upload/

15
cli/.npmignore Normal file
View File

@@ -0,0 +1,15 @@
**/*.spec.js
coverage/**
src/**
upload/**
.editorconfig
.eslintignore
.eslintrc.cjs
.gitignore
.prettierignore
.prettierrc
Dockerfile
package-lock.json
tsconfig.json
vite.config.ts
vitest.config.ts

1
cli/.nvmrc Normal file
View File

@@ -0,0 +1 @@
22.13.1

View File

@@ -5,7 +5,6 @@ node_modules
.env
.env.*
!.env.example
src/api/open-api
*.md
*.json
coverage

View File

@@ -2,5 +2,7 @@
"singleQuote": true,
"trailingComma": "all",
"printWidth": 120,
"semi": true
"semi": true,
"plugins": ["prettier-plugin-organize-imports"],
"organizeImportsSkipDestructiveCodeActions": true
}

19
cli/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM node:22.13.1-alpine3.20@sha256:c52e20859a92b3eccbd3a36c5e1a90adc20617d8d421d65e8a622e87b5dac963 AS core
WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
RUN npm ci
COPY open-api/typescript-sdk/ ./
RUN npm run build
WORKDIR /usr/src/app
COPY cli/package.json cli/package-lock.json ./
RUN npm ci
COPY cli .
RUN npm run build
WORKDIR /import
ENTRYPOINT ["node", "/usr/src/app/dist"]

620
cli/LICENSE Normal file
View File

@@ -0,0 +1,620 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS

View File

@@ -1,46 +1,30 @@
A command-line interface for interfacing with Immich
A command-line interface for interfacing with the self-hosted photo manager [Immich](https://immich.app/).
# Getting started
Please see the [Immich CLI documentation](https://immich.app/docs/features/command-line-interface).
$ ts-node cli/src
# For developers
To start using the CLI, you need to login with an API key first:
Before building the CLI, you must build the immich server and the open-api client. To build the server run the following in the server folder:
$ ts-node cli/src login-key https://your-immich-instance/api your-api-key
$ npm install
$ npm run build
NOTE: This will store your api key under ~/.config/immich/auth.yml
Then, to build the open-api client run the following in the open-api folder:
Next, you can run commands:
$ ./bin/generate-open-api.sh
$ ts-node cli/src server-info
To run the Immich CLI from source, run the following in the cli folder:
When you're done, log out to remove the credentials from your filesystem
$ npm install
$ npm run build
$ ts-node .
$ ts-node cli/src logout
You'll need ts-node, the easiest way to install it is to use npm:
# Usage
$ npm i -g ts-node
```
Usage: immich [options] [command]
You can also build and install the CLI using
Immich command line interface
Options:
-h, --help display help for command
Commands:
upload [options] [paths...] Upload assets
import [options] [paths...] Import existing assets
server-info Display server information
login-key [instanceUrl] [apiKey] Login using an API key
help [command] display help for command
```
# Todo
- Sidecar should check both .jpg.xmp and .xmp
- Sidecar check could be case-insensitive
# Known issues
- Upload can't use sdk due to multiple issues
$ npm run build
$ npm install -g .
****

61
cli/eslint.config.mjs Normal file
View File

@@ -0,0 +1,61 @@
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
export default [
{
ignores: ['eslint.config.mjs', 'dist'],
},
...compat.extends(
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'plugin:unicorn/recommended',
),
{
plugins: {
'@typescript-eslint': typescriptEslint,
},
languageOptions: {
globals: {
...globals.node,
},
parser: tsParser,
ecmaVersion: 5,
sourceType: 'module',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
},
},
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'error',
'unicorn/prefer-module': 'off',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-process-exit': 'off',
'unicorn/import-style': 'off',
curly: 2,
'prettier/prettier': 0,
'object-shorthand': ['error', 'always'],
},
},
];

6307
cli/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,68 +1,72 @@
{
"name": "immich-cli",
"dependencies": {
"axios": "^1.4.0",
"byte-size": "^8.1.1",
"name": "@immich/cli",
"version": "2.2.46",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
"bin": {
"immich": "dist/index.js"
},
"license": "GNU Affero General Public License version 3",
"keywords": [
"immich",
"cli"
],
"devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.8.0",
"@immich/sdk": "file:../open-api/typescript-sdk",
"@types/byte-size": "^8.1.0",
"@types/cli-progress": "^3.11.0",
"@types/lodash-es": "^4.17.12",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.10.9",
"@typescript-eslint/eslint-plugin": "^8.15.0",
"@typescript-eslint/parser": "^8.15.0",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
"commander": "^11.0.0",
"form-data": "^4.0.0",
"glob": "^10.3.1",
"picomatch": "^2.3.1",
"systeminformation": "^5.18.4",
"commander": "^12.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^56.0.1",
"globals": "^15.9.0",
"mock-fs": "^5.2.0",
"prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.0.0",
"typescript": "^5.3.3",
"vite": "^6.0.0",
"vite-tsconfig-paths": "^5.0.0",
"vitest": "^3.0.0",
"vitest-fetch-mock": "^0.4.0",
"yaml": "^2.3.1"
},
"devDependencies": {
"@types/byte-size": "^8.1.0",
"@types/chai": "^4.3.5",
"@types/cli-progress": "^3.11.0",
"@types/jest": "^29.5.2",
"@types/js-yaml": "^4.0.5",
"@types/mime-types": "^2.1.1",
"@types/mock-fs": "^4.13.1",
"@types/node": "^20.3.1",
"@typescript-eslint/eslint-plugin": "^5.60.1",
"@typescript-eslint/parser": "^5.48.1",
"chai": "^4.3.7",
"eslint": "^8.43.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-jest": "^27.2.2",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-unicorn": "^47.0.0",
"jest": "^29.5.0",
"jest-extended": "^4.0.0",
"jest-message-util": "^29.5.0",
"jest-mock-axios": "^4.7.2",
"jest-when": "^3.5.2",
"mock-fs": "^5.2.0",
"ts-jest": "^29.1.0",
"ts-node": "^10.9.1",
"tslib": "^2.5.3",
"typescript": "^4.9.4"
},
"scripts": {
"build": "tsc --project tsconfig.build.json",
"build": "vite build",
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
"prepack": "yarn build ",
"test": "jest",
"test:cov": "jest --coverage",
"format": "prettier --check ."
"lint:fix": "npm run lint -- --fix",
"prepack": "npm run build",
"test": "vitest",
"test:cov": "vitest --coverage",
"format": "prettier --check .",
"format:fix": "prettier --write .",
"check": "tsc --noEmit"
},
"jest": {
"clearMocks": true,
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": ".",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.ts$": "ts-jest"
},
"collectCoverageFrom": [
"<rootDir>/src/**/*.(t|j)s"
],
"coverageDirectory": "./coverage",
"testEnvironment": "node"
"repository": {
"type": "git",
"url": "git+https://github.com/immich-app/immich.git",
"directory": "cli"
},
"engines": {
"node": ">=20.0.0"
},
"dependencies": {
"fast-glob": "^3.3.2",
"fastq": "^1.17.1",
"lodash-es": "^4.17.21"
},
"volta": {
"node": "22.13.1"
}
}

View File

@@ -1,3 +0,0 @@
// ./__mocks__/axios.js
import mockAxios from 'jest-mock-axios';
export default mockAxios;

View File

@@ -1,50 +0,0 @@
import {
AlbumApi,
APIKeyApi,
AssetApi,
AuthenticationApi,
Configuration,
JobApi,
OAuthApi,
ServerInfoApi,
SystemConfigApi,
UserApi,
} from './open-api';
import { ApiConfiguration } from '../cores/api-configuration';
export class ImmichApi {
public userApi: UserApi;
public albumApi: AlbumApi;
public assetApi: AssetApi;
public authenticationApi: AuthenticationApi;
public oauthApi: OAuthApi;
public serverInfoApi: ServerInfoApi;
public jobApi: JobApi;
public keyApi: APIKeyApi;
public systemConfigApi: SystemConfigApi;
private readonly config;
public readonly apiConfiguration: ApiConfiguration;
constructor(instanceUrl: string, apiKey: string) {
this.apiConfiguration = new ApiConfiguration(instanceUrl, apiKey);
this.config = new Configuration({
basePath: instanceUrl,
baseOptions: {
headers: {
'x-api-key': apiKey,
},
},
});
this.userApi = new UserApi(this.config);
this.albumApi = new AlbumApi(this.config);
this.assetApi = new AssetApi(this.config);
this.authenticationApi = new AuthenticationApi(this.config);
this.oauthApi = new OAuthApi(this.config);
this.serverInfoApi = new ServerInfoApi(this.config);
this.jobApi = new JobApi(this.config);
this.keyApi = new APIKeyApi(this.config);
this.systemConfigApi = new SystemConfigApi(this.config);
}
}

View File

@@ -1,4 +0,0 @@
wwwroot/*.js
node_modules
typings
dist

View File

@@ -1 +0,0 @@
# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm

View File

@@ -1,23 +0,0 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@@ -1,9 +0,0 @@
.gitignore
.npmignore
.openapi-generator-ignore
api.ts
base.ts
common.ts
configuration.ts
git_push.sh
index.ts

View File

@@ -1 +0,0 @@
6.5.0

File diff suppressed because it is too large Load Diff

View File

@@ -1,72 +0,0 @@
/* tslint:disable */
/* eslint-disable */
/**
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.80.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import type { Configuration } from './configuration';
// Some imports not used depending on template conditions
// @ts-ignore
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
export const BASE_PATH = "/api".replace(/\/+$/, "");
/**
*
* @export
*/
export const COLLECTION_FORMATS = {
csv: ",",
ssv: " ",
tsv: "\t",
pipes: "|",
};
/**
*
* @export
* @interface RequestArgs
*/
export interface RequestArgs {
url: string;
options: AxiosRequestConfig;
}
/**
*
* @export
* @class BaseAPI
*/
export class BaseAPI {
protected configuration: Configuration | undefined;
constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {
if (configuration) {
this.configuration = configuration;
this.basePath = configuration.basePath || this.basePath;
}
}
};
/**
*
* @export
* @class RequiredError
* @extends {Error}
*/
export class RequiredError extends Error {
constructor(public field: string, msg?: string) {
super(msg);
this.name = "RequiredError"
}
}

View File

@@ -1,150 +0,0 @@
/* tslint:disable */
/* eslint-disable */
/**
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.80.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import type { Configuration } from "./configuration";
import type { RequestArgs } from "./base";
import type { AxiosInstance, AxiosResponse } from 'axios';
import { RequiredError } from "./base";
/**
*
* @export
*/
export const DUMMY_BASE_URL = 'https://example.com'
/**
*
* @throws {RequiredError}
* @export
*/
export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) {
if (paramValue === null || paramValue === undefined) {
throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
}
}
/**
*
* @export
*/
export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) {
if (configuration && configuration.apiKey) {
const localVarApiKeyValue = typeof configuration.apiKey === 'function'
? await configuration.apiKey(keyParamName)
: await configuration.apiKey;
object[keyParamName] = localVarApiKeyValue;
}
}
/**
*
* @export
*/
export const setBasicAuthToObject = function (object: any, configuration?: Configuration) {
if (configuration && (configuration.username || configuration.password)) {
object["auth"] = { username: configuration.username, password: configuration.password };
}
}
/**
*
* @export
*/
export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) {
if (configuration && configuration.accessToken) {
const accessToken = typeof configuration.accessToken === 'function'
? await configuration.accessToken()
: await configuration.accessToken;
object["Authorization"] = "Bearer " + accessToken;
}
}
/**
*
* @export
*/
export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) {
if (configuration && configuration.accessToken) {
const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
? await configuration.accessToken(name, scopes)
: await configuration.accessToken;
object["Authorization"] = "Bearer " + localVarAccessTokenValue;
}
}
function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void {
if (parameter == null) return;
if (typeof parameter === "object") {
if (Array.isArray(parameter)) {
(parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
}
else {
Object.keys(parameter).forEach(currentKey =>
setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`)
);
}
}
else {
if (urlSearchParams.has(key)) {
urlSearchParams.append(key, parameter);
}
else {
urlSearchParams.set(key, parameter);
}
}
}
/**
*
* @export
*/
export const setSearchParams = function (url: URL, ...objects: any[]) {
const searchParams = new URLSearchParams(url.search);
setFlattenedQueryParams(searchParams, objects);
url.search = searchParams.toString();
}
/**
*
* @export
*/
export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) {
const nonString = typeof value !== 'string';
const needsSerialization = nonString && configuration && configuration.isJsonMime
? configuration.isJsonMime(requestOptions.headers['Content-Type'])
: nonString;
return needsSerialization
? JSON.stringify(value !== undefined ? value : {})
: (value || "");
}
/**
*
* @export
*/
export const toPathString = function (url: URL) {
return url.pathname + url.search + url.hash
}
/**
*
* @export
*/
export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) {
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url};
return axios.request<T, R>(axiosRequestArgs);
};
}

View File

@@ -1,101 +0,0 @@
/* tslint:disable */
/* eslint-disable */
/**
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.80.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface ConfigurationParameters {
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
username?: string;
password?: string;
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
basePath?: string;
baseOptions?: any;
formDataCtor?: new () => any;
}
export class Configuration {
/**
* parameter for apiKey security
* @param name security name
* @memberof Configuration
*/
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
/**
* parameter for basic security
*
* @type {string}
* @memberof Configuration
*/
username?: string;
/**
* parameter for basic security
*
* @type {string}
* @memberof Configuration
*/
password?: string;
/**
* parameter for oauth2 security
* @param name security name
* @param scopes oauth2 scope
* @memberof Configuration
*/
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
/**
* override base path
*
* @type {string}
* @memberof Configuration
*/
basePath?: string;
/**
* base options for axios calls
*
* @type {any}
* @memberof Configuration
*/
baseOptions?: any;
/**
* The FormData constructor that will be used to create multipart form data
* requests. You can inject this here so that execution environments that
* do not support the FormData class can still run the generated client.
*
* @type {new () => FormData}
*/
formDataCtor?: new () => any;
constructor(param: ConfigurationParameters = {}) {
this.apiKey = param.apiKey;
this.username = param.username;
this.password = param.password;
this.accessToken = param.accessToken;
this.basePath = param.basePath;
this.baseOptions = param.baseOptions;
this.formDataCtor = param.formDataCtor;
}
/**
* Check if the given MIME is a JSON MIME.
* JSON MIME examples:
* application/json
* application/json; charset=UTF8
* APPLICATION/JSON
* application/vnd.company+json
* @param mime - MIME (Multipurpose Internet Mail Extensions)
* @return True if the given MIME is JSON, false otherwise.
*/
public isJsonMime(mime: string): boolean {
const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
}
}

View File

@@ -1,57 +0,0 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
fi
if [ "$git_repo_id" = "" ]; then
git_repo_id="GIT_REPO_ID"
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
fi
if [ "$release_note" = "" ]; then
release_note="Minor update"
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
fi
# Initialize the local directory as a Git repository
git init
# Adds the files in the local repository and stages them for commit.
git add .
# Commits the tracked changes and prepares them to be pushed to a remote repository.
git commit -m "$release_note"
# Sets the new remote
git_remote=$(git remote)
if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@@ -1,18 +0,0 @@
/* tslint:disable */
/* eslint-disable */
/**
* Immich
* Immich API
*
* The version of the OpenAPI document: 1.80.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export * from "./api";
export * from "./configuration";

View File

@@ -1,38 +0,0 @@
import { ImmichApi } from '../api/client';
import path from 'node:path';
import { SessionService } from '../services/session.service';
import { LoginError } from '../cores/errors/login-error';
import { exit } from 'node:process';
import os from 'os';
import { ServerVersionResponseDto, UserResponseDto } from 'src/api/open-api';
export abstract class BaseCommand {
protected sessionService!: SessionService;
protected immichApi!: ImmichApi;
protected deviceId!: string;
protected user!: UserResponseDto;
protected serverVersion!: ServerVersionResponseDto;
protected configDir;
protected authPath;
constructor() {
const userHomeDir = os.homedir();
this.configDir = path.join(userHomeDir, '.config/immich/');
this.sessionService = new SessionService(this.configDir);
this.authPath = path.join(this.configDir, 'auth.yml');
}
public async connect(): Promise<void> {
try {
this.immichApi = await this.sessionService.connect();
} catch (error) {
if (error instanceof LoginError) {
console.log(error.message);
exit(1);
} else {
throw error;
}
}
}
}

View File

@@ -0,0 +1,201 @@
import * as fs from 'node:fs';
import * as os from 'node:os';
import * as path from 'node:path';
import { describe, expect, it, vi } from 'vitest';
import { Action, checkBulkUpload, defaults, Reason } from '@immich/sdk';
import createFetchMock from 'vitest-fetch-mock';
import { checkForDuplicates, getAlbumName, uploadFiles, UploadOptionsDto } from './asset';
vi.mock('@immich/sdk');
describe('getAlbumName', () => {
it('should return a non-undefined value', () => {
if (os.platform() === 'win32') {
// This is meaningless for Unix systems.
expect(getAlbumName(String.raw`D:\test\Filename.txt`, {} as UploadOptionsDto)).toBe('test');
}
expect(getAlbumName('D:/parentfolder/test/Filename.txt', {} as UploadOptionsDto)).toBe('test');
});
it('has higher priority to return `albumName` in `options`', () => {
expect(getAlbumName('/parentfolder/test/Filename.txt', { albumName: 'example' } as UploadOptionsDto)).toBe(
'example',
);
});
});
describe('uploadFiles', () => {
const testDir = fs.mkdtempSync(path.join(os.tmpdir(), 'test-'));
const testFilePath = path.join(testDir, 'test.png');
const testFileData = 'test';
const baseUrl = 'http://example.com';
const apiKey = 'key';
const retry = 3;
const fetchMocker = createFetchMock(vi);
beforeEach(() => {
// Create a test file
fs.writeFileSync(testFilePath, testFileData);
// Defaults
vi.mocked(defaults).baseUrl = baseUrl;
vi.mocked(defaults).headers = { 'x-api-key': apiKey };
fetchMocker.enableMocks();
fetchMocker.resetMocks();
});
it('returns new assets when upload file is successful', async () => {
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
return {
status: 200,
body: JSON.stringify({ id: 'fc5621b1-86f6-44a1-9905-403e607df9f5', status: 'created' }),
};
});
await expect(uploadFiles([testFilePath], { concurrency: 1 })).resolves.toEqual([
{
filepath: testFilePath,
id: 'fc5621b1-86f6-44a1-9905-403e607df9f5',
},
]);
});
it('returns new assets when upload file retry is successful', async () => {
let counter = 0;
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
counter++;
if (counter < retry) {
throw new Error('Network error');
}
return {
status: 200,
body: JSON.stringify({ id: 'fc5621b1-86f6-44a1-9905-403e607df9f5', status: 'created' }),
};
});
await expect(uploadFiles([testFilePath], { concurrency: 1 })).resolves.toEqual([
{
filepath: testFilePath,
id: 'fc5621b1-86f6-44a1-9905-403e607df9f5',
},
]);
});
it('returns new assets when upload file retry is failed', async () => {
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
throw new Error('Network error');
});
await expect(uploadFiles([testFilePath], { concurrency: 1 })).resolves.toEqual([]);
});
});
describe('checkForDuplicates', () => {
const testDir = fs.mkdtempSync(path.join(os.tmpdir(), 'test-'));
const testFilePath = path.join(testDir, 'test.png');
const testFileData = 'test';
const testFileChecksum = 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'; // SHA1
const retry = 3;
beforeEach(() => {
// Create a test file
fs.writeFileSync(testFilePath, testFileData);
});
it('checks duplicates', async () => {
vi.mocked(checkBulkUpload).mockResolvedValue({
results: [
{
action: Action.Accept,
id: testFilePath,
},
],
});
await checkForDuplicates([testFilePath], { concurrency: 1 });
expect(checkBulkUpload).toHaveBeenCalledWith({
assetBulkUploadCheckDto: {
assets: [
{
checksum: testFileChecksum,
id: testFilePath,
},
],
},
});
});
it('returns duplicates when check duplicates is rejected', async () => {
vi.mocked(checkBulkUpload).mockResolvedValue({
results: [
{
action: Action.Reject,
id: testFilePath,
assetId: 'fc5621b1-86f6-44a1-9905-403e607df9f5',
reason: Reason.Duplicate,
},
],
});
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).resolves.toEqual({
duplicates: [
{
filepath: testFilePath,
id: 'fc5621b1-86f6-44a1-9905-403e607df9f5',
},
],
newFiles: [],
});
});
it('returns new assets when check duplicates is accepted', async () => {
vi.mocked(checkBulkUpload).mockResolvedValue({
results: [
{
action: Action.Accept,
id: testFilePath,
},
],
});
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).resolves.toEqual({
duplicates: [],
newFiles: [testFilePath],
});
});
it('returns results when check duplicates retry is successful', async () => {
let mocked = vi.mocked(checkBulkUpload);
for (let i = 1; i < retry; i++) {
mocked = mocked.mockRejectedValueOnce(new Error('Network error'));
}
mocked.mockResolvedValue({
results: [
{
action: Action.Accept,
id: testFilePath,
},
],
});
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).resolves.toEqual({
duplicates: [],
newFiles: [testFilePath],
});
});
it('returns results when check duplicates retry is failed', async () => {
vi.mocked(checkBulkUpload).mockRejectedValue(new Error('Network error'));
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).resolves.toEqual({
duplicates: [],
newFiles: [],
});
});
});

415
cli/src/commands/asset.ts Normal file
View File

@@ -0,0 +1,415 @@
import {
Action,
AssetBulkUploadCheckItem,
AssetBulkUploadCheckResult,
AssetMediaResponseDto,
AssetMediaStatus,
addAssetsToAlbum,
checkBulkUpload,
createAlbum,
defaults,
getAllAlbums,
getSupportedMediaTypes,
} from '@immich/sdk';
import byteSize from 'byte-size';
import { MultiBar, Presets, SingleBar } from 'cli-progress';
import { chunk } from 'lodash-es';
import { Stats, createReadStream } from 'node:fs';
import { stat, unlink } from 'node:fs/promises';
import path, { basename } from 'node:path';
import { Queue } from 'src/queue';
import { BaseOptions, authenticate, crawl, sha1 } from 'src/utils';
const s = (count: number) => (count === 1 ? '' : 's');
// TODO figure out why `id` is missing
type AssetBulkUploadCheckResults = Array<AssetBulkUploadCheckResult & { id: string }>;
type Asset = { id: string; filepath: string };
export interface UploadOptionsDto {
recursive?: boolean;
ignore?: string;
dryRun?: boolean;
skipHash?: boolean;
delete?: boolean;
album?: boolean;
albumName?: string;
includeHidden?: boolean;
concurrency: number;
}
class UploadFile extends File {
constructor(
private filepath: string,
private _size: number,
) {
super([], basename(filepath));
}
get size() {
return this._size;
}
stream() {
return createReadStream(this.filepath) as any;
}
}
export const upload = async (paths: string[], baseOptions: BaseOptions, options: UploadOptionsDto) => {
await authenticate(baseOptions);
const scanFiles = await scan(paths, options);
if (scanFiles.length === 0) {
console.log('No files found, exiting');
return;
}
const { newFiles, duplicates } = await checkForDuplicates(scanFiles, options);
const newAssets = await uploadFiles(newFiles, options);
await updateAlbums([...newAssets, ...duplicates], options);
await deleteFiles(newFiles, options);
};
const scan = async (pathsToCrawl: string[], options: UploadOptionsDto) => {
const { image, video } = await getSupportedMediaTypes();
console.log('Crawling for assets...');
const files = await crawl({
pathsToCrawl,
recursive: options.recursive,
exclusionPattern: options.ignore,
includeHidden: options.includeHidden,
extensions: [...image, ...video],
});
return files;
};
export const checkForDuplicates = async (files: string[], { concurrency, skipHash }: UploadOptionsDto) => {
if (skipHash) {
console.log('Skipping hash check, assuming all files are new');
return { newFiles: files, duplicates: [] };
}
const multiBar = new MultiBar(
{ format: '{message} | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
const hashProgressBar = multiBar.create(files.length, 0, { message: 'Hashing files ' });
const checkProgressBar = multiBar.create(files.length, 0, { message: 'Checking for duplicates' });
const newFiles: string[] = [];
const duplicates: Asset[] = [];
const checkBulkUploadQueue = new Queue<AssetBulkUploadCheckItem[], void>(
async (assets: AssetBulkUploadCheckItem[]) => {
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets } });
const results = response.results as AssetBulkUploadCheckResults;
for (const { id: filepath, assetId, action } of results) {
if (action === Action.Accept) {
newFiles.push(filepath);
} else {
// rejects are always duplicates
duplicates.push({ id: assetId as string, filepath });
}
}
checkProgressBar.increment(assets.length);
},
{ concurrency, retry: 3 },
);
const results: { id: string; checksum: string }[] = [];
let checkBulkUploadRequests: AssetBulkUploadCheckItem[] = [];
const queue = new Queue<string, AssetBulkUploadCheckItem[]>(
async (filepath: string): Promise<AssetBulkUploadCheckItem[]> => {
const dto = { id: filepath, checksum: await sha1(filepath) };
results.push(dto);
checkBulkUploadRequests.push(dto);
if (checkBulkUploadRequests.length === 5000) {
const batch = checkBulkUploadRequests;
checkBulkUploadRequests = [];
void checkBulkUploadQueue.push(batch);
}
hashProgressBar.increment();
return results;
},
{ concurrency, retry: 3 },
);
for (const item of files) {
void queue.push(item);
}
await queue.drained();
if (checkBulkUploadRequests.length > 0) {
void checkBulkUploadQueue.push(checkBulkUploadRequests);
}
await checkBulkUploadQueue.drained();
multiBar.stop();
console.log(`Found ${newFiles.length} new files and ${duplicates.length} duplicate${s(duplicates.length)}`);
// Report failures
const failedTasks = queue.tasks.filter((task) => task.status === 'failed');
if (failedTasks.length > 0) {
console.log(`Failed to verify ${failedTasks.length} file${s(failedTasks.length)}:`);
for (const task of failedTasks) {
console.log(`- ${task.data} - ${task.error}`);
}
}
return { newFiles, duplicates };
};
export const uploadFiles = async (files: string[], { dryRun, concurrency }: UploadOptionsDto): Promise<Asset[]> => {
if (files.length === 0) {
console.log('All assets were already uploaded, nothing to do.');
return [];
}
// Compute total size first
let totalSize = 0;
const statsMap = new Map<string, Stats>();
for (const filepath of files) {
const stats = await stat(filepath);
statsMap.set(filepath, stats);
totalSize += stats.size;
}
if (dryRun) {
console.log(`Would have uploaded ${files.length} asset${s(files.length)} (${byteSize(totalSize)})`);
return files.map((filepath) => ({ id: '', filepath }));
}
const uploadProgress = new SingleBar(
{ format: 'Uploading assets | {bar} | {percentage}% | ETA: {eta_formatted} | {value_formatted}/{total_formatted}' },
Presets.shades_classic,
);
uploadProgress.start(totalSize, 0);
uploadProgress.update({ value_formatted: 0, total_formatted: byteSize(totalSize) });
let duplicateCount = 0;
let duplicateSize = 0;
let successCount = 0;
let successSize = 0;
const newAssets: Asset[] = [];
const queue = new Queue<string, AssetMediaResponseDto>(
async (filepath: string) => {
const stats = statsMap.get(filepath);
if (!stats) {
throw new Error(`Stats not found for ${filepath}`);
}
const response = await uploadFile(filepath, stats);
newAssets.push({ id: response.id, filepath });
if (response.status === AssetMediaStatus.Duplicate) {
duplicateCount++;
duplicateSize += stats.size ?? 0;
} else {
successCount++;
successSize += stats.size ?? 0;
}
uploadProgress.update(successSize, { value_formatted: byteSize(successSize + duplicateSize) });
return response;
},
{ concurrency, retry: 3 },
);
for (const item of files) {
void queue.push(item);
}
await queue.drained();
uploadProgress.stop();
console.log(`Successfully uploaded ${successCount} new asset${s(successCount)} (${byteSize(successSize)})`);
if (duplicateCount > 0) {
console.log(`Skipped ${duplicateCount} duplicate asset${s(duplicateCount)} (${byteSize(duplicateSize)})`);
}
// Report failures
const failedTasks = queue.tasks.filter((task) => task.status === 'failed');
if (failedTasks.length > 0) {
console.log(`Failed to upload ${failedTasks.length} asset${s(failedTasks.length)}:`);
for (const task of failedTasks) {
console.log(`- ${task.data} - ${task.error}`);
}
}
return newAssets;
};
const uploadFile = async (input: string, stats: Stats): Promise<AssetMediaResponseDto> => {
const { baseUrl, headers } = defaults;
const assetPath = path.parse(input);
const noExtension = path.join(assetPath.dir, assetPath.name);
const sidecarsFiles = await Promise.all(
// XMP sidecars can come in two filename formats. For a photo named photo.ext, the filenames are photo.ext.xmp and photo.xmp
[`${noExtension}.xmp`, `${input}.xmp`].map(async (sidecarPath) => {
try {
const stats = await stat(sidecarPath);
return new UploadFile(sidecarPath, stats.size);
} catch {
return false;
}
}),
);
const sidecarData = sidecarsFiles.find((file): file is UploadFile => file !== false);
const formData = new FormData();
formData.append('deviceAssetId', `${basename(input)}-${stats.size}`.replaceAll(/\s+/g, ''));
formData.append('deviceId', 'CLI');
formData.append('fileCreatedAt', stats.mtime.toISOString());
formData.append('fileModifiedAt', stats.mtime.toISOString());
formData.append('fileSize', String(stats.size));
formData.append('isFavorite', 'false');
formData.append('assetData', new UploadFile(input, stats.size));
if (sidecarData) {
formData.append('sidecarData', sidecarData);
}
const response = await fetch(`${baseUrl}/assets`, {
method: 'post',
redirect: 'error',
headers: headers as Record<string, string>,
body: formData,
});
if (response.status !== 200 && response.status !== 201) {
throw new Error(await response.text());
}
return response.json();
};
const deleteFiles = async (files: string[], options: UploadOptionsDto): Promise<void> => {
if (!options.delete) {
return;
}
if (options.dryRun) {
console.log(`Would have deleted ${files.length} local asset${s(files.length)}`);
return;
}
console.log('Deleting assets that have been uploaded...');
const deletionProgress = new SingleBar(
{ format: 'Deleting local assets | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
deletionProgress.start(files.length, 0);
try {
for (const assetBatch of chunk(files, options.concurrency)) {
await Promise.all(assetBatch.map((input: string) => unlink(input)));
deletionProgress.update(assetBatch.length);
}
} finally {
deletionProgress.stop();
}
};
const updateAlbums = async (assets: Asset[], options: UploadOptionsDto) => {
if (!options.album && !options.albumName) {
return;
}
const { dryRun, concurrency } = options;
const albums = await getAllAlbums({});
const existingAlbums = new Map(albums.map((album) => [album.albumName, album.id]));
const newAlbums: Set<string> = new Set();
for (const { filepath } of assets) {
const albumName = getAlbumName(filepath, options);
if (albumName && !existingAlbums.has(albumName)) {
newAlbums.add(albumName);
}
}
if (dryRun) {
// TODO print asset counts for new albums
console.log(`Would have created ${newAlbums.size} new album${s(newAlbums.size)}`);
console.log(`Would have updated albums of ${assets.length} asset${s(assets.length)}`);
return;
}
const progressBar = new SingleBar(
{ format: 'Creating albums | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} albums' },
Presets.shades_classic,
);
progressBar.start(newAlbums.size, 0);
try {
for (const albumNames of chunk([...newAlbums], concurrency)) {
const items = await Promise.all(
albumNames.map((albumName: string) => createAlbum({ createAlbumDto: { albumName } })),
);
for (const { id, albumName } of items) {
existingAlbums.set(albumName, id);
}
progressBar.increment(albumNames.length);
}
} finally {
progressBar.stop();
}
console.log(`Successfully created ${newAlbums.size} new album${s(newAlbums.size)}`);
console.log(`Successfully updated ${assets.length} asset${s(assets.length)}`);
const albumToAssets = new Map<string, string[]>();
for (const asset of assets) {
const albumName = getAlbumName(asset.filepath, options);
if (!albumName) {
continue;
}
const albumId = existingAlbums.get(albumName);
if (albumId) {
if (!albumToAssets.has(albumId)) {
albumToAssets.set(albumId, []);
}
albumToAssets.get(albumId)?.push(asset.id);
}
}
const albumUpdateProgress = new SingleBar(
{ format: 'Adding assets to albums | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
albumUpdateProgress.start(assets.length, 0);
try {
for (const [albumId, assets] of albumToAssets.entries()) {
for (const assetBatch of chunk(assets, Math.min(1000 * concurrency, 65_000))) {
await addAssetsToAlbum({ id: albumId, bulkIdsDto: { ids: assetBatch } });
albumUpdateProgress.increment(assetBatch.length);
}
}
} finally {
albumUpdateProgress.stop();
}
};
// `filepath` valid format:
// - Windows: `D:\\test\\Filename.txt` or `D:/test/Filename.txt`
// - Unix: `/test/Filename.txt`
export const getAlbumName = (filepath: string, options: UploadOptionsDto) => {
return options.albumName ?? path.basename(path.dirname(filepath));
};

48
cli/src/commands/auth.ts Normal file
View File

@@ -0,0 +1,48 @@
import { getMyUser } from '@immich/sdk';
import { existsSync } from 'node:fs';
import { mkdir, unlink } from 'node:fs/promises';
import { BaseOptions, connect, getAuthFilePath, logError, withError, writeAuthFile } from 'src/utils';
export const login = async (url: string, key: string, options: BaseOptions) => {
console.log(`Logging in to ${url}`);
const { configDirectory: configDir } = options;
await connect(url, key);
const [error, user] = await withError(getMyUser());
if (error) {
logError(error, 'Failed to load user info');
process.exit(1);
}
console.log(`Logged in as ${user.email}`);
if (!existsSync(configDir)) {
// Create config folder if it doesn't exist
const created = await mkdir(configDir, { recursive: true });
if (!created) {
console.log(`Failed to create config folder: ${configDir}`);
return;
}
}
await writeAuthFile(configDir, { url, key });
console.log(`Wrote auth info to ${getAuthFilePath(configDir)}`);
};
export const logout = async (options: BaseOptions) => {
console.log('Logging out...');
const { configDirectory: configDir } = options;
const authFile = getAuthFilePath(configDir);
if (existsSync(authFile)) {
await unlink(authFile);
console.log(`Removed auth file: ${authFile}`);
}
console.log('Successfully logged out');
};

View File

@@ -1,9 +0,0 @@
import { BaseCommand } from '../../cli/base-command';
export default class LoginKey extends BaseCommand {
public async run(instanceUrl: string, apiKey: string): Promise<void> {
console.log('Executing API key auth flow...');
await this.sessionService.keyLogin(instanceUrl, apiKey);
}
}

View File

@@ -1,13 +0,0 @@
import { BaseCommand } from '../cli/base-command';
export default class Logout extends BaseCommand {
public static readonly description = 'Logout and remove persisted credentials';
public async run(): Promise<void> {
console.log('Executing logout flow...');
await this.sessionService.logout();
console.log('Successfully logged out');
}
}

View File

@@ -1,15 +1,24 @@
import { BaseCommand } from '../cli/base-command';
import { getAssetStatistics, getMyUser, getServerVersion, getSupportedMediaTypes } from '@immich/sdk';
import { BaseOptions, authenticate } from 'src/utils';
export default class ServerInfo extends BaseCommand {
static description = 'Display server information';
static enableJsonFlag = true;
export const serverInfo = async (options: BaseOptions) => {
const { url } = await authenticate(options);
public async run() {
console.log('Getting server information');
const [versionInfo, mediaTypes, stats, userInfo] = await Promise.all([
getServerVersion(),
getSupportedMediaTypes(),
getAssetStatistics({}),
getMyUser(),
]);
await this.connect();
const { data: versionInfo } = await this.immichApi.serverInfoApi.getServerVersion();
console.log(versionInfo);
}
}
console.log(`Server Info (via ${userInfo.email})`);
console.log(` Url: ${url}`);
console.log(` Version: ${versionInfo.major}.${versionInfo.minor}.${versionInfo.patch}`);
console.log(` Formats:`);
console.log(` Images: ${mediaTypes.image.map((extension) => extension.replace('.', ''))}`);
console.log(` Videos: ${mediaTypes.video.map((extension) => extension.replace('.', ''))}`);
console.log(` Statistics:`);
console.log(` Images: ${stats.images}`);
console.log(` Videos: ${stats.videos}`);
console.log(` Total: ${stats.total}`);
};

View File

@@ -1,175 +0,0 @@
import { BaseCommand } from '../cli/base-command';
import { CrawledAsset } from '../cores/models/crawled-asset';
import { CrawlService, UploadService } from '../services';
import * as si from 'systeminformation';
import FormData from 'form-data';
import { UploadOptionsDto } from '../cores/dto/upload-options-dto';
import { CrawlOptionsDto } from '../cores/dto/crawl-options-dto';
import cliProgress from 'cli-progress';
import byteSize from 'byte-size';
export default class Upload extends BaseCommand {
private crawlService = new CrawlService();
private uploadService!: UploadService;
deviceId!: string;
uploadLength!: number;
dryRun = false;
public async run(paths: string[], options: UploadOptionsDto): Promise<void> {
await this.connect();
const uuid = await si.uuid();
this.deviceId = uuid.os || 'CLI';
this.uploadService = new UploadService(this.immichApi.apiConfiguration);
this.dryRun = options.dryRun;
const crawlOptions = new CrawlOptionsDto();
crawlOptions.pathsToCrawl = paths;
crawlOptions.recursive = options.recursive;
crawlOptions.excludePatterns = options.excludePatterns;
const crawledFiles: string[] = await this.crawlService.crawl(crawlOptions);
if (crawledFiles.length === 0) {
console.log('No assets found, exiting');
return;
}
const assetsToUpload = crawledFiles.map((path) => new CrawledAsset(path));
const uploadProgress = new cliProgress.SingleBar(
{
format: '{bar} | {percentage}% | ETA: {eta_formatted} | {value_formatted}/{total_formatted}: {filename}',
},
cliProgress.Presets.shades_classic,
);
let totalSize = 0;
let sizeSoFar = 0;
let totalSizeUploaded = 0;
let uploadCounter = 0;
for (const asset of assetsToUpload) {
// Compute total size first
await asset.process();
totalSize += asset.fileSize;
}
uploadProgress.start(totalSize, 0);
uploadProgress.update({ value_formatted: 0, total_formatted: byteSize(totalSize) });
for (const asset of assetsToUpload) {
uploadProgress.update({
filename: asset.path,
});
try {
if (options.import) {
const importData = {
assetPath: asset.path,
sidecarPath: asset.sidecarPath,
deviceAssetId: asset.deviceAssetId,
deviceId: this.deviceId,
fileCreatedAt: asset.fileCreatedAt,
fileModifiedAt: asset.fileModifiedAt,
isFavorite: false,
isReadOnly: options.readOnly,
};
if (!this.dryRun) {
await this.uploadService.import(importData);
}
} else {
await this.uploadAsset(asset, options.skipHash);
}
} catch (error) {
uploadProgress.stop();
throw error;
}
sizeSoFar += asset.fileSize;
if (!asset.skipped) {
totalSizeUploaded += asset.fileSize;
uploadCounter++;
}
uploadProgress.update(sizeSoFar, { value_formatted: byteSize(sizeSoFar) });
}
uploadProgress.stop();
let messageStart;
if (this.dryRun) {
messageStart = 'Would have ';
} else {
messageStart = 'Successfully ';
}
if (options.import) {
console.log(`${messageStart} imported ${uploadCounter} assets (${byteSize(totalSizeUploaded)})`);
} else {
if (uploadCounter === 0) {
console.log('All assets were already uploaded, nothing to do.');
} else {
console.log(`${messageStart} uploaded ${uploadCounter} assets (${byteSize(totalSizeUploaded)})`);
}
if (options.delete) {
if (this.dryRun) {
console.log(`Would now have deleted assets, but skipped due to dry run`);
} else {
console.log('Deleting assets that have been uploaded...');
const deletionProgress = new cliProgress.SingleBar(cliProgress.Presets.shades_classic);
deletionProgress.start(crawledFiles.length, 0);
for (const asset of assetsToUpload) {
if (!this.dryRun) {
await asset.delete();
}
deletionProgress.increment();
}
deletionProgress.stop();
console.log('Deletion complete');
}
}
}
}
private async uploadAsset(asset: CrawledAsset, skipHash = false) {
await asset.readData();
let skipUpload = false;
if (!skipHash) {
const checksum = await asset.hash();
const checkResponse = await this.uploadService.checkIfAssetAlreadyExists(asset.path, checksum);
skipUpload = checkResponse.data.results[0].action === 'reject';
}
if (skipUpload) {
asset.skipped = true;
} else {
const uploadFormData = new FormData();
uploadFormData.append('deviceAssetId', asset.deviceAssetId);
uploadFormData.append('deviceId', this.deviceId);
uploadFormData.append('fileCreatedAt', asset.fileCreatedAt);
uploadFormData.append('fileModifiedAt', asset.fileModifiedAt);
uploadFormData.append('isFavorite', String(false));
uploadFormData.append('assetData', asset.assetData, { filename: asset.path });
if (asset.sidecarData) {
uploadFormData.append('sidecarData', asset.sidecarData, {
filename: asset.sidecarPath,
contentType: 'application/xml',
});
}
if (!this.dryRun) {
await this.uploadService.upload(uploadFormData);
}
}
}
}

View File

@@ -1,9 +0,0 @@
export class ApiConfiguration {
public readonly instanceUrl!: string;
public readonly apiKey!: string;
constructor(instanceUrl: string, apiKey: string) {
this.instanceUrl = instanceUrl;
this.apiKey = apiKey;
}
}

View File

@@ -1,59 +0,0 @@
// Check asset-upload.config.spec.ts for complete list
// TODO: we should get this list from the server via API in the future
// Videos
const videos = ['mp4', 'webm', 'mov', '3gp', 'avi', 'm2ts', 'mts', 'mpg', 'flv', 'mkv', 'wmv'];
// Images
const heic = ['heic', 'heif'];
const jpeg = ['jpg', 'jpeg'];
const png = ['png'];
const gif = ['gif'];
const tiff = ['tif', 'tiff'];
const webp = ['webp'];
const dng = ['dng'];
const other = [
'3fr',
'ari',
'arw',
'avif',
'cap',
'cin',
'cr2',
'cr3',
'crw',
'dcr',
'nef',
'erf',
'fff',
'iiq',
'jxl',
'k25',
'kdc',
'mrw',
'orf',
'ori',
'pef',
'psd',
'raf',
'raw',
'rwl',
'sr2',
'srf',
'srw',
'orf',
'ori',
'x3f',
];
export const ACCEPTED_FILE_EXTENSIONS = [
...videos,
...jpeg,
...png,
...heic,
...gif,
...tiff,
...webp,
...dng,
...other,
];

View File

@@ -1,6 +0,0 @@
export class CrawlOptionsDto {
pathsToCrawl!: string[];
recursive = false;
includeHidden = false;
excludePatterns!: string[];
}

View File

@@ -1,9 +0,0 @@
export class UploadOptionsDto {
recursive = false;
excludePatterns!: string[];
dryRun = false;
skipHash = false;
delete = false;
import = false;
readOnly = true;
}

View File

@@ -1,11 +0,0 @@
export class LoginError extends Error {
constructor(message: string) {
super(message);
// assign the error class name in your custom error (as a shortcut)
this.name = this.constructor.name;
// capturing the stack trace keeps the reference to your error class
Error.captureStackTrace(this, this.constructor);
}
}

View File

@@ -1,2 +0,0 @@
export * from './constants';
export * from './models';

View File

@@ -1,58 +0,0 @@
import * as fs from 'fs';
import { basename } from 'node:path';
import crypto from 'crypto';
export class CrawledAsset {
public path: string;
public assetData?: fs.ReadStream;
public deviceAssetId?: string;
public fileCreatedAt?: string;
public fileModifiedAt?: string;
public sidecarData?: Buffer;
public sidecarPath?: string;
public fileSize!: number;
public skipped = false;
constructor(path: string) {
this.path = path;
}
async readData() {
this.assetData = fs.createReadStream(this.path);
}
async process() {
const stats = await fs.promises.stat(this.path);
this.deviceAssetId = `${basename(this.path)}-${stats.size}`.replace(/\s+/g, '');
this.fileCreatedAt = stats.mtime.toISOString();
this.fileModifiedAt = stats.mtime.toISOString();
this.fileSize = stats.size;
// TODO: doesn't xmp replace the file extension? Will need investigation
const sideCarPath = `${this.path}.xmp`;
try {
fs.accessSync(sideCarPath, fs.constants.R_OK);
this.sidecarData = await fs.promises.readFile(sideCarPath);
this.sidecarPath = sideCarPath;
} catch (error) {}
}
async delete(): Promise<void> {
return fs.promises.unlink(this.path);
}
public async hash(): Promise<string> {
const sha1 = (filePath: string) => {
const hash = crypto.createHash('sha1');
return new Promise<string>((resolve, reject) => {
const rs = fs.createReadStream(filePath);
rs.on('error', reject);
rs.on('data', (chunk) => hash.update(chunk));
rs.on('end', () => resolve(hash.digest('hex')));
});
};
return await sha1(this.path);
}
}

View File

@@ -1 +0,0 @@
export * from './crawled-asset';

View File

@@ -1,63 +1,75 @@
import { program, Option } from 'commander';
import Upload from './commands/upload';
import ServerInfo from './commands/server-info';
import LoginKey from './commands/login/key';
#! /usr/bin/env node
import { Command, Option } from 'commander';
import os from 'node:os';
import path from 'node:path';
import { upload } from 'src/commands/asset';
import { login, logout } from 'src/commands/auth';
import { serverInfo } from 'src/commands/server-info';
import { version } from '../package.json';
program.name('immich').description('Immich command line interface');
const defaultConfigDirectory = path.join(os.homedir(), '.config/immich/');
const program = new Command()
.name('immich')
.version(version)
.description('Command line interface for Immich')
.addOption(
new Option('-d, --config-directory <directory>', 'Configuration directory where auth.yml will be stored')
.env('IMMICH_CONFIG_DIR')
.default(defaultConfigDirectory),
)
.addOption(new Option('-u, --url [url]', 'Immich server URL').env('IMMICH_INSTANCE_URL'))
.addOption(new Option('-k, --key [key]', 'Immich API key').env('IMMICH_API_KEY'));
program
.command('upload')
.description('Upload assets')
.usage('[options] [paths...]')
.addOption(new Option('-r, --recursive', 'Recursive').env('IMMICH_RECURSIVE').default(false))
.addOption(new Option('-i, --ignore [paths...]', 'Paths to ignore').env('IMMICH_IGNORE_PATHS'))
.addOption(new Option('-h, --skip-hash', "Don't hash files before upload").env('IMMICH_SKIP_HASH').default(false))
.addOption(
new Option('-n, --dry-run', "Don't perform any actions, just show what will be done")
.env('IMMICH_DRY_RUN')
.default(false),
)
.addOption(new Option('--delete', 'Delete local assets after upload').env('IMMICH_DELETE_ASSETS'))
.argument('[paths...]', 'One or more paths to assets to be uploaded')
.action((paths, options) => {
options.excludePatterns = options.ignore;
new Upload().run(paths, options);
});
.command('login')
.alias('login-key')
.description('Login using an API key')
.argument('url', 'Immich server URL')
.argument('key', 'Immich API key')
.action((url, key) => login(url, key, program.opts()));
program
.command('import')
.description('Import existing assets')
.usage('[options] [paths...]')
.addOption(new Option('-r, --recursive', 'Recursive').env('IMMICH_RECURSIVE').default(false))
.addOption(
new Option('-n, --dry-run', "Don't perform any actions, just show what will be done")
.env('IMMICH_DRY_RUN')
.default(false),
)
.addOption(new Option('-i, --ignore [paths...]', 'Paths to ignore').env('IMMICH_IGNORE_PATHS').default(false))
.addOption(new Option('--no-read-only', 'Import files without read-only protection, allowing Immich to manage them'))
.argument('[paths...]', 'One or more paths to assets to be imported')
.action((paths, options) => {
options.import = true;
options.excludePatterns = options.ignore;
new Upload().run(paths, options);
});
.command('logout')
.description('Remove stored credentials')
.action(() => logout(program.opts()));
program
.command('server-info')
.description('Display server information')
.action(() => {
new ServerInfo().run();
});
.action(() => serverInfo(program.opts()));
program
.command('login-key')
.description('Login using an API key')
.argument('[instanceUrl]')
.argument('[apiKey]')
.action((paths, options) => {
new LoginKey().run(paths, options);
});
.command('upload')
.description('Upload assets')
.usage('[paths...] [options]')
.addOption(new Option('-r, --recursive', 'Recursive').env('IMMICH_RECURSIVE').default(false))
.addOption(new Option('-i, --ignore <pattern>', 'Pattern to ignore').env('IMMICH_IGNORE_PATHS'))
.addOption(new Option('-h, --skip-hash', "Don't hash files before upload").env('IMMICH_SKIP_HASH').default(false))
.addOption(new Option('-H, --include-hidden', 'Include hidden folders').env('IMMICH_INCLUDE_HIDDEN').default(false))
.addOption(
new Option('-a, --album', 'Automatically create albums based on folder name')
.env('IMMICH_AUTO_CREATE_ALBUM')
.default(false),
)
.addOption(
new Option('-A, --album-name <name>', 'Add all assets to specified album')
.env('IMMICH_ALBUM_NAME')
.conflicts('album'),
)
.addOption(
new Option('-n, --dry-run', "Don't perform any actions, just show what will be done")
.env('IMMICH_DRY_RUN')
.default(false)
.conflicts('skipHash'),
)
.addOption(
new Option('-c, --concurrency <number>', 'Number of assets to upload at the same time')
.env('IMMICH_UPLOAD_CONCURRENCY')
.default(4),
)
.addOption(new Option('--delete', 'Delete local assets after upload').env('IMMICH_DELETE_ASSETS'))
.argument('[paths...]', 'One or more paths to assets to be uploaded')
.action((paths, options) => upload(paths, program.opts(), options));
program.parse(process.argv);

131
cli/src/queue.ts Normal file
View File

@@ -0,0 +1,131 @@
import * as fastq from 'fastq';
import { uniqueId } from 'lodash-es';
export type Task<T, R> = {
readonly id: string;
status: 'idle' | 'processing' | 'succeeded' | 'failed';
data: T;
error: unknown | undefined;
count: number;
// TODO: Could be useful to adding progress property.
// TODO: Could be useful to adding start_at/end_at/duration properties.
result: undefined | R;
};
export type QueueOptions = {
verbose?: boolean;
concurrency?: number;
retry?: number;
// TODO: Could be useful to adding timeout property for retry.
};
export type ComputedQueueOptions = Required<QueueOptions>;
export const defaultQueueOptions = {
concurrency: 1,
retry: 0,
verbose: false,
};
/**
* An in-memory queue that processes tasks in parallel with a given concurrency.
* @see {@link https://www.npmjs.com/package/fastq}
* @template T - The type of the worker task data.
* @template R - The type of the worker output data.
*/
export class Queue<T, R> {
private readonly queue: fastq.queueAsPromised<string, Task<T, R>>;
private readonly store = new Map<string, Task<T, R>>();
readonly options: ComputedQueueOptions;
readonly worker: (data: T) => Promise<R>;
/**
* Create a new queue.
* @param worker - The worker function that processes the task.
* @param options - The queue options.
*/
constructor(worker: (data: T) => Promise<R>, options?: QueueOptions) {
this.options = { ...defaultQueueOptions, ...options };
this.worker = worker;
this.store = new Map<string, Task<T, R>>();
this.queue = this.buildQueue();
}
get tasks(): Task<T, R>[] {
const tasks: Task<T, R>[] = [];
for (const task of this.store.values()) {
tasks.push(task);
}
return tasks;
}
getTask(id: string): Task<T, R> {
const task = this.store.get(id);
if (!task) {
throw new Error(`Task with id ${id} not found`);
}
return task;
}
/**
* Wait for the queue to be empty.
* @returns Promise<void> - The returned Promise will be resolved when all tasks in the queue have been processed by a worker.
* This promise could be ignored as it will not lead to a `unhandledRejection`.
*/
drained(): Promise<void> {
return this.queue.drained();
}
/**
* Add a task at the end of the queue.
* @see {@link https://www.npmjs.com/package/fastq}
* @param data
* @returns Promise<void> - A Promise that will be fulfilled (rejected) when the task is completed successfully (unsuccessfully).
* This promise could be ignored as it will not lead to a `unhandledRejection`.
*/
async push(data: T): Promise<Task<T, R>> {
const id = uniqueId();
const task: Task<T, R> = { id, status: 'idle', error: undefined, count: 0, data, result: undefined };
this.store.set(id, task);
return this.queue.push(id);
}
// TODO: Support more function delegation to fastq.
private buildQueue(): fastq.queueAsPromised<string, Task<T, R>> {
return fastq.promise((id: string) => {
const task = this.getTask(id);
return this.work(task);
}, this.options.concurrency);
}
private async work(task: Task<T, R>): Promise<Task<T, R>> {
task.count += 1;
task.error = undefined;
task.status = 'processing';
if (this.options.verbose) {
console.log('[task] processing:', task);
}
try {
task.result = await this.worker(task.data);
task.status = 'succeeded';
if (this.options.verbose) {
console.log('[task] succeeded:', task);
}
return task;
} catch (error) {
task.error = error;
task.status = 'failed';
if (this.options.verbose) {
console.log('[task] failed:', task);
}
if (this.options.retry > 0 && task.count < this.options.retry) {
if (this.options.verbose) {
console.log('[task] retry:', task);
}
return this.work(task);
}
return task;
}
}
}

View File

@@ -1,235 +0,0 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-unused-vars */
import { CrawlService } from './crawl.service';
import mockfs from 'mock-fs';
import { toIncludeSameMembers } from 'jest-extended';
import { CrawlOptionsDto } from '../cores/dto/crawl-options-dto';
const matchers = require('jest-extended');
expect.extend(matchers);
const crawlService = new CrawlService();
describe('CrawlService', () => {
beforeAll(() => {
// Write a dummy output before mock-fs to prevent some annoying errors
console.log();
});
it('should crawl a single directory', async () => {
mockfs({
'/photos/image.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should crawl a single file', async () => {
mockfs({
'/photos/image.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/image.jpg'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should crawl a file and a directory', async () => {
mockfs({
'/photos/image.jpg': '',
'/images/photo.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/image.jpg', '/images/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg', '/images/photo.jpg']);
});
it('should exclude by file extension', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/image.tif': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
options.excludePatterns = ['**/*.tif'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should exclude by file extension without case sensitivity', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/image.tif': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
options.excludePatterns = ['**/*.TIF'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should exclude by folder', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/raw/image.jpg': '',
'/photos/raw2/image.jpg': '',
'/photos/folder/raw/image.jpg': '',
'/photos/crawl/image.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
options.excludePatterns = ['**/raw/**'];
options.recursive = true;
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg', '/photos/raw2/image.jpg', '/photos/crawl/image.jpg']);
});
it('should crawl multiple paths', async () => {
mockfs({
'/photos/image1.jpg': '',
'/images/image2.jpg': '',
'/albums/image3.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/', '/images/', '/albums/'];
options.recursive = false;
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image1.jpg', '/images/image2.jpg', '/albums/image3.jpg']);
});
it('should crawl a single path without trailing slash', async () => {
mockfs({
'/photos/image.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should crawl a single path without recursion', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/subfolder/image1.jpg': '',
'/photos/subfolder/image2.jpg': '',
'/image1.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should crawl a single path with recursion', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/subfolder/image1.jpg': '',
'/photos/subfolder/image2.jpg': '',
'/image1.jpg': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
options.recursive = true;
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers([
'/photos/image.jpg',
'/photos/subfolder/image1.jpg',
'/photos/subfolder/image2.jpg',
]);
});
it('should filter file extensions', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/image.txt': '',
'/photos/1': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers(['/photos/image.jpg']);
});
it('should include photo and video extensions', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/image.jpeg': '',
'/photos/image.heic': '',
'/photos/image.heif': '',
'/photos/image.png': '',
'/photos/image.gif': '',
'/photos/image.tif': '',
'/photos/image.tiff': '',
'/photos/image.webp': '',
'/photos/image.dng': '',
'/photos/image.nef': '',
'/videos/video.mp4': '',
'/videos/video.mov': '',
'/videos/video.webm': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/', '/videos/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers([
'/photos/image.jpg',
'/photos/image.jpeg',
'/photos/image.heic',
'/photos/image.heif',
'/photos/image.png',
'/photos/image.gif',
'/photos/image.tif',
'/photos/image.tiff',
'/photos/image.webp',
'/photos/image.dng',
'/photos/image.nef',
'/videos/video.mp4',
'/videos/video.mov',
'/videos/video.webm',
]);
});
it('should check file extensions without case sensitivity', async () => {
mockfs({
'/photos/image.jpg': '',
'/photos/image.Jpg': '',
'/photos/image.jpG': '',
'/photos/image.JPG': '',
'/photos/image.jpEg': '',
'/photos/image.TIFF': '',
'/photos/image.tif': '',
'/photos/image.dng': '',
'/photos/image.NEF': '',
});
const options = new CrawlOptionsDto();
options.pathsToCrawl = ['/photos/'];
const paths: string[] = await crawlService.crawl(options);
expect(paths).toIncludeSameMembers([
'/photos/image.jpg',
'/photos/image.Jpg',
'/photos/image.jpG',
'/photos/image.JPG',
'/photos/image.jpEg',
'/photos/image.TIFF',
'/photos/image.tif',
'/photos/image.dng',
'/photos/image.NEF',
]);
});
afterEach(() => {
mockfs.restore();
});
});

View File

@@ -1,47 +0,0 @@
import { CrawlOptionsDto } from 'src/cores/dto/crawl-options-dto';
import { ACCEPTED_FILE_EXTENSIONS } from '../cores';
import { glob } from 'glob';
import * as fs from 'fs';
export class CrawlService {
public async crawl(crawlOptions: CrawlOptionsDto): Promise<string[]> {
const pathsToCrawl: string[] = crawlOptions.pathsToCrawl;
const directories: string[] = [];
const crawledFiles: string[] = [];
for await (const currentPath of pathsToCrawl) {
const stats = await fs.promises.stat(currentPath);
if (stats.isFile() || stats.isSymbolicLink()) {
crawledFiles.push(currentPath);
} else {
directories.push(currentPath);
}
}
let searchPattern: string;
if (directories.length === 1) {
searchPattern = directories[0];
} else if (directories.length === 0) {
return crawledFiles;
} else {
searchPattern = '{' + directories.join(',') + '}';
}
if (crawlOptions.recursive) {
searchPattern = searchPattern + '/**/';
}
searchPattern = `${searchPattern}/*.{${ACCEPTED_FILE_EXTENSIONS.join(',')}}`;
const globbedFiles = await glob(searchPattern, {
nocase: true,
nodir: true,
ignore: crawlOptions.excludePatterns,
});
const returnedFiles = crawledFiles.concat(globbedFiles);
returnedFiles.sort();
return returnedFiles;
}
}

View File

@@ -1,2 +0,0 @@
export * from './upload.service';
export * from './crawl.service';

View File

@@ -1,95 +0,0 @@
import { SessionService } from './session.service';
import mockfs from 'mock-fs';
import fs from 'node:fs';
import yaml from 'yaml';
import { LoginError } from '../cores/errors/login-error';
const mockPingServer = jest.fn(() => Promise.resolve({ data: { res: 'pong' } }));
const mockUserInfo = jest.fn(() => Promise.resolve({ data: { email: 'admin@example.com' } }));
jest.mock('../api/open-api', () => {
return {
__esModule: true,
...jest.requireActual('../api/open-api'),
UserApi: jest.fn().mockImplementation(() => {
return { getMyUserInfo: mockUserInfo };
}),
ServerInfoApi: jest.fn().mockImplementation(() => {
return { pingServer: mockPingServer };
}),
};
});
describe('SessionService', () => {
let sessionService: SessionService;
beforeAll(() => {
// Write a dummy output before mock-fs to prevent some annoying errors
console.log();
});
beforeEach(() => {
const configDir = '/config';
sessionService = new SessionService(configDir);
});
it('should connect to immich', async () => {
mockfs({
'/config/auth.yml': 'apiKey: pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg\ninstanceUrl: https://test/api',
});
await sessionService.connect();
expect(mockPingServer).toHaveBeenCalledTimes(1);
});
it('should error if no auth file exists', async () => {
mockfs();
await sessionService.connect().catch((error) => {
expect(error.message).toEqual('No auth file exist. Please login first');
});
});
it('should error if auth file is missing instance URl', async () => {
mockfs({
'/config/auth.yml': 'foo: pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg\napiKey: https://test/api',
});
await sessionService.connect().catch((error) => {
expect(error).toBeInstanceOf(LoginError);
expect(error.message).toEqual('Instance URL missing in auth config file /config/auth.yml');
});
});
it('should error if auth file is missing api key', async () => {
mockfs({
'/config/auth.yml': 'instanceUrl: pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg\nbar: https://test/api',
});
await sessionService.connect().catch((error) => {
expect(error).toBeInstanceOf(LoginError);
expect(error.message).toEqual('API key missing in auth config file /config/auth.yml');
});
});
it('should create auth file when logged in', async () => {
mockfs();
await sessionService.keyLogin('https://test/api', 'pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg');
const data: string = await fs.promises.readFile('/config/auth.yml', 'utf8');
const authConfig = yaml.parse(data);
expect(authConfig.instanceUrl).toBe('https://test/api');
expect(authConfig.apiKey).toBe('pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg');
});
it('should delete auth file when logging out', async () => {
mockfs({
'/config/auth.yml': 'apiKey: pNussssKSYo5WasdgalvKJ1n9kdvaasdfbluPg\ninstanceUrl: https://test/api',
});
await sessionService.logout();
await fs.promises.access('/auth.yml', fs.constants.F_OK).catch((error) => {
expect(error.message).toContain('ENOENT');
});
});
afterEach(() => {
mockfs.restore();
});
});

View File

@@ -1,81 +0,0 @@
import fs from 'node:fs';
import yaml from 'yaml';
import path from 'node:path';
import { ImmichApi } from '../api/client';
import { LoginError } from '../cores/errors/login-error';
export class SessionService {
readonly configDir: string;
readonly authPath!: string;
private api!: ImmichApi;
constructor(configDir: string) {
this.configDir = configDir;
this.authPath = path.join(this.configDir, 'auth.yml');
}
public async connect(): Promise<ImmichApi> {
await fs.promises.access(this.authPath, fs.constants.F_OK).catch((error) => {
if (error.code === 'ENOENT') {
throw new LoginError('No auth file exist. Please login first');
}
});
const data: string = await fs.promises.readFile(this.authPath, 'utf8');
const parsedConfig = yaml.parse(data);
const instanceUrl: string = parsedConfig.instanceUrl;
const apiKey: string = parsedConfig.apiKey;
if (!instanceUrl) {
throw new LoginError('Instance URL missing in auth config file ' + this.authPath);
}
if (!apiKey) {
throw new LoginError('API key missing in auth config file ' + this.authPath);
}
this.api = new ImmichApi(instanceUrl, apiKey);
await this.ping();
return this.api;
}
public async keyLogin(instanceUrl: string, apiKey: string): Promise<ImmichApi> {
this.api = new ImmichApi(instanceUrl, apiKey);
// Check if server and api key are valid
const { data: userInfo } = await this.api.userApi.getMyUserInfo().catch((error) => {
throw new LoginError(`Failed to connect to the server: ${error.message}`);
});
console.log(`Logged in as ${userInfo.email}`);
if (!fs.existsSync(this.configDir)) {
// Create config folder if it doesn't exist
fs.mkdirSync(this.configDir, { recursive: true });
}
fs.writeFileSync(this.authPath, yaml.stringify({ instanceUrl, apiKey }));
console.log('Wrote auth info to ' + this.authPath);
return this.api;
}
public async logout(): Promise<void> {
if (fs.existsSync(this.authPath)) {
fs.unlinkSync(this.authPath);
console.log('Removed auth file ' + this.authPath);
}
}
private async ping(): Promise<void> {
const { data: pingResponse } = await this.api.serverInfoApi.pingServer().catch((error) => {
throw new Error(`Failed to connect to the server: ${error.message}`);
});
if (pingResponse.res !== 'pong') {
throw new Error('Unexpected ping reply');
}
}
}

Some files were not shown because too many files have changed in this diff Show More