Commit Graph

3036 Commits

Author SHA1 Message Date
Alex The Bot df59b2099f Version v1.92.1 v1.92.1 2024-01-08 15:24:38 +00:00
Daniel Dietzler 7cc0904273 feat(server): disable onboarding when config file is set (#6256) 2024-01-08 09:22:26 -06:00
Alex The Bot 319ddfda53 Version v1.92.0 v1.92.0 2024-01-08 05:19:11 +00:00
Alex d095382b14 chore(mobile): translation update (#6242) 2024-01-07 23:17:35 -06:00
Zack Pollard 5a66314ead test: small improvements to database init tests (#6232) 2024-01-07 01:53:09 +00:00
Michael Manganiello e262298090 fix(server): Split database queries based on PostgreSQL bound params limit (#6034)
* fix(server): Split database queries based on PostgreSQL bound params limit

PostgreSQL uses a 16-bit integer to indicate the number of bound
parameters.

This means that the maximum number of parameters for any query is 65535.
Any query that tries to bind more than that (e.g. searching by a list of
IDs) requires splitting the query into multiple chunks.

This change includes refactoring every Repository that runs queries
using a list of ids, and either flattening or merging results.

Fixes #5788, #5997.

Also, potentially a fix for #4648 (at least based on
[this comment](https://github.com/immich-app/immich/issues/4648#issuecomment-1826134027)).

References:

* https://github.com/typeorm/typeorm/issues/7565
* [PostgreSQL message format - Bind](https://www.postgresql.org/docs/15/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-BIND)

* misc: Create Chunked decorator to simplify implementation

* feat: Add ChunkedArray/ChunkedSet decorators
2024-01-06 20:36:12 -05:00
maxer137 6835d4519a feat(server): add postgres major version check (#6213)
* feat(server): Throw error when PostgreSQL version is not within the supported versions
The pgvecto.rs extension, though not distributed, can be built for PostgreSQL 12 and 13.
An installation of PostgreSQL 12 with the pgvecto.rs extensions installed will not be caught by immich.
This causes immich to attempt to run the database migrations without having a proper environment.
With assertPostgresql the server will throw an error if the PostgreSQL version is not within the supported range.

* Replaced assertion with lesser than comparison
As requested by @zackpollard

* Changed the comparison to use the minPostgresVersion variable.
If we define one we might as well use it. makes changing the versioning later easier

* Added two new tests, modified two existing tests

`should return if minimum supported PostgreSQL and vectors version are installed`:
Check if init returns properly and that getPostgresVersion is called twice

`should thrown an error if PostgreSQL version is below minimum supported version`:
Checks if the init function correctly returns an error

`should suggest image with postgres ${major} if database is ${major}`:
Modified to set MockResolvedValue instead of MockResolvedValueOnce. With the new check we get the PostgreSQL version twice. So it needs to be set during the entire test.

`should not suggest image if postgres version is not in 14, 15 or 16`:
Modified the bounds to [14, 18]. Because values below 14 now will not get called.
Also Modified to call `getPostgresVersion.MockResolvedValueOnce` for twice, because it gets called twice.

* Fixed two mistakes in the jest functions from previous commit #2abcb60

`should thrown an error if PostgreSQL version is below minimum supported version`:
The regex function I wrote mistakingly used the negate function which check that the error *did not* contain the phrase "PostgreSQL". Which is the opposite

`should not suggest image if postgres version is not in 14, 15 or 16`:
confused bounds for a normal javascript array. Changed the test to only check for values above 16. As values below 14 will get thrown out by test `should return if minimum supported PostgreSQL and vectors version are installed`

I apologise for the mistakes in my previous commit.

* Format fix

---------

Co-authored-by: max <wak@vanling.net>
2024-01-06 19:24:09 -05:00
martin 84e60ea155 feat(web): auto switch theme (#6176)
* move from app.html to user-page-layout.svelte

* fix: use layout.svelte

* simplify

* fix: map style don't change

* fix: auto switch theme map

* use constants

* simplify

* rename

* rename settign

* fix: remove

* pr feedback

* fix: tests

* fix: migration

* fix: migration

* pr feedback

* simplify

* simplify

* pr feedback

* fix: merge

* chore: set insetad of toggle on click

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-07 00:15:25 +00:00
Mert 41a32b4e6b feat(server): add rw2 support (#6231) 2024-01-06 23:58:04 +00:00
Alex 0750e13d3f chore(server): set onboarding for existing instances (#6229)
* chore(server): set onboarding for existing instances

* down
2024-01-06 22:18:42 +00:00
Mikhail Gorbachev 78d8783a54 docs: Russian readme (#6221)
Add Russain README_ru_RU.md and create link in README
2024-01-06 20:02:50 +00:00
martin 2cc5149d0b feat(web): previous button for on-boarding steps (#6178)
* feat: previous on the onboarding

* fix: storage full screen

* feat: transition

* use svelte files for svg

* fix: use icon component

* fix: additional check

* styling'

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-06 20:01:24 +00:00
Felix 8c784defa0 Fix typo in liberapay link (#6222) 2024-01-06 18:31:10 +00:00
Michael Manganiello 8921278447 fix(server): Execute query in AlbumRepository.removeAsset method (#6216)
The current `removeAsset` implementation just builds the query but does
not execute it. That also seems to be the reason the `@GenerateSql`
decorator was commented out.
2024-01-06 11:56:08 -06:00
shenlong a233e176e5 fix(mobile): handle readonly and offline assets (#5565)
* feat: add isReadOnly and isOffline fields to Asset collection

* refactor: move asset iterable filters to extension

* hide asset actions based on offline and readOnly fields

* pr changes

* chore: doc comments

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 21:02:16 -06:00
Fynn Petersen-Frey 56cde0438c feat(mobile): multiselect for search & person page (#6016)
* feat(mobile): multiselect for search & person page

* merge main

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 21:23:58 +00:00
Thariq Shanavas ad09896f58 feat(docs): Template script for 3-2-1 backup of the assets and database (#6026)
* Added borg template cron job

* moved script to guides section

* Mentioned db backup location in docs

* Added directions for restoring backups
2024-01-05 15:02:55 -06:00
shenlong d3af2b1f69 (mobile): ios - calculate hash using CryptoKit (#5976)
* ios: calculate hash using CryptoKit

* chore: remove unused crypto dep

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-05 10:49:43 -06:00
bo0tzz ac0cb4a96e Revert "docs: add step by step set up guide for external libraries (#5288)" (#6194)
This reverts commit 27be076958.
2024-01-05 09:45:50 -06:00
shenlong af32183728 refactor(mobile): Activities (#5990)
* refactor: autoroutex pushroute

* refactor: autoroutex popRoute

* refactor: autoroutex navigate and replace

* chore: add doc comments for extension methods

* refactor: Add LoggerMixin and refactor Album activities to use mixin

* refactor: Activity page

* chore: activity user from user constructor

* fix: update current asset after build method

* refactor: tests with similar structure as lib

* chore: remove avoid-declaring-call-method rule from dcm analysis

* test: fix proper expect order

* test: activity_statistics_provider_test

* test: activity_provider_test

* test: use proper matchers

* test: activity_text_field_test & dismissible_activity_test added

* test: add http mock to return transparent image

* test: download isar core libs during test

* test: add widget tags to widget test cases

* test: activity_tile_test

* build: currentAlbumProvider to generator

* movie add / remove like to activity input tile

* test: activities_page_test.dart

* chore: better error logs

* chore: dismissibleactivity as statelesswidget

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-04 23:20:55 -06:00
Emanuel Bennici d1e16025cf fix(server): Fix incorrect sorting with search (#6031)
The search results are not sorted by date causing confision.

Fixes #5916
2024-01-04 14:47:09 -06:00
Zack Pollard 4cf1e553d2 feat(server): in upload folder, split the files into folders based on the first four of the files uuid (#6175) 2024-01-04 14:45:16 -06:00
shenlong 2aaf941dda refactor(mobile): use startOAuth and server features flags (#6155)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-04 14:44:40 -06:00
Alex 13ba83dce6 chore(server): better ML error messages (#5914)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-04 21:34:50 +01:00
martin 4f6f79a392 feat(web): go back on the onboarding (#6171)
* feat: go back on the onboarding

* fix: state

* rename variable
2024-01-04 11:20:19 -06:00
Jason Rasmussen ba4a20a181 chore: group 'dependencies' (#6167) 2024-01-04 11:21:24 -05:00
martin aefd93e43a feat(server): add env for reverse geocoding path (#6163)
* feat: add env for reverse geocoding path

* fix: quote in doc
2024-01-04 13:36:52 +00:00
Alex 18f59f78e3 feat(web): onboarding (#6066)
* feat(web): onboarding

* feat: openapi

* feat: modulization

* feat: page advancing

* Animation

* Add storage templaete settings

* sql

* more style

* Theme

* information and styling

* hide/show table

* Styling

* Update user property

* fix test

* fix test:

* fix e2e

* test

* Update web/src/lib/components/onboarding-page/onboarding-hello.svelte

Co-authored-by: bo0tzz <git@bo0tzz.me>

* naming

* use System Metadata

* better return type

* onboarding using server metadata

* revert previous changes in user entity

* sql

* test web

* fix test server

* server/web test

* more test

* consolidate color theme change logic

* consolidate save button to storage template

* merge main

* fix web

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2024-01-04 05:28:32 +00:00
Jason Rasmussen f8d64be13c feat(server)!: move welcome message to settings (#6157)
* feat(server): move welcome message to settings

* chore: open api
2024-01-04 05:00:17 +00:00
Jason Rasmussen 52e92e9bb4 docs: unused geocoding env variable (#6158) 2024-01-04 04:56:18 +00:00
Jason Rasmussen 7b40c20ea5 chore(server): time bucket sql (#6156) 2024-01-03 22:32:52 -06:00
Jason Rasmussen 317adc5c28 feat(web,server): external domain setting (#6146)
* feat: external domain setting

* chore: open api

* mobile: handle serverconfig-externalDomain

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2024-01-03 21:54:48 -05:00
Jason Rasmussen 1e503c3212 chore(cli): remove chai and unused types (#6153)
* chore: remove chai

* remove more deps
2024-01-03 23:07:02 +00:00
renovate[bot] 282f7803bd fix(deps): update web (#6152)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 23:02:24 +00:00
renovate[bot] 2950d84820 chore(deps): update @immich/cli (#6150)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 22:54:13 +00:00
Jonathan Jogenfors ee82327d2a add tests for cli exclusion pattern (#6148) 2024-01-03 17:42:26 -05:00
renovate[bot] 13fb32513c fix(deps): update server (#6119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 17:41:30 -05:00
renovate[bot] 103c3ee2f1 fix(deps): update docs (#6120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 16:55:59 -05:00
Colin 40fbe81c7b docs: typo detial -> detail (#6135)
Also added missing "."
2024-01-03 03:34:42 +00:00
renovate[bot] 093e61eee9 chore(deps): update @immich/cli (#6118)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-02 03:35:50 +00:00
renovate[bot] 23b38a0474 fix(deps): update dependency @nestjs/schedule to v4 (#5348)
* fix(deps): update dependency @nestjs/schedule to v4

* fix: change CronJob in addCronJob to match new type required by nestjs schedule module

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-01-01 22:25:25 -05:00
jcianci12 27be076958 docs: add step by step set up guide for external libraries (#5288)
* Update libraries.md - External Library step by step set up guide added

When setting up immmich external libraries, I found some missing details around the relationship between external paths and import paths. By providing an example, I am hoping it helps new users.

* chore: fix formatting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-01-01 22:18:28 -05:00
martin c24d0e82bb fix: use loading spinner for library spinner (#6116) 2024-01-01 22:10:48 -05:00
Jason Rasmussen 9a04014f98 feat(mobile): use new endpoint (#6108) 2024-01-01 19:02:30 -05:00
Jason Rasmussen a7d9e25fb0 fix(web): use submit event instead of button click (#6112) 2024-01-01 17:45:09 -05:00
Jason Rasmussen 014adf175a fix(cli): file handles (#6110)
* fix: file handles

* chore: bump for patch release
2024-01-01 22:37:52 +00:00
Fynn Petersen-Frey cc7ba3c21a feat(server): search across own+partner assets (#5966)
* feat(server): search across own+partner assets

* generate sql

* fix sql parameter
2024-01-01 17:25:22 -05:00
Davis Clark 2688e05033 docs: update hardware-transcoding.md (#5968)
* Update hardware-transcoding.md

I accidentally closed #5924 for some odd reason. Copied the same code changes to this one.

* updated formatting

* Update hardware-transcoding.md

Added line 66 saying that `NVIDIA_DRIVER_CAMPABILITITES` is no longer required.
2024-01-01 20:50:03 +00:00
Michael Manganiello 4a5b8c3770 feat(server): Enqueue jobs in bulk (#5974)
* feat(server): Enqueue jobs in bulk

The Job Repository now has a `queueAll` method, that enqueues messages
in bulk (using BullMQ's
[`addBulk`](https://docs.bullmq.io/guide/queues/adding-bulks)),
improving performance when many jobs must be enqueued within the same
operation.

Primary change is in `src/domain/job/job.service.ts`, and other services
have been refactored to use `queueAll` when useful.

As a simple local benchmark, triggering a full thumbnail generation
process over a library of ~1,200 assets and ~350 faces went from
**~600ms** to **~250ms**.

* fix: Review feedback
2024-01-01 15:45:42 -05:00
Jan 7dd88c4114 fix(server): sanitize storagelabel when creating a user #3346 (#5717)
* sanitize storagelabel when creating a user #3346

* code formatting
2024-01-01 15:37:39 -05:00