Commit graph

888 commits

Author SHA1 Message Date
Jonathan Jogenfors
7bea3eca37 fix: lint 2023-10-09 15:19:54 +02:00
Jonathan Jogenfors
46d4626ac4 Merge branch 'main' of https://github.com/immich-app/immich into fix/library-scanning 2023-10-09 15:17:50 +02:00
Jonathan Jogenfors
c111f11192 Merge branch 'main' of https://github.com/immich-app/immich into fix/library-scanning 2023-10-09 15:17:21 +02: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
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
Jonathan Jogenfors
81009c17bf
fix(server): use fileCreatedAt in buckets (#4354) 2023-10-05 08:26:42 -05: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
Alex The Bot
81d51fbd7e Version v1.81.0 2023-10-03 20:48:23 +00: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
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
Alex The Bot
66e860a08e Version v1.80.0 2023-10-02 14:47:21 +00:00
Jonathan Jogenfors
3172c341e0
chore(server): bump exiftool-vendored to 23.1.0 (#4302)
* chore: bump exiftool-vendored

* fix: correct version

* chore: bump exiftool-vendored.pl

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-10-02 08:54:43 -04:00
Daniel Dietzler
10d10d9021
chore(server): unit tests for metadata service (#4280)
* unit tests for metadata service

* better test descriptions
2023-09-29 17:25:45 -04:00
Jason Rasmussen
3e73cfb71a
fix(server): handle number lists in metadata extraction (#4273) 2023-09-29 11:42:33 -04:00
Daniel Dietzler
521436dd21
feat(server): Add week numbers for templating (#4263)
* add week numbers as template option

* generate api

* fix tests

* change example date to show week padding

* change example date to immich birthday
2023-09-28 13:47:31 -04:00
Mert
c145963b02
fix(server): always disable two-pass mode for video thumbnails (#4258)
* always disable two-pass mode for thumbnails

* add regression test

* added bitrate constraint to config mock
2023-09-28 08:29:31 -04:00
Russell Tan
69c23aa3ec
fix(server): Exclude archived assets from search-explore #4041 (#4122)
* Exclude archived assets from search-explore  #4041

* Update test to properly expect an empty array with archived items

* typesense changes wip

* Add isArchived filter to default search filters

* Bump assets typesense schema version

* fix(server): sync bug for bulk asset update

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-09-27 21:38:55 -04:00
Daniel Dietzler
0a22e64799
refactor(server): merge facial-recognition and person (#4237)
* move facial recognition service into person service

* merge face repository and person repository

* fix imports
2023-09-27 16:46:46 -04:00
Jason Rasmussen
c3d6d69262
fix(server): live photo linking (#4253) 2023-09-27 20:32:58 +00:00
Jason Rasmussen
7cb78ed972
fix(server): android motion photo (#4254) 2023-09-27 20:27:08 +00:00
Daniel Dietzler
cc70f5f6a0
fix(server): Thumbnail migration creating unnecessary directories (#4251)
* fix: during migration folders will be created before checking if needed

* refactor
2023-09-27 15:29:07 -04:00
David Johnson
85efbc6984
fix(server): handle NaN in metadata extraction (#4221)
Fallback to null in event of invalid number.
2023-09-27 15:17:18 -04:00
Daniel Dietzler
3a44e8f8d3
refactor(server): Move metadata extraction to domain (#4243)
* use storageRepository in metadata extraction

* move metadata extraction processor to domain

* cleanup infra/domain

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-09-27 18:44:51 +00:00
Jason Rasmussen
89cf1dcdce
feat(server): improve library scanning 2023-09-26 21:38:41 -04:00
Daniel Dietzler
9bada51d56
feat(server, web)!: Move reverse geocoding settings to the UI (#4222)
* feat: reverse geocoding settings

* chore: open api

* re-init geocoder if precision has been updated

* update docs

* chore: update verbiage

* fix: re-init logic

* fix: reset to default

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-09-26 14:03:57 +07:00
Jason Rasmussen
7bc6e9ef64
refactor(server): person thumbnail job (#4233)
* refactor(server): person thumbnail job

* fix(server): set feature photo
2023-09-26 14:03:22 +07:00
Jason Rasmussen
ee0e131efa
fix(server): tests (#4229) 2023-09-25 22:17:53 -04:00
Mert
56cf9464af
fix(server): use srgb pipeline for srgb images (#4101)
* added color-related exif fields

* remove metadata check, conditional pipe colorspace

* check exif metadata for srgb

* added migration

* updated e2e fixture

* uncased srgb check, search substrings

* extracted exif logic into separate function

* handle images with no bit depth or color metadata

* added unit tests
2023-09-25 19:18:47 -04:00
Jonathan Jogenfors
9676412875
fix: cli import (#4224)
* fix: allow import of assets

* fix: allow deletion of read only assets
2023-09-25 19:04:30 -04:00
Daniel Dietzler
3053cbd4c8
chore(server): Store generated files (thumbnails, encoded video) in subdirectories (#4112)
* save thumbnails in subdirectories

* migration job, migrate assets and face thumbnails

* fix tests

* directory depth of two instead of three

* cleanup empty dirs after migration

* clean up empty dirs after migration, migrate people without assetId

* add job card for new migration job

* fix removeEmptyDirs race condition because of missing await

* cleanup empty directories after asset deletion

* move ensurePath to storage core

* rename jobs

* remove unnecessary property of IEntityJob

* use updated person getById, minor refactoring

* ensure that directory cleanup doesn't interfere with migration

* better description for job in ui

* fix remove directories when migration is done

* cleanup empty folders at start of migration

* fix: actually persist concurrency setting

* add comment explaining regex

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-09-25 11:07:21 -04:00
Jason Rasmussen
07069c3b1e
fix(server): android live motion (#4218) 2023-09-25 09:42:23 -04:00
Alex
3bef456923
fix(server): metadata extraction error (#4210) 2023-09-25 14:45:26 +07:00