-
hanyul released this
2026-10-18 10:25:59 +09:00 5.10.0 주요 변경사항
북마크 · 모아보기
작가·그룹 작품탭이 모아보기로 바뀌어 북마크한 작가·그룹의 작품과 단일 갤러리 북마크를 한 목록으로 합쳐 보여줍니다(guest는 로컬 북마크 최대 500개, 로그인은 서버 북마크를 함께 조회).- 모아보기에
작품탭과 같은 제목·작가 검색창과 전체/안 읽음/읽는 중/완독 필터가 생겼습니다. 검색은 서버에서 NFKC 정규화 뒤 단어 AND로 처리하고, 조건을 바꾸면 첫 page부터 다시 조회합니다. 로그인 사용자의 읽기 상태가 바뀌면(읽기 시작·완독·기록 삭제, 다른 탭 포함) 필터 결과와 개수가 갱신됩니다.
web · 화면 수정
- 홈 검색창의 포함 태그 pill에
+접두가 보입니다(제외는−). - 태그를 눌러 검색했을 때(또는 검색창 제안으로 넣었을 때) 고급 검색 목록의 해당 행에
+ 포함·− 제외표시가 뜨지 않던 문제를 고쳤습니다. - 홈 상세 modal에서 태그를 눌러 검색하면 modal 닫기의
history.back이 검색 이동을 취소해 Firefox에서NS_BINDING_ABORTED가 나던 문제를 고쳤습니다. 닫기는 popstate까지 한 번만 처리하고 검색은 그 뒤 한 번 실행합니다. - 운영 관리의
이미지 색인·썸네일 생성패널에서 버튼 아래 빈 줄을 없앴습니다. - 목록 카드 요약에 원본 게시 시각(
uploadDate)이 포함되어 상세 modal 첫 render에 다른 행과 함께 표시됩니다.
정리
- 호출처 없는 코드·API·설정을 정리했습니다: backend TypeORM CLI·debug script와 미사용 devDependency, 로컬 실행 script, 소비처 없는 응답 필드(dashboard·통계·health·home-state 등),
GET /api/duplicates/jobs/:id, 중복 검토의legacydetection 필터, GC 실행 기록의 옛deleted·includeDeleted변환, 전역 태그 차단 단건POST /api/blacklist/tag(일괄POST /api/blacklist/tags로 통합, 응답201), 카드 요약tags[].usageCount, GC 결과orphaned, crawlerunified-status축소. - crawler 운영 이미지의
dist에서 spec·fixture·test-support를 제외했습니다. - 항상
false이던SYNCHRONIZE키를 backend 설정과compose.yml에서 지웠습니다(운영 조치 없음: 옛 이미지는 키가 없으면false, 새 이미지는 키를 읽지 않습니다). - 의도한 동작 변경 두 가지: 괄호가 있는 작가·그룹 태그를 한 태그로 검색·차단하고, storage를 쓸 수 없을 때 설정 저장은 예외 없이 현재 화면 값만 유지합니다.
- 테스트: runner 공용 helper(
tests/lib/compose.ps1), web 테스트 파일을 typecheck에 포함, 중복 fixture·spec 정리.
새 기능(모아보기 검색·필터·북마크 합치기)과 web이 더 쓰지 않는 관리자 API 제거가 섞여 minor 5.10.0으로 게시합니다. 필수 환경 키·DB migration 변경은 없습니다.
compose.yml에서 backendSYNCHRONIZE키가 빠졌지만 운영 조치는 없습니다.이미지 게시 범위
- 새로 빌드(5.10.0·latest): backend·crawler·web·nginx. backend·crawler·web은 앱·shared 코드와 lockfile(devDependency 제거)이, nginx는 Dockerfile 정리로 빌드 입력 지문이 바뀌었습니다.
- digest 재사용: byedpi(5.4.0 digest). 빌드 입력이 같아 기존 digest에
5.10.0·latest태그만 붙였습니다. - 다섯 이미지 모두 5.10.0 태그가 있으므로
IMAGE_TAG=5.10.0으로 고정할 수 있습니다.
NAS 업데이트와 주의사항
운영은 운영 반영을 따릅니다.
- backend·web을 함께 교체해야 합니다. 옛 web과 새 backend가 섞이면 전역 태그 차단(
POST /api/blacklist/tag)이404가 나고, 새 web과 옛 backend가 섞이면 모아보기 검색·필터가 무시됩니다. - backend 교체 전 crawler를 정지하는 배포 절차 때문에 실행 중인 E-Hentai 수집 job은 운영 화면에서 수동 재개가 필요합니다.
compose.yml을 5.10.0 태그 버전으로 받습니다(SYNCHRONIZE키 제거만 바뀌었습니다).- 운영이 아직 5.8.1이면 5.9.0의 주의사항(Compose 변경, migration 1건, Web Analytics 수동 snippet 전환)이 그대로 적용됩니다.
- rollback: 5.9.3 이미지로 되돌릴 수 있습니다(DB 변경 없음).
검증
- 병합 main
733ce1ee에서 개발 stack 재빌드(backend·crawler·web·log-reader, 9개 컨테이너 healthy),run-integration.ps1전체,run-crawler-recovery.ps1전체, 이미지 검색·운영 UI 격리 검증(1440·768·390·320px), 북마크 UI 격리 검증(1440·768·390·450·320px, 모아보기 검색·필터 포함), 문서 검증이 통과했습니다. 테스트 파일만 고친fd20e486에서run-unit.ps1 -Workspace all(backend 80 suites·614 tests, crawler 71·923, web 139·1,739, lint·typecheck 포함)이 통과했습니다. - pill
+변경(0f07cecf)은run-unit.ps1 -Workspace web과 이미지 검색·운영 UI 격리 검증(접두 기호·같은 폭 단언 추가)으로 검증했습니다. - 전용 검증은 브랜치 commit에서 통과했습니다:
run-schema.ps1·run-operations.ps1 -DeploymentOnly·run-compose-compat.ps1(5.9.32ddb1529대비 세 조합)·run-upgrade.ps1 -BuildNew(deploy-script)·검색·중복 benchmark·near-miss fixture는03eaeeb4, 모아보기 SQLEXPLAIN ANALYZE(10만 작품 fixture, 후보 수 비례 2~90ms)는6912001d. - 각 브랜치는 gpt-6.1-sol 읽기 전용 리뷰를 거쳤습니다(ui-bugs·bookmarks-feed는 수정 뒤 2라운드 승인). pill 변경은 독립 리뷰 없이 병합했습니다.
- NOT RUN: 위 전용 runner의 main 재실행,
run-crawler-recovery.ps1 -EHentaiOnly,run-passkey.ps1, 실제 Hitomi·E-Hentai 통신 runner,run-upgrade.ps1watchtower 모드, 실브라우저(FirefoxNS_BINDING_ABORTED재현, 두 탭 읽기 신호), 운영 규모 feed 실행 계획, 운영 배포.
게시 확인
- 릴리스 소스:
d8ad4758a927028d732badef2e5ebb686ff383d5(annotated Git 태그5.10.0대상). - backend
5.10.0·latest:sha256:42e2378f1f3b5c1ac276be83b6c8c9d099d9be6e75aca6f56dbbc3cef6e63cf2- linux/amd64 manifest:
sha256:72a09087218406dd608ffe856378034c1df6b49085b7bcd841ef181bdbef2ca2 - OCI version
5.10.0·revisiond8ad4758a927028d732badef2e5ebb686ff383d5
- linux/amd64 manifest:
- crawler
5.10.0·latest:sha256:f6db86d6da3cc66b88f199df24de3ec815ba1fe1989db245ddeffdc0c6ba08e2- linux/amd64 manifest:
sha256:822a2893e030760db7331581a7f4af159023ed1889f623aec94163dfe2c57754
- linux/amd64 manifest:
- web
5.10.0·latest:sha256:4244f95ab4b99d4fd192a7dc6ddff709753fe9a79a58ea7963e3d7b72de4a24f- linux/amd64 manifest:
sha256:b2560f42720759a64c32913f3aecd0bd778469db7e5bf6889776524636c1dd64
- linux/amd64 manifest:
- nginx
5.10.0·latest:sha256:552b18eddb10c22b7dbfaee60a6e1bacd20f8b004892c8209f3b48f508c3a780- linux/amd64 manifest:
sha256:1daf8285e6aedac87ca3b22e41c20678414e1e92d7d994fa4bd62f30a3c009cb
- linux/amd64 manifest:
- byedpi
5.10.0·latest(5.4.0 digest 재사용):sha256:04cf2838499d67a033a3c3101913563bf983e551fee27b891dab0d2f75a4233a ops/publish-images.ps1 -Version 5.10.0 -Publish는 첫 실행에서 네 버전 태그 push가error from registry: unknown으로 실패했고(latest는 그대로 5.9.3) 같은 명령 재실행으로 완료했습니다. 다섯 서비스의5.10.0·latest일치를 확인했습니다(Registry tags verified for 5.10.0.).
Downloads 2
-
Source code (zip)
0
2026-10-18 10:25:59 +09:00 -
Source code (tar.gz)
0
2026-10-18 10:25:59 +09:00