Repository navigation
fix(ml): read CLIP model configs as UTF-8 - #31075
Merged
Merged
Conversation
The CLIP encoders load their model, tokenizer and preprocessing configs with Path.open() and no encoding, so the text codec comes from the locale. A container with no locale set resolves that to ASCII, and any non-ASCII byte in the config then raises UnicodeDecodeError. ViT-SO400M-16-SigLIP2-384__webli hits this: its tokenizer_config.json carries non-ASCII bytes, so every smart search returns 500 while visual embedding keeps working and the health check stays green. The visual encoder reads its configs the same way, so both are fixed.
mertalev
approved these changes
Aug 28, 2026
Contributor
|
Backport-action backported this pull request in workflow run 33410015139.
|
immich-push-o-matic Bot
added a commit
that referenced
this pull request
Aug 31, 2026
fix(ml): read CLIP model configs as UTF-8 (#31075) (cherry picked from commit c1a88dd) Co-authored-by: Aditya Raj Singh <[email protected]>
nemerytamimi
added a commit
to nemerytamimi/immich
that referenced
this pull request
Sep 1, 2026
* fix: don't swallow fetch errors (immich-app#30496) * fix: thumbnail generation for specific SVGs (immich-app#30908) * chore(deps): update ghcr.io/jdx/mise docker tag to v2026.8.12 (immich-app#30985) * fix(deps): update typescript-projects (immich-app#30990) Co-authored-by: Daniel Dietzler <[email protected]> * chore(deps): update docker.io/valkey/valkey:9 docker digest to 70739f8 (immich-app#30980) * fix(mobile): aspect ratio change (immich-app#30939) * fix(mobile): aspect ratio change * chore: explain the change * feat(mobile): show asset owner in asset details (immich-app#29302) * feat(mobile): show asset owner in asset details * refactor(mobile): fetch asset owner from local DB instead of API * cleanup * review changes --------- Co-authored-by: shenlong-tanwen <[email protected]> * fix: throw a typed error on malformed api responses (immich-app#31006) * fix: throw a typed error on malformed api responses * fix: drop response body parse check * fix(web): keep json response validation when overriding fetch (immich-app#31008) * fix(cli): report malformed api responses (immich-app#31007) * refactor(ml): direct ocr processing (immich-app#31016) * feat(mobile): map asset number (immich-app#28911) * feat(mobile): map asset number * chore: use totalAssets from service * refactor: separate widget * fix: async dispose * chore: i18n * chore: add back old i18n key * bring back reactivity --------- Co-authored-by: shenlong-tanwen <[email protected]> * chore: bump sql-tools (immich-app#31000) * fix(server): point the migrations mise task at sql-tools (immich-app#30996) * feat(server): document and guard migration ORDER maintenance (immich-app#30997) feat(server): add a migrations ORDER manifest * feat: verify migration ORDER on every PR (immich-app#30998) * chore(deps): update dependency pillow to v12.3.0 [security] (immich-app#30084) * chore(deps): update dependency pydantic-settings to v2.14.2 [security] (immich-app#29252) * chore(mobile): remove Drift* prefixes from classes and variables (immich-app#31038) * chore(mobile): remove Drift* prefixes from classes and variables * Remove *Drift* from related mocks * feat: only move floating docker tags for the newest release (immich-app#31030) * chore(deps): update dependency github:extism/js-pdk to v1.7.0 (immich-app#30987) * chore(deps): update grafana/grafana docker tag to v12.4.9-ubuntu (immich-app#30986) * chore(deps): update prom/prometheus docker digest to 5ce7540 (immich-app#30981) * chore(deps): update dependency opentofu to v1.12.6 (immich-app#30984) * fix(web): restore timeline scroll when the asset id cannot be resolved (immich-app#30916) Co-authored-by: Daniel Dietzler <[email protected]> Co-authored-by: Daniel Dietzler <[email protected]> * chore: bump openapi-generator version to v7.25 (immich-app#30995) * feat: split release preparation from drafting (immich-app#31024) * feat: gate release publishing behind an approval (immich-app#31025) * feat: cut releases from release branches (immich-app#31033) * feat: backport pull requests to release branches (immich-app#31035) * fix(web): do not play memory video if the `MemoryVideoViewer` element is not visible (immich-app#30947) * feat: allow users to re-run facial recognition for their group (immich-app#30965) * fix: only run backport for labelled pull requests (immich-app#31052) * fix(web): preserve slideshow pause state when viewing video slides (immich-app#30278) Co-authored-by: priyanshuANDcoad <[email protected]> * chore(deps): update ghcr.io/immich-app/base-server-dev docker tag to v202608251107 (immich-app#31054) * fix: draggable Immich logo (immich-app#31055) * fix(server): kill pg_dump when a backup fails so it stops holding table locks (immich-app#30851) * fix(server): kill the child process when a spawned duplex stream is destroyed A failed database backup left pg_dump running. The stream was destroyed but the child was not, so the dump sat idle in transaction holding AccessShareLock on every table until someone terminated it by hand. One report had it survive five days and block DDL from another application on the same Postgres. Destroying the duplex now kills the child, which also covers pipeline() tearing every stream down when one of them fails. The backup service additionally holds references to the streams it spawns so the error path can destroy them. createWriteStream can throw before pipeline() takes ownership, which is how the reported ENOENT on an unmounted backup volume left nothing referencing the running pg_dump. * chore(server): drop the explanatory comments from the backup teardown fix Requested in review. The reasoning lives in the commit message and the PR body, which is where it belongs. * fix(web): misleading toast notification (immich-app#30976) * Added the proper toast for each scenario in the if/else statement instead of only having toastManager.primary() for all scenarios. * Created a test file for album.service.ts. * chore: cleanup --------- Co-authored-by: Daniel Dietzler <[email protected]> * fix(web): map (immich-app#31056) * fix(web): map without set start/end dates * fix(web): invalid timeline map options * docs: update remote-machine-learning.md (immich-app#28728) Update remote-machine-learning.md To include the default URL, should someone need it (as the default entry is not easily recreated otherwise). * fix: external library statistics for excluded assets (immich-app#28462) Fix external library statistics for excluded assets * feat: same-second photos now sub-sort by filename (immich-app#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 <[email protected]> * feat(web): view assets in map viewport (immich-app#27492) * feat(server): new search API (immich-app#30179) * fix: ios map settings sheet (immich-app#31060) fix: ios map settings Co-authored-by: shenlong-tanwen <[email protected]> * chore(web): update translations (immich-app#30296) Translate-URL: https://hosted.weblate.org/projects/immich/immich/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/bn/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/de_CH/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_GB/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/eo/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/eu/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ga/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/km/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/kn/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ml/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/mn/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ne/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/sq/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/tl/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/ Translation: Immich/immich Co-authored-by: 4liceD <[email protected]> Co-authored-by: 4liceD <[email protected]> Co-authored-by: Adam Havránek <[email protected]> Co-authored-by: Aindriú Mac Giolla Eoin <[email protected]> Co-authored-by: Akhil Raj <[email protected]> Co-authored-by: Arco <[email protected]> Co-authored-by: Ardev Prisec <[email protected]> Co-authored-by: Arif Budiman <[email protected]> Co-authored-by: Arkaitz Ortega <[email protected]> Co-authored-by: Arnie97 <[email protected]> Co-authored-by: Arseniy <[email protected]> Co-authored-by: Azharul Haque <[email protected]> Co-authored-by: Bat-Uyanga Batdelger <[email protected]> Co-authored-by: Brady87 <[email protected]> Co-authored-by: Brian <[email protected]> Co-authored-by: Bruno Silva <[email protected]> Co-authored-by: Colin <[email protected]> Co-authored-by: CoolAEW <[email protected]> Co-authored-by: Denis Pacquier <[email protected]> Co-authored-by: DevServs <[email protected]> Co-authored-by: Eduard Ereza Martínez <[email protected]> Co-authored-by: Emil Warelius <[email protected]> Co-authored-by: Fjuro <[email protected]> Co-authored-by: Frank Paul Silye <[email protected]> Co-authored-by: HackingAll <[email protected]> Co-authored-by: Hans Cats <[email protected]> Co-authored-by: Happy <[email protected]> Co-authored-by: Henry Wong <[email protected]> Co-authored-by: Hurricane_32 <[email protected]> Co-authored-by: Håkon Antonsen <[email protected]> Co-authored-by: Hồ Nhất Duy <[email protected]> Co-authored-by: Indrek Haav <[email protected]> Co-authored-by: Ivan Dimitrov <[email protected]> Co-authored-by: Izoret <[email protected]> Co-authored-by: Jonatan Nyberg <[email protected]> Co-authored-by: Jozef Gaal <[email protected]> Co-authored-by: Kanchnak Khorn <[email protected]> Co-authored-by: Klenner Martins Barros <[email protected]> Co-authored-by: Leo Bottaro <[email protected]> Co-authored-by: Li-Sheng Chou <[email protected]> Co-authored-by: Linas Samuchovas <[email protected]> Co-authored-by: Liviu Roman <[email protected]> Co-authored-by: Lucas Pinto <[email protected]> Co-authored-by: Luis Fernando Illapa <[email protected]> Co-authored-by: Marco C. <[email protected]> Co-authored-by: Matjaž T. <[email protected]> Co-authored-by: Michal Šmahel <[email protected]> Co-authored-by: Mārtiņš Bruņenieks <[email protected]> Co-authored-by: Nagy Krisztián <[email protected]> Co-authored-by: Natale Daniele Musumeci <[email protected]> Co-authored-by: Nicola Bortoletto <[email protected]> Co-authored-by: Olaf Nielsen <[email protected]> Co-authored-by: Oğuz Ersen <[email protected]> Co-authored-by: PIRANY <[email protected]> Co-authored-by: PPNplus <[email protected]> Co-authored-by: PalmyreB <[email protected]> Co-authored-by: Pavel Borecki <[email protected]> Co-authored-by: Pavel Miniutka <[email protected]> Co-authored-by: Radoslav <[email protected]> Co-authored-by: Shawn <[email protected]> Co-authored-by: Shayan <[email protected]> Co-authored-by: Simone Ognibene <[email protected]> Co-authored-by: Skanda <[email protected]> Co-authored-by: Syahmi Azhar <[email protected]> Co-authored-by: Sylvain Pichon <[email protected]> Co-authored-by: Tacyd <[email protected]> Co-authored-by: Thiago S. Marcelino <[email protected]> Co-authored-by: Tim Morley <[email protected]> Co-authored-by: Timon Fiedler <[email protected]> Co-authored-by: Tom Haelbich <[email protected]> Co-authored-by: Tomislav Renić <[email protected]> Co-authored-by: User 123456789 <[email protected]> Co-authored-by: Usinouv <[email protected]> Co-authored-by: Yoshi <[email protected]> Co-authored-by: Yusaku Mizobuchi <[email protected]> Co-authored-by: Zadkiel AHARONIAN <[email protected]> Co-authored-by: bittin1ddc447d824349b2 <[email protected]> Co-authored-by: deva <[email protected]> Co-authored-by: hunnguye <[email protected]> Co-authored-by: lanew <[email protected]> Co-authored-by: muziqaz <[email protected]> Co-authored-by: noob translator <[email protected]> Co-authored-by: reducedradius <[email protected]> Co-authored-by: rubes <[email protected]> Co-authored-by: santhosh kumar <[email protected]> Co-authored-by: tikg <[email protected]> Co-authored-by: tulioveneno <[email protected]> Co-authored-by: waclaw66 <[email protected]> Co-authored-by: zurachu <[email protected]> Co-authored-by: 정동걸 <[email protected]> * fix: check out the branch tip when preparing a release (immich-app#31061) * chore: version v3.2.0-rc.0 * fix: build release branch images instead of re-tagging main (immich-app#31063) * fix: run codeql and weblate checks on release branches (immich-app#31065) * fix: avoid a concurrency deadlock when drafting a release (immich-app#31069) * chore: drop backport label description (immich-app#31062) * chore: drop backport description header (immich-app#31067) * fix(ml): read CLIP model configs as UTF-8 (immich-app#31075) * fix(web): face editor coordinates on a not-yet-loaded video (immich-app#31083) * fix(e2e): wait out the duplicate #asset-grid during navigation (immich-app#31088) * fix(mobile): handle transient loading states for map timelines (immich-app#29735) * fix(mobile): handle transient loading states for map timelines * fix(mobile): handle transient loading states for map timelines * Add support for new method * Rewrote map options notifier to be more Riverpody * fix: generate release notes from the previous release on the line (immich-app#31080) * chore(deps): update base-image to v202608300913 (immich-app#31128) * chore: tune map icon size (immich-app#31108) * fix(mobile): keep the original filename when sharing downloaded assets (immich-app#30267) * fix(mobile): keep the original filename when sharing downloaded assets * use ordinal suffixes for duplicate share filenames * rename display name maps to totals and duplicates seen * drop the display name totals map and keep the first copy name clean * fold the ordinal suffix into the share display name derivation * resolve share names after download and test through the public flow * use the renamed store repository in the share tests * add docstrings to the share file helpers * simplify the share name resolver to a single set * note the share_plus cache folder behavior on the resolver * drop the version pin from the resolver comment * pin the share_plus version in the resolver comment * undo the accidental reformat, keep the version pin * explain the test harness and cut the teardown and wait noise * say why the storage is stubbed, drop the platform override and busy wait for the share cleanup * spy on the cleanup in the share tests instead of waiting for it * fix(mobile): refresh server info when the websocket connects (immich-app#31144) refresh the server features and config when the websocket connects * fix: do not move faces of users other than the current owner (immich-app#31145) * fix(server): allow an empty assetIds array when creating an album shared link (immich-app#31098) * fix: Build SDK in dev container (immich-app#31096) * fix(web): interaction with some filter elements closes the search panel (immich-app#31107) * fix: open an announcement discussion for each release line (immich-app#31101) --------- Co-authored-by: bo0tzz <[email protected]> Co-authored-by: Daniel Dietzler <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Daniel Dietzler <[email protected]> Co-authored-by: Damiano Ferrari <[email protected]> Co-authored-by: Lauritz Tieste <[email protected]> Co-authored-by: shenlong-tanwen <[email protected]> Co-authored-by: Mert <[email protected]> Co-authored-by: Yaros <[email protected]> Co-authored-by: Jason Rasmussen <[email protected]> Co-authored-by: Adam Gastineau <[email protected]> Co-authored-by: thejeff77 <[email protected]> Co-authored-by: Timon <[email protected]> Co-authored-by: Zlendy <[email protected]> Co-authored-by: Priyanshu <[email protected]> Co-authored-by: priyanshuANDcoad <[email protected]> Co-authored-by: Aditya Raj Singh <[email protected]> Co-authored-by: brn-lin <[email protected]> Co-authored-by: Aviatorpaal <[email protected]> Co-authored-by: Mimi <[email protected]> Co-authored-by: andy.mp3 <[email protected]> Co-authored-by: rickytrevor <[email protected]> Co-authored-by: shenlong <[email protected]> Co-authored-by: Weblate (bot) <[email protected]> Co-authored-by: 4liceD <[email protected]> Co-authored-by: 4liceD <[email protected]> Co-authored-by: Adam Havránek <[email protected]> Co-authored-by: Aindriú Mac Giolla Eoin <[email protected]> Co-authored-by: Akhil Raj <[email protected]> Co-authored-by: Arco <[email protected]> Co-authored-by: Ardev Prisec <[email protected]> Co-authored-by: Arif Budiman <[email protected]> Co-authored-by: Arkaitz Ortega <[email protected]> Co-authored-by: Arnie97 <[email protected]> Co-authored-by: Arseniy <[email protected]> Co-authored-by: Azharul Haque <[email protected]> Co-authored-by: Bat-Uyanga Batdelger <[email protected]> Co-authored-by: Brady87 <[email protected]> Co-authored-by: Brian <[email protected]> Co-authored-by: Bruno Silva <[email protected]> Co-authored-by: Colin <[email protected]> Co-authored-by: CoolAEW <[email protected]> Co-authored-by: Denis Pacquier <[email protected]> Co-authored-by: DevServs <[email protected]> Co-authored-by: Eduard Ereza Martínez <[email protected]> Co-authored-by: Emil Warelius <[email protected]> Co-authored-by: Fjuro <[email protected]> Co-authored-by: Frank Paul Silye <[email protected]> Co-authored-by: HackingAll <[email protected]> Co-authored-by: Hans Cats <[email protected]> Co-authored-by: Happy <[email protected]> Co-authored-by: Henry Wong <[email protected]> Co-authored-by: Hurricane_32 <[email protected]> Co-authored-by: Håkon Antonsen <[email protected]> Co-authored-by: Hồ Nhất Duy <[email protected]> Co-authored-by: Indrek Haav <[email protected]> Co-authored-by: Ivan Dimitrov <[email protected]> Co-authored-by: Izoret <[email protected]> Co-authored-by: Jonatan Nyberg <[email protected]> Co-authored-by: Jozef Gaal <[email protected]> Co-authored-by: Kanchnak Khorn <[email protected]> Co-authored-by: Klenner Martins Barros <[email protected]> Co-authored-by: Leo Bottaro <[email protected]> Co-authored-by: Li-Sheng Chou <[email protected]> Co-authored-by: Linas Samuchovas <[email protected]> Co-authored-by: Liviu Roman <[email protected]> Co-authored-by: Lucas Pinto <[email protected]> Co-authored-by: Luis Fernando Illapa <[email protected]> Co-authored-by: Marco C. <[email protected]> Co-authored-by: Matjaž T. <[email protected]> Co-authored-by: Michal Šmahel <[email protected]> Co-authored-by: Mārtiņš Bruņenieks <[email protected]> Co-authored-by: Nagy Krisztián <[email protected]> Co-authored-by: Natale Daniele Musumeci <[email protected]> Co-authored-by: Nicola Bortoletto <[email protected]> Co-authored-by: Olaf Nielsen <[email protected]> Co-authored-by: Oğuz Ersen <[email protected]> Co-authored-by: PIRANY <[email protected]> Co-authored-by: PPNplus <[email protected]> Co-authored-by: PalmyreB <[email protected]> Co-authored-by: Pavel Borecki <[email protected]> Co-authored-by: Pavel Miniutka <[email protected]> Co-authored-by: Radoslav <[email protected]> Co-authored-by: Shawn <[email protected]> Co-authored-by: Shayan <[email protected]> Co-authored-by: Simone Ognibene <[email protected]> Co-authored-by: Skanda <[email protected]> Co-authored-by: Syahmi Azhar <[email protected]> Co-authored-by: Sylvain Pichon <[email protected]> Co-authored-by: Tacyd <[email protected]> Co-authored-by: Thiago S. Marcelino <[email protected]> Co-authored-by: Tim Morley <[email protected]> Co-authored-by: Timon Fiedler <[email protected]> Co-authored-by: Tom Haelbich <[email protected]> Co-authored-by: Tomislav Renić <[email protected]> Co-authored-by: User 123456789 <[email protected]> Co-authored-by: Usinouv <[email protected]> Co-authored-by: Yoshi <[email protected]> Co-authored-by: Yusaku Mizobuchi <[email protected]> Co-authored-by: Zadkiel AHARONIAN <[email protected]> Co-authored-by: bittin1ddc447d824349b2 <[email protected]> Co-authored-by: deva <[email protected]> Co-authored-by: hunnguye <[email protected]> Co-authored-by: lanew <[email protected]> Co-authored-by: muziqaz <[email protected]> Co-authored-by: noob translator <[email protected]> Co-authored-by: reducedradius <[email protected]> Co-authored-by: rubes <[email protected]> Co-authored-by: santhosh kumar <[email protected]> Co-authored-by: tikg <[email protected]> Co-authored-by: tulioveneno <[email protected]> Co-authored-by: waclaw66 <[email protected]> Co-authored-by: zurachu <[email protected]> Co-authored-by: 정동걸 <[email protected]> Co-authored-by: immich-push-o-matic[bot] <179150890+immich-push-o-matic[bot]@users.noreply.github.com> Co-authored-by: Alex <[email protected]> Co-authored-by: Santo Shakil <[email protected]> Co-authored-by: Ufuk <[email protected]> Co-authored-by: Ray <[email protected]> Co-authored-by: Nemer Tamimi <[email protected]> Co-authored-by: Claude Opus 5 <[email protected]>
nemerytamimi
added a commit
to nemerytamimi/immich
that referenced
this pull request
Sep 11, 2026
* fix: run codeql and weblate checks on release branches (immich-app#31066) fix: run codeql and weblate checks on release branches (immich-app#31065) (cherry picked from commit bbf201d) Co-authored-by: bo0tzz <[email protected]> * fix: build release branch images instead of re-tagging main (immich-app#31064) fix: build release branch images instead of re-tagging main (immich-app#31063) (cherry picked from commit 5baf181) Co-authored-by: bo0tzz <[email protected]> * fix: avoid a concurrency deadlock when drafting a release (immich-app#31070) fix: avoid a concurrency deadlock when drafting a release (immich-app#31069) (cherry picked from commit b912dcf) Co-authored-by: bo0tzz <[email protected]> * chore: version v3.2.0-rc.1 * fix(web): face editor coordinates on a not-yet-loaded video (immich-app#31085) fix(web): face editor coordinates on a not-yet-loaded video (immich-app#31083) (cherry picked from commit 1a8fcf1) Co-authored-by: bo0tzz <[email protected]> * fix: generate release notes from the previous release on the line (immich-app#31094) fix: generate release notes from the previous release on the line (immich-app#31080) (cherry picked from commit 469a870) Co-authored-by: bo0tzz <[email protected]> * chore(deps): update base-image to v202608300913 (immich-app#31129) chore(deps): update base-image to v202608300913 (immich-app#31128) (cherry picked from commit 1fd3d87) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: do not move faces of users other than the current owner (immich-app#31149) fix: do not move faces of users other than the current owner (immich-app#31145) (cherry picked from commit 0628f8b) Co-authored-by: Daniel Dietzler <[email protected]> * fix(server): allow an empty assetIds array when creating an album shared link (immich-app#31151) fix(server): allow an empty assetIds array when creating an album shared link (immich-app#31098) (cherry picked from commit 9e5dcc5) Co-authored-by: Ufuk <[email protected]> * chore: tune map icon size (immich-app#31150) chore: tune map icon size (immich-app#31108) (cherry picked from commit 015e5f2) Co-authored-by: Alex <[email protected]> * fix(mobile): keep the original filename when sharing downloaded assets (immich-app#31154) fix(mobile): keep the original filename when sharing downloaded assets (immich-app#30267) * fix(mobile): keep the original filename when sharing downloaded assets * use ordinal suffixes for duplicate share filenames * rename display name maps to totals and duplicates seen * drop the display name totals map and keep the first copy name clean * fold the ordinal suffix into the share display name derivation * resolve share names after download and test through the public flow * use the renamed store repository in the share tests * add docstrings to the share file helpers * simplify the share name resolver to a single set * note the share_plus cache folder behavior on the resolver * drop the version pin from the resolver comment * pin the share_plus version in the resolver comment * undo the accidental reformat, keep the version pin * explain the test harness and cut the teardown and wait noise * say why the storage is stubbed, drop the platform override and busy wait for the share cleanup * spy on the cleanup in the share tests instead of waiting for it (cherry picked from commit 006e7fd) Co-authored-by: Santo Shakil <[email protected]> * fix(mobile): handle transient loading states for map timelines (immich-app#31153) fix(mobile): handle transient loading states for map timelines (immich-app#29735) * fix(mobile): handle transient loading states for map timelines * fix(mobile): handle transient loading states for map timelines * Add support for new method * Rewrote map options notifier to be more Riverpody (cherry picked from commit dc813e2) Co-authored-by: Adam Gastineau <[email protected]> * fix(web): interaction with some filter elements closes the search panel (immich-app#31160) fix(web): interaction with some filter elements closes the search panel (immich-app#31107) (cherry picked from commit 9dead78) Co-authored-by: Alex <[email protected]> * fix(ml): read CLIP model configs as UTF-8 (immich-app#31152) fix(ml): read CLIP model configs as UTF-8 (immich-app#31075) (cherry picked from commit c1a88dd) Co-authored-by: Aditya Raj Singh <[email protected]> * fix(mobile): refresh server info when the websocket connects (immich-app#31155) fix(mobile): refresh server info when the websocket connects (immich-app#31144) refresh the server features and config when the websocket connects (cherry picked from commit c17a119) Co-authored-by: Santo Shakil <[email protected]> * fix: open an announcement discussion for each release line (immich-app#31163) fix: open an announcement discussion for each release line (immich-app#31101) (cherry picked from commit 5666d57) Co-authored-by: bo0tzz <[email protected]> * chore: version v3.2.0-rc.2 * chore(deps): update github-actions (immich-app#31192) chore(deps): update github-actions (immich-app#31182) (cherry picked from commit 40e6abc) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: add discussions perm to release publish token (immich-app#31193) fix: add discussions perm to release publish token (immich-app#31167) (cherry picked from commit 9e1e595) Co-authored-by: bo0tzz <[email protected]> * fix(server): never unlink an untracked-file path that an asset now references (immich-app#31194) fix(server): never unlink an untracked-file path that an asset now references (immich-app#31074) (cherry picked from commit c1f2756) Co-authored-by: Aditya Raj Singh <[email protected]> * fix: fdroid link (immich-app#31221) fix: fdroid link (immich-app#31219) (cherry picked from commit a68937c) Co-authored-by: Jason Rasmussen <[email protected]> * chore: require number format (immich-app#31226) chore: require number format (immich-app#31222) (cherry picked from commit 2c53b76) Co-authored-by: Jason Rasmussen <[email protected]> * fix: don't force builds on release-base PRs (immich-app#31231) fix: don't force builds on release-base PRs (immich-app#31225) (cherry picked from commit b48266c) Co-authored-by: bo0tzz <[email protected]> * fix: incorrect edit's openapi type (immich-app#31233) fix: incorrect edit's openapi type (immich-app#31218) * fix: incorrect edit's openapi type * patch * remove type changes (cherry picked from commit fa8a191) Co-authored-by: Alex <[email protected]> * fix(web): album date range formatting (immich-app#31238) fix(web): album date range formatting (immich-app#28564) (cherry picked from commit da8131d) Co-authored-by: Mees Frensel <[email protected]> * fix(mobile): switch to new OpenAPI int in RotateParameters (immich-app#31248) fix(mobile): switch to new OpenAPI int in RotateParameters (immich-app#31246) (cherry picked from commit 6d85f20) Co-authored-by: Adam Gastineau <[email protected]> * fix: face detection of edited assets (immich-app#31243) fix: face detection of edited assets (immich-app#31240) (cherry picked from commit 399217b) Co-authored-by: Daniel Dietzler <[email protected]> * chore(mobile): log app resume and pause (immich-app#31224) chore(mobile): log app resume and pause (immich-app#31207) (cherry picked from commit 7211efa) Co-authored-by: Santo Shakil <[email protected]> * fix(mobile): prevent inner mutability on Freezed classes (immich-app#31251) fix(mobile): prevent inner mutability on Freezed classes (immich-app#31229) * fix(mobile): prevent inner mutability on Freezed classes * Minor fixes (cherry picked from commit 8e04e6e) Co-authored-by: Adam Gastineau <[email protected]> * fix(web): partner sharing timeline (immich-app#31252) fix(web): partner sharing timeline (immich-app#31241) * fix(web): prevent websocket assets from leaking into scoped timelines * test: add 1 more test case to make sure the changes didnt break the logic (cherry picked from commit 040ae6b) Co-authored-by: Yohanes Kirana <[email protected]> * fix(mobile): refresh the memory lane after resume (immich-app#31260) fix(mobile): refresh the memory lane after resume (immich-app#31239) (cherry picked from commit b1a9368) Co-authored-by: Santo Shakil <[email protected]> * chore: version v3.2.0-rc.3 * fix: memory page navigation (immich-app#31368) fix: memory page navigation (immich-app#31334) (cherry picked from commit d2245c7) Co-authored-by: Daniel Dietzler <[email protected]> * fix(server): live photo transcode visibility (immich-app#31374) fix(server): live photo transcode visibility (immich-app#31319) * allow live photos to be transcoded on queue trigger * new gen sql * add test to check hidden assets are returned (cherry picked from commit 58fb1ed) Co-authored-by: Jake Bybee <[email protected]> * fix(deps): update dependency maplibre-gl to v6 [security] (immich-app#31375) * BACKPORT-CONFLICT * fix: pnpm lockfile conflicts --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Daniel Dietzler <[email protected]> * fix(web): use RTL-friendly layout for people panel buttons (immich-app#31378) fix(web): use RTL-friendly layout for people panel buttons (immich-app#31266) (cherry picked from commit 95bfed1) Co-authored-by: Mees Frensel <[email protected]> * fix(web): word-wrap long album names (immich-app#31379) fix(web): word-wrap long album names (immich-app#31265) (cherry picked from commit d7ae4ae) Co-authored-by: Mees Frensel <[email protected]> * fix(mobile): hide negative age (immich-app#31381) fix(mobile): hide negative age (immich-app#31341) (cherry picked from commit 9563309) Co-authored-by: Yaros <[email protected]> * fix(mobile): make shared link download toggle depend on metadata toggle (immich-app#31382) fix(mobile): make shared link download toggle depend on metadata toggle (immich-app#31264) (cherry picked from commit 31943fb) Co-authored-by: Arthur <[email protected]> Co-authored-by: Arthur <[email protected]> * chore: version v3.2.0 --------- Co-authored-by: immich-push-o-matic[bot] <179150890+immich-push-o-matic[bot]@users.noreply.github.com> Co-authored-by: bo0tzz <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Daniel Dietzler <[email protected]> Co-authored-by: Ufuk <[email protected]> Co-authored-by: Alex <[email protected]> Co-authored-by: Santo Shakil <[email protected]> Co-authored-by: Adam Gastineau <[email protected]> Co-authored-by: Aditya Raj Singh <[email protected]> Co-authored-by: Jason Rasmussen <[email protected]> Co-authored-by: Mees Frensel <[email protected]> Co-authored-by: Yohanes Kirana <[email protected]> Co-authored-by: Jake Bybee <[email protected]> Co-authored-by: Daniel Dietzler <[email protected]> Co-authored-by: Yaros <[email protected]> Co-authored-by: Arthur <[email protected]> Co-authored-by: Arthur <[email protected]> Co-authored-by: Claude Opus 5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #30914
The CLIP encoders load their JSON configs with
Path.open()and no encoding, so the text codec comes fromlocale.getpreferredencoding(). A container started without a locale resolves that to ASCII, and any non-ASCII byte in the config raisesUnicodeDecodeError.ViT-SO400M-16-SigLIP2-384__weblihits this throughtokenizer_config.json. The failure is quiet: only the textual encoder loads those files, so visual embedding keeps working,/pingstays healthy and the container staysReadywhile every smart-search request returns 500.The issue names the three reads in
clip/textual.py.clip/visual.pyloadsconfig.jsonandpreprocess_cfg.jsonthe same way from the same model directories, so all five now passencoding="utf-8". Nothing else in the config-loading path changes — these files are UTF-8 JSON as published.I left
sessions/rknn/rknnpool.pyalone: it reads/proc/device-tree/compatible, which is not a model config and has its own error handling.How Has This Been Tested?
TestCLIP::test_reads_model_configs_as_utf8writes non-ASCII configs for both encoders and reads them withPath.opendefaulting to ASCII, standing in for the unset-locale containermainwithUnicodeDecodeError: 'ascii' codec can't decode byte 0xc3and passes with the changepytest test_main.py: 102 passed, 3 skippedruff checkandruff format --checkcleanChecklist:
src/services/uses repositories implementations for database calls, filesystem operations, etc.src/repositories/is pretty basic/simple and does not have any immich specific logic (that belongs insrc/services/)Please describe to which degree, if any, an LLM was used in creating this pull request.
An LLM assisted with locating the sibling reads in the visual encoder and drafting the test. The decision on scope and the final code were mine, and I ran the suite and the linters locally.