홈 Featured/Pages 화살표 스타일 통일 및 버전 반영

홈 Pages 섹션의 슬라이드 화살표를 Featured와 동일한 텍스트형 버튼 스타일로 맞춰 섹션 간 UI 일관성을 유지한다.
문서 이력과 패키지 버전을 v1.9.22로 갱신해 중간 배포 단위를 명확히 한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-30 18:46:34 +09:00
parent 4e2ec3d7a2
commit 6a3cc5d7ec
6 changed files with 752 additions and 30 deletions

View File

@@ -1,5 +1,53 @@
# 의사결정 이력
## 2026-06-30 v1.9.22 — 홈 선반 화살표 스타일은 섹션 간 일관성을 우선한다
같은 홈 진열장 패턴인 Featured와 Pages의 좌우 이동 버튼 모양이 다르면 기능은 같아도 다른 컴포넌트처럼 보인다. 따라서 Pages 선반 화살표를 Featured와 같은 텍스트형 버튼 스타일로 맞춰, 섹션 제목 오른쪽 네비게이션의 시각 규칙을 통일한다.
## 2026-06-30 v1.9.21 — Pages 선반은 고정 폭 안에서만 스크롤한다
Pages 진열장은 카드가 많아질수록 레일이 부모 grid item의 최소 너비를 밀어 넓힐 수 있다. 이 경우 화면 밖에 카드가 보여도 실제 스크롤 컨테이너 overflow가 생기지 않아 드래그와 좌우 버튼 상태 계산이 맞지 않는다. 따라서 선반 wrapper에 `min-w-0`과 `overflow-hidden`을 주고, 레일은 `w-full max-w-full` 안에서만 가로 스크롤되도록 제한한다.
## 2026-06-30 v1.9.20 — Latest 더보기는 Latest 문맥 안에 둔다
홈 `Posts 더보기` 링크는 Latest 표시 개수가 제한될 때 전체 게시물 목록으로 이어지는 보조 탐색이다. Pages 진열장 아래에 있으면 페이지 섹션의 다음 행동처럼 보이고, Pages가 없는 구성에서는 노출되지 않을 수 있으므로 Latest 목록 렌더링 직후에 배치한다.
## 2026-06-30 v1.9.19 — Pages 진열장은 실제 overflow 기준으로 조작 상태를 갱신한다
Pages 진열장은 이미지 로딩과 반응형 폭 변화 이후에야 실제 스크롤 가능 여부가 확정된다. 최초 렌더 시점의 `scrollWidth`만 기준으로 버튼 상태를 잡으면 화면을 넘어가도 버튼이 비활성처럼 보일 수 있으므로, 선반별 스크롤 컨테이너와 카드 크기를 `ResizeObserver`로 감시해 상태를 계속 갱신한다. 또한 드래그 중 포인터가 카드 바깥으로 이동해도 조작이 끊기지 않도록 문서 레벨 포인터 추적으로 바꾼다. 페이지 순서 변경 모달은 공개 홈의 추천 우선 정렬과 같은 규칙을 즉시 적용해 저장 전 화면과 실제 반영 결과가 어긋나지 않게 한다.
## 2026-06-30 v1.9.18 — 홈 진열장 드래그는 카드 탐색을 우선한다
홈 Featured와 Pages 진열장은 링크 카드 위에서 드래그하는 구조라 이미지의 기본 브라우저 드래그가 먼저 잡히면 캐러셀 조작이 끊긴다. 따라서 트랙 안의 이미지 기본 드래그와 텍스트 선택을 막고, 포인터 이동은 작은 거리부터 스크롤에 반영한다. 스냅은 반 칸 이상 이동했을 때만 다음 카드로 넘어가는 방식보다 작은 의도도 읽히는 임계값 기반으로 처리해, 손을 뗐을 때 가까운 카드 위치로 자연스럽게 붙게 한다.
## 2026-06-30 v1.9.17 — 공개 목록 탐색은 페이지 전환 맥락을 유지한다
게시물 목록과 태그 목록에 서버 페이지네이션을 적용하면 같은 화면 안에서 목록 데이터만 바뀌기 때문에, 스크롤 위치가 하단에 남아 있으면 새 페이지의 첫 게시물을 놓칠 수 있다. 따라서 페이지 번호가 바뀔 때 문서 상단으로 이동해 일반 페이지 이동과 같은 감각을 유지한다. 홈 Latest는 설정된 개수만 보여 주므로 전체 목록으로 이어지는 링크를 하단에 두고, 썸네일 placeholder는 이미지 유무와 관계없이 같은 영역을 차지하게 해 목록 높이를 안정화한다. 페이지 섹션 순서 모달은 공개 홈과 같은 추천 우선 정렬을 보여 주어 관리 화면과 실제 노출 차이를 줄인다.
## 2026-06-30 v1.9.16 — 공개 목록은 설정 기반 페이지네이션으로 제한한다
게시물이 늘어날수록 홈 Latest, 게시물 목록, 태그 상세가 전체 게시물을 한 번에 받아 프론트에서 필터링하면 초기 로딩과 메모리 사용량이 커진다. 따라서 사이트 설정의 POST 설정에서 공개 목록별 표시 개수를 관리하고, 홈은 제한된 최신·추천 글만 받으며 `/posts`와 `/tag/:slug`는 서버 페이지네이션을 사용한다. 태그 전체 화면도 게시물 전체 조회 대신 태그 API의 공개 게시물 수를 사용해 목록 화면의 데이터 규모를 안정적으로 유지한다.
## 2026-06-30 v1.9.15 — 홈 진열장과 관리 모달은 카드 기반 탐색으로 맞춘다
홈 Pages 진열장은 카드가 5개를 넘으면 스크롤바가 숨겨진 상태에서 접근성이 떨어지고, hover 상승 효과가 가로 스크롤 영역에 잘릴 수 있다. Featured와 같은 이전·다음 버튼과 드래그 스냅을 적용해 섹션이 여러 개여도 각 선반을 독립적으로 탐색하게 한다. 관리자 페이지 순서 변경도 단순 행 목록보다 실제 홈 노출 형태에 가까운 카드형 가로 목록이 판단하기 쉬우므로, 썸네일 카드로 순서를 조정하고 같은 모달 안에서 섹션 연결 제거까지 처리한다.
## 2026-06-30 v1.9.14 — 네비게이션 관리의 추가·저장 흐름을 탭 간 통일한다
같은 네비게이션 관리 화면 안에서 어떤 탭은 빈 행을 즉시 추가하고, 어떤 탭은 모달에서 정보를 받은 뒤 추가하며, 페이지 섹션은 행별 저장과 상단 저장 버튼이 함께 보이면 저장 대상이 모호해진다. 따라서 모든 추가 액션은 모달 입력 후 목록에 반영하는 방식으로 맞추고, 저장 버튼은 메뉴 항목용 `네비게이션 저장`과 페이지 섹션용 `페이지 섹션 저장`으로 분리한다. 페이지 섹션 순서도 다른 네비게이션 목록과 같이 드래그앤드롭으로 통일한다.
## 2026-06-30 v1.9.13 — 페이지 섹션과 페이지 순서는 네비게이션 구성으로 관리한다
페이지 섹션은 개별 페이지의 본문 작성 정보보다 홈 Pages 진열장의 네비게이션 구조에 가깝다. 페이지 목록 상단에서 섹션을 관리하면 페이지 수가 늘어날수록 목록 관리와 홈 구성 관리가 섞이므로, 섹션 생성·이름 변경·섹션 순서·섹션 내부 페이지 순서를 관리자 네비게이션 화면으로 옮긴다. 페이지 작성 화면은 기존 섹션을 검색해 선택하는 역할만 맡겨 콘텐츠 작성 흐름을 가볍게 유지한다.
## 2026-06-30 v1.9.12 — 페이지 섹션은 콘텐츠 입력과 분리해 관리한다
페이지마다 섹션명을 직접 입력하면 같은 섹션의 표기 흔들림과 홈 진열장 순서 관리 문제가 생긴다. 따라서 페이지 자체에는 선택된 섹션명을 저장하되, 섹션 생성·이름 변경·배치 순서는 `page_listing_sections` 관리 테이블과 관리자 페이지 목록의 섹션 관리 카드에서 다룬다. 페이지 작성 화면은 등록된 섹션 중 하나를 선택하는 역할만 맡겨 콘텐츠 작성과 홈 구성 관리를 분리한다.
## 2026-06-30 v1.9.11 — 페이지는 독립 화면을 유지하고 노출 메타만 추가한다
페이지를 게시물 피드에 그대로 섞으면 시간순 글 목록의 의미가 흐려질 수 있다. 대신 페이지는 기존처럼 `/pages/:slug` 독립 전체 화면으로 유지하고, 필요한 페이지에만 홈 표시·추천 표시·섹션명·목록 카드 메타를 부여해 섹션별 Pages 진열장과 검색 결과에서 발견할 수 있게 한다. 이렇게 하면 페이지의 랜딩/문서 성격과 게시물 피드의 시간 흐름을 함께 지킬 수 있다.
## 2026-06-30 v1.9.10 — 관리자 세션은 공개 통계에서 제외한다
운영자가 글 작성·수정·확인을 위해 공개 게시물과 페이지를 반복해서 열면 실제 방문자 행동보다 관리자 검수 동작이 조회수와 체류 통계에 크게 반영된다. 따라서 관리자 세션 쿠키가 있는 요청은 공개 경로라도 페이지뷰, 읽음, heartbeat, HTML 문서 페이지 직접 집계에서 제외해 통계가 방문자 기준에 더 가깝게 유지되도록 한다.