* Fix opus handling as accepted audio codec in transcode policy
Fix the issue when opus is among accepted audio codecs in transcode policy
(which is default) but it still triggers transcoding because the codec name
from ffprobe (opus) does not match `libopus` literal in Immich.
Make a distinction between a codec name and encoder:
- codec name: switch to `opus` as the audio codec name. This matches what ffprobe
returns for a media file with opus audio.
- encoder: continue using the `libopus` encoder in ffmpeg.
* Add unit tests for accepted audio codecs and for libopus encoder
* Add db migration for ffmpeg.targetAudioCodec opus
* backward compatibility
* tweak
* noisy logs
* full mapping
* make check happy
* mark deprecated
* update api
* indexOf
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
* Clarify the "asset not found" log during thumbnail generation: it's about database
* Move not found sidecars to verbose level instead of "old=null, new=null" at debug
* Log memory creation at default level
* Add explicit log for missing exif date time
Instead of: Date and time is undefined using exifTag undefined for asset ...
* Log database migration start/end at default level
Currently, these messages are logged as "debug". But they are not printed
when debug or verbose level is set. This is due to the known limitation:
SystemConfigService sets LogLevel later on, after migrations run.
Fix building docker image for different platforms on the same host
Use per-platform mise cache to avoid 'sh: 1: extism-js: not found'
This happens due to re-using cached installed binary for another platform
* Support running medium tests in devcontainer
* Add "pnpm run test:medium" to the devcontainer doc
* Fix indentation for inline comments in the doc
* Fix a couple of words in the doc
* Test memory creation in advance
Use year 2035 to make sure it's in the future of current time of a test run
* Use target year instead of current year when fetching assets during memory creation
This fixes an edge case of creating memories in advance when target year is
different from current year.
Example: job runs on 2025-12-31 (current year is 2025) and creates memories
to be shown on 2026-01-01 (target year is 2026). If using _current_ year in
calculation then range of years is capped at (2025 - 1 = 2024) thus excluding
2025-01-01 from created memories. With _target_ year it is (2026 - 1 = 2025),
so 2025-01-01 will be included in memories.
* Update sql queries
* Fix slow SQL query in checkAlbumAccess caused by the array overlap operator &&
* Update access.repository.sql
* Rewrite the query to pass assetIds once as a single array parameter
* Fix log formatting for logger.error(..., error)
Rewrite it to avoid printing error msg in [context]
* Fix log formatting for logger.warn(..., error?.stack)
Rewrite it to avoid printing stack in [context]
* Fix log formatting for logger.debug(..., error.message);
Rewrite it to avoid printing error msg in [context]
* Print error msg instead of literal "Error"
* TypeORM error: force recommend v1.132.3 and avoid v1.136
* Add extra line break for clarity
* Fix formatting error: remove an asterisk
* chore: use admonitions
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* Fix logging context in StorageCore
* Revert "Fix logging context in StorageCore"
This reverts commit 0aa540afd1.
* Fix logging context in StorageCore - one line change
* Clarify in log why reverse geocoding may return nothing
* Decrease log level for empty reverse geocoding response from warn to log
* Use a named constant for 25km
* Mention fallback to countries in the message
* Improve natural earth log message
* Decrease log level for empty reverse geocoding response from natural earth countries
* 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