-
hanyul released this
2026-10-19 16:43:38 +09:00 5.12.0 주요 변경사항
고급 검색 패널(web)
- "태그를 누를 때마다 포함 → 제외 → 해제 순서로 바뀌고 바로 적용됩니다." 안내 문구를 없애고, 태그 행의 접근성 이름에 다음 동작(
누르면 포함·누르면 제외·누르면 해제)을 표기합니다. - 기본 태그 목록이 로그인 사용자의 선호 태그(대시보드 선호 태그와 같은 집계,
선호배지와 읽은 횟수)를 먼저 보이고 그 뒤에 인기 태그를 이어 붙여 최대 50개를 보입니다. guest와 인증 복원 전에는 인기 태그만 보입니다. 선호 태그 조회가 실패해도 인기 태그는 그대로 보이고, 검색 중(두 글자 이상) 조회가 실패하면 기본 목록 대신 오류만 보입니다. - 카테고리 행(공개 category)을 더해
category:"code"조건을 포함 → 제외 → 해제로 순환합니다. 기존tags·excludeTags·URL 형식을 그대로 씁니다. - 분류 칩(전체·여성·남성·작가·그룹·캐릭터·패러디·언어·일반)으로 태그 검색·인기 목록을 분류별로 좁힙니다(패널 안 임시 상태, URL·저장값에 넣지 않음).
모두 해제(태그 조건만 지움)·링크 복사(현재 조건 URL) 버튼과포함할 태그 (N/20)상한 표시를 더했고 상한에 닿은 목록으로 추가하는 행은 비활성화합니다.ui-segmented-item선택·제외 경계를inset-ring의미 토큰으로 바꿔 키보드 포커스 ring과 겹치지 않게 했습니다(다른 화면의 segmented 컨트롤도 같은 레시피를 씁니다).
API(backend)
GET /api/reading-progress/preferred-tags?limit=(로그인 전용, query 가중치 1,limit1~50·기본 20)을 추가했습니다. 응답은{ tags: [{ namespace, name, count }] }이며 대시보드preferredTags와 같은 집계(전체 기간, 일반tag분류 제외, 개인 차단 적용)를 하나의 helper로 공유합니다. 같은 횟수의 태그는namespace·name오름차순으로 정렬하며, 이 정렬은 대시보드 선호 태그에도 적용됩니다.GET /api/tags/search·GET /api/tags/popular가 선택 인자namespace(^[a-z_]+$, 1~50자)를 받아 해당 분류만 돌려줍니다.groupBy=name과 함께 쓰면 400입니다./api/tags/popular가 DTO를 바인딩해 알 수 없는 query 인자는 400으로 거절합니다(web은limit만 보냅니다).
5.11.0 대비 새 API·새 화면 기능이 더해져 minor 5.12.0으로 게시합니다. 필수 환경 키·DB migration·
compose.yml·.env.example·sql/init-db.sql변경은 없습니다.이미지 게시 범위
- 새로 빌드(5.12.0·latest): backend·web·crawler. backend는 reading-progress·tags 모듈, web은 고급 검색 패널 컴포넌트·hook·
globals.css가 바뀌었습니다. crawler는 5.11.0 이후 소스 변경이 없지만 레지스트리에 비교할 이전 crawler 버전 태그(5.11.0)가 남아 있지 않아 지문을 재사용하지 못하고 새로 빌드했습니다. shared·lockfile·Dockerfile은 바뀌지 않았습니다. - digest 재사용: nginx(5.10.0 digest), byedpi(5.4.0 digest). 빌드 입력이 같아 기존 digest에
5.12.0·latest태그만 붙였습니다. - 다섯 이미지 모두 5.12.0 태그가 있으므로
IMAGE_TAG=5.12.0으로 고정할 수 있습니다.
NAS 업데이트와 주의사항
운영은 운영 반영을 따릅니다.
- backend와 web은 함께 배포합니다. 새 web은
preferred-tags·namespace인자를 호출하므로 옛 backend와 섞이면 선호 태그 구역이 비고 분류 칩이 400을 받습니다(인기 태그·검색 자체는 동작). - backend 교체 전 crawler를 정지하는 배포 절차 때문에 실행 중인 E-Hentai 수집 job은 운영 화면에서 수동 재개가 필요합니다.
compose.yml·.env.example·sql/init-db.sql은 5.11.0과 같습니다. 운영이 이미 5.10.0 이상 Compose라면 이미지만 바뀝니다.- rollback: DB 변경이 없어 이전 이미지로 되돌릴 수 있지만, 레지스트리에 web·crawler의
5.11.0버전 태그가 남아 있지 않습니다(backend·nginx·byedpi5.11.0만 존재). web·crawler를 되돌리려면 이전 digest를 직접 지정해야 하며, 패키지 정리 규칙의 keep pattern(^(latest|\d+\.\d+(\.\d+)?)$) 점검이 필요합니다.
검증
- 병합 main
c40d5f33(앱 코드는 릴리스 commit과 같음)에서 개발 stack 재빌드(backend·web, 9개 컨테이너 healthy,/api/health/ready200),run-unit.ps1 -Workspace all(backend 82 suites·635 tests, crawler 71·923, web 141·1,755, lint·typecheck 포함),run-integration.ps1전체, 이미지 검색·운영 UI 격리 검증(1440·768·390·320px), 북마크 UI 격리 검증(1440·768·390·450·320px), 문서 검증(개발·운영 Compose config,git diff --check, Markdown 링크·anchor 23개 파일 0건)이 통과했습니다. 0e0dd28c(앱 코드 동일)에서run-compose-compat.ps1(5.11.07e9f1e7e대비 세 조합)과update-base-images.ps1(기반 이미지 digest 모두 최신)이 통과했습니다.- backend·web 두 브랜치는 각각 gpt-6.1-sol 읽기 전용 리뷰를 거쳤습니다. web 1라운드의 P2 3건(검색 실패 시 기본 목록 노출, 선호 태그 재조회 실패 시 stale 행 유지, 제외 상태 CSS의 포커스 ring 충돌)은 수정 뒤 2라운드 리뷰에서 승인됐습니다.
- NOT RUN:
run-passkey.ps1·run-schema.ps1·run-search-benchmark.ps1, crawler·network runner(crawler 코드 변경 없음), 실브라우저 확인(다크 모드 제외 상태 포커스 표시, 320px 카테고리 행 실측), 운영 배포.
게시 확인
- 릴리스 소스:
67e88de1(annotated Git 태그5.12.0대상, 앱 코드는c40d5f33과 같음). - backend
5.12.0·latest(새 빌드):sha256:1dda399c6d66a8e2309118eca2af82b9c1a014b484add4677c88bc160907db3a- linux/amd64 manifest:
sha256:bb349e02a07873ff9b3087b24b813665152604018aa73086aa02540e7911660b
- linux/amd64 manifest:
- web
5.12.0·latest(새 빌드):sha256:d4d0f26b224c16de64783e384d85ecbc2367c6fa0bbd04c005f0cd7b54c7254e- linux/amd64 manifest:
sha256:9aa6607cf9ff20a57260df91b7d157b4e580fff022877670231d79e0623cddc1
- linux/amd64 manifest:
- crawler
5.12.0·latest(새 빌드, 소스 변경 없음):sha256:f5ce5f079ff563e6939330f9562afd50081e47eac253fa6cc867b377cdbfef09- linux/amd64 manifest:
sha256:c9d8ed6a2e09918fa149356f33167573ba9f2215c000c6e8ba44e3e124889049
- linux/amd64 manifest:
- nginx
5.12.0·latest(5.10.0 digest 재사용):sha256:552b18eddb10c22b7dbfaee60a6e1bacd20f8b004892c8209f3b48f508c3a780 - byedpi
5.12.0·latest(5.4.0 digest 재사용):sha256:04cf2838499d67a033a3c3101913563bf983e551fee27b891dab0d2f75a4233a ops/publish-images.ps1 -Version 5.12.0 -Publish가 첫 실행에서 완료됐고 다섯 서비스의5.12.0·latest일치를 확인했습니다(Registry tags verified for 5.12.0.).- 게시 시점 레지스트리에는 web
5.6.05.11.0, crawler5.9.05.11.0, backend5.10.0이하 버전 태그가 남아 있지 않았습니다(패키지 정리 규칙 확인 필요).
Downloads 2
-
Source code (zip)
0
2026-10-19 16:43:38 +09:00 -
Source code (tar.gz)
0
2026-10-19 16:43:38 +09:00
- "태그를 누를 때마다 포함 → 제외 → 해제 순서로 바뀌고 바로 적용됩니다." 안내 문구를 없애고, 태그 행의 접근성 이름에 다음 동작(