* feat(server): Avoid face matching with people born after file creation date (#4743)
* lint
* add medium tests for facial recognition
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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>
we can't run specifically the handleUserDeleteCheck tests concurrently due to one of the tests modifying the config in the shared database
if run concurrently you can get race conditions where the other tests pick up the change, even with resetting the config in the beforeEach
therefore the test that checks a delete actually happens, fails
there are many ways to solve this, disabling concurrency for the suite, forcing sequential tests for just handleUserDeleteCheck, increasing the delete test deletedAt to more than the custom duration tests deleteDelay
I applied all three of these. You could also force all the user tests to run in their own databases, but that feels overkill
* fix(server) optimize number of sql calls for GET /api/albums
remove unnecessary join for getMetadataForIds
remove separate call to getLastUpdatedAssetForAlbumId
* fix(server) remove unnecessary getLastUpdatedAssetForAlbumId call for GET /api/album/:id
also remove getLastUpdatedAssetForAlbumId query as it is no longer referenced
* fix(server): correct lastModifiedAssetTimestamp return type + formatting and typing
* chore(server): address type issue with tests found via npm:check
tests & lint still pass before this commit.
* use exiftool for file date metadata
* handle tag not existing in exifinfo (?)
* update medium tests
* fix typo
* set file size too
* set file size only if undefined
* ci: print out typeorm generation changes
* feat: sync implementation for the user entity
wip
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* feat: added ability to mark people as favorite, which get sorted to the front of the people list
* feat(server): added unit test for favorite people
* feat(server): refactored for better readability
* fixed person service unit tests
* fixed open-api and sql checks
* fixed bad codegen and removed unnecessary type assertion again
* chore: clean up
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* 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>
* 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>
* 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
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.