Commit graph

717 commits

Author SHA1 Message Date
Timon
8b3d6b320b
feat(server): new search API (#30179) 2026-08-27 20:39:55 +02:00
andy.mp3
1db4677cf8
feat: same-second photos now sub-sort by filename (#29528)
* Update sorting

Updates the sorting to sort
1. First by timeCreatedAt, but then
2. By filename.

* Push tsts

* Sync SQL

* Formatting fixes

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-08-27 13:46:10 -04:00
Daniel Dietzler
c7d24321bf
feat: allow users to re-run facial recognition for their group (#30965) 2026-08-27 16:38:07 +02:00
Jordan Brock
1b3aa9cd51
fix(server): correct tag create operations (#30877) 2026-08-24 17:57:32 +02:00
shenlong
6b7b0fe3a6
fix: remove partner assets from existing memories (#28950)
* fix: remove partner assets from existing memories

* move tests to be medium tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-08-24 14:55:47 +00:00
Lin, Chiang-Yu
b26b0cc806
fix(server): let a second metadata extraction replace stored AV metadata (#30900)
`upsertExif` writes derived audio, video and keyframe metadata with an
`ON CONFLICT DO UPDATE`, but every column in those three update lists
assigns the stored row back to itself:

    bitrate: ref('asset_audio.bitrate')

`SET bitrate = asset_audio.bitrate` is a self-assignment, so once a row
exists nothing can change it. Re-running metadata extraction re-reads the
file, builds a fresh snapshot, and then quietly discards it. The rest of the
file already uses `excluded` for this, as does `plugin.repository.ts`.

`asset_video.frameCount` had a second problem: it is supplied on insert but
was missing from the update list, so it would have stayed stale even after
the reference was corrected.

Extraction is meant to be repeatable. Probing improves between releases, a
file can be repaired or replaced, and a fix to how a stream is chosen is
worthless if it cannot reach the assets that were already imported. An
`upsert` that silently degrades to insert-only defeats all of that.

Metadata extraction is the only caller that passes these three objects, and
it passes a complete snapshot or nothing: each object is built from a single
probe behind a guard, and `upsertExif` skips the branch entirely when the
object is absent. So taking the incoming row cannot write partial values
over good ones. The other three callers pass `exif` only, and every other
reference to these tables is a read.
2026-08-22 17:58:05 +00:00
Jordan Brock
79c4c00f70
feat(web): tag renaming v2 (#27909)
* implement updated rename tag feature

* Fix tag update handler

* Ensure toast displays updated tag name

* Ensure toast displays updated tag name

* Handle updates to tag closure table, prevent slash in API filename, test case updates

* delete child tags on parent delete

* Update frontend for better handling of nested tags

* pr checklist fixes

* fix unit test for tag controller

* Hide path for top-level tags

* regenerate SQL files

* name updates optional for tag update operations

* e2e tests for new tag api changes

* changes from code review, additional test coverage

* test fixes, web component refactor

* test assets

* test asset updates

* open-api rebuild

* update unit tests

* fix tag dto tests

* Update web/src/lib/modals/TagEditModal.svelte

Fix missing color bug

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>

* fix tag e2e test

* remove closure table bug fixes

* remove nullish from tag name update schema

* regenerate openapi and sql

* fix test and e2e test

* simplify tag repository update process

* minor fix and sql regenerate

* fix tests, regen open-api, update dto

* Remove unused function

* Remove accidental test asset ref

* re-add test assets

* pin submodule to main branch commit

* Update test cases based on feedback

* Server fixes based on feedback

* regenerate sql

---------

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>
2026-08-21 14:55:11 -04:00
Jason Rasmussen
2f48a8aab4
refactor: memory e2e (#30906) 2026-08-21 12:15:17 -04:00
Jason Rasmussen
caea849fee
feat: asset file apis (#25900)
* feat: asset file endpoints

* Update server/src/controllers/asset-file.controller.ts

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

* Update server/src/controllers/asset-file.controller.ts

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

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-08-21 13:55:25 +00:00
Holegots
57ce9b2221
fix(server): correct asset dimensions from exif metadata (#29244)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-21 13:32:17 +02:00
Jason Rasmussen
4c26a7ca76
refactor: activity e2e (#30896) 2026-08-21 12:57:50 +02:00
Jason Rasmussen
c7531a36f9
refactor: partner e2e (#30895) 2026-08-20 17:32:51 -04:00
Jason Rasmussen
11b1aa5ecf
feat: cluster groups (#30739)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-20 20:03:00 +02:00
Jason Rasmussen
e529557160
feat: new config endpoints (#30881)
* refactor: config endpoints

* chore: pr feedback
2026-08-20 11:46:17 -04:00
Jason Rasmussen
7cd0a7d30c
refactor: e2e tests (#30870) 2026-08-19 14:31:57 -04:00
Jason Rasmussen
c63824bcea
refactor: library e2e (#30867) 2026-08-19 11:49:41 -04:00
Jason Rasmussen
d2759ec41e
refactor: library e2e (#30865) 2026-08-19 10:36:35 -04:00
Jonathan Jogenfors
2018e4f8c4
chore(server): migrate library e2e tests (#27277)
* migrate library e2e tests

* fix: real storage repo

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-19 13:14:40 +00:00
Brandon Wees
93d2d30fe0
feat: rotate an API key (#30801)
* feat: rotate an API key

* fix: test response

* chore: create new api key scope

* chore: code review
2026-08-18 16:07:39 -04:00
Daniel Dietzler
03da1ba108
chore: single line block comments (#30852) 2026-08-18 17:55:26 +02:00
Yaros
80a90fabf3
fix(server): update ocr & faces after asset edit (#29303)
* fix: update ocr & faces after asset edit

* chore: remove client-side refresh

* fix(server): sync asset OCR visibility changes

* chore: prettier format

* test: missing updatedAt

* chore: remove comment

* chore: fix test

* chore: update migration timestamp

* chore(server): AssetOcrSyncReset

* chore: migration timestamps

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 14:32:21 +00:00
Priyanshu
b0a9468da7
fix(server): guard createAll against empty values list (#30837)
Co-authored-by: priyanshuANDcoad <priyanshu23154050@akgec.ac.in>
2026-08-18 13:56:37 +02:00
renovate[bot]
11755e5a53
chore(deps): update dependency eslint-plugin-unicorn to v73 (#30844)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 12:00:16 +02:00
Jason Rasmussen
342a9472c4
refactor: duplicate e2e (#30773) 2026-08-14 21:00:13 +00:00
Jason Rasmussen
14241ac7bc
chore(server): remove unused code (#30772)
chore(server): remove unnused code
2026-08-14 16:58:14 -04:00
Daniel Dietzler
199723261c
fix: owner cascade delete album (#30692) 2026-08-11 23:05:18 +02:00
Jason Rasmussen
00d10dab63
refactor: e2e user tests (#30716) 2026-08-11 12:39:25 -04:00
Daniel Dietzler
5ad1e4e0f7
fix: medium tests dependencies (#30612) 2026-08-07 11:36:20 +02:00
Daniel Dietzler
0d7147dcec
fix: metadata extraction as LensModel can be a float (#30512) 2026-08-03 18:18:24 +02:00
Ben Beckford
fb4a08c17a
chore(server): test assetFileFilter (#30430) 2026-08-03 11:55:40 +02:00
bo0tzz
7c44c29a8f
chore: deflake album to asset backfill sync test (#30417) 2026-07-30 15:13:44 -04:00
bo0tzz
a316ba35ca
fix: shared check for server setup availability (#30311)
* fix: shared check for server setup availability

* chore: add medium test

* feat: require @Authenticated decorator everywhere

* fix: lints
2026-07-30 15:12:25 -04:00
Alexander J
0293414abd
fix: minor typos (#30385) 2026-07-30 00:05:11 +02:00
Daniel Dietzler
b08f6b9c50
chore: medium tests system config helpers (#30174) 2026-07-24 21:27:31 +02:00
Ben Beckford
0f5bf6071f
chore(server): test assetDateFilter workflow method (#30110) 2026-07-22 10:48:31 +02:00
Daniel Dietzler
5d7283e44d
fix: album update event emitting (#30120) 2026-07-21 19:43:27 +00:00
Lorenzo Rota
73329a8ce8
fix(server): send id_token_hint on OIDC logout (#29720)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-21 19:19:13 +02:00
Timon
ee4bd3f833
feat: add album asset event handling (#29008)
* feat: add album asset event handling

* fix medium tests

* patch medium test

* collapse in AlbumUpdate
2026-07-21 10:55:46 -05:00
renovate[bot]
df970da59e
chore(deps): update dependency eslint-plugin-unicorn to v70 - abandoned (#29684)
* chore(deps): update dependency eslint-plugin-unicorn to v70

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-20 23:47:14 -04:00
Daniel Dietzler
77091b0107
fix: search statistics locked folder permissions (#30063)
fix; search statistics locked folder permissions
2026-07-20 20:08:42 -04:00
Daniel Dietzler
4c754f2999
fix: timebuckets locked permissions (#30066) 2026-07-20 20:07:56 -04:00
Raul
b4530b0671
fix(server): workflow date filter, make end date inclusive (#29876)
Co-authored-by: Raul Plesa <raul.plesa@external.grifols.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-15 10:50:03 +00:00
Daniel Dietzler
35fcca6254
fix: locked visibility in search random endpoint (#29887) 2026-07-13 20:03:20 +00:00
Daniel Dietzler
fea0db02f3
fix: emit album update event when uploading assets through shared link (#29757) 2026-07-09 15:21:16 +02:00
Daniel Dietzler
66e30d5fa1
fix: missing files integrity checks (#29737) 2026-07-08 14:53:46 -05:00
Daniel Dietzler
704b287bba
fix: integrity checks checksum pagination (#29516) 2026-07-07 18:42:14 +02:00
Daniel Dietzler
deeb042a9e
feat: honor album access permissions in search endpoints (#29352) 2026-06-29 22:27:22 +02:00
Daniel Dietzler
b4cc406a3f
fix!: search endpoints visibility can be omitted (#29385) 2026-06-29 22:00:02 +02:00
Ben Beckford
953ef5c047
feat: webhook workflow action (#29258)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-06-26 16:08:45 +02:00
Jason Rasmussen
ec7c0f9ec8
fix: sync backfill (#29267) 2026-06-22 16:19:01 -04:00