Commit Graph

2766 Commits (845b0f2073437992e16dba25420d40e2e53941a0)

Author SHA1 Message Date
Min Idzelis a5ed453929
chore: unused deps (#19256)
remove joi
2025-06-20 00:30:23 +07:00
github-actions 3434544864 chore: version v1.135.1 2025-06-19 17:37:39 +07:00
Zack Pollard fe91b44ab9
fix: people ordering incorrect (#19298) 2025-06-19 16:05:03 +07:00
Jason Rasmussen 910661e75c
chore: remove unused mocks (#19299) 2025-06-19 10:35:09 +07:00
Mert f99c6feac5
fix(server): unset prewarm dim parameter (#19271)
unset prewarm dim
2025-06-19 09:04:52 +07:00
Mert 49ed212af8
fix(server): drop vector indices before updating extension (#19283)
drop indices before updating
2025-06-19 09:03:40 +07:00
SGT 0a9a520ed2
feat(server): sql-tools support for class level composite fk (#19242)
* feat: support for class level composite fk

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-06-18 14:30:39 +07:00
Jason Rasmussen e0144b4ece
feat: backfill album users (#19234) 2025-06-18 10:48:11 +07:00
github-actions 65e8d75e82 chore: version v1.135.0 2025-06-18 13:45:07 +07:00
Jason Rasmussen 35280b94cc
refactor: sync service (#19225) 2025-06-17 16:06:40 +07:00
Zack Pollard 749f63e4a0
fix: partner asset and exif sync backfill (#19224)
* fix: partner asset sync backfill

* fix: add partner asset exif backfill

* ci: output content of files that have changed
2025-06-17 09:56:54 +07:00
shenlong db68d1af9b
feat(server): add duration to SyncAssetV1 (#19196)
add duration to SyncAssetV1

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-17 08:09:50 +07:00
renovate[bot] 0d3efe229d
chore(deps): update dependency @types/node to ^22.15.31 (#19220)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-17 11:57:29 +07:00
Mert 7347f64958
feat(server): lru cache for query embeddings (#19181) 2025-06-16 11:03:49 +07:00
SGT 77a362f0c0
chore(server): replace usage of deprecated orderBy and remove unnecessary instruction (#19072)
* replace usage of deprecated orderBy instruction
remove unnecesarry extra order instruction
update e2e test

* rename symbols
2025-06-13 15:18:44 +07:00
Daimolean 004c2f2496
fix(web): OAuth quota size (#18526)
fix(server): oauth quota size
2025-06-13 10:57:29 +07:00
Michael Anderson de756d9497
fix: skip locked photos during duplicate scan. (#19105)
Skip locked photos during duplicate scan.
2025-06-13 10:50:56 +07:00
Min Idzelis 103b83d2d6
feat: devcontainers (#18007)
* feat: devcontainers

* Update link

* Update docs

* Extend existing dockerfiles/composes

* Add jre for make open-api

* Add jre for make open-api

* shellcheck

* git doesn't like bind mount within git repo

* group tasks

* Missing sudo

* Review comments

* tweak for codespaces

* typo

* Lots of docs

* close <br>

* Specify ENV vars for database

* doc errors

* fix broken doc link

* Simplify devcontainers scripts/startup

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-06-13 14:49:21 +07:00
Jason Rasmussen c9bcae813b
feat: duplicate delete groups api (#19142) 2025-06-12 17:48:43 +07:00
Alex 176656b5f4
feat: pass filename in body on asset upload (#19138)
* chore: get upload filename from request body

* use info from request body
2025-06-12 17:31:00 +07:00
Jason Rasmussen 5cd186d3d4
refactor: duplicate queries (#19136) 2025-06-12 14:23:02 +07:00
Elliot fdc7a154c0
fix(server): add basic auth support (#16740)
* "add basic auth support"

* "fix format"

* fix: lint

---------

Co-authored-by: Elliot <elliot@elliotbrandwein.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-06-12 02:14:03 +07:00
nosajthenitram e5219f1f31
feat(web): Added admin user config to user settings (#15380)
* feat(web): Added admin user config to user settings

* feat (web) - cleaned up the files and added tests

* feat (web) - added missing files

* feat (web) - updated per review comments

* feat (web) - e2e admin command test failures
2025-06-12 02:11:13 +07:00
Zack Pollard 08e2b22db8
fix: album comment count including trashed assets (#19117) 2025-06-11 11:50:26 +07:00
Zack Pollard 5dd3a6e13f
fix: don't show comments or likes for trashed assets (#19113) 2025-06-11 14:36:00 +07:00
Zack Pollard bedcf50196
fix: count album comments and likes correctly (#19114) 2025-06-11 13:49:13 +07:00
Jonathan Gilbert e88bd74fd2
feat(server): add memories statistics resource (#19035) 2025-06-10 09:47:46 +07:00
renovate[bot] c0ed2210b4
fix(deps): update dependency nodemailer to v7 (#19063)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 16:29:04 +07:00
renovate[bot] 160ca28253
fix(deps): update dependency bcrypt to v6 (#19058)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:20:49 +07:00
renovate[bot] 360f68b86b
chore(deps): update testcontainers-node monorepo to v11 (major) (#19056)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:19:20 +07:00
renovate[bot] bf212bf235
fix(deps): update dependency react-email to v4 (#19065)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 16:19:05 +07:00
renovate[bot] 16f83c0aa9
chore(deps): update dependency eslint-plugin-unicorn to v59 (#19048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:26:32 +07:00
xCJPECKOVERx 14d785cec9
feat(server): Add album filter to search (#18985)
* - updated dtos
- added inAlbums to search builder
- only check isNotInAlbum if albumIds is blank/empty

* - consider inAlbums as OR

* - make open-api-dart

* - lint & format

* - remove inAlbums groupBy clause

* - merge main open-api

* - make open-api

* - inAlbums filter AND instead of OR
2025-06-09 11:11:43 +07:00
renovate[bot] 3fb2c3a7bf
chore(deps): update dependency @types/node to ^22.15.29 (#19043)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 14:02:59 +07:00
Jonathan Gilbert fb4be6e231
feat(server): add /search/statistics resource (#18885) 2025-06-06 21:12:53 +07:00
Dag Stuan b46e066cc2
feat(web): add a user setting for default album sort order. (#18950)
* Add a user setting for default album sort order.

Add a user setting under "Features" to control the initial sort order
when creating an album. Default to the existing behavior of
"newest first".

* chore: patch openapi

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-05 23:31:34 +07:00
Min Idzelis 55f4e93456
fix: regression: sort day by fileCreatedAt again (#18732)
* fix: regression: sort day by fileCreatedAt again

* lint

* e2e test

* inline function

* e2e

* Address comments. Drop dayGroup and timezone in favor of localOffsetMinutes

* lint and some api-doc

* lint, more api-doc

* format

* Move minutes to fractional hours

* make sql

* merge/conflict

* merge fallout, review comments

* spelling

* drop offset from returned date

* move description into decorator where possible, regen api
2025-06-05 20:56:32 +07:00
Brandon Wees 86f64fd0bf
fix(server): default current users to an onboarded state migration (#18929)
* on database migration, assume every user is onboarded

* dont overwrite key if conflict in migration
2025-06-04 21:33:23 +07:00
Robin Brisa a26d703335
feat(web): display number of likes in asset viewer (#18911)
* feat: display number of likes

* fix: properly decrement like count on unlike

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

* chore: pr feedback

* chore: updated related test

* chore: formatter run

* chore: force numberOfLikes to null in album context to pass lint

* chore: open-api updated

* fix: use undefined, not null

* styling tweaks

* chore: updated sql

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-04 12:41:50 +07:00
shenlong 70b9a4c8f1
chore: add missing api properties on sync enums (#18916)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-06-04 08:21:34 +07:00
Jin Xuan 3d3e5dc547
chore(server): cleanup unused query parameters in time bucket (#18893)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-03 19:29:11 +07:00
Alex 6b9233c71a
fix(deps): revert update typescript-projects (#18908) 2025-06-03 21:13:56 +07:00
renovate[bot] 393e8d50b2
fix(deps): update typescript-projects (#18889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 11:39:55 +07:00
Brandon Wees 74438f5bd8
feat(web): improved user onboarding (#18782)
* wip

* added user metadata key

* wip

* restructure onboarding system and add initial locale

* update language card and fix translation updating

* remove prints

* new card formattings

* fix cursed unmount effect

* add OAuth route onboarding

* remove required admin auth for onboarding

* delete the hotwire button

* update open-api files

* delete import

* fix failing oauth onboarding fields

* fix e2e test

* fix web e2e test

* add onboarding to user registration e2e test

* remove todo

this was a holdover during dev and didn't get deleted

* fix server small tests

* use onDestroy to save settings rather than a bind:this

* change to false for isOnboarded

* fix other auth small test

* provide type annotation in user factory metadata field

* remove onboardingCompelted from UserDto

* move translations to onboarding steps array and mark as derived so they update

* break language selector out into its own component as per @danieldietzler suggestion

* remove hello header on card

* fix flixkering on server privacy card

* label/id fixes

* openapi

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-06-02 21:09:13 +07:00
Mert fa22e865a4
fix(server): tighten asset visibility (#18699)
* tighten visibility

* update sql

* elevated access util function

* fix potential sync issue

* include in user stats

* include hidden assets in size usage

* filter visibility in search duplicates query

* stack visibility
2025-06-02 09:33:08 +07:00
Daimolean c89ac5b5e5
fix(server): cannot share album to owner (#18802)
* fix(server): create shared album

* add test

* trigger ci

* resolve conversation
2025-06-01 20:58:07 +07:00
renovate[bot] 0711a9006f
chore(deps): update dependency @types/express to v5 (#18818)
* chore(deps): update dependency @types/express to v5

* fix: properly handle promise

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-31 15:31:36 +07:00
Nicholas 3a5fed99e1
fix(server): rename `android-links` api endpoint to `apk-links` (#18790)
* remove auth from endpoint and change android to apk

* add auth back to `apk-links`
2025-05-31 00:27:55 +07:00
Daniel Dietzler 9d04853b34
fix: oauth (#18725) 2025-05-30 22:04:52 +07:00
shenlong b854a3dd47
feat(server): add originalFileName to SyncAssetV1 (#18767)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-30 09:56:35 +07:00
Nicholas aebd68e24e
fix: change `URL` to `Url` in the Obtainium apk links api endpoint (#18764)
change `URL` to `Url`
2025-05-30 00:50:09 +07:00
Daimolean 6f39a706b2
fix: missing permissions and optional update (#18735)
* fix: missing permissions

* fix: test
2025-05-29 08:48:44 +07:00
Nicholas 8ea40973a7
feat(server): apk links API endpoint for Obtainium Android mobile-server version sync (#18700) 2025-05-28 23:45:49 +07:00
Mert be247395db
fix(server): deadlock when fetching vector count (#18728)
move row count query
2025-05-28 17:23:49 +07:00
Brandon Wees 78224961d1
feat(web): make google cast opt in (#18514)
* add setting switch

this isnt bound to anything yet

* make google casting opt-in

* doc updates

* lint docs

* remove unneeded translation items

* update mobile openai defs

* fix failing test

we need to mock user prefs since CastButton uses it
2025-05-28 15:57:36 +07:00
Daimolean b054e9dc2c
feat(web): granular api access controls (#18179)
* feat: api access control

* feat(web): granular api access controls

* fix test

* fix e2e test

* fix: lint

* pr feedback

* merge main + new design

* finalize styling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-28 13:16:43 +07:00
Sergey Katsubo 9677eb37e1
feat(server): log failed healthchecks to server container stderr in verbose mode (#18709)
* Log failed healthchecks to server container stderr in verbose mode

* Formatting: indentation, semicolons

* Readability: less escaping
2025-05-28 12:13:04 +07:00
Mert 3f08768854
chore: vchord 0.4.1 (#18588)
* vchord 0.4.x

* oops

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-28 14:38:52 +07:00
renovate[bot] a40d35555f
chore(deps): update typescript-projects (#18697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 13:09:44 +07:00
github-actions 58ae77ec92 chore: version v1.134.0 2025-05-27 16:47:49 +07:00
Mert 4794a1a092
fix(server): handle startup reindexing after failed model change (#18688)
drop constraint
2025-05-27 11:36:30 +07:00
renovate[bot] 724a081bb5
fix(deps): update typescript-projects (#18681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 18:00:45 +07:00
Mert e2720e85bb
fix(server): handle period in database name (#18590) 2025-05-27 16:05:13 +07:00
renovate[bot] a3404cf420
fix(deps): update typescript-projects (#18671)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-27 17:00:29 +07:00
Daniel Dietzler 5268dc4ee2
feat: version check endpoint (#18572) 2025-05-27 09:33:23 +07:00
Daimolean 79d760ccd7
fix(server): reverse isTrash field (#18665) 2025-05-27 16:22:09 +07:00
renovate[bot] 93e53f6d74
chore(deps): update node.js to v22.16.0 (#18662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 12:13:30 +07:00
renovate[bot] d8f0a69dc8
chore(deps): update node (#18661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 12:12:37 +07:00
Alex 911c877e72
feat: clean up memory with locked assets (#18532) 2025-05-24 07:31:25 +07:00
github-actions 54bafccbf9 chore: version v1.133.1 2025-05-23 17:37:44 +07:00
Mert bc8e08f5e8
feat: lower disk usage during migration (#18440)
feat: less disk usage during migration
2025-05-22 08:41:10 +07:00
Mert 58c1b92816
fix(server): missing button for duplicate detection not working (#18433)
qualify column
2025-05-21 21:27:28 +07:00
github-actions 55adc136c8 chore: version v1.133.0 2025-05-21 19:47:42 +07:00
Jason Rasmussen cd288533a1
feat: sync albums and album users (#18377) 2025-05-21 14:35:32 +07:00
Mert bc906f7343
chore: specify vchord version in ci (#18423) 2025-05-21 13:41:14 +07:00
Mert 760b08506a
chore: tighten vchord version range (#18420)
guard minor version
2025-05-21 13:03:53 +07:00
Mert 493b9b7a54
fix(server): use preview path for person thumbnails from videos (#18419)
use preview path for person thumbnails from videos
2025-05-21 11:15:30 +07:00
Mert a02fe89ec9
fix(server): drop old extension (#18400) 2025-05-21 09:53:40 +07:00
renovate[bot] 98e998e814
fix(deps): update typescript-projects (#18402)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-21 11:42:41 +07:00
renovate[bot] b83b28cd73
fix(deps): update typescript-projects (#18390)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-20 22:40:30 +07:00
Alex bdf19ce331
fix: TimelineAsset visibility (#18395)
* fix: TimelineAsset visibility

* fix enum values
2025-05-20 15:53:34 +07:00
renovate[bot] d1e6682df0
chore(deps): update dependency @types/node to ^22.15.18 (#18387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 15:15:10 +07:00
renovate[bot] 965498d19b
chore(deps): update node.js to v22.15.1 (#18388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 15:14:59 +07:00
Mert a6a4dfcfd3
fix(server): queueing for duplicate detection (#18380)
* fix queueing

* update tests
2025-05-20 08:44:39 +07:00
Mert 0d773af6c3
feat: vectorchord (#18042)
* wip

auto-detect available extensions

auto-recovery, fix reindexing check

use original image for ml

* set probes

* update image for sql checker

update images for gha

* cascade

* fix new instance

* accurate dummy vector

* simplify dummy

* preexisiting pg docs

* handle different db name

* maybe fix sql generation

* revert refreshfaces sql change

* redundant switch

* outdated message

* update docker compose files

* Update docs/docs/administration/postgres-standalone.md

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

* tighten range

* avoid always printing "vector reindexing complete"

* remove nesting

* use new images

* add vchord to unit tests

* debug e2e image

* mention 1.107.2 in startup error

* support new vchord versions

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-05-20 08:36:43 +07:00
Min Idzelis e7edbcdf04
feat(server): lighter buckets (#17831)
* feat(web): lighter timeline buckets

* GalleryViewer

* weird ssr

* Remove generics from AssetInteraction

* ensure keys on getAssetInfo, alt-text

* empty - trigger ci

* re-add alt-text

* test fix

* update tests

* tests

* missing import

* feat(server): lighter buckets

* fix: flappy e2e test

* lint

* revert settings

* unneeded cast

* fix after merge

* Adapt web client to consume new server response format

* test

* missing import

* lint

* Use nulls, make-sql

* openapi battle

* date->string

* tests

* tests

* lint/tests

* lint

* test

* push aggregation to query

* openapi

* stack as tuple

* openapi

* update references to description

* update alt text tests

* update sql

* update sql

* update timeline tests

* linting, fix expected response

* string tuple

* fix spec

* fix

* silly generator

* rename patch

* minimize sorting

* review

* lint

* lint

* sql

* test

* avoid abbreviations

* review comment - type safety in test

* merge conflicts

* lint

* lint/abbreviations

* remove unncessary code

* review comments

* sql

* re-add package-lock

* use booleans, fix visibility in openapi spec, less cursed controller

* update sql

* no need to use sql template

* array access actually doesn't seem to matter

* remove redundant code

* re-add sql decorator

* unused type

* remove null assertions

* bad merge

* Fix test

* shave

* extra clean shave

* use decorator for content type

* redundant types

* redundant comment

* update comment

* unnecessary res

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-05-19 16:40:48 +07:00
Daimolean dc8962f2bc
fix(server): select main stream according to bitrate (#18375)
* fix main stream

* update unit tests

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-05-19 17:33:28 +07:00
Geoffrey Frogeye 00a77c2d6a
feat(server): sort images in duplicate groups by date (#18347)
This restores behaviour introduced in
562fec6e2b and lost in
2e12c46980.
2025-05-19 17:27:30 +07:00
Zack Pollard 230c286b97
chore: cleanup extraneous memories job item definition (#18372) 2025-05-19 14:02:44 +07:00
koostamas b63d6cdcd6
feat: bulk change description (#18288)
Co-authored-by: Tamas Koos <ext_tamas.koos@btrl.ro>
2025-05-17 12:17:00 +07:00
Mert 48d746d9d5
refactor(server): "on this day" memory creation (#18333)
* refactor memory creation

* always update system metadata

* maybe fix medium tests
2025-05-16 13:16:27 +07:00
Jason Rasmussen 28d8357cc5
feat(web): clear person birthdate (#18330) 2025-05-16 11:56:25 +07:00
Jason Rasmussen c1150fe7e3
feat: lock auth session (#18322) 2025-05-15 18:08:31 +07:00
Brandon Wees 6117329057
feat: add session creation endpoint (#18295) 2025-05-15 13:34:33 +07:00
Alex b7b0b9b6d8
feat: locked/private view (#18268)
* feat: locked/private view

* feat: locked/private view

* pr feedback

* fix: redirect loop

* pr feedback
2025-05-15 15:35:21 +07:00
Mert 709a7b70aa
chore: no sql generation for queries with side effects (#18301)
no sql generation for queries with side effects
2025-05-15 03:34:22 +07:00
Mert 6a4d21205f
fix(server): do not filter out assets without preview path for person thumbnail generation (#18300)
* allow assets without preview path

* update sql

* Update person.repository.ts

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

* update sql, e2e

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-05-15 03:23:34 +07:00
Mert 3a0ddfb92d
fix(server): vacuum after deleting people (#18299)
* vacuum after deleting people

* update sql
2025-05-14 23:13:13 +07:00
renovate[bot] ca06d0aa83
chore(deps): update base-image (major) (#18256)
chore(deps): update base-image

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 13:54:49 +07:00
Daimolean dccbe0b3ed
fix(web): user details (#18253)
fix(server, web): user details
2025-05-13 07:55:58 +07:00
renovate[bot] c0ad12f279
fix(deps): update typescript-projects (#18251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-05-13 13:31:33 +07:00
renovate[bot] 9c484b23a9
chore(deps): update dependency @types/picomatch to v4 (#18257)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 12:33:15 +07:00
renovate[bot] eed014482d
chore(deps): update dependency @types/node to ^22.15.16 (#18249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 12:32:48 +07:00
renovate[bot] d271e6a3ae
chore(deps): update node.js to v22.15.0 (#18250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 12:09:41 +07:00
Jason Rasmussen 3066c8198c
feat(web): user detail page (#18230)
feat: user detail page
2025-05-12 16:50:26 +07:00
renovate[bot] a89f3ad97c
fix(deps): update typescript-projects (#18133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 13:07:20 +07:00
Alex 3f719bd8d7
feat: user pin-code (#18138)
* feat: user pincode

* pr feedback

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-05-09 17:00:58 +07:00
Zack Pollard cb6c541ae1
fix: constraint migration to handle any existing pkey name (#18178) 2025-05-09 13:45:44 +07:00
luzpaz b1e1362246
fix: various typos (grouped in to separate commits) (#18177) 2025-05-09 13:10:34 +07:00
Jason Rasmussen a6e5e4f625
fix: schema ci checks (#18146) 2025-05-07 21:14:20 +07:00
SGT ec6379b0b2
chore: remove usage of deprecated Kysely method (#18127)
* minor update. fix usage of deprecated method'

* restore original formatting
2025-05-06 17:01:02 +07:00
Mert 2a80251dc3
fix(server): more robust person thumbnail generation (#17974)
* more robust person thumbnail generation

* clamp bounding boxes

* update sql

* no need to process invalid images after decoding

* cursed knowledge

* new line
2025-05-06 14:18:22 +07:00
Alex d33ce13561
feat(server): visibility column (#17939)
* feat: private view

* pr feedback

* sql generation

* feat: visibility column

* fix: set visibility value as the same as the still part after unlinked live photos

* fix: test

* pr feedback
2025-05-06 12:12:48 +07:00
renovate[bot] 8ff25a4f7a
fix(deps): update dependency @react-email/components to ^0.0.37 (#18126)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 18:23:45 +07:00
David Cruz 7072e48cbe
feat: Add DB_SSL_MODE environment variable for Postgres sslmode (#18025)
* feat: Add DB_SSL_MODE environment variable for Postgres sslmode

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-05-06 09:25:37 +07:00
renovate[bot] 30822fcd10
fix(deps): update typescript-projects (#18124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 14:50:22 +07:00
Jovan Gerodetti 118a3fc9db
fix: update assets when `duplicateId` is provided as `null` (#18071)
Update assets when duplicateId is provided as null
2025-05-06 08:47:19 +07:00
Jason Rasmussen f34f83e164
refactor: controller tests (#18100) 2025-05-05 18:57:32 +07:00
Sergey Katsubo 12610e4a9f
fix(server): handle orientation of imported face regions (#18021)
* Transform imported face RegionInfo according to Exif Orientation

* Add unit tests for re-orienting metadata face regions

* Make code DRY using ImmichTagsWithFaces instead of NonNullable

* Add e2e test for importing metadata face regions when orientation is RotateCW90

* Disable new e2e test until its asset is added to the test-assets project

* Simplify unit tests by using the same face tag definition

* Combine similar e2e tests

* Disable new e2e test until portrait-orientation-6.jpg is added to test-assets

* Fix lint error: Expected property shorthand

* Update test-assets ref to latest

* Enable new e2e test after updating test-assets
2025-05-05 11:11:21 +07:00
Jason Rasmussen ea9f11bf39
refactor: controller tests (#18035)
* feat: controller unit tests

* refactor: controller tests
2025-05-03 09:39:44 +07:00
Jason Rasmussen 5d21ba3166
chore: logging clean up (#18031) 2025-05-02 12:34:35 +07:00
Thomas da7a81b752
chore(server): split album update notifications into multiple jobs (#17879)
We would like to move away from the concept of finding and removing pending
jobs. The only place this is used is for album update notifications, and this
is done so that users who initially uploaded assets to an album will also
receive a notification if someone else then adds assets to the same album. This
can also be achieved with a job for each recipient. Multiple jobs also has the
advantage that it will scale better for albums with many users, it's possible
to send notifications concurrently, retries are possible without sending
duplicate notifications, and it's clear what recipient a job failed for.
2025-04-30 17:45:35 +07:00
Jason Rasmussen becdc3dcf5
refactor: job on-done (#18004) 2025-04-30 17:02:53 +07:00
Eli Gao 84b51e3cbb
fix(server): double rotation on HEIF files (#18002)
* fix(server): double rotation on HEIF/HEIC files

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

* formatting

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2025-04-30 20:33:18 +07:00
Jason Rasmussen b845184c80
chore: remove old memory lane implementation (#18000) 2025-04-30 14:23:32 +07:00
Jason Rasmussen 1fde02ee1e
chore: remove unused types and code (#17999) 2025-04-30 13:41:23 +07:00
Jason Rasmussen 526c02297c
refactor: stream queue migration (#17997) 2025-04-30 16:23:13 +07:00
Alex 732b06eec8
refactor: stream for sidecar (#17995)
* refactor: stream for sidecar

* chore: make sql

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-30 10:53:51 +07:00
Jason Rasmussen be5cc2cdf5
refactor: stream detect faces (#17996) 2025-04-30 11:25:30 +07:00
Jason Rasmussen 094a41ac9a
chore: remove audit file report (#17994) 2025-04-30 11:17:23 +07:00
Jason Rasmussen 0c261ffbe2
fix: queue in batches (#17989) 2025-04-30 10:52:51 +07:00
Jason Rasmussen 8c5116bc1d
refactor: stream search duplicates (#17991) 2025-04-30 10:40:32 +07:00
Jason Rasmussen 2e8a286540
refactor: smart search queue (#17977) 2025-04-29 17:44:28 +07:00
Jason Rasmussen d89e88bb3f
feat: configure token endpoint auth method (#17968) 2025-04-29 15:17:48 +07:00
Thomas 3ce353393a
chore(server): don't insert embeddings if the model has changed (#17885)
* chore(server): don't insert embeddings if the model has changed

We're moving away from the heuristic of waiting for queues to complete. The job
which inserts embeddings can simply check if the model has changed before
inserting, rather than attempting to lock the queue.

* more robust dim size update

* use check constraint

* index command cleanup

* add create statement

* update medium test, create appropriate extension

* new line

* set dimension size when running on all assets

* why does it want braces smh

* take 2

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-29 14:23:01 +07:00
renovate[bot] 3d042cc7f1
fix(deps): update typescript-projects (#17961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 13:00:37 +07:00
renovate[bot] fb52ac0f5b
chore(deps): update node.js to v22.15.0 (#17956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:32 +07:00
Eli Gao 48bcbee6ed
feat(server): JXL previews from DNG 1.7+ (#17861)
* feat(server): JXL previews from RAW

* refactor(server): use var name assumedExtractedFormat for clarity

* test(server): fix existing media.extract() returning JPEG

* chore(openapi): regen

* style(server): lint

* fix(server): ignore undefined decode orientation

* fix(server): correct orientation assignment in media decode options

* test(server): unit tests of JXL-encoded DNG

* refactor(server): return buffer and format from mediaRepository.extract()

* chore(open-api): regen

* refactor

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-28 18:18:46 +07:00
Daniel Dietzler f621f8ef2c
refactor: more job queries (#17745) 2025-04-29 00:03:20 +07:00
Jason Rasmussen 1b5fc9c665
feat: notifications (#17701)
* feat: notifications

* UI works

* chore: pr feedback

* initial fetch and clear notification upon logging out

* fix: merge

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-04-28 10:36:14 +07:00
Jason Rasmussen ad272333db
refactor: user avatar color (#17753) 2025-04-28 08:54:51 +07:00
Zack Pollard 460d594791
feat: api response compression (#17878) 2025-04-28 08:54:11 +07:00
github-actions 02994883fe chore: version v1.132.3 2025-04-25 19:44:05 +07:00
github-actions 0d60be3d87 chore: version v1.132.2 2025-04-25 03:07:06 +07:00
Jason Rasmussen 1d610ad9cb
refactor: database connection parsing (#17852) 2025-04-24 12:58:29 +07:00
github-actions 37f5e6e2cb chore: version v1.132.1 2025-04-23 21:43:47 +07:00
Mert 6ce8a1deeb
fix(server): bump sharp (#17818)
* bump sharp

* test linking

* link in prod image too

* force global

* keep unnecessary libraries

* override sharp version

* revert dockerfile changes

* add node-gyp and napi

* dev dependency
2025-04-23 17:08:29 +07:00
github-actions f659ef4b7a chore: version v1.132.0 2025-04-23 16:44:47 +07:00
Zack Pollard d2f2f8d672
fix: retrieve version from lockfile and fallback to cli command (#17812) 2025-04-23 17:10:43 +07:00
Zack Pollard 19746a8685
fix: cache build versions (#17811) 2025-04-23 16:31:18 +07:00
Thomas 987e5ab76c
fix(server): start job workers after DB (#17806)
Job workers are currently started on app init, which means they are started
before the DB is initialised. This can be problematic if jobs which need to use
the DB start running before it's ready. It also means that swapping out the
queue implementation for something which uses the DB won't work.
2025-04-23 15:07:32 +07:00
Jason Rasmussen 1b5e981a45
fix: failing ci checks (#17810) 2025-04-23 10:59:54 +07:00
Tin Pecirep b7a0cf2470 feat: add oauth2 code verifier
* fix: ensure oauth state param matches before finishing oauth flow

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* chore: upgrade openid-client to v6

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* feat: use PKCE for oauth2 on supported clients

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* feat: use state and PKCE in mobile app

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: remove obsolete oauth repository init

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: rewrite callback url if mobile redirect url is enabled

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: propagate oidc client error cause when oauth callback fails

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: adapt auth service tests to required state and PKCE params

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: update sdk types

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: adapt oauth e2e test to work with PKCE

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: allow insecure (http) oauth clients

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

---------

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-23 15:08:11 +07:00
renovate[bot] 0426b574fe
fix(deps): update typescript-projects (#17625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-04-23 11:45:38 +07:00
Mert 92ac1193e6
fix(server): queue android motion assets for transcoding (#17781) 2025-04-23 12:03:28 +07:00
Min Idzelis 2a95eccf6a
fix: vscode vitest ext - missing jsdom dev dependency (#17799) 2025-04-22 23:01:22 +07:00
renovate[bot] a8eec92da7
chore(deps): update dependency @types/node to ^22.14.1 (#17770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-04-22 10:18:44 +07:00
Bonne Eggleston fe8c5e8107
feat: add album start and end dates for storage template (#17188) 2025-04-21 19:54:33 +07:00
Jason Rasmussen 56a4aa9ffe
refactor: email repository (#17746) 2025-04-21 12:53:37 +07:00
Jason Rasmussen 488dc4efbd
refactor: notification-admin controller (#17748) 2025-04-21 10:49:26 +07:00
Daniel Dietzler dd1fcd5be5
chore: remove asset entity (#17703) 2025-04-18 21:39:56 +07:00
Daniel Dietzler 52ae06c119
refactor: remove album entity, update types (#17450) 2025-04-18 23:10:34 +07:00
Daniel Dietzler 854ea13d6a
chore: simplify asset getByIds (#17699) 2025-04-18 16:52:41 +07:00
Jason Rasmussen 160bb492a2
fix: skip initial kysely migration for existing installs (#17690)
* fix: skip initial kysely migration for existing installs

* Update docs/src/pages/errors.md

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-18 11:19:11 +07:00
Jason Rasmussen 6474a78b8b
feat: initial kysely migration file (#17678) 2025-04-17 17:38:47 +07:00
Jason Rasmussen e275f2d8b3
feat: add foreign key indexes (#17672) 2025-04-17 14:41:06 +07:00
Mert 242a559e0f
refactor: query for fetching faces and people of assets (#17661)
* use json instead of jsonb

* missing condition
2025-04-16 19:00:55 +07:00
Jonathan Jogenfors ed2b54527c
chore(server): don't check null dates (#17664) 2025-04-16 18:40:08 +07:00
Daniel Dietzler 8b38f8a58d
fix: do not select album in time bucket query (#17662) 2025-04-16 17:52:22 +07:00
yparitcher 29b30570bf
fix: use IMMICH_HOST in microservices (#17659) 2025-04-16 23:05:12 +07:00
Daniel Dietzler 586a7a173b
refactor: handle detect faces job query (#17660) 2025-04-16 22:52:54 +07:00
Daniel Dietzler 1bbfacfc09
refactor: more job query stuff (#17658) 2025-04-16 22:10:20 +07:00
Daniel Dietzler 85c2d36d99
refactor: dedicated get album thumbnail files query (#17657) 2025-04-16 21:10:27 +07:00
Jason Rasmussen 8cefa0b84b
refactor: migrate some e2e to medium (#17640) 2025-04-16 14:59:08 +07:00
Daniel Dietzler f50e5d006c
refactor: dedicated queries for asset jobs (#17652) 2025-04-16 14:08:49 +07:00
Nils Uliczka be2f670d35
fix: skip places that no longer exist in geo import (#17637) 2025-04-15 21:27:47 +07:00
Jason Rasmussen 8da5f21fcf
refactor: medium tests (#17634) 2025-04-15 15:54:23 +07:00
Jonathan Jogenfors 76db8cf604
refactor(server): remove asset placeholder (#17621)
chore: remove AssetEntityPlaceholder

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-15 15:53:49 +07:00
Daniel Dietzler 21becbf1b0
refactor: dedicated query for asset migration job (#17631) 2025-04-15 15:49:15 +07:00
Daniel Dietzler 5bceefce75
refactor: stream assets for thumbnail job (#17623) 2025-04-15 19:53:28 +07:00
Jason Rasmussen b710ad36f3
feat: upgrade kysely (#17630)
* feat: upgrade kysely

* chore: pr feedback
2025-04-15 13:26:56 +07:00
Daniel Dietzler 270d178a2e
fix: unsafe cast (#17590) 2025-04-15 11:35:00 +07:00
Daniel Dietzler 309528c807
chore: upgrade package locks (#17626) 2025-04-15 11:34:21 +07:00
renovate[bot] b3371e16f2
fix(deps): update typescript-projects (#17611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 15:55:03 +07:00
Jason Rasmussen 17e720440d
refactor: new asset-job repository (#17622)
* refactor: new asset-job repository

* fix: broken medium tests on main
2025-04-15 10:24:51 +07:00
Jason Rasmussen f189c7b101
refactor: medium tests (#17599) 2025-04-15 08:53:14 +07:00
renovate[bot] f73fce1046
chore(deps): update base-image to v202504081114 (major) (#17613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:47:10 +07:00
Mert c3d10c5be2
refactor(server): non-nullable file metadata (#17598) 2025-04-15 12:03:31 +07:00
Jason Rasmussen b2753103c6
chore: remove unused logger (#17593) 2025-04-14 15:01:49 +07:00
Daniel Dietzler 0b69d1c147
refactor: selected columns in queries (#17589) 2025-04-14 13:34:06 +07:00
Daniel Dietzler 184e142d87
refactor: migrate asset job status entity (#17560) 2025-04-14 12:21:56 +07:00
Andreas Tollkötter 8b00578c7b
fix: read longitude and latitude when reverse geocoding is off (#17558) 2025-04-14 10:43:46 +07:00
Erik Nygren 7562088fac
feat(server): parse EXIF creation time for some insta360 images (#17564)
It seems insta360 stores metadata in XMP GPano tags, with their own
non-standard and undocumented addition `SourceImageCreateTime`. For some
pictures this is the only EXIF tag containing a creation time.
2025-04-13 23:44:18 +07:00
Daniel Dietzler a373034629
refactor: migrate stacks (#17559)
chore: migrate stacks
2025-04-12 08:33:35 +07:00
renovate[bot] 5dac315af7
fix(deps): update dependency @nestjs/common to v11.0.16 [security] (#17557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-12 12:31:18 +07:00
Daniel Dietzler 5548eb0dad
fix: live photo hiding (#17548) 2025-04-11 17:09:58 +07:00
Mert 25f2b9602f
refactor(server): remove face, person and face search entities (#17535)
* remove face, person and face search entities

update tests and mappers

check if face relation exists

update sql

unused imports

* pr feedback

generate sql, remove unused imports
2025-04-11 14:44:45 +07:00
Etienne d7a782da34
feat: sync pictureFile with oidc if it isn't set already (#17397)
* feat: sync pictureFile with oidc if it isn't set already

fix: move picture writer to get userId

fix: move await promise to the top of the setPicure function before checking its value and automatically create the user folder

chore: code cleanup

* fix: extension double dot

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-11 13:00:39 +07:00
Jason Rasmussen 584e5894bf
refactor: user factories instead of stubs (#17540) 2025-04-11 11:53:37 +07:00
Jason Rasmussen 75c83cb704
refactor: metadata stub (#17532) 2025-04-10 21:58:55 +07:00