immich/server/src/services
Eli Gao 5c80e8734b
feat: original-sized previews for non-web-friendly images (#14446)
* feat(server): extract full-size previews from RAW images

* feat(web): load fullsize preview for RAW images when zoomed in

* refactor: tweaks for code review

* refactor: rename "converted" preview/assets to "fullsize"

* feat(web/server): fullsize preview for non-web-friendly images

* feat: tweaks for code review

* feat(server): require ASSET_DOWNLOAD premission for fullsize previews

* test: fix types and interfaces

* chore: gen open-api

* feat(server): keep only essential exif in fullsize preview

* chore: regen openapi

* test: revert unnecessary timeout

* feat: move full-size preview config to standalone entry

* feat(i18n): update en texts

* fix: don't return fullsizePath when disabled

* test: full-size previews

* test(web): full-size previews

* chore: make open-api

* feat(server): redirect to preview/original URL when fullsize thumbnail not available

* fix(server): delete fullsize preview image on thumbnail regen after fullsize preview turned off

* refactor(server): AssetRepository.deleteFiles with Kysely

* fix(server): type of MediaRepository.writeExif

* minor simplification

* minor styling changes and condensed wording

* simplify

* chore: reuild open-api

* test(server): fix media.service tests

* test(web): fix photo-viewer test

* fix(server):  use fullsize image when requested

* fix file path extension

* formatting

* use fullsize when zooming back out or when "display original photos" is enabled

* simplify condition

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-03-31 13:24:28 -04:00
..
activity.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
activity.service.ts fix: activity types (#15368) 2025-01-15 23:31:26 -05:00
album.service.spec.ts feat: improve performance for GET /api/album & /api/album/:id (#17124) 2025-03-31 11:28:41 +00:00
album.service.ts feat: improve performance for GET /api/album & /api/album/:id (#17124) 2025-03-31 11:28:41 +00:00
api-key.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
api-key.service.ts refactor: api key spec to use factories (#16776) 2025-03-10 12:04:35 -04:00
api.service.ts chore: finish migrating eslint config files; bump unicorn (#17200) 2025-03-31 12:18:25 +01:00
asset-media.service.spec.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
asset-media.service.ts feat: original-sized previews for non-web-friendly images (#14446) 2025-03-31 13:24:28 -04:00
asset.service.spec.ts refactor(server): bulk update exif (#17109) 2025-03-25 21:24:24 +00:00
asset.service.ts refactor(server): bulk update exif (#17109) 2025-03-25 21:24:24 +00:00
audit.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
audit.service.ts chore: removed unused endpoint (#16167) 2025-02-17 13:07:50 -06:00
auth.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
auth.service.ts fix: 🍪 packages confusion (#16735) 2025-03-09 21:03:10 -05:00
backup.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
backup.service.ts chore: finish migrating eslint config files; bump unicorn (#17200) 2025-03-31 12:18:25 +01:00
base.service.ts feat: kysely migrations (#17198) 2025-03-29 09:26:24 -04:00
cli.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
cli.service.ts refactor: migrate user repository to kysely (#15296) 2025-01-13 20:30:34 -05:00
database.service.spec.ts refactor: database repository (#16593) 2025-03-06 13:33:24 -05:00
database.service.ts refactor: database repository (#16593) 2025-03-06 13:33:24 -05:00
download.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
download.service.ts refactor: download service (#16600) 2025-03-05 08:38:23 -05:00
duplicate.service.spec.ts fix(server): skip stacked assets in duplicate detection (#16380) 2025-02-27 10:16:13 -06:00
duplicate.service.ts fix(server): skip stacked assets in duplicate detection (#16380) 2025-02-27 10:16:13 -06:00
index.ts refactor: api key spec to use factories (#16776) 2025-03-10 12:04:35 -04:00
job.service.spec.ts feat(web): exposed a job to manually trigger database backup procedures (#16622) 2025-03-11 11:30:43 +00:00
job.service.ts feat(web): exposed a job to manually trigger database backup procedures (#16622) 2025-03-11 11:30:43 +00:00
library.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
library.service.ts refactor(server): use constant for external library batch size (#16685) 2025-03-07 11:29:06 +00:00
map.service.spec.ts refactor: use factory and kysely types for partner repository (#16812) 2025-03-11 16:29:56 -04:00
map.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
media.service.spec.ts feat: original-sized previews for non-web-friendly images (#14446) 2025-03-31 13:24:28 -04:00
media.service.ts feat: original-sized previews for non-web-friendly images (#14446) 2025-03-31 13:24:28 -04:00
memory.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
memory.service.ts feat: schema diff sql tools (#17116) 2025-03-28 10:40:09 -04:00
metadata.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
metadata.service.ts feat(server): read Android and Sony video camera make/model (#16678) 2025-03-09 22:20:11 -05:00
notification.service.spec.ts feat: use my.immich.app for externalDomain fallback (#17209) 2025-03-31 12:08:41 +01:00
notification.service.ts feat: use my.immich.app for externalDomain fallback (#17209) 2025-03-31 12:08:41 +01:00
partner.service.spec.ts refactor: use factory and kysely types for partner repository (#16812) 2025-03-11 16:29:56 -04:00
partner.service.ts refactor: better types for getList and getDeletedAfter (#16926) 2025-03-17 15:32:12 -04:00
person.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
person.service.ts fix: MAX_PARAMETERS_EXCEEDED error during person cleanup job (#17222) 2025-03-31 11:30:56 +00:00
search.service.spec.ts feat(ml): better multilingual search with nllb models (#13567) 2025-03-31 11:06:57 -04:00
search.service.ts feat(ml): better multilingual search with nllb models (#13567) 2025-03-31 11:06:57 -04:00
server.service.spec.ts refactor: test mocks (#16008) 2025-02-11 00:47:42 +01:00
server.service.ts refactor: repositories (#16036) 2025-02-11 14:08:13 -05:00
session.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
session.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
shared-link.service.spec.ts feat: use my.immich.app for externalDomain fallback (#17209) 2025-03-31 12:08:41 +01:00
shared-link.service.ts feat: use my.immich.app for externalDomain fallback (#17209) 2025-03-31 12:08:41 +01:00
smart-info.service.spec.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
smart-info.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
stack.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
stack.service.ts refactor: migrate stack repo to kysely (#15440) 2025-01-21 09:36:28 -06:00
storage-template.service.spec.ts fix(server): double extension when filename has uppercase extension (#17226) 2025-03-31 09:16:04 -05:00
storage-template.service.ts fix(server): double extension when filename has uppercase extension (#17226) 2025-03-31 09:16:04 -05:00
storage.service.spec.ts refactor: test mocks (#16008) 2025-02-11 00:47:42 +01:00
storage.service.ts feat: schema diff sql tools (#17116) 2025-03-28 10:40:09 -04:00
sync.service.spec.ts refactor: use factory and kysely types for partner repository (#16812) 2025-03-11 16:29:56 -04:00
sync.service.ts feat: sync assets, partner assets, exif, and partner exif (#16658) 2025-03-10 12:05:39 -04:00
system-config.service.spec.ts feat: original-sized previews for non-web-friendly images (#14446) 2025-03-31 13:24:28 -04:00
system-config.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
system-metadata.service.spec.ts refactor: test mocks (#16008) 2025-02-11 00:47:42 +01:00
system-metadata.service.ts refactor: service dependencies (#13108) 2024-10-02 10:54:35 -04:00
tag.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
tag.service.ts refactor: migration tag repository to kysely (#16398) 2025-03-03 18:41:19 +00:00
timeline.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
timeline.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
trash.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
trash.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
user-admin.service.spec.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00
user-admin.service.ts refactor(server): narrow auth types (#16066) 2025-02-12 15:23:08 -05:00
user.service.spec.ts refactor: better types for getList and getDeletedAfter (#16926) 2025-03-17 15:32:12 -04:00
user.service.ts refactor: better types for getList and getDeletedAfter (#16926) 2025-03-17 15:32:12 -04:00
version.service.spec.ts refactor: repository mocks (#16785) 2025-03-10 16:52:44 -04:00
version.service.ts feat: schema diff sql tools (#17116) 2025-03-28 10:40:09 -04:00
view.service.spec.ts refactor: test mocks (#16008) 2025-02-11 00:47:42 +01:00
view.service.ts refactor: last repository (#16042) 2025-02-11 22:15:56 +00:00