Files
Gnuboard7/templates/_bundled/sirsoft-basic/CHANGELOG.md
T
HeuJung 72f46a6468 fix(core): 레이아웃 첨부 URL 을 사이트 상대 경로로 발급하고 저장 게이트가 자기 주소를 외부로 보지 않게 수정
편집기 헤더 「로고 이미지」에 파일을 올린 뒤 저장하면 「HTTPS 프로토콜 URL은
허용되지 않습니다」 422 로 거부되던 결함. 프록시 서빙 URL 이 절대 형태로 발급되어
NoExternalUrls 가 서버 자신의 주소를 외부로 차단했고, 배경 이미지는 style 로 들어가
스캔 밖이어서 로고(propValue)에서만 드러났다.

- proxyUrl 을 사이트 상대 경로로 발급 (발급 시점 도메인·스킴에 묶이지 않는다)
- SiteAssetHosts 신설: app.url host + 운영자가 선언한 공개 자산 디스크 host 를
 브라우저와 같은 정규화 뒤 등가 비교. 요청 Host 헤더는 근거로 쓰지 않고,
 흉내 host·protocol-relative·위험 스킴은 종전대로 차단
- 회귀 테스트 4클래스(71 passed) + 시나리오 매니페스트 + Playwright 2케이스,
 공개 문서(SECURITY·security·storage-driver·api)와 규정 표 갱신

함께 담긴 릴리즈 정비:
- 7.0.11 미출시 섹션의 릴리즈 날짜를 09-09 로 갱신 (코어·board·page·admin_basic·basic·ja 언어팩 3종)
- 배포본에 실리는 주석·독블록·시나리오의 내부 호칭을 중립 표현으로 정리하고,
 동봉 vendor 자산의 우연한 토큰은 누출 검사에서 경로 규칙으로만 제외
- 버전 bump 검사: github_url 없는 번들을 언어팩과 같은 origin/release 페이로드
 기준선으로 판정(상시 경고 제거), 코어 버전 판독이 env 래핑을 읽도록 보정
2026-09-09 09:20:29 +09:00

76 KiB

Changelog

이 프로젝트의 모든 주요 변경사항을 기록합니다. 형식은 Keep a Changelog를 따르며, Semantic Versioning을 준수합니다.

[1.1.4] - 2026-09-09

Added

  • 2단계 인증을 켠 사이트의 로그인 화면에 인증번호 입력 단계가 추가되었습니다. 비밀번호를 확인하면 같은 카드 안에서 인증번호 입력으로 넘어가고, 「인증번호 다시 받기」로 새 번호를 받거나 「처음부터」로 되돌아갈 수 있습니다. 인증번호의 유효 시각도 함께 표시됩니다. (#133 @keidichoi-gif 님께서 제보해주셨습니다.)

Changed

  • 코어 최소 요구 버전을 7.0.11 로 상향했습니다.

Fixed

  • 로그인 시도 초과로 계정이 잠겼을 때 해제 시각이 화면에 표시되지 않던 문제를 수정했습니다. 언제 다시 시도할 수 있는지 알 수 없어 계속 눌러 보게 되었습니다.
  • 화면 편집기로 지정한 로고가 깨져 보이던 문제를 수정했습니다. 이미지 주소 자리에 알 수 없는 값이 저장된 사이트에서도 이제 그림이 정상 표시되며, 주소를 해석할 수 없으면 이미지 대신 사이트 이름이 표시됩니다. (#135 @lyg-kaban 님께서 제보해주셨습니다.)

[1.1.3] - 2026-09-06

Added

  • 아이콘(Font Awesome)과 본문 글꼴(Pretendard)을 템플릿에 함께 담았습니다. 이제 외부 CDN 에 연결하지 않고 사이트 자신의 서버에서 불러오므로, 폐쇄망이나 외부 접속이 제한된 환경에서도 아이콘과 글꼴이 정상 표시됩니다.
  • 이미지 업로드 시 쓰는 압축 라이브러리도 함께 담아, 업로드할 때마다 외부로 나가던 요청이 없어졌습니다.
  • 검색엔진 크롤러가 보는 페이지도 같은 아이콘 파일을 사이트 자신의 주소에서 불러옵니다.
  • 개발자와 AI 에이전트를 위한 문서를 추가했습니다. 확장 폴더의 AGENTS.md(설계 의도·확장점·수정 시 확인할 것)와 README.md(도입·운영 안내), docs/(상세 문서)로 구성됩니다.
  • 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
  • 문서의 제품 표기를 「그누보드7」로 통일했습니다.

Fixed

  • 총 건수를 정확히 세지 못한 목록(대량 검색 결과, 게시글이 아주 많은 게시판 등)에서 페이지 번호가 전부 사라지고 현재 페이지 숫자 하나만 남던 문제를 수정했습니다. 이제 1 부터 현재 페이지까지의 번호와 다음 페이지 번호가 그대로 표시되며, 감춰지는 것은 마지막 페이지로 뛰는 버튼뿐입니다.
  • 게시글·페이지 본문을 표시할 때 쓰는 HTML 정화 라이브러리가 구버전에 머물러 있던 문제를 고쳤습니다. 관리자 템플릿과 동일한 최신 버전으로 맞췄습니다. (#126 @jiwonpapa 님께서 제보해주셨습니다.)
  • 글 수정 화면에서 비밀글의 기존 첨부 이미지가 빈 칸으로 표시되던 문제를 고쳤습니다. 미리보기를 불러오는 요청이 열람 자격을 함께 보내지 않아 거부되었고, 화면에는 오류가 나타나지 않았습니다.
  • 비밀번호를 입력해 비밀글을 연 뒤 그 글의 첨부파일을 내려받으면 거부되던 문제를 고쳤습니다. 내려받기 버튼은 화면에 그대로 보이는데 눌러도 파일이 받아지지 않았고, 오류 메시지도 남지 않아 원인을 알기 어려웠습니다. 이미지를 크게 보는 화면에서 내려받을 때도 같은 문제가 있었으며 함께 고쳤습니다.
  • 통화 표시·선호 통화 저장 관련 화면 동작 함수 4종이 실제 호출 규약과 다른 형태로 작성돼 있어, 호출되면 값이 전달되지 않고 상태가 잘못 기록되던 문제를 고쳤습니다.
  • 주소 검색을 불러오지 못한 상태에서 주문서의 우편번호·주소를 직접 입력해도 값이 주문에 반영되지 않아 결제 버튼이 계속 눌리지 않던 문제를 고쳤습니다. 이제 직접 입력한 주소로 주문을 끝까지 진행할 수 있습니다.
  • 레이아웃 편집기의 「액션 추가」로 만든 「테마 바꾸기」·「테마 초기화」·「화면 상태 바꾸기」 동작이 만들자마자 아무 일도 하지 않던 문제를 고쳤습니다. 편집기가 만들어 주는 값의 형태가 실제 동작이 읽는 형태와 달라 오류 표시도 없이 무시되고 있었습니다.

Changed

  • 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.

[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 <hr> 래퍼, className 지원

[0.4.16] - 2026-03-21

Added

  • 마이페이지 6개 레이아웃에 3단계 스켈레톤 타겟팅 적용
    • transition_overlay override: target: "mypage_tab_content", fallback_target: "main_content_area"
    • 마이페이지→마이페이지 탭 전환: 탭 컨텐츠 영역만 스켈레톤 (탭 네비 유지)
    • 헤더→마이페이지 전환: 컨텐츠 영역만 스켈레톤 (헤더 유지)
    • 초기 로드(직접 URL): 전체 페이지 스켈레톤
    • 대상: orders, profile, board, addresses, wishlist, notifications
  • PageSkeleton: Header/Footer 컴포지트 스켈레톤 추가 — fullpage 스코프에서 헤더/푸터 구조 표현

Fixed

  • PageSkeleton: sanitizeClassName에서 standalone border 클래스 미제거 — 스켈레톤 요소에 검정 테두리 누출 방지
  • PageSkeleton: filterChildren 상호 배타적 값 분기(=== 'value') 감지 — 게시물 상세 등에서 type별 조건부 블록 중복 렌더링 방지
  • PageSkeleton: 텍스트/버튼 스켈레톤 크기 실제 비율에 맞게 조정 (H1 w-2/5→w-3/5, Span w-1/6→w-1/4, Button w-20→w-24)
  • PageSkeleton: children 있는 Button 컨테이너에 스켈레톤 경계(border+bg) 추가 — 버튼 형태 시각적 표현

[0.4.15] - 2026-03-21

Fixed

  • PageSkeleton: children이 있는 Button을 컨테이너로 처리 — 게시판 행 래퍼(Button > desktop/mobile Div) 정상 렌더링
  • PageSkeleton: empty state 조건(=== 0, .length === 0, .total === 0) 부정 조건 감지 추가 — _empty_states.json 스킵
  • PageSkeleton: 비-컨테이너 컴포넌트 className sanitize 적용 — 스켈레톤 바에 원본 색상(bg-red-500 등) 누출 방지

[0.4.14] - 2026-03-21

Fixed

  • PageSkeleton: Tailwind 반응형 display 클래스(hidden lg:grid, lg:hidden) JS 런타임 해석 추가
    • resolveResponsiveDisplay() — window.innerWidth 기준 Tailwind cascade 적용
    • 데스크톱에서 hidden lg:grid → grid, 모바일에서 lg:hidden → 숨김 처리
  • PageSkeleton: arbitrary grid-cols-[...] 값을 inline gridTemplateColumns style로 변환
    • Tailwind 빌드 CSS에 포함되지 않는 동적 grid 값 지원
  • PageSkeleton: 로딩/에러 wrapper 컨테이너 스킵 — 모든 자식이 부정 조건(!data, hasError)인 경우 컨테이너 자체 제거
  • PageSkeleton: 표현식/반응형 해석 파이프라인 정리 — renderSkeletonNode에서 일괄 처리 (표현식 → 반응형 → sanitize → grid inline style)

[0.4.13] - 2026-03-21

Added

  • PageSkeleton 컴포넌트 — 레이아웃 JSON 컴포넌트 트리 기반 동적 스켈레톤 UI 렌더러 (engine-v1.24.0)
    • 컴포넌트 트리를 재귀 순회하여 텍스트→바, 인풋→사각형, 미디어→큰 사각형 등 자동 생성
    • DataGrid, Tabs 등 복합 컴포넌트 특화 스켈레톤 지원
    • iteration 블록 기본 반복 횟수 설정 가능
    • pulse/wave/none 애니메이션 지원, 다크 모드 호환
    • 접근성: role="status", aria-busy="true"

Changed

  • _user_base.json transition_overlay를 skeleton 스타일로 변경 (opaque → skeleton)

[0.4.12] - 2026-03-21

Changed

  • _user_base.json 페이지 전환 오버레이를 엔진 레벨 transition_overlay로 교체 (engine-v1.23.0)
    • React 컴포넌트(PageTransitionBlur) → 순수 DOM 조작으로 변경 (stale flash 근본 해결)
    • target: "main_content_area" 지정으로 헤더/네비게이션은 유지, 콘텐츠 영역만 오버레이

Removed

  • _user_base.json에서 PageTransitionBlur 컴포넌트 제거 (transition_overlay로 대체)

[0.4.11] - 2026-03-21

Added

  • PageTransitionBlur 컴포넌트 — 페이지 전환 시 전체 콘텐츠 블러 오버레이 (TransitionManager 구독)
    • _user_base.json에 배치, 레이아웃 전환 시 stale DOM flash 방지
    • backdrop-blur-sm + bg-white/30 dark:bg-gray-900/30 + pointer-events-none
    • PageTransitionIndicator(z-50)보다 아래 레이어(z-40)에 위치
  • UserInfo 컴포넌트 subTextTitle prop 추가 — 날짜 tooltip 지원

Changed

  • 게시판 레이아웃 날짜 표시 — created_at → created_at_formatted + title tooltip 적용 (14개 파일)

Fixed

  • UserInfo 드롭다운이 카드형/갤러리형에서 잘리거나 겹치는 문제 수정 (absolute → fixed 포지션)
  • 블라인드/삭제 게시글의 UserInfo 드롭다운 메뉴가 투명하게 보이던 문제 수정
  • Font Awesome Pro 아이콘 4종 → Free 버전으로 교체

[0.4.10] - 2026-03-19

Added

  • seo-config.json header_nav 렌더 모드 — Header 컴포넌트 SEO 렌더링: 사이트명 링크 + 정적 네비게이션($t: 다국어 키) + boards iterate 네비게이션
  • seo-config.json footer_nav 렌더 모드 — Footer 컴포넌트 SEO 렌더링: 사이트명 + 소셜 링크 + 커뮤니티/정보/정책 링크 그룹($t: 다국어 키) + 저작권 + Powered by
  • Header/Footer component_map render 속성 변경 — text_format → header_nav/footer_nav 전환

[0.4.9] - 2026-03-19

Added

  • _user_base.json meta.seo.data_sources 에 boards 추가 — SEO 렌더링 시 게시판 목록 데이터 사전 로드
  • _user_base.json meta.seo.vars.site_name 추가 — Header/Footer seoVars 치환용

[0.4.8] - 2026-03-19

Added

  • seo-config.json seo_overrides 섹션 추가 — _local.collapsedReplies 와일드카드 오버라이드로 대댓글 SEO 강제 펼침
  • seo-config.json pagination_links 렌더 모드 + Pagination 컴포넌트 렌더 설정 추가

[0.4.7] - 2026-03-19

Added

  • seo-config.json Avatar/UserInfo text_format 렌더 모드 추가 — 댓글 작성자 닉네임, 작성일 SEO HTML 출력 ({author.nickname} dot notation)

[0.4.6] - 2026-03-19

Added

  • _user_base.json에 기본 SEO 설정 추가 (enabled: false, og.type: "website") — 자식 레이아웃 SEO 상속 기반 마련

[0.4.5] - 2026-03-18

Changed

  • 위시리스트 레이아웃 페이지네이션 경로 수정 — WishlistCollection 응답 구조 대응 (wishlist.data.total → wishlist.data.pagination.total 등)

[0.4.4] - 2026-03-18

Added

  • seo-config.json에 product_card_view fields 렌더 모드 추가 — ProductCard 컴포넌트의 상품 정보(이미지, 가격, 할인, 라벨 등) SEO HTML 생성

Fixed

  • 상품 목록 레이아웃 데이터 경로 수정 (products?.data → products?.data?.data) — ProductCollection 응답 구조 대응
  • seo-config.json Header/Footer format 변수명 수정 (siteName → site_name) — seoVars 주입 키와 일치

Changed

  • shop/index.json SEO data_sources에 categories 추가 — 카테고리 데이터 SEO 활용

[0.4.3] - 2026-03-18

Added

  • seo-config.json에 text_props, attr_map, allowed_attrs 선언 추가 — 텍스트 추출, 속성 매핑, 허용 속성을 템플릿 수준에서 선언
  • 레이아웃 JSON meta.seo에 page_type, toggle_setting, vars 선언 추가 — SEO 변수 치환, 페이지 유형, 모듈 SEO 토글을 레이아웃 책임으로 이전

Changed

  • SEO 엔진 하드코딩 제거 — text_props/attr_map/allowed_attrs, vars/page_type, toggle_setting 모두 선언적 설정으로 이전

[0.4.2] - 2026-03-18

Added

  • seo-config.json Icon 컴포넌트 name_to_class 속성 추가 — name prop을 Font Awesome CSS class로 변환
  • seo-config.json Header/Footer 컴포넌트 text_format 렌더 모드 적용 — 빈 태그 방지

Fixed

  • seo-config.json image_gallery src 필드 패턴에 download_url fallback 추가 — DB url 컬럼 비어있을 때 API 서빙 URL 사용

[0.4.1] - 2026-03-18

Fixed

  • seo-config.json image_gallery 렌더 모드 alt 필드 패턴 수정 ({alt} → {alt_text_current|alt_text|alt}, {url|src} → {url|src|image_url})

[0.4.0] - 2026-03-18

Added

  • seo-config.json에 기본 컴포넌트 30개 매핑 추가 (Div, Span, P, H1-H6, A, Button, Img 등)
  • seo-config.json에 render_modes 섹션 추가 (image_gallery, tab_list, text_format, html_content)
  • seo-config.json에 self_closing 태그 목록 추가 (img, input, hr, br)

Changed

  • SEO 컴포넌트→HTML 매핑을 엔진 하드코딩에서 seo-config.json 선언적 설정으로 이전

[0.3.2] - 2026-03-18

Added

  • 상품 상세 리뷰 탭 구현
    • 별점 통계: 평균 별점 및 1~5점 분포 바 표시
    • 옵션 필터: 구매 옵션별 리뷰 필터링
    • 포토리뷰 필터: 이미지 있는 리뷰만 보기
    • 정렬: 최신순 / 별점 높은순 / 별점 낮은순
  • 리뷰 이미지 미리보기 모달 (슬라이더, 이전/다음 탐색)
  • 리뷰 이미지 최대 4개 그리드 표시, 초과 시 +N 오버레이
  • 상품 카드에 평균 별점 및 리뷰수 표시
  • 리뷰 관련 다국어 키 추가 (한국어/영어)

Fixed

  • 별점 분포 바 너비 계산 수정
  • 개별 리뷰 별점 아이콘 표시 수정

[0.3.1] - 2026-03-17

Fixed

  • 로그인 성공 시 "이미 로그인되어 있습니다" 중복 토스트 수정
  • 프로필 메뉴 주문내역/찜목록 navigate 경로 수정
  • 주문 배송지 변경 openModal 핸들러 포맷 수정 (params.modalId → target)
  • 마이페이지 배송지 삭제 버그 수정 — handler: "confirm" → setState + openModal 모달 패턴 전환
  • 마이페이지 배송지 기본배송지 체크 버그 수정 — editingAddress: null → { is_default: false } 초기화
  • 마이페이지 배송지명 [object Object] 표시 수정 — Form auto-binding name prop 제거
  • 마이페이지 배송지 카드 간격 미적용 수정 — iteration/space-y 요소 분리
  • 배송지 덮어쓰기 모달 truthy 체크 수정 (editingAddress?.id)

Added

  • 마이페이지 배송지 삭제 확인 모달 (스피너 처리 상태 포함)
  • 배송지 삭제 관련 다국어 키 추가 (delete_title)

Changed

  • 마이페이지 배송지 수정/삭제 아이콘 버튼 → 텍스트 버튼 변경
  • 마이페이지 배송지 기본배송지 라벨-체크박스 연동 (htmlFor)

[0.3.0] - 2026-03-07

Added

  • 마이페이지 배송지 관리 화면 (목록, 추가/수정/삭제 모달)
  • 체크아웃 배송지 저장 체크박스 및 배송지명 입력
  • 체크아웃 배송지 관리 모달 (신규 배송지 추가/선택)
  • 주문상세 배송지 변경 모달
  • 배송지명 중복 덮어쓰기 확인 모달
  • 마이페이지/체크아웃 배송지 관련 다국어 키 추가 (ko/en)

Changed

  • 체크아웃 배송비 표시 영역 배송지 변경 연동 개선
  • 체크아웃 주문요약 결제수단 바인딩 수정 (_computed.selectedPaymentMethod 사용)

Fixed

  • 체크아웃 무통장입금 결제수단이 'card'로 잘못 전송되던 문제 수정
  • 배송지 변경 시 배송비 미재계산 수정
  • 배송지 모달 폼 전송 실패 수정

[0.2.7] - 2026-03-16

Fixed

  • 상품 그리드 페이지네이션 수정 — ServerSidePagination 컴포넌트 전환
  • 검색 필터 바 카테고리 경로 수정

Changed

  • 라이선스 프로그램 명칭 정비

[0.2.6] - 2026-03-13

Added

  • 이미 신고한 게시글/댓글의 신고 버튼 비활성화 처리 추가

Changed

  • 카드형/갤러리형 게시글 목록 레이아웃 재설계 — UI 구조 및 표시 방식 개선
  • 카드형 게시판 좌우 여백 및 썸네일 이미지 모서리 디자인 개선
  • 블라인드 처리된 게시글 안내 메시지 통일

Fixed

  • 존재하지 않는 게시글 접근 시 404 페이지로 이동하지 않던 문제 수정

[0.2.5] - 2026-03-12

Added

  • 신고 모달 자동 블라인드 사유 다국어 키 추가 (ko/en)
  • manifest에 license 필드 및 LICENSE 파일 추가

Changed

  • 신고 모달 상세 사유 입력란 플레이스홀더 문구 수정

[0.2.4] - 2026-03-11

Changed

  • 게시판 레이아웃 10파일의 permissions → abilities, user_permissions → user_abilities 키 수정 — 백엔드 abilities 표준에 맞춤
  • 상품 Q&A 탭의 permissions?.posts_create → abilities?.can_write 키 수정
  • 마이페이지 배송지 삭제 버튼 조건을 !address.is_default → address.abilities?.can_delete === true 변경

[0.2.3] - 2026-03-10

Fixed

  • 댓글에서 답글 버튼이 게시판 설정과 무관하게 표시되지 않는 버그 수정
  • 댓글 더보기 메뉴(답글/수정/삭제)가 조건에 따라 올바르게 표시되지 않는 버그 수정

[0.2.2] - 2026-03-09

Added

  • 게시판 index/show/form 유형별 레이아웃 구조 개편 — 유형별 UI를 partials/board/types/유형/ 독립 partial로 분리하여, 새 유형 추가 시 기존 파일 수정 없이 새 파일 생성만으로 완결되도록 개선
  • 게시글 이전/다음글 네비게이션을 별도 partial로 분리

Changed

  • 갤러리형 게시글 목록 레이아웃의 permissions?.can_view 바인딩을 abilities?.can_view로 변경 (코어 표준화)

Fixed

  • 비밀글 수정폼에서 비밀번호 확인 후 게시글 내용이 표시되지 않던 문제 수정
  • 게시글 상세 답글 목록이 반복 렌더링되지 않던 표현식 오타 수정

[0.2.1] - 2026-03-06

Fixed

  • 상품 상세 쿠폰 배지 데이터 경로 수정 (productDownloadableCoupons.data → .data?.data)
  • 쿠폰 배지/확인 모달 API 필드 매핑 수정 (discount_type/discount_value → benefit_formatted, name → localized_name, id → coupon_id)
  • 다운로드 완료 쿠폰 비활성화 상태 추가 (is_downloaded 기반 disabled + 아이콘 전환)
  • 쿠폰 다운로드 후 상품 상세 쿠폰 목록 즉시 갱신 (refetchDataSource 추가)
  • 핸들러명 수정: refreshDataSource(미존재) → refetchDataSource

[0.2.0] - 2026-03-06

Added

  • 쿠폰 다운로드 모달 (_modal_coupon_download.json) — 3-상태 분기(로딩/빈상태/데이터), 페이지네이션, 다운로드 버튼
  • 쿠폰 다운로드 확인 모달 (_modal_coupon_download_confirm.json) — 상품 상세 개별 쿠폰 다운로드 확인
  • 로그인 필요 안내 모달 (_modal_login_required.json) — 비로그인 사용자 쿠폰 다운로드 시도 시
  • 상품 상세 쿠폰 배지 섹션 (_info_summary.json) — 다운로드 가능 쿠폰 뱃지 표시, 로그인/비로그인 분기
  • 체크아웃 할인 섹션에 쿠폰 다운로드 버튼 추가 (_checkout_discount.json)
  • checkout.json — 쿠폰 다운로드 모달 연동 (initLocal 상태 + modals 등록)
  • show.json — 쿠폰 데이터소스 + 모달 3종 등록 + init_actions 상태 초기화
  • 쿠폰 다운로드 다국어 키 21건 추가 (ko/en shop.json)

[0.1.5] - 2026-03-05

Changed

  • 신고 모달 내부 상태 구조 개선 — 모달에서 정상적으로 데이터 접근 가능하도록 수정
  • 신고 모달 취소 시 입력 내용 초기화 추가

Fixed

  • 신고 모달에서 사유 미선택 시 콘솔 오류가 발생하던 문제 수정
  • 게시글 상세 페이지 신고 폼 변수명 오타 수정

[0.1.4] - 2026-03-03

Changed

  • 게시글 목록 답글 depth 시각화 — style.marginLeft 동적 계산 (depth * 1rem, 최대 10rem, 데스크톱·모바일 동일 적용)
  • 사용자 답글 버튼 — 공지글이 아니고 최대 답글 깊이 미만인 게시글에만 표시되도록 조건 수정
  • 마이페이지 "내가 쓴 댓글" 탭 — Post 집계 기반 → /me/my-comments Comment 기반 페이지네이션 전환
  • 마이페이지 게시판 myComments data source auto_fetch: false 설정 (기본 탭 진입 시 불필요한 API 호출 방지)

[0.1.3] - 2026-03-02

Changed

  • Footer JSDoc 주석 저작권 연도 2025 → 2026 변경

[0.1.2] - 2026-02-27

Changed

  • 코어 페이지 기능을 sirsoft-page 모듈로 전환
  • 페이지 조회 API를 모듈 엔드포인트(/api/modules/sirsoft-page/pages/{slug})로 변경
  • 회원가입 레이아웃에서 페이지 버전 관련 바인딩 제거
  • 통합검색 페이지 탭을 모듈 API 기반으로 전환 (contents/policies → pages 통합)
  • sirsoft-page 모듈 의존성 버전 조건 수정 (>=0.1.2 → >=0.1.1)

Removed

  • 코어 페이지 API 참조 제거 (회원가입 약관/개인정보 data_source)
  • user_consents 관련 version 바인딩 제거

[0.1.1] - 2026-02-24

Changed

  • 버전 체계 조정 (정식 출시 전 0.x 체계로 변경)
  • 모듈 의존성 버전 조건 수정 (>=1.0.0 → >=0.1.1)

[0.1.0] - 2026-02-23

Added

  • 사용자 기본 템플릿 초기 구현
  • 템플릿 구조 (template.json, routes.json)
  • 기본 컴포넌트 세트 (Basic 30개, Composite 18개, Layout 4개)
  • 인증 화면 (로그인, 회원가입, 비밀번호 찾기/재설정)
  • 게시판 화면 (목록, 상세, 작성/수정, 인기글)
  • 쇼핑몰 화면 (상품 목록/상세, 장바구니, 주문/결제, 주문 완료)
  • 마이페이지 (프로필, 주소 관리, 주문 내역, 위시리스트, 알림)
  • 검색 화면 (통합 검색, 카테고리별 탭)
  • 정책 페이지 (이용약관, 개인정보처리방침, 환불정책, FAQ, 소개, 문의)
  • 사용자 프로필 공개 페이지
  • 에러 페이지 (403, 404, 500, 503)
  • 커스텀 핸들러 (장바구니, 통화 포맷, 상품 옵션, 테마 전환, 스토리지)
  • 다크 모드 지원
  • 반응형 레이아웃
  • 다국어 지원 (ko, en)
  • 다중 통화 지원