• 5.2.0

    5.1.0 대비 변경사항

    E-Hentai 불완전 원본 응답 대응

    • 일부 H@H 노드가 원본 앞부분만 캐시한 채 HTTP 200으로 응답해, 같은 페이지를 다시 받아도 같은 잘린 파일이 와서 수집이 영구 실패로 멈추던 문제를 고쳤습니다.
    • 이미지 URL의 fileid(SHA-1·크기)와 WebP RIFF 선언 크기로 응답을 검증해, 불일치하면 nl 대체 서버에서 한 번 더 받습니다. 그래도 불일치하면 영구 실패가 아니라 일시 실패로 처리합니다. nl 재요청도 페이지 요청 예산(6회·3분)에 포함됩니다.
    • 절단된 WebP는 디코더 실패와 구분하고, 과거에 절단된 채 남은 pending 객체는 버리고 다시 받습니다. 정상 경로의 요청 수는 늘지 않습니다.

    운영 화면

    • 썸네일 생성 패널은 대상 갤러리·완료·미처리만 표시하고 진행률은 생성 완료 N%로 바꿨습니다.
    • 데이터베이스 통계와 요청 지표·의존성의 새로고침 버튼을 제거했습니다. 섹션을 펼칠 때마다 자동으로 조회하며, 조회·갱신 실패 시에는 다시 시도를 제공합니다.

    PWA 설치 안내와 알림 유도

    • 모바일 PWA 설치 안내를 한 번 닫으면 영구히 다시 뜨지 않던 문제를 고쳤습니다. 닫은 뒤 14일이 지나면 다시 보이고, 설치 이벤트가 오지 않는 브라우저에도 한 줄 바와 방법 보기(브라우저별 홈 화면 추가 방법)를 보입니다. 높이는 절반 이하로 줄였습니다.
    • 북마크한 작가·그룹의 신규 작품 알림 유도창을 추가했습니다. 로그인, 서버 push 구성, 이 브라우저 미구독, 작가·그룹 북마크 1개 이상일 때 잠시 뒤 조용히 나타나며, 모바일은 하단 바, PC는 우측 하단 카드입니다. 권한 요청은 알림 받기를 누를 때만 하고 나중에(30일)·받지 않기(영구)를 고를 수 있습니다.
    • 하단 안내 바가 목록 끝의 페이지 이동 버튼을 가리지 않도록 본문 하단 여백을 예약합니다.

    기존 기능과 데이터를 유지하는 기능 추가가 있어 minor 5.2.0을 적용합니다. API 비호환·DB migration·SQL schema·의존성 변경은 없습니다. 제품 버전은 Git 태그·OCI label·문서로 관리하며 private package와 lockfile의 기존 버전은 유지합니다.

    이미지 게시 범위

    production 빌드 입력 지문 대조상 crawler·web만 변경돼 두 이미지를 새로 빌드해 5.2.0·latest로 게시했습니다. nginx·backend·byedpi는 기존 latest digest에 5.2.0 태그만 붙였습니다. 모든 자체 이미지에 5.2.0 태그가 있으므로 IMAGE_TAG=5.2.0 지정과 일괄 rollback이 가능합니다. log-reader는 backend 이미지를 공유하며 PostgreSQL·Redis·Silo는 자체 이미지 게시 대상이 아닙니다.

    NAS 업데이트와 주의사항

    운영자는 운영 반영에 따라 5.2.0의 Compose와 릴리스 파일을 갱신하고 기본 latest를 사용합니다. DB migration은 없으므로 crawler·web 교체만으로 반영됩니다.

    • 불완전 응답으로 재개 대기에 멈춘 E-Hentai 작업은 배포 뒤 운영 화면에서 체크포인트 재개만 누르면 nl 대체 서버에서 받아 이어 갑니다.
    • 알림 유도창은 HTTPS(secure context)에서만 동작합니다.

    NAS 배포·운영 데이터 변경은 이번 게시에서 실행하지 않습니다.

    5.1.0 대비 전체 변경

    검증

    • 병합 main 2a5b7548에서 run-unit.ps1 -Workspace all(backend 71 suites·440 tests, crawler 63·717, web 127·1,497)과 run-crawler-recovery.ps1 -EHentaiOnly(합성 provider, 실제 PostgreSQL·MinIO)가 통과했습니다.
    • 운영 중단 원인은 개발 stack의 crawler egress 경로로 해당 페이지를 실제로 받아 확정했습니다(배정 노드 1,212,416바이트·운영 hash 일치, nl 서버 13,797,136바이트·fileid SHA-1 일치). 수정 코드의 검증·대체·예산 경로는 합성 fixture와 실제 adapter·저장소 경계 spec으로 고정했습니다.
    • crawler·web을 같은 코드로 재빌드해 기동을 확인했고, 이미지 검색·운영 UI 격리 브라우저 검증 1440/320px이 통과했습니다. PWA 안내와 알림 유도창은 모바일 390/320px·PC 1440px 라이트·다크와 목록 끝 겹침을 캡처로 확인했습니다.
    • 각 브랜치는 병합 전 읽기 전용 리뷰를 거쳤습니다. 실제 E-Hentai 통신 runner, 실제 Android·iOS 기기와 push 구독, NAS 배포는 NOT RUN입니다.

    게시 확인

    • 릴리스 소스: 508ac2225478c7a64d98fed308e8ee296a0ab185 (annotated Git 태그 5.2.0 대상).
    • crawler 5.2.0·latest OCI index digest: sha256:d08a1d5be95110f2a8aae2fc77f0e6b08f757fefaad1589bf30595e4e2049107. linux/amd64 manifest: sha256:ce3c0a4eaa59629fdb79dc1b989c962205c310d75b626529fd59a1add471e5a5. OCI version 5.2.0·revision 508ac222…·입력 지문 5ee81b7b01a23d03dcdff4a16cf5a5980b5e1ebbde648a7b59b987a86433d4ae.
    • web 5.2.0·latest: sha256:590952eaa20c3fa045dabd25826887ec6ef1581d2bf90f19a30e29d4b9d75196. linux/amd64 manifest: sha256:151b6ad32c9c715549d742e21ba3a9c148d4edf3685c29d4fb53bb265c1f6e11. OCI version 5.2.0·revision 508ac222…·입력 지문 28b69ca545d4b8946504c4f118de3a8fbeac7b5a05c7a97708a854c0745a9ceb.
    • nginx 5.2.0·latest(기존 digest 재사용): sha256:0ed33b91538effe5864676f21e16edbbdd33f11251bd180adc97f4eb7a16467d. OCI version 5.1.0 유지.
    • backend 5.2.0·latest(기존 digest 재사용): sha256:5ed675eed4da9c63125080a3e4ebc0fabe43093d137fd198ecf225e35917816c. OCI version 5.1.0 유지.
    • byedpi 5.2.0·latest(기존 digest 재사용): sha256:15ac60ab852a92219573aa3e3795f700e9da0692022af47233590e6a78a1a40a.
    • COMPOSE_PARALLEL_LIMIT=1로 push를 직렬화해 첫 실행 exit 0으로 완료했으며 재시도·no-cache·ForceRebuild·직접 docker push·인증 변경은 없었습니다.
    Downloads 2