# Changelog 이 프로젝트의 모든 주요 변경사항을 기록합니다. 형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며, [Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다. ## [1.1.2] - 2026-08-24 ### Changed - sirsoft-page 최소 버전을 1.1.0 으로 상향했습니다 (페이지 공유 이미지 연동). ### Fixed - 페이지 공유 미리보기의 이미지(og:image)와 설명(og:description)이 채워지도록 페이지 표시 화면의 공유 정보 연결을 정비했습니다. (#22 @abc101 님께서 제보해주셨습니다.) ## [1.1.1] - 2026-08-19 ### Added - 통합검색에서 검색이 실패했을 때 "검색 결과가 없습니다" 와 구분되는 "검색 중 오류" 안내를 표시합니다. 실패한 항목만 오류로 표시되고 나머지 항목의 결과는 정상 표시됩니다. (#103 @Tuwasduliebst 님께서 제보해주셨습니다.) - 공개 자산 스토리지(직접 URL/CDN)를 사용하는 사이트에서도 첨부 이미지 미리보기와 다운로드가 그 주소를 그대로 사용해 정상 동작합니다. ### Fixed - 파일 업로더 썸네일의 업로드 진행률 막대와 오류 표시가 다크 모드에서 대비가 낮아 잘 보이지 않던 부분을 보완했습니다. - 장바구니를 처음 열었을 때 "전체 선택" 옆 개수가 `(/27)` 처럼 선택 개수 없이 표시되던 문제를 수정했습니다. 이제 진입·새로고침·다른 화면에서 돌아온 경우 모두 `(27/27)` 로 바로 표시되며, 체크박스 상태 및 주문 요약의 "선택 상품 N / M개" 와 항상 같은 값을 가리킵니다. (#92, #93 @koojunho 님께서 제보하고 수정해주셨습니다.) - 장바구니 옵션변경 모달의 재고 안내와 마이페이지 프로필의 입력 오류 메시지가, 표시할 값이 아직 준비되지 않은 순간에도 빈칸으로 남지 않도록 보완했습니다. 값이 준비된 뒤의 표시는 종전과 동일합니다. - 마이페이지 게시판 알림 수신 설정(댓글·답글 등 4개 항목)의 체크 상태가 저장값과 어긋날 수 있던 가능성을 차단했습니다. 저장된 값이 어떤 형태든 화면의 체크 표시와 저장 결과가 항상 일치합니다. - 장바구니 "전체 선택" 체크박스가 다크 모드에서 테두리 색을 따르지 않던 문제를 수정했습니다. - 빌드 산출물이 존재하지 않는 소스맵 파일을 참조해 브라우저 개발자 도구 사용 시 불필요한 404 요청이 발생하던 문제를 수정했습니다. - 쇼핑(주문서 할인·재주문·배송지 저장·상품 문의)과 마이페이지 화면에서 요청이 실패했을 때 실패 사유 대신 일반 안내 문구만 표시되던 문제를 수정했습니다. 비밀번호 변경 실패 안내가 항상 일반 문구로만 나오던 문제도 함께 바로잡았습니다. 이제 서버가 알려준 사유가 그대로 안내됩니다. - 로그인한 회원이 통합검색을 해도 비회원과 같은 범위로만 검색되던 문제를 수정했습니다. 검색 화면이 로그인 정보를 함께 보내지 않아, 회원 전용 게시판처럼 로그인해야 볼 수 있는 글이 검색 결과에서 빠졌습니다. 비회원의 검색 범위는 종전과 동일합니다. ## [1.1.0] - 2026-08-10 ### Added - 주문서의 무통장입금·가상계좌 결제 영역에 환불 계좌(은행·계좌번호·예금주) 입력란을 추가했습니다. 주문을 취소할 때 환불받을 계좌를 미리 남겨둘 수 있으며, 입력하지 않아도 주문할 수 있습니다. 다만 세 칸 중 하나라도 입력하면 나머지도 입력해야 합니다. - 주문서의 무통장입금 영역에 현금영수증 신청 폼이 표시될 수 있도록 확장 영역을 마련했습니다. 신청 폼 자체는 쇼핑몰 기능이 제공합니다. - 주문 상세의 결제 정보 영역에 현금영수증 발급 내역이 표시될 수 있도록 확장 영역을 마련했습니다. - 주문서에서 결제 플러그인이 등록한 결제수단(예: "가상계좌 (토스페이먼츠)")을 선택해 주문할 수 있습니다. 선택한 결제수단은 주문 시 대응하는 기본 결제수단으로 전송되어, 결제창 호출과 이후 주문 처리가 정상적으로 이어집니다. - 회원가입 화면에 휴대폰번호·전화번호 입력란을 추가했습니다. 두 항목 모두 선택 사항입니다. ### Changed - 마이페이지 주문내역이 주문상품 전체를 명시적으로 요청하도록 바꿨습니다. 주문내역 조회의 기본 응답이 대표 상품 1건만 담도록 가벼워졌기 때문이며, 화면에 보이는 주문상품 목록은 종전과 동일합니다. (#76 @jordy-bitree 님께서 제보해주셨습니다.) - 화면 편집기 상품 상세의 상태 미리보기에서 "품절" 로 똑같이 표시되던 두 상태를 "재고 소진 (판매중)" 과 "품절 처리" 로 구분했습니다. 재고만 떨어진 상품과 판매를 품절로 지정한 상품은 화면 모양이 달라 따로 편집해야 하는데, 목록에서 어느 쪽인지 고를 수 없었습니다. ### Fixed - 관리자가 추가한 통화(예: 파운드)로 볼 때 금액이 원화 기호와 자릿수로 표시되던 문제를 수정했습니다. 이제 환경설정에 등록한 통화 기호와 소수 자릿수를 그대로 따릅니다. - 표시 통화가 정해지지 않은 순간에 금액이 원화로 표시될 수 있던 문제를 수정했습니다. 이제 상점 기본 통화로 표시됩니다. - 기본 통화가 원(KRW)이 아닌 쇼핑몰을 다른 통화로 볼 때, 추가옵션 금액만 기준 통화로 표시되고 그 값이 그대로 총 금액에 더해지던 문제를 수정했습니다. 상품 상세의 추가옵션 선택지·추가옵션 금액·총 금액, 장바구니와 주문서의 추가옵션 줄이 모두 보고 있는 통화로 표시됩니다. 기본 통화가 원인 상점은 이전과 동일합니다. - 주문 상세의 결제 정보 영역에 결제 플러그인이 제공하는 공급가액·부가세·영수증 링크·에스크로 구매확정 버튼이 표시되지 않던 문제를 수정했습니다. - 총 건수를 끝까지 세지 못한 목록에서 페이지 이동 막대가 사라지거나 "1페이지뿐" 으로 잘못 표시되던 문제를 수정했습니다. 마이페이지의 주문·마일리지·위시리스트·알림함, 게시판 목록, 상품 리뷰·문의, 내가 쓴 글 목록이 해당합니다. - 검색 결과의 탭 배지가 끝까지 세지 못한 건수를 정확한 숫자처럼 보여주던 문제를 수정했습니다. 이제 그 경우 숫자 뒤에 "이상" 표시가 붙습니다. - 게시판 목록 주소에 정렬 조건(`sort_by`·`sort_order`)을 붙여도 목록에 반영되지 않던 문제를 수정했습니다. 예를 들어 조회순으로 정렬한 주소를 공유하거나 즐겨찾기해 두면 열었을 때 기본 정렬로 보였습니다. 주소에 정렬 조건이 없을 때는 종전처럼 게시판 설정의 기본 정렬을 따릅니다. #### 검색·봇 화면 - 통합 검색 결과의 상품 이름이 표시되지 않던 문제를 수정했습니다. 검색어 강조 표시 방식이 잘못 지정되어 상품 이름 자리가 비어 있었습니다. - 상품 목록의 페이지 이동이 총 건수를 정확히 세지 못한 경우에도 유지됩니다. 예전에는 마지막 페이지를 알 수 없으면 페이지 이동 영역 자체가 사라져 1페이지 밖 상품에 도달할 방법이 없었습니다. - 검색엔진 봇에게 보여줄 자료 목록에서 빠져 있던 항목을 채웠습니다. 게시글의 이전글·다음글 링크, 인기글 목록, 상품 문의, 추천·신상품 목록, 검색 결과, 회원 프로필의 활동 통계·최근 글, 회원 작성글 목록이 봇 화면에서 비어 있던 문제가 해소됩니다. (#86 @koojunho 님께서 제보해주셨습니다.) - 봇 화면의 선택 상자에 항목 이름 대신 내부 식별자가 글자로 노출되던 문제를 수정했습니다. 이제 일반 화면과 같이 선택 항목의 이름이 표시됩니다. #### 목록 상태 유지 - 게시글 목록에서 글을 열어 이전글·다음글로 넘어가면 보고 있던 페이지 번호와 검색어·분류가 사라져, 이어서 '목록'을 누르면 1페이지로 되돌아가던 문제를 수정했습니다. 이제 목록 ↔ 상세 ↔ 이전/다음 글 ↔ 글쓰기·수정 어디로 오가든, 글쓰기를 취소하고 돌아올 때도 보고 있던 목록 상태가 그대로 유지됩니다. 마이페이지 주문·마일리지 목록과 상품 목록(상품 상세에서 목록으로 돌아오는 경우 포함)도 동일하게 개선됐습니다. 검색 초기화와 탭 전환은 종전처럼 조건을 비웁니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.) - 상품 목록에서 상품을 열고 상세의 탭(상세정보·리뷰·문의)을 누르면 보고 있던 페이지·정렬·검색어·분류가 주소에서 사라져, 이어서 '상품 목록'을 눌러도 1페이지로 되돌아가던 문제를 수정했습니다. 이제 탭을 오가도 목록 상태가 그대로 유지됩니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.) - 통합 검색에서 탭(전체·게시글·상품·페이지)·정렬·게시판 필터·페이지를 바꿔도 주소가 그대로여서, 새로고침하거나 뒤로가기를 누르면 검색어만 남고 나머지가 처음 상태로 되돌아가던 문제를 수정했습니다. 이제 보고 있던 검색 결과를 주소로 그대로 공유할 수 있고, 뒤로가기로 직전에 보던 탭·페이지로 되돌아갑니다. 검색어를 새로 입력해 검색하면 종전처럼 조건이 초기화됩니다. #### 장바구니·오류 안내 - 마이페이지 알림 화면의 "읽지 않은 알림 N건" 이 실제 개수와 무관하게 항상 0건으로 표시되던 문제를 수정했습니다. 헤더 알림 아이콘의 개수와 동일하게 표시됩니다. - 상품 상세의 쿠폰 「+N」을 눌러 열리는 목록에 이 상품에 쓸 수 없는 쿠폰까지 섞여 나오던 문제를 수정했습니다. 이제 「+N」이 가리키는 개수와 목록의 개수가 일치합니다. - 상품 상세에서 옵션을 선택해 장바구니에 담거나 바로 구매할 때, 표시 언어(로케일)나 관리자의 옵션 이름 수정과 무관하게 선택한 옵션이 정확히 담기도록 개선했습니다. 특정 상황에서 "해당 옵션 조합을 찾을 수 없습니다" 오류로 담기가 실패하던 문제가 해소됩니다. - 주문서의 "배송지 관리"에서 해외 배송지의 주소가 표시되지 않고 빈 괄호만 보이던 문제를 수정했습니다. 국내 주소 형식으로만 표시하고 있어 해외 주소가 비어 보였으며, 이제 마이페이지 배송지 목록과 동일하게 국가에 맞는 형식으로 표시됩니다. - 저장이나 삭제가 실패했을 때 아무 안내 없이 조용히 넘어가던 화면들을 수정했습니다. 이제 실패하면 그 이유가 화면에 표시되므로, 반영되지 않은 변경을 성공한 것으로 오해하지 않습니다. - 오류 안내가 뜨기는 하지만 내용이 비어 있던 문제를 수정했습니다. 서버가 알려 준 실패 사유가 그대로 표시됩니다. - 주문서의 무통장입금·가상계좌 입금 기한 안내가 관리자가 설정한 미입금 자동취소 기한과 다르게 표시되던 문제를 수정했습니다. 설정과 무관하게 각각 7일·3일로 고정 안내되어, 자동취소 기한을 3일로 둔 사이트에서 무통장입금 구매자는 "7일 이내"라는 안내를 받고도 3일 뒤 주문이 취소됐습니다. 이제 두 결제수단 모두 설정한 기한을 그대로 안내합니다. 기한이 비워진 채 저장돼 있거나 사용할 수 없는 값이 남아 있는 사이트에서도 실제 적용되는 기본 기한(3일)을 안내합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.) #### 화면 표시 - 알림 목록·장바구니 화면의 아이콘이 의도한 크기보다 크거나 작게 보이던 문제를 수정했습니다. - 다크 모드에서 장바구니의 선택 상자·삭제 아이콘, 일부 버튼의 색 대비가 낮아 잘 보이지 않던 문제를 수정했습니다. - 장바구니에서 옵션을 변경할 때 옵션 목록이 아직 준비되지 않은 상태면 화면이 비어 보이던 문제를 수정했습니다. - 모달 창의 닫기 버튼 안내 라벨이 번역되지 않아 화면 낭독기에서 내부 식별자가 그대로 읽히던 문제를 수정했습니다. - 본인확인 코드 입력 화면에서 "남은 시도" 안내를 제거했습니다. 외부 인증 화면을 거쳐 돌아온 경우 실제보다 많은 횟수가 표시될 수 있어, 잘못된 숫자를 보여주는 대신 표시하지 않도록 했습니다. 시도 횟수 제한 자체는 종전대로 적용됩니다. - 해외 배송지를 수정할 때 도시·주·우편번호 입력칸이 비어 보이고, 그대로 저장하면 저장돼 있던 값이 사라지던 문제를 수정했습니다. 마이페이지 배송지 관리와 주문서의 배송지 관리 모두에 적용됩니다. (#78 @glitter-gim 님께서 제보해주셨습니다.) - 마이페이지 배송지 목록에서 해외 배송지가 주소 대신 "[]" 로만 표시되던 문제를 수정했습니다. 이제 국가에 맞는 전체 주소가 표시됩니다. (#78 @glitter-gim 님께서 제보해주셨습니다.) - 게시판 목록 세 종류(일반형·카드형·갤러리형) 모두에서 블라인드 처리된 글의 아이콘 색이 배경과 대비가 낮아 잘 보이지 않던 문제를 수정했습니다. - 목록의 이전/다음 이동이 페이지가 더 있는데도 눌리지 않던 문제를 수정했습니다. 마이페이지의 주문·상품 문의·내가 쓴 글 목록이 해당합니다. - 상품 상세를 열어도 "최근 본 상품" 이 계속 비어 있던 문제를 수정했습니다. - 레이아웃 편집기에서 체크박스를 추가하면 라벨 없이 네모 칸만 놓이던 문제를 수정했습니다 — 이제 라벨이 함께 놓이며, 라벨을 눌러도 체크가 전환됩니다. ### Changed - 이커머스 모듈 최소 요구 버전을 1.1.0 으로 상향했습니다. 옵션 담기 방식 개선과 주문서 환불 계좌·현금영수증 확장 영역 표시에 해당 버전 이상이 필요합니다. - 검색 결과가 아주 많아 총 건수를 정확히 셀 수 없는 경우, "N건 이상" 으로 표시하고 검색어를 좁히면 정확한 건수를 볼 수 있다는 안내를 함께 보여 줍니다. 이때 마지막 페이지로 바로 뛰는 버튼은 감춰지고 다음 페이지 이동은 그대로 됩니다. - 페이지네이션에서 처음/마지막 버튼을 따로 켜고 끌 수 있게 했습니다. - 목록의 총 건수 정확도 표시를 사용하기 위해 이 템플릿은 이제 코어 7.0.6 이상이 필요합니다. ## [1.0.3] - 2026-07-16 ### Changed - 주문서의 간편결제 버튼에 표시되는 브랜드 마크(색상 배지·로고)를 결제수단 정보로 처음부터 그리도록 표준화했습니다. 여러 결제사가 함께 켜져 있어도 표시가 안정적입니다. - 애플페이 간편결제 버튼을 iOS 기기(iPhone·iPad)에서만 표시하도록 했습니다. iPad가 데스크톱 화면으로 접속한 경우에도 정확히 인식합니다. ### Fixed - 네이버페이·카카오페이 등 간편결제로 주문을 완료했을 때 주문완료 페이지의 "결제 완료" 안내가 표시되지 않던 문제를 수정했습니다. 이제 입금 대기(무통장·가상계좌)를 제외한 모든 결제수단에서 결제 완료 안내가 정상적으로 표시됩니다. ## [1.0.2] - 2026-07-10 ### Changed - 이커머스 모듈 최소 요구 버전을 1.0.2 로 상향했습니다. 휴대폰 메뉴 안의 통화·배송국가 선택이 이 템플릿의 새 배치에서 잘리지 않고 표시되려면 해당 버전 이상이 필요합니다. ### Fixed - 헤더의 배송국가 선택에서 국가 이름이 어떤 언어로 사이트를 보든 항상 한국어로만 표시되던 문제를 수정했습니다. 이제 현재 보고 있는 언어로 국가 이름이 표시됩니다. #### 모바일 화면 - 휴대폰 화면에서 헤더가 가로로 넘쳐 사이트명이 잘리고 메뉴 버튼이 화면 밖으로 밀려나던 문제를 수정했습니다. 언어·통화 선택은 메뉴(햄버거) 안으로 옮겼습니다. - 좁은 화면(320px)에서 메뉴 버튼을 누를 수 없어 사이트 이동 자체가 불가능하던 문제를 수정했습니다. - 메뉴 안의 언어·통화·배송국가 선택이 세로로 길게 늘어지지 않고 가로로 나란히 배치됩니다. - 메뉴 안의 언어와 통화·배송국가가 각각 접었다 펼치는 항목으로 바뀌어, 메뉴를 열었을 때 곧바로 사이트 메뉴가 보입니다. 접혀 있을 때도 현재 선택된 언어와 통화·배송국가가 표시되므로 펼치지 않아도 확인할 수 있으며, 두 항목은 서로 독립적으로 여닫힙니다. - 언어 선택이 로그인하지 않은 방문자에게도 보입니다. 이전에는 메뉴 안에서 로그인한 사용자만 언어를 바꿀 수 있었습니다. - 게시판 이름이 길면 게시글 위쪽의 목록·이전글·다음글 버튼이 찌그러지거나 보이지 않던 문제를 수정했습니다. 이제 게시판 이름이 윗줄에 표시되고 버튼은 아랫줄에 원래 크기로 놓입니다. #### 입력 화면 - 비회원이 글을 쓰거나 댓글을 달 때 이름·비밀번호 입력칸이 화면을 벗어나거나 지나치게 좁아지던 문제를 수정했습니다. - 해외 배송지를 등록할 때 도시·주(州) 입력칸이 좁아 내용을 확인하기 어렵던 문제를 수정했습니다. #### 표시 - 상품 상세의 쿠폰 할인 금액이 두 줄로 잘려 보이던 문제를 수정했습니다. 쿠폰이 많으면 여러 줄로 나눠 표시합니다. - 주문 취소 화면에서 쿠폰 이름과 항목 이름이 단어 중간에서 잘려 읽기 어렵던 문제를 수정했습니다. - 좁은 화면에서 팝업 창이 화면 가장자리에 붙어 보이던 문제를 수정했습니다. 이제 양옆에 여백이 생깁니다. ## [1.0.1] - 2026-07-08 ### Added - 관리자가 발행 전 페이지를 사용자 화면에서 미리 볼 때, 미발행 상태임을 알리는 안내 표시를 추가했습니다. - 사용자 게시판 화면(목록·상세)에 관리자 진입 버튼을 추가했습니다 — 게시판 관리 권한이 있는 사용자에게만 "관리자 게시물 조회"·"게시판 관리" 버튼이 보이며, 클릭하면 새 탭으로 열립니다. - 사용자 상품 상세 화면에 "관리자에서 수정" 버튼을 추가했습니다 — 상품 수정 권한이 있는 사용자에게만 보이며, 클릭하면 해당 상품의 관리자 수정 화면이 새 탭으로 열립니다. ### Changed - 상품 상세 페이지 주소가 상품 번호 대신 상품코드 기준으로 바뀌었습니다 (상품 목록·최근 본 상품·검색·장바구니·주문내역 등 모든 상품 링크 포함). 기존 번호 기반 주소도 계속 동작합니다. ### Fixed - 게시글 첨부파일을 허용 개수보다 많이 선택하면, 초과분이 아무 안내 없이 사라지지 않고 "최대 N개까지 첨부할 수 있습니다" 안내 메시지가 표시됩니다. ## [1.0.0] - 2026-07-01 ### Added - 비회원 주문 완료 화면에 주문 확인 메일 발송 안내를 추가했습니다 — 비회원으로 주문하면 입력한 이메일로 주문 확인 안내를 보냈다는 문구가 표시되어, 메일 수신을 기대할 수 있고 스팸함 확인을 안내합니다. - 사이트 상단 헤더에 언어 선택 버튼을 추가했습니다 — 이전에는 로그인한 회원만 사용자 메뉴 안에서 언어를 바꿀 수 있었으나, 이제 헤더에서 누구나(비회원 포함) 언어를 전환할 수 있습니다. 통화 선택 버튼과 나란히 배치되며, 통화 선택은 이커머스 모듈이 설치되어 있을 때만 나타납니다. (언어 항목은 헤더로 일원화되어 사용자 메뉴에서는 제거되었습니다.) - 상품 상세와 장바구니 옵션 변경에서 추가옵션의 직접입력 선택지를 고르면 내용을 직접 입력할 수 있는 입력칸이 나타납니다 — 각인 문구 등을 입력하면 장바구니·주문서·주문 상세에 함께 표시됩니다. 입력칸에는 "직접입력" 라벨과 테두리가 분명히 들어가 설명 문구가 아닌 입력란임을 알 수 있고, 필수 추가옵션의 직접입력은 내용을 입력해야 담기·주문이 진행됩니다(필수가 아닌 추가옵션은 비워 두어도 됩니다). - 상품 상세에서 재고가 없는 옵션은 "(품절)"로 표시되고 선택할 수 없습니다. 관리자가 옵션 재고를 0으로 설정하면 즉시 반영되며, 여러 옵션이 조합되는 상품에서는 선택한 다른 옵션과 함께 가능한 조합이 모두 품절일 때만 품절로 표시됩니다. - 마이페이지 주문 취소 창에서 취소 사유로 "기타"를 고르면 상세 사유를 직접 입력할 수 있는 칸이 나타납니다 — 입력한 내용은 취소 사유로 함께 저장됩니다(회원·비회원 공통, 입력은 선택 사항). - 마이페이지 주문 상세의 주문 이력에 취소 사유가 표시됩니다 — 주문을 취소한 경우 취소 일시와 함께 선택한 사유, "기타" 선택 시 입력한 상세 사유가 표시되며, 부분 취소가 여러 번 이뤄진 주문은 각 취소 건이 모두 나열됩니다(회원·비회원 공통). - 모든 사용자 페이지의 전역 오버레이 영역과 푸터 직후 영역에 플러그인이 UI 를 주입할 수 있도록 공용 확장 지점 제공 #### 비회원 주문 - 비회원 주문 진입 — 비로그인 상태로 "바로구매"·"주문하기"를 누르면 로그인 화면을 경유해 "비회원으로 주문하기"로 안내하며, 임시 주문이 유지되어 끊김 없이 주문서로 이어집니다. - 비회원 주문서 — 조회 비밀번호 입력 영역(8자 이상, 실시간 확인)이 추가되고, 회원 전용 영역(쿠폰·마일리지·저장된 배송지)은 자동으로 숨겨집니다. - 비회원 주문 조회 — 주문번호·휴대폰·조회 비밀번호로 본인 확인 후 주문을 조회합니다. 보안상 진입할 때마다 본인 확인을 거치며, 실패 시 사유 구분 없이 통일된 안내가 표시되고, 회원이 들어오면 마이페이지로 안내합니다. - 비회원 주문 상세 — 회원 마이페이지와 동일한 주문 정보(상품·배송지·결제·이력)를 표시하고, 배송 전 주문은 배송지를 직접 입력해 변경할 수 있으며, 인증 만료 시 로그인 화면으로 안내합니다. - 결제 완료 화면을 회원·비회원 공통으로 정합화 — 비회원은 결제 직후 자동 인증되어 30분간 같은 브라우저에서 재방문·새로고침 시 자동 표시되고, 주문번호 보관 안내가 함께 노출됩니다. - 비회원 주문 조회 진입 링크 — 사이트 헤더·모바일 메뉴(비로그인 시)와 로그인 화면에서 결제한 주문을 빠르게 조회할 수 있습니다. - 주문서 결제 요약·주문완료 화면·마이페이지 주문 목록에 마일리지 사용액과 적립 예정액이 표시됩니다. 마일리지를 적용하면 결제 예정금액에 즉시 반영됩니다. #### 레이아웃 편집기 - 폼 속성 편집을 개선했습니다 — "입력 상자 추가"가 기존 폼 항목과 동일한 "라벨 + 입력칸" 묶음을 추가하고(이전에는 라벨 없는 입력칸 단독이 추가되면서 그 자리가 "컴포넌트 로드 실패"로 깨졌습니다), 각 폼 항목 행에서 라벨과 안내 문구(입력칸의 회색 안내 글)를 각각 한국어/영어/일본어로 편집할 수 있습니다. - 화면 상태를 추가했습니다 — 주문/결제의 "배송지 직접 입력 모달", 주문 상세의 "배송지 변경 (직접 입력)", 공통 레이아웃의 "모바일 메뉴 펼침". 모달이나 특정 조작 뒤에만 나타나는 영역(주소 검색, 모바일 메뉴)을 편집기에서 미리보고 편집할 수 있습니다. - 좌측 화면 목록에서 비회원 주문 조회·상세 화면이 "비회원 주문 조회"·"비회원 주문 상세" 친화 명칭으로 표시되도록 보강했습니다. - 공통 레이아웃 편집에서 헤더/푸터를 직접 클릭해 선택·편집할 수 있도록 편집 표식 연동을 보강했습니다. 사용자 페이지(실제 방문 화면)의 모양·동작은 종전과 동일합니다. - 사이트 헤더의 속성을 친화적인 컨트롤로 편집할 수 있습니다 — 헤더를 선택하면 사이트 이름·로고 이미지·쇼핑몰 기본 경로·탭에 표시할 게시판 수·알림 안내 문구 등을 직접 지정할 수 있고, 회원/비회원·게시판·알림 목록 같은 데이터 영역도 미리보기로 채워 실제와 가깝게 보여 줍니다. - 미리보기에서 헤더의 언어·통화 선택기가 실제 화면과 동일하게 표시되도록 했습니다 — 이전에는 편집기 미리보기에서 헤더의 언어 선택과 통화 선택이 보이지 않아 위치를 가늠하기 어려웠습니다. 사용자 페이지(실제 방문 화면)의 모양·동작은 종전과 동일합니다. - 이 템플릿의 컴포넌트(컨테이너·카드·레이아웃 박스 등)를 드래그로 옮기고 다른 컨테이너 안팎으로 재배치할 수 있도록 편집 표식 연동을 추가했습니다. 이전에는 일부 컨테이너 계열 요소가 편집기에서 선택·드래그 대상으로 잡히지 않아, 그 안의 위젯을 바깥으로 빼낼 수 없었습니다. 사용자 페이지(실제 방문 화면)의 모양·동작은 종전과 100% 동일합니다. - 푸터·테마 전환 버튼·알림 센터 컴포넌트의 속성을 친화적인 컨트롤로 편집할 수 있게 했습니다 — 푸터의 사이트 이름·설명·저작권 문구, 테마 버튼의 자동/라이트/다크 라벨, 알림 센터의 제목·안내 문구 등을 직접 지정할 수 있고, 소셜 링크·알림 목록 같은 데이터 영역도 미리보기로 채워 실제와 가깝게 보여 줍니다. - 속성 편집 지원을 추가했습니다 — 요소를 선택하면 정렬·글자 크기·굵기·색상·여백·크기 등을 친화적인 컨트롤로 조정하고, 모서리를 드래그해 크기를 직접 바꿀 수 있습니다. 회원/비회원·검색 결과 유무·알림 유무 같은 화면 상태를 미리보기로 전환해 볼 수 있고, 게시판·상품·페이지 등 데이터로 채워지는 영역도 샘플 데이터로 실제와 가깝게 표시됩니다. - 속성 편집에 스타일 항목을 더 추가했습니다 — 글자가 없는 상자 요소에도 글자색을 지정할 수 있고, 그림자·테두리 모양과 색·모서리 둥글기·투명도·스크롤(자동/숨김/가로·세로 자동)을 설정할 수 있습니다. 글자에는 굵게·기울임·밑줄과 양쪽 정렬, 줄바꿈 설정을 추가했습니다. 표시 권한을 지정할 때 실제 사용 가능한 권한만 목록에 나오고, 각 권한의 식별자를 함께 보여 줘 어떤 권한인지 분명히 알 수 있습니다. - 화면 상태 미리보기를 더 많은 페이지로 넓혔습니다 — 회원가입의 입력 완료(비밀번호 일치 표시)·검증 실패, 비밀번호 찾기·재설정·본인인증의 단계별 화면, 비밀번호 변경 완료, 찜·배송지 목록의 비어 있음, 회원 프로필의 정상/탈퇴 회원, 작성글 유무를 편집기에서 전환해 미리볼 수 있습니다. ### Changed - 상품 상세에서 옵션을 선택하면 필수가 아닌 추가옵션(각인·포장 등)은 "선택하세요" 상태로 남도록 변경했습니다 — 이전에는 필수가 아닌 추가옵션도 첫 항목이 자동으로 골라져 원치 않은 선택이나 추가금이 붙을 수 있었습니다. 필수 추가옵션은 종전대로 기본 선택지가 미리 선택됩니다. 또한 선택한 옵션 카드들이 서로 붙어 보이던 간격을 넓혀 구분이 잘 되도록 했습니다. - 상품 상세 페이지의 검색엔진 정보(제목·설명·공유 정보)가 방문 언어에 맞춰 표시되도록 보강했습니다 — 관리자가 입력한 언어별 SEO 문구를 우선 사용하고, 비어 있으면 해당 언어의 상품명·상품 설명으로 자동 대체합니다. 검색엔진이 특정 언어로 접근하면 그 언어의 제목·설명이 노출됩니다. (이전에는 다국어 상품명이 그대로 노출되지 못해 검색 결과 제목·설명이 비어 보일 수 있었습니다.) - 레이아웃 편집기 스타일 컨트롤이 글자색·배경색·테두리 등 같은 종류의 스타일 토큰을 서로 정확히 교체하도록 편집기 스펙을 정비했습니다. 사용자 방문 화면의 모양·동작은 종전과 동일합니다. 이를 위해 코어 최소 요구 버전을 7.0.0-beta.8 로 상향했습니다. - 본인인증 모달의 코드 재전송 / 확인 버튼이 외부 본인인증 provider (KG이니시스 등 팝업/SDK 호출형) 흐름에서는 표시되지 않도록 변경 — 외부 plugin 은 자기 흐름 안에서 verify 까지 책임지므로 코어 모달의 코드 입력/재전송 액션이 불필요. 코어 메일/SMS 등 코드 발송형 흐름은 기존대로 재전송/확인 버튼 노출 (회귀 없음) - 본인인증 모달의 외부 provider 슬롯 구조 개편 — 외부 본인인증 플러그인이 모달의 코어 UI 를 의도치 않게 비워버리는 회귀를 차단하고, 향후 추가될 외부 본인인증 플러그인이 일관된 슬롯에 자기 UI 를 주입할 수 있도록 정합화. - 에러 페이지(404 / 403 / 500 / 503 / 401 / 점검) 식별자를 다른 모든 페이지(로그인 / 게시판 / 마이페이지 등) 와 동일하게 디렉토리 접두사 포함 형식(`errors/{코드}`) 으로 통일. 사용자 화면 동작은 동일하나 내부적으로 404·403 등 에러 페이지가 정상 표시됩니다 (이전엔 일부 환경에서 에러 페이지가 "찾을 수 없음" 응답으로 떨어지는 회귀 가능성이 있었음). - 주문서 작성 화면의 배송비가 선택한 배송 국가 기준으로 표시되도록 변경했습니다 — 주문서에 진입하면 헤더에서 고른 배송 국가가 기본으로 선택되고, 배송 국가를 바꾸면 그 즉시 해당 국가의 배송비로 다시 계산되어 표시됩니다. (이전에는 미국 등 해외 국가를 골라도 주문서 배송비가 국내 기준으로 표시되던 문제가 있었습니다.) - 주문서의 결제 진입이 특정 결제사에 고정되지 않고, 주문 생성 응답이 알려주는 결제 수단으로 결제창이 열리도록 변경했습니다 — 결제 플러그인을 바꾸거나 추가해도 주문서 화면 수정 없이 동작하며, 무통장 입금 등 결제창이 없는 결제는 종전대로 주문 완료 화면으로 이어집니다. ### Fixed #### 통화·결제·가격 표시 - 헤더에 모듈이 추가하는 선택기(통화 등)가 데스크톱과 모바일 화면에 동시에 배치될 때 같은 화면 식별자를 공유하던 문제를 수정했습니다 — 두 위치의 선택기가 각각 고유하게 식별됩니다. - 할인이 없는 주문 항목의 소계가 마이페이지 주문 상세에 표시되지 않던 문제를 수정했습니다 — 할인 항목과 무할인 항목 모두 금액이 정상적으로 보입니다(회원·비회원 공통). - 주문을 취소한 뒤에도 마이페이지 주문 상세·주문 목록과 주문 완료 화면에 "적립 예정" 마일리지가 계속 표시되던 문제를 수정했습니다 — 전체 취소·부분 취소된 주문에는 적립 예정 표시가 더 이상 나타나지 않습니다(회원·비회원 공통, 실제 적립은 종전에도 발생하지 않았으며 표시만 정리되었습니다). - 헤더 통화 선택 메뉴가 비어 통화를 고를 수 없던 문제를 수정했습니다 — 관리자가 설정한 통화 목록(기호·국기 포함)이 표시되고, 선택한 통화로 상품·장바구니·주문서·쿠폰 가격이 환산되어 보입니다. 로그인 회원은 계정에 저장된 결제 통화가 기본으로 적용됩니다. - 장바구니·주문서 작성 화면에 정가(취소선)·할인율·판매가가 함께 표시되며, 보조 통화 선택 시 정가도 함께 환산됩니다. 마이페이지에서 결제 통화를 직접 설정할 수 있습니다. #### 본인인증·회원 - 회원가입 폼의 "언어" 선택이 비어 있어 사용자가 직접 골라야 하던 문제 수정 — 현재 사이트 언어가 기본값으로 자동 선택되도록 개선 (한국어 화면이면 한국어, 영문 화면이면 English) - 코어 메일 본인인증 흐름에서 모달의 코드 재전송 / 확인 버튼이 노출되지 않던 회귀 수정. - 본인인증 모달과 풀페이지의 "남은 시도 횟수" 표시가 환경설정값과 무관하게 항상 5회로 굳어 있던 문제 수정. 운영자가 환경설정에서 지정한 한도가 사용자 화면에 정확히 표시됩니다. - 본인인증 풀페이지를 URL 로 직접 접속한 경우(외부 본인인증 콜백 후 진입 등) "남은 시도 횟수"·만료 카운트다운·렌더링 분기 값이 부정확하게 표시되던 문제 수정. 진입 시 서버에서 최신 상태를 받아 즉시 갱신합니다. - 본인인증 인증 코드 메일이 화면에서 선택한 언어와 다른 언어로 발송되던 문제 수정 — 한국어 화면에서 인증을 요청하면 인증 코드 메일도 한국어로, 영문 화면이면 영어로 발송됩니다. 비회원 결제처럼 로그인하지 않은 흐름에서도 화면 언어가 그대로 적용됩니다. - 마이페이지 회원 탈퇴 완료 후 첫 화면으로 자동 이동하지 않던 문제 수정. - 사용자 페이지 곳곳의 아이콘이 표시되지 않던 문제 수정 — 아이콘 폰트 외부 리소스 연결을 복구했습니다. #### 주문·배송·상품 - 무료 배송 주문의 배송비가 "0원"으로 표시되던 문제 수정 — 결제 정보·배송 현황·결제 완료 화면에서 일관되게 "무료"로 표시됩니다. - 입금 대기(결제 전) 상태에서 "배송 현황: 배송대기" 라벨이 노출되어 결제 완료로 오해할 수 있던 문제 수정 — 결제 완료 이후에만 배송 현황이 표시됩니다. - 마이페이지 주문 상세에서 배송지를 "직접 입력"으로 변경할 때 받는 분·연락처가 빈 값으로 전송되어 실패하던 문제 수정 — 현재 배송지가 채워진 상태로 표시되고, 처리 중 로딩이 노출되며, 변경 확인 창이 한 번만 표시됩니다. - 마이페이지 주문 상세 하단의 "리뷰작성" 버튼이 존재하지 않는 화면으로 이동하던 문제 수정 — 리뷰는 주문상품 목록의 각 상품에서 바로 작성 창을 여는 방식으로 통일했습니다(구매확정한 상품에만 표시). - 쇼핑몰 상품 목록의 카테고리 버튼을 눌러도 목록이 해당 카테고리로 걸러지지 않던 문제 수정 — 이제 카테고리를 누르면 그 분류(하위 분류 포함)의 상품만 표시되고, 선택한 카테고리 버튼이 강조되어 현재 분류를 알 수 있습니다. - 마이페이지 주문내역에서 일부 상품만 취소한 주문이 결제완료·상품준비중·배송중 등 실제 진행 상태로 표시되고, 주문 항목에 "일부취소" 표시가 함께 붙도록 개선했습니다. "상품준비중" 건수를 눌러 거를 때 배송준비완료 주문까지 포함되어 표시 건수와 목록 수가 일치합니다. - 마이페이지 주문 내역에서 리뷰 작성 기간이 지난 상품에 "리뷰 작성 기간이 지났습니다" 안내가 표시됩니다. 이전에는 기간이 지나면 리뷰 작성 버튼만 사라져 사용자가 작성할 수 없는 이유를 알기 어려웠습니다. - 전시 중지되었거나 존재하지 않는 상품 페이지에 직접 접근하면 빈 화면 대신 안내 페이지(찾을 수 없음)가 표시됩니다 — 이전에는 빈 로딩 화면이 계속 보였습니다. - 마이페이지 주문 상세의 주문 이력에 취소일시가 표시됩니다 — 취소된 주문에 취소 시각이 함께 노출됩니다. #### 게시판·신고·접근 - 게시판 "조회수 표시"를 끈 경우에도 갤러리형 목록에서는 조회수가 계속 보이던 문제 수정 — 이제 기본형·카드형과 동일하게 갤러리형 목록에서도 조회수가 숨겨집니다. - 게시글·댓글 신고 후 "신고" 버튼이 새로고침해야만 "신고됨"으로 바뀌던 문제 수정 — 신고 접수 즉시 버튼이 "신고됨"으로 전환됩니다. - 이미 신고한 글·댓글을 다시 신고할 때 신고 창이 닫히지 않고 멈춘 것처럼 보이던 문제 수정 — 신고 창이 닫히고 안내 메시지가 표시됩니다. - 비로그인 상태로 회원전용 게시판이나 비밀글에 접근해 로그인한 뒤, 원래 보려던 게시판·글이 아니라 첫 화면으로 이동하던 문제 수정 — 로그인 후 원래 위치(목록의 검색·페이지 상태 포함)로 정확히 돌아갑니다. 회원전용 게시판 진입 시 안내 문구도 "로그인이 필요한 페이지입니다"로 명확해졌습니다. - 게시판 글 첨부파일을 내려받을 때, 로그인한 회원이 받으면 활동이력에 "받은 사람"이 함께 남도록 다운로드 방식을 개선했습니다. 다운로드 동작과 화면은 종전과 동일합니다. ## [1.0.0-beta.5] - 2026-05-12 ### Added - 쇼핑몰 재주문 페이지 추가 — 마이페이지 취소 주문에서 "재주문" 버튼 클릭 시 과거 주문 옵션을 장바구니에 일괄 추가, 품절/단종 상품은 사유와 함께 안내 후 장바구니로 이동 ### Fixed - 알림 센터의 미확인 알림 카운트 뱃지·알림 행의 unread 점·"읽지 않은 알림만" 체크박스가 다크 모드에서 색상이 부정합하게 노출되던 문제 수정 ## [1.0.0-beta.4] - 2026-05-11 ### Added - 본인인증 정책이 활성화된 모든 강제 지점(회원가입·비밀번호 재설정·민감 작업·게시판/이커머스 정책 등)에서 동일한 모달 UX 가 자동으로 표시되도록 공통 본인인증 모달 추가 - 본인인증 모달의 "취소" 클릭 시 서버 본인인증 challenge 가 즉시 정리되도록 개선 — 미인증 challenge 가 만료까지 남아있던 동작이 audit 기록과 함께 즉시 cancelled 상태로 정합 - 외부 본인인증 provider 플러그인이 자기 SDK UI 를 주입할 수 있는 슬롯 도입 — 다음 우편번호 / WYSIWYG 에디터 와 동일한 G7 표준 패턴으로 KCP·PortOne·토스인증·Stripe Identity 등 추가 가능 - 본인인증 챌린지 화면 (`/identity/challenge`) — render_hint 에 따라 OTP 코드 입력 / 이메일 링크 안내 / 외부 본인인증 리다이렉트 3종 분기. 만료 카운트다운(분:초), 남은 시도 횟수, 30초 재전송 쿨다운, live region 접근성 지원. 모달과 동일한 결과 통보 흐름을 사용하여 코어 인터셉터의 launcher 폴백과 일관 - 회원가입 폼이 쿼리 파라미터로 전달된 `verification_token` 을 서버로 자동 전송하도록 개선 — 코어 본인인증 인프라(Mode B) 연동 - 로그인 화면에 세션 만료 안내 토스트 추가 — 토큰 만료로 자동 리다이렉트된 사용자에게 "세션이 만료되었습니다. 다시 로그인해 주세요." 메시지 표시 (`?reason=session_expired` 쿼리 파라미터 감지) (#19 @abc101 님께서 건의해주셨습니다.) ### Fixed - 사용자 프로필/게시글 목록/마이페이지에서 댓글 수가 0으로 표시되던 문제 수정 (#11 @laelbe 님께서 제보해주셨습니다.) - 게시글 상세의 댓글/답글/첨부파일 헤더 카운트가 실제 수와 어긋나던 문제 수정 (#11 @laelbe 님께서 제보해주셨습니다.) - 비로그인 상태에서 사용자 공개 프로필 페이지 접근 시 페이지가 표시되지 않던 문제 수정 - 주문 완료 페이지의 "이 배송지를 주소록에 저장" 버튼이 작동 불가 상태였던 문제 수정 — 호출 URL 누락으로 요청이 발송되지 않고 성공/실패 토스트도 표시되지 않던 회귀 해소 ### Changed - 코어 최소 요구 버전을 7.0.0-beta.4 로 상향 — 엔진의 `startInterval` / `stopInterval` 액션 핸들러(engine-v1.45.0) 의존 - 번들 모듈 의존성 최소 버전을 `>=1.0.0-beta.3` 로 상향 (sirsoft-board, sirsoft-ecommerce, sirsoft-page) ## [1.0.0-beta.3] - 2026-04-21 ### Fixed - 알림 레이어를 닫을 때 목록이 읽음 상태로 갱신되지 않아 재토글 시 읽음 처리가 누락되던 문제 수정 - 알림 레이어 무한 스크롤 시 "안 읽은 알림만" 필터가 유지되지 않아 읽은 알림이 섞여 노출되던 문제 수정 - 알림 레이어 무한 스크롤 시 동일 페이지 API 가 중복 호출되던 문제 수정 - 안 읽은 알림이 없는데도 알림 레이어를 닫을 때 읽음 처리 API 가 불필요하게 호출되던 문제 수정 - 알림 드롭다운이 화면 경계를 벗어나지 않도록 자동으로 좌/우 정렬 전환 및 최대 너비 제한 ## [1.0.0-beta.2] - 2026-04-20 ### Added - NotificationCenter 컴포넌트 — 알림 드롭다운, 무한 스크롤, 안 읽은 필터, 개별/전체 삭제 (관리자 템플릿과 동일 UX) - 알림 전체 삭제 확인 모달 추가 - 마이페이지 알림 목록에 "안 읽은 알림만" 필터 토글 추가 - 실시간 알림 수신 시 카운트 갱신 + 토스트 표시 (WebSocket 연동) - 게시판/쇼핑몰 레이아웃에 SEO 설정 적용 - 게시글 상세 페이지에 이전글/다음글 네비게이션 추가 — 독립 API로 비동기 로딩하여 초기 렌더링 속도 개선 ### Changed - 코어 최소 요구 버전을 7.0.0-beta.2 로 상향 - 모듈/플러그인 의존성 버전 제약을 실제 릴리스 버전에 맞춰 정비 - TabNavigation / Header / MobileNav / PageSkeleton 컴포넌트를 반응형으로 개선 — `useResponsive()` hook 기반 단일 분기 렌더링 - 헤더 알림 버튼을 NotificationCenter 드롭다운으로 교체 - 언어 선택 UI를 하드코딩에서 `localeNames` 기반 동적 생성으로 전환 - HtmlContent DOMPurify를 FORBID 방식으로 전환 (보안 기본값 항상 유지) - HtmlEditor/HtmlContent를 extension_point로 변환 - 인기글 기간 필터 "전체" 옵션을 "연간"으로 변경 ### Fixed - 마이페이지 배송지 관리에서 수정 버튼에 권한 체크가 누락되어 있던 문제 수정 - 인기상품/신상품/최근본상품 섹션 반응형 개선 — grid 기반 카드 크기 제어 및 스크롤 버튼 breakpoint별 비활성화 처리 - 다크 모드 variant 누락 보완 - FileUploader 갤러리 이미지 깨짐 수정 — stale closure 문제 - 사용자 화면 버전 배지 표현식 수정 - 모바일 메뉴 통합검색 Enter 키 미작동 수정 — keydown 액션 누락 - 상품 상세 페이지 모바일에서 가격이 중복 표시되던 문제 수정 — 모바일/데스크톱 가격 섹션을 상호 배타적 조건부 렌더링으로 분리 - 상품 상세 모바일 가격 표시에 할인율 누락 수정 — PC와 동일하게 할인율 표시 추가 - 주문 상세 아이템의 상태 뱃지·배송정보·구매확정/리뷰 버튼이 DOM에 이중 렌더링되던 문제 수정 — CSS hidden 토글에서 조건부 렌더링으로 전환 - 장바구니 요약 패널이 모바일에서 sticky로 고정되어 스크롤 시 비정상 동작하던 문제 수정 - 모달 내부 Select 드롭다운이 잘려 보이는 문제 수정 ## [1.0.0-beta.1] - 2026-04-01 ### Changed - 오픈 베타 릴리즈 ## [0.5.1] - 2026-03-30 ### Changed - 마이페이지 프로필 국가 입력항목 및 표시 숨김 처리 (_edit.json, _view.json) ### Fixed - 게시글 작성 폼의 첨부파일 안내 문구(최대 개수/용량)가 게시판 설정과 무관하게 고정 표시되던 문제 수정 — 게시판 설정값에 따라 동적으로 표시 - 비로그인 사용자가 로그인이 필요한 게시판 접근 시 오류 화면이 순간 노출된 후 리다이렉트되던 문제 수정 — "로그인이 필요합니다" 안내 후 로그인 페이지로 이동 - 본인이 작성한 댓글/답글의 수정·삭제 버튼이 표시되지 않던 문제 수정 - 주문 상세·결제 페이지 배송지 다국어 키 누락 수정 — `mypage.order_detail.paid_at`, `shop.checkout.intl_*` 키 9개 추가 (ko/en mypage.json, shop.json) ## [0.5.0] - 2026-03-30 ### Added - 상품 상세 페이지에 1:1 문의 QnA 탭 화면 추가 - 비로그인/로그인/관리자 권한에 따라 버튼 및 기능 분기 - 문의 클릭 시 내용과 답변 인라인 펼침 - 비밀글 토글 필터 (전체 / 비밀글 제외) - 문의 작성/수정/삭제 모달, 관리자 답변 등록/수정/삭제 - 작성자명 마스킹, 비밀글 잠금, 페이지네이션 - 마이페이지에 상품 1:1 문의내역 탭 추가 - 내 문의 목록, 답변 여부/내용 확인 - 필터 탭 (전체 / 답변 대기 / 답변 완료) - 문의 수정, 삭제 (답변 유무에 따라 삭제 안내 모달 분기) - 문의 게시판 미설정 시 안내 화면 표시 - TabNavigation 컴포넌트: 모바일 배지 가로 배치 개선 ## [0.4.34] - 2026-03-30 ### Fixed - 다크모드 전수 조사 및 수정 — TSX 컴포넌트 약 11건의 누락된 `dark:` variant 추가 - FileUploader(FileList, SortableThumbnailItem, FileDropZone), Header, Modal 등 - main.css: `.btn-primary`, `.btn-danger`, `.btn-secondary`, `.btn-ghost` 다크 variant 추가 - Select 컴포넌트 다크모드 텍스트 색상 누락 수정 — 커스텀 `bg-*` className 사용 시 텍스트 색상 자동 보충 로직 추가 - safelist에 `dark:hover:text-red-*`, `dark:hover:text-green-*`, `dark:focus:ring-blue-400` 패밀리 추가 ## [0.4.33] - 2026-03-30 ### Changed - 페이지 전환 시 스켈레톤 UI → 스피너 로딩으로 변경 (transition_overlay style: skeleton → spinner) - PageLoading.tsx 컴포넌트 신규 추가 (스피너 아이콘 + 다국어 텍스트, 포지셔닝/배경/다크모드 자체 제어) - _user_base.json 및 mypage/*.json 7개 레이아웃 설정 변경 - 다국어 번역 키 추가: nav.loading (ko: "로딩 중...", en: "Loading...") ## [0.4.32] - 2026-03-30 ### Fixed - FileUploader 상품 수정 시 이미지 순서 유실 버그 3건 수정 — customOrder 상태 도입으로 기존/신규 파일 간 드래그 순서 보존, handleDragEnd에서 customOrder 기반 정렬, 업로드 완료 즉시 pending ID→hash 교체 (useFileUploader.ts) - FileUploader onReorder 콜백 추가 — 드래그 순서 변경 및 업로드 완료 시 부모에게 정렬된 파일 목록 전달 (useFileUploader.ts, FileUploader.tsx, types.ts) - FileUploader 업로드 응답 ResponseHelper 이중 래핑 대응 — response.data.data ?? response.data 패턴 (useFileUploader.ts) ## [0.4.31] - 2026-03-29 ### Fixed - FileUploader mime_type null 방어 코드 추가 — optional chaining으로 startsWith 에러 방지 (useFileUploader.ts, SortableThumbnailItem.tsx, FileList.tsx, utils.ts) - FileUploader 대표이미지 식별 hash 기반 전환 — primaryFileId 비교/이벤트에 hash 우선 사용, 복사 모드(id 없는 이미지) 삭제 시 서버 API 호출 스킵 (useFileUploader.ts, FileList.tsx, types.ts) - FileUploader 복사 모드 이미지 삭제 후 재출현 버그 수정 — deletedIdsRef에 hash 추가 추적, initialFiles 동기화 시 hash 기반 필터링 (useFileUploader.ts) ## [0.4.30] - 2026-03-28 ### Fixed - FileUploader 업로드 후 'uploading' 항목 영구 잔류 버그 수정 — `response.data?.data` 이중 접근을 `response?.data`로 수정 (ApiClient가 Axios response.data를 이미 언래핑하므로), attachment null 시 에러 상태 전환 방어 로직 추가 (useFileUploader.ts) ### Added - FileUploader 업로드 응답 파싱 테스트 추가 — renderHook 기반 훅 직접 테스트로 정상 파싱 및 null 응답 방어 검증 (FileUploaderUpload.test.ts) ## [0.4.29] - 2026-03-27 ### Changed - Toast 기본 위치를 top-right → bottom-center로 변경 — 우측 상단 버튼과의 겹침 해소 - Toast 숨김 애니메이션 방향을 position에 따라 분기 처리 (bottom → 아래로, top → 위로) ## [0.4.28] - 2026-03-26 ### Fixed - FileUploader 컴포넌트 모달 내 사용 시 무한 렌더 루프로 인한 모달 닫기/등록 버튼 미작동 수정: `initialFiles = []` 기본값이 매 렌더마다 새 참조 생성 → useEffect 무한 실행 → startTransition 모달 닫기 렌더 영구 차단. 모듈 레벨 EMPTY\_FILES 상수 + useMemo 기반 참조 안정화로 해결 (FileUploader.tsx, useFileUploader.ts) ## [0.4.27] - 2026-03-26 ### Fixed - 리뷰 작성 모달 닫기/등록 버튼 클릭 불가 수정: `flex flex-col max-h-[75vh]` 이중 overflow 래퍼 제거 — `max-h-[75vh]`가 Tailwind CSS 빌드에 미포함되어 높이 제한 미적용 → 콘텐츠가 Modal 컴포넌트의 `max-h-[90vh] overflow-hidden` 경계를 초과하여 버튼 영역이 클리핑됨. 구매확정 모달과 동일한 플랫 구조로 변경 (\_modal\_write\_review.json) ## [0.4.26] - 2026-03-26 ### Fixed - FileUploader accept 검증에서 MIME 타입 와일드카드(image/*, video/* 등) 미지원 버그 수정 (useFileUploader.ts) - 리뷰 작성 모달 닫기 불가 버그 수정: 모달 최상위 actions의 onClose 이벤트가 모달 닫기 기능 충돌 (\_modal\_write\_review.json) - 리뷰 작성 모달 FileUploader 미지원 props 제거: showPreview, multiple, buttonLabel, maxFileSize → maxSize ### Added - 리뷰 작성 모달 제출 버튼 스피너 표시 (구매확정 모달 패턴 동일: Icon spinner + animate-spin) ## [0.4.25] - 2026-03-25 ### Fixed - 주문 상세 쿠폰 할인코드 참조 키 수정: `discountCodes` → `discount_codes` (snake_case 정규화) (_items.json) ## [0.4.24] - 2026-03-25 ### Added - 주문 취소 모달: 주문금액 비교 테이블 (취소 전/후 13개 항목 비교 + 적색 하이라이트 + 다통화 인라인 표시) - 주문 취소 모달: 쿠폰 상세 표시 (상품/주문/배송비쿠폰별 적용 쿠폰명 + 할인금액) - 주문 취소 모달: 상품 소계 표시 (단가 × 수량 = 소계) - 다국어 키 18개 추가 (ko/en — comparison_title, col_before, col_after 등) ### Changed - 주문 취소 모달 크기 조정 (size: lg → width: 750px, max-w-full) - 취소 모달 "환불 예정금액" 섹션을 "주문금액 비교" 테이블로 전면 교체 ## [0.4.23] - 2026-03-25 ### Added - 주문 상세 상품 영역(_items.json): 체크박스 기반 상품 선택 + 상태 뱃지 + 배송사/운송장 표시 + 취소 버튼 이동 - 주문 상세(show.json): selectedItemIds, selectAllItems initLocal 상태 추가 ### Fixed - 주문 취소 모달(_modal_cancel.json): isOpen prop 기반 제어에서 openModal/closeModal 패턴으로 전환 — modals 섹션에서 모달이 열리지 않던 버그 수정 - 주문 취소 모달: 커스텀 헤더 제거(중복 닫기 버튼/빈 헤더 해결) — Modal title prop 사용 - 주문 취소 모달: cancelReason setState가 모달 격리 스코프에 기록되어 커스텀 핸들러에서 읽지 못하던 버그 수정 — $parent._local 패턴 적용 - 주문 취소 버튼: 상품 미선택 시 숨김 → 비활성화(disabled) 상태로 변경 ## [0.4.22] - 2026-03-26 ### Added - 게시판 목록/상세에서 manager 권한 사용자 대상 "삭제된 게시글 포함" / "삭제된 댓글 포함" 토글 UI 추가 - 게시판 목록 카드/갤러리 타입에 삭제 글 포함 토글 UI 추가 ### Fixed - 대댓글 UI 들여쓰기 버그 수정 - PageSkeleton: Flex/Grid 컴포넌트의 레이아웃 props(justify, align, direction, gap 등)가 스켈레톤에서 누락되는 문제 수정 (resolveLayoutProps) - UserInfo.tsx: AuthorInfo 인터페이스에 uuid 필드 누락 수정 (TS2339 빌드 오류) ## [0.4.21] - 2026-03-24 ### Added - 마이페이지 주문 취소 모달 확장: 부분취소 지원 (옵션별 수량 선택, 환불 예상 금액 표시) - 주문 취소 관련 다국어 키 추가 (ko/en common, mypage) ### Changed - 주문상세(show.json): 취소 버튼 조건 개선 (취소 가능 상태에서만 표시) ### Fixed - 마이페이지 프로필에서 국가 선택 목록이 올바른 다국어 이름으로 표시되지 않던 문제 수정 - 마이페이지 프로필에서 언어 선택 목록이 앱 지원 언어 기준으로 표시되지 않던 문제 수정 ## [0.4.20] - 2026-03-23 ### Changed - `_global.currentUser?.id` → `_global.currentUser?.uuid` 전환 (12개 파일, 24개 참조) - Header.tsx: currentUser.id → currentUser.uuid 전환 - UserInfo.tsx: author.id → author.uuid 프로필 URL 전환 - _post_form.json: author.id → author.uuid 전환 ### Fixed - 글쓰기 버튼 abilities 비활성화 누락 수정 — `can_write !== true` 시 버튼 disabled 처리 ## [0.4.19] - 2026-03-23 ### Fixed - 비회원 로그인 체크 시 `_global.currentUser` 빈 배열 truthy 오판 수정 — `?.uuid` 속성 체크로 변경 (7건: _info_summary, _welcome_card, _checkout_discount, _checkout_items, _checkout_mileage) - 쿠폰 다운로드 conditions 핸들러 `"else"` → `"then"` 수정 — else 키 미지원으로 login_required_modal 미동작 (2건: _info_summary) ## [0.4.18] - 2026-03-23 ### Fixed - UserInfo 드롭다운 메뉴가 overflow-hidden 부모(카드/갤러리)에 가려지는 문제 — React Portal(createPortal)로 document.body에 fixed 렌더링, 스크롤/리사이즈 시 자동 닫기 추가 - 사용자 작성글(users/posts) 페이지네이션 무반응 수정 — setState key/value 리터럴 저장 + refetch 잘못된 핸들러명 → navigate+mergeQuery 패턴으로 변경, URL 동기화 지원 ## [0.4.17] - 2026-03-23 ### Added - Hr (수평선) basic 컴포넌트 추가 — HTML `