-
hanyul released this
2026-10-21 16:22:52 +09:00 5.15.0 주요 변경사항
화면·사용 흐름(web·backend)
- 홈 목록을 유동 2열 이상 grid로 바꾸고 카드에 작가·카테고리·쪽수 메타 줄, 읽는 중 표지의
p.N/M배지, namespace 색 태그 칩(5줄 scroll)과+N표시를 두었습니다. 북마크 갤러리·모아보기도 같은 grid를 씁니다. - 북마크 화면에 전체 북마크 파일 내보내기·불러오기(형식 검사, page 단위 내보내기, 묶음 불러오기, guest 병합)를 추가했습니다.
- 고급 검색의 태그 선택 방식을 AND·OR 버튼으로 표시하고 쪽수·게시일 범위를 넓은 패널에서 나란히 배치했습니다. 홈 툴바 보기 방식은 segmented로 묶였고 연속·페이지 선택 면이 옮겨 가는 움직임을 갖습니다.
- 뷰어의 핀치·더블탭 줌을 초점 기준으로 바꾸고 팬을 경계 안에 묶었으며, 터치 탭은 좌·우 넘김과 가운데 조작 막대 토글로 나뉩니다. 진행률 막대는 transform으로 움직입니다.
- 상세 modal 정보 순서를 작가·쪽수·읽던 위치 중심으로 재배치했고, 북마크 별은 누르는 즉시 바뀌며 실패하면 되돌립니다. 개인 차단 태그 삭제에 되돌리기와 목록 검색, 패스키 삭제에 확인 dialog를 추가했습니다.
- 한국어 폰트 스택·타입 단계·모션 토큰·maskable 아이콘·상태 표시줄 색을 공용 레시피로 정리하고 본문 건너뛰기 링크, 설정 radio group의 키보드 이동 등 접근성을 보강했습니다.
- Hitomi 전체 크롤링에서도 수집 기록 무시 토글을 쓸 수 있고 범위 상한이 없어졌습니다. 갤러리 상세의 중복 검사 아이콘을 검색·대조 의미의 아이콘으로 바꿨습니다.
개발 서버 로그인(backend·web·Compose)
DEV_LOGIN_ENABLED=true인 개발 서버에서만 로그인 창에 사용자·운영자 즉시 로그인 버튼과 전용 endpoint가 생깁니다. 기본값false이며AUTH_COOKIE_SECURE=true면 무시됩니다.compose.yml이 backend에 이 키를 전달하고.env.example에 키가 추가됐습니다. 운영.env.production에는 넣지 않거나false로 둡니다.
schema·내부 정리(backend·crawler·shared·sql)
- fresh schema에서
reading_statusenum을unread·reading·completed로 좁히고reading_progress.status단독 index,tags의 쓰지 않는description·"galleryCount"컬럼을 없앴으며image_thumbnails.storage_path를 collation"C"로 고정했습니다. backend schema verifier가 두 경로 컬럼의 collation과 key 범위 index 사용을 단언합니다. - backend·crawler의 graceful shutdown, entity enum·상태 값, 설정·crawler 상태 응답 타입, 작가 namespace 판정과 검색 조건 상한을 shared 한 곳으로 통일했고, backend가 raw SQL로만 쓰던 entity 등록·crawler 전용 entity 사본·orphan audit 호환 분기를 제거했습니다. 중복 검사 매칭은 min-cost max-flow로 같은 결과를 내며
duplicate_groups포함 관계 CHECK 식을 backend·fresh schema와 맞췄습니다. - MinIO bucket은 backend·crawler 모두 시작 시 확인하고 없으면 만들며(앱별 계정이면 backend는 생성 불가),
ops/production-audit.sh는 운영 디렉터리 기준으로 실행 위치를 안내합니다..dockerignore의 쓸모없는 항목과 비활성 Forgejo workflow 파일을 지웠습니다.
문서·검증 자산
- README를 소개·실제 화면 캡처·4줄 빠른 시작 중심으로 다시 썼고, 캡처는 합성 데이터로 재현하는
tests/compose/readme-capture.yml이 만듭니다.docs/완료_이력.md를 없애고 검증 기록은 커밋 메시지, 릴리스 결과는 Forgejo 릴리스, 남은 운영 조치는 문서 색인 현재 계획이 맡습니다. 설계·운영 문서 전반을 코드와 대조해 바로잡았습니다. - passkey runner는 실행 중인 개발 stack의 Compose project 이름을 읽고, 통합 runner는 api-test 조기 종료 시 로그를 출력합니다.
새 기능·새 환경 키가 더해지고 기존 데이터는 유지되므로 minor 5.15.0으로 게시합니다. schema 변경은 기존 설치에 수동 SQL(아래)로 반영합니다.
이미지 게시 범위
- 새로 빌드(5.15.0·latest): backend·crawler·web. shared(
gallery-policy.ts·설정·crawler 상태 타입·중복 비교·schema verifier)가 바뀌어 세 앱의 빌드 입력이 달라졌고, backend는 개발 로그인·북마크 내보내기·상세 응답 필드·graceful shutdown, crawler는 Hitomi 전체 크롤링 토글·entity 통일·bucket 확인, web은 UI/UX 개편 전반이 바뀌었습니다. - byedpi: 소스는 5.4.0 이후 변경이 없으나 추적 입력 fingerprint가 latest 이미지의 기록과 달라 다시 빌드·게시했습니다(동일 Dockerfile·
alpine:3.24digest). - digest 재사용: nginx(5.10.0 digest). 빌드 입력이 같아 기존 digest에
5.15.0·latest태그만 붙였습니다. - 다섯 이미지 모두 5.15.0 태그가 있으므로
IMAGE_TAG=5.15.0으로 고정할 수 있습니다.
NAS 업데이트와 주의사항
운영은 운영 반영을 따릅니다.
- Compose·환경 키:
compose.yml이 backend에DEV_LOGIN_ENABLED(기본false)를 전달합니다. 운영.env.production에는 키를 두지 않거나false로 둡니다. 그 밖의 Compose·Dockerfile 변경은 없습니다. - 기존 설치 schema 반영(필수): 새 backend를 배포한 뒤 다음 릴리스 반영 SQL 1
6단계를 실행합니다. 13단계(reading_statusenum 축소·index 삭제)는 새 backend 배포 뒤에만 실행하고 실행 뒤에는 5.14.0 backend로 되돌리지 않습니다. 4~6단계(tags컬럼 삭제, 썸네일 경로 collation)는 배포 순서와 무관합니다. - backend와 web은 함께 배포합니다(상세 modal·북마크·고급 검색 응답 필드가 함께 바뀜). crawler 교체 시 실행 중인 수집 job은 checkpoint에서 멈추고 새 crawler가 재개합니다(E-Hentai job은 운영 화면에서 수동 재개).
migrations·typeorm_metadata·crawl_attempts테이블 삭제는 선택 정리이며 5.13.0 이하로 되돌릴 가능성이 없을 때만 실행합니다.- rollback: 5.14.0 이미지는 다섯 서비스 모두 레지스트리에 있어 반영 SQL 1~3단계 실행 전까지는
IMAGE_TAG=5.14.0으로 되돌릴 수 있습니다. 실행 뒤에는 되돌리지 않습니다.
검증
- 각 작업 브랜치(UI/UX 4개 라운드·정리·문서·DB 후속)에서
run-unit.ps1 -Workspace all,run-integration.ps1,run-schema.ps1과 변경 영역의 격리 검증(이미지 검색·운영 UI·북마크 UI·passkey·README 캡처)이 통과했고, 모든 브랜치는 gpt-6.1-sol 읽기 전용 리뷰(P1·P2 지적은 수정 후 재검)를 거쳤습니다. 검증 기록은 각 커밋 메시지에 있습니다. - 병합 main
d51a4b94(릴리스 commit1ba8a132와 앱 코드 동일):run-schema.ps1,run-unit.ps1 -Workspace all,run-integration.ps1,run-operations.ps1 -DeploymentOnly,run-compose-compat.ps1(세 조합,-OldRef 7b6e1e1c) 통과,update-base-images.ps1기반 이미지 digest drift 없음. 운영 DB 읽기 전용 점검으로tags미사용 컬럼이 모두 NULL/0,reading_progress에dropped·on_hold없음,images.storagePath가 이미 collation"C"임을 확인했습니다. - NOT RUN: Hitomi·E-Hentai network runner(네트워크 경로 변경 없음), 실브라우저 수동 확인, 운영 규모의
storedBytes집계·이미지 검색 p95 실측.
게시 확인
- 릴리스 소스:
1ba8a132(annotated Git 태그5.15.0대상, 앱 코드는d51a4b94와 같음). - backend
5.15.0·latest(새 빌드):sha256:21c0fed8f7ec8cb41d84ed1eeb72aa57631b979503372e65f2da3ac2110e10f8 - crawler
5.15.0·latest(새 빌드):sha256:079b3055a55013dd5f4deeed642bbf0261deb575390fcda8939001fd3773b6f5 - web
5.15.0·latest(새 빌드):sha256:e54d84c7814e6e9316ea4e57549686d36cd244da97f3b25a7d8643613a5815b3 - nginx
5.15.0·latest(5.10.0 digest 재사용):sha256:552b18eddb10c22b7dbfaee60a6e1bacd20f8b004892c8209f3b48f508c3a780 - byedpi
5.15.0·latest(새 빌드):sha256:bc1a69ccfe5f0fc8185b43bd3ca4802a7f1f0bfd1487a141b7f052958d26dcc4 ops/publish-images.ps1 -Version 5.15.0 -Publish첫 실행이 backend·crawler·web 푸시 중 레지스트리 TLS 오류(bad record MAC)로 멈춰(byedpi 5.15.0만 게시됨) 빌드된 이미지를docker push로 다시 올리고 nginx는imagetools create로 태그를 붙인 뒤-PromoteOnly -ServiceNames byedpi,nginx,backend,crawler,web으로 latest를 승격했습니다. 다섯 서비스의5.15.0·latest일치를 확인했습니다(Registry tags verified for 5.15.0.).
Downloads 2
-
Source code (zip)
0
2026-10-21 16:22:52 +09:00 -
Source code (tar.gz)
0
2026-10-21 16:22:52 +09:00
- 홈 목록을 유동 2열 이상 grid로 바꾸고 카드에 작가·카테고리·쪽수 메타 줄, 읽는 중 표지의