.env 파일에서 IMMICH_VERSION=v2를 IMMICH_VERSION=v3로 변경
docker compose pull && docker compose up -d 실행
릴리스 후보와 알림 채널
v3.0.0은 Immich가 release candidate를 처음 사용한 릴리스임
릴리스 후보는 테스트됐지만 공식 릴리스는 아닌 프리릴리스이며, 최종 릴리스 전 남은 버그를 찾고 수정하는 데 사용됨
Immich 안에서 릴리스 후보 알림을 받고 싶으면 Admin settings > Version check에서 릴리스 채널을 Stable에서 Release candidate로 바꿀 수 있음
모바일 편집과 백업 개선
모바일 비파괴 편집은 v2.5.0에 웹으로 먼저 추가된 이미지 편집 기능의 후속 작업임
기존 모바일 편집기는 사진을 제자리에서 수정하지 않고 새 asset을 만드는 별도 시스템을 사용했음
v3.0.0의 모바일 편집기는 웹 버전과 같은 기능을 제공하며, 원본 파일을 건드리지 않고 자르기, 회전, 이미지 조정을 할 수 있음
편집은 비파괴 방식이라 나중에 다시 수정하거나 되돌릴 수 있고, 모바일에서 편집한 뒤 웹에서 이어서 조정할 수 있음
이전 모바일 편집 구현에서 제공되던 일부 기능은 제거됨
사진 색상 변경
Live Photo 편집
로컬 asset 편집
일부 기능은 향후 릴리스에서 다시 제공할 계획이 있음
Android 백그라운드 백업은 주기 작업 스케줄러를 사용해 더 안정적으로 동작함
이전에는 새로 촬영한 사진에 제한됐음
이제 전체 라이브러리를 백그라운드에서 업로드할 수 있음
Android 백그라운드 실행 제한과 더 잘 맞고, 작업 정리와 배터리 최적화·알림 설정 경고를 처리함
iOS 백그라운드 새로고침 작업은 동기화와 업로드를 병렬 실행해, iOS가 허용하는 짧은 시간 안에 업로드가 시작되도록 바뀜
워크플로우 미리보기
Workflows는 라이브러리의 동작을 자동화하는 첫 미리보기 기능임
트리거, 필터, 액션을 드래그 앤 드롭 빌더로 연결해 자동화를 만들 수 있음
웹의 Utilities > Workflows에서 접근 가능함
새 빈 워크플로우를 만들거나 미리 만들어진 템플릿을 둘러볼 수 있음
편집기는 Visual editor와 JSON editor를 제공함
Visual editor는 워크플로우 구성에 적합함
JSON editor는 워크플로우 내용을 다른 사람과 공유하거나 받는 데 적합함
각 워크플로우는 trigger와 일련의 steps로 구성됨
Trigger는 워크플로우의 진입점이며, 트리거가 발생하면 단계가 평가됨
Steps는 조건에 해당하는 Filters와 효과에 해당하는 Actions를 포함함
공유 방식은 텍스트와 JSON 두 가지임
텍스트는 포럼 공유나 시연용에 적합함
JSON은 워크플로우 설정을 정확히 복제하는 데 적합함
새 트리거와 액션 아이디어는 별도 discussion thread에서 피드백을 받음
라이브러리 탐색과 무결성 검사
웹과 모바일에 Recently Added 페이지가 추가됨
asset 촬영 시점이 아니라 Immich에 추가된 시점 기준으로 라이브러리를 볼 수 있음
새로 가져온 묶음을 탐색할 때 무엇이 새로 들어왔는지 찾기 쉬움
웹에서는 Explore 탭, 모바일에서는 Search 탭에서 찾을 수 있음
유지보수 페이지에는 integrity reports가 추가됨
Immich가 파일 시스템의 디렉터리를 스캔하고 데이터베이스에 저장된 정보와 비교함
Immich가 모르는 파일이 디렉터리에 있으면 untracked로 표시됨
데이터베이스에는 참조가 있지만 해당 위치에 파일이 없으면 missing으로 표시됨
디스크 파일 체크섬이 Immich가 저장한 체크섬과 다르면 checksum mismatch로 표시됨
체크섬 불일치는 일반적으로 파일 손상에서 발생할 수 있고, 잘못된 이름 변경의 결과일 수도 있음
무결성 검사 작업은 매일 밤 언제, 얼마나 오래 실행할지 설정할 수 있음
비디오와 미디어 재생
모바일 앱에 Slideshow 기능이 추가되어 웹처럼 사진과 비디오를 화면에서 자동 재생할 수 있음
HLS와 실시간 비디오 트랜스코딩은 미리보기 기능으로 추가됨
오프라인 트랜스코드를 미리 만들지 않고 동영상이 재생되는 동안 변환할 수 있음
수동·자동 품질 전환을 지원함
클라이언트가 지원하는 최적 코덱으로 트랜스코딩할 수 있음
오프라인 트랜스코딩을 비활성화하면 저장 공간 부담을 줄일 수 있음
아직 구현되지 않은 항목도 명시됨
호환 클라이언트용 HDR
대역폭이 허용될 때 원본을 트랜스코딩하지 않고 remuxing
실시간 트랜스코딩은 실험적이며 버전마다 동작이 바뀔 수 있음
현재 웹 앱에만 구현되어 있고 모바일 앱 구현은 진행 중임
활성화는 video transcoding settings에서 할 수 있음
실시간 트랜스코딩을 켜도 오프라인 트랜스코딩은 직접 영향을 받지 않으므로, 오프라인 트랜스코딩을 끄려면 transcode policy도 조정해야 함
v3 이전에 가져온 asset은 작업 패널에서 Metadata Extraction을 다시 실행해야 재처리됨
서버가 실시간 트랜스코딩을 처리할 만큼 충분히 강해야 하며, 하드웨어 가속은 권장되지만 필수는 아님
웹 앱에는 Immich 디자인에 맞춘 새 커스텀 비디오 플레이어가 추가됨
모든 기기에서 같은 컨트롤과 레이아웃을 제공함
재생 속도 변경 같은 기본 기능을 제공함
iOS에서 OS 컨트롤이 Immich 내비게이션 바 뒤에 숨는 문제도 해결할 수 있음
Android, OCR, 공유와 앨범 흐름
Android에서 Immich를 갤러리/이미지 뷰어 앱처럼 사용할 수 있음
다른 앱에서 사진이나 비디오를 탭하고 Immich를 선택하면 asset viewer에서 바로 열림
파일 공유 또는 라이브러리 업로드 옵션을 제공함
이미 라이브러리에 있는 파일을 인식하는 방식은 향후 개선될 예정임
모바일 asset viewer에는 사진 속 인식된 텍스트를 강조하는 OCR 토글이 추가됨
이미지에서 텍스트를 선택하고 복사할 수 있음
모바일 앱에서 로컬 사진을 앨범에 직접 업로드할 수 있음
asset bottom sheet에서도 앨범에 바로 추가 가능함
먼저 업로드한 뒤 나중에 정리하는 흐름의 마찰을 줄임
모바일 공유 시 전송 전 이미지 크기를 선택할 수 있음
메시징 앱용으로 파일을 작게 유지할 수 있음
필요하면 전체 품질로 공유할 수도 있음
기본 동작은 App Settings > Preferences에서 변경 가능함
공유 버튼을 길게 눌러 즉석에서 옵션을 고를 수 있음
한 달 안에 asset이 많은 경우의 타임라인 탐색 성능이 개선되어, 브라우저 탭이 잠기는 상황을 줄임
주요 변경 묶음
Breaking changes에는 class-validator에서 zod로의 마이그레이션, replace asset 제거, 오래된 timeline sync 엔드포인트 제거, pgvecto.rs 지원 중단, 오류 응답 구조 변경 등이 포함됨
Deprecated changes로는 PUT 라우트를 PATCH로 대체하는 방향의 deprecation이 포함됨
보안 항목에는 프로필 사진을 thumbnail pipeline을 거치도록 하는 수정이 포함됨
기능 추가에는 모바일 편집, Android periodic work manager task, 커스텀 웹 비디오 플레이어, recently added assets page, workflows & plugins, HLS 실시간 트랜스코딩, 모바일 OCR, 무결성 검사 작업 등이 포함됨
버그 수정에는 OAuth 이메일 정규화, zip에 추가하기 전 파일명 정리, 잠긴 asset의 파트너 노출 방지, 무단 face 생성 수정, CLI 업로드 시 메모리 부족 방지 등이 포함됨
토론에서 확인된 제약과 답변
v2.0.1에서 v3.0.0으로 올리는 경우 별도 특별 지침은 없으며 릴리스 노트의 업데이트 절차를 따르면 된다는 답변이 있었음
모바일 업데이트 뒤 앨범이 보이지 않는 사례는 모바일 쪽 마이그레이션 버그로 보였고, 로그아웃 후 재로그인 또는 서버를 v3로 업데이트하면 해결될 수 있음
iPhone 백업 복원 뒤 모바일 앱에서 서버에 있는 사진을 다시 로컬로 받는 흐름에 대해, 모바일 앱에는 아직 bulk download 옵션이 없고 개별 사진 다운로드만 가능함
실시간 트랜스코딩을 켠 뒤 기존 트랜스코딩 비디오를 지우는 질문에는, 모바일 앱이 아직 실시간 트랜스코딩을 지원하지 않으므로 기존 트랜스코딩 비디오가 필요하며 수동 삭제는 권장되지 않는다는 답변이 있었음
HEIC 사진을 즉석에서 JPG로 변환하는 기능은 계획이 없고, 현재 생성되는 썸네일은 JPEG/WEBP라 모든 브라우저와 클라이언트에 호환된다는 답변이 있었음
Android 백그라운드 백업 개선은 100MB 이상 대형 이미지와 Cloudflare 제한 문제를 해결하는 변경이 아니라, 백그라운드 작업이 더 자주 주기적으로 실행되도록 하는 개선임
실시간 트랜스코딩에서 코덱은 서버가 아니라 클라이언트가 선택하며, 서버가 AV1 변형을 광고하면 AV1 디코딩 가능한 클라이언트가 그쪽으로 갈 수 있음
서버가 광고할 코덱과 해상도를 선택하는 설정을 추가할 계획이 있음
캐스팅 개선은 할 일 목록에 있으며, cast 전체를 다시 작성하고 실시간 트랜스코딩도 추가해야 한다는 답변이 있었음
업그레이드 뒤 No vector extension found. Available extensions: vchord, vector 오류를 올린 사용자는 이후 해결됐다고 남김
새 체크섬 불일치 검사에 대해, 과거 Immich 외부에서 업로드된 이미지를 편집한 사용자는 수백 개 checksum mismatch가 생길 수 있어 체크섬 재계산으로 해결하는 기능이 유용하다는 의견이 있었음
VectorChord 마이그레이션과 관련해, v1.102 이전 사용자는 DB_DATA_LOCATION opt-in 변경을 놓쳤을 수 있으므로 경고가 있으면 좋겠다는 의견이 있었음