공개 이슈 https://github.com/gnuboard/g7/issues/22 — 본문에 삽입한 이미지가 카드/갤러리 목록 썸네일과 공유 미리보기(og:image)에 반영되지 않던 공백을 코어+3모듈+2템플릿에서 해소. - 코어 7.0.9: HtmlImageExtractor(내부 이미지 한정, origin 정규화 SSoT 재사용) + seo.og_image_default 사이트 기본 공유 이미지 설정 + SeoMetaResolver 폴백 체인 - board 1.1.0 / ecommerce 1.2.0 / page 1.1.0: content_thumbnail_url 캐시 컬럼, saving 추출(html 모드 한정·첨부 우선·비밀글 게이트 유지), filter_content_thumbnail 훅, 기존 데이터 백필 업그레이드 스텝 - ecommerce 카테고리 og:image 생산자 신설, page og:description 死키 정정 - sirsoft-basic 1.1.2 og 바인딩 정정, admin_basic 1.0.7 SEO 탭 업로더(+ja 팩 2종) - 검수 중 발견한 text 모드 오캐시 결함은 실패 테스트 선행 후 수정
92 KiB
Changelog
이 프로젝트의 모든 주요 변경사항을 기록합니다. 형식은 Keep a Changelog를 따르며, Semantic Versioning을 준수합니다.
[1.1.0] - 2026-08-22
Added
- 본문에 삽입한 이미지가 카드형·갤러리형 목록의 썸네일로 표시됩니다. 이미지 첨부파일이 있으면 종전대로 첨부가 우선하며, 첨부가 없을 때 본문의 첫 내부 이미지를 사용합니다. 외부 주소의 이미지는 사용하지 않습니다. 기존 게시물은 모듈 업데이트 시 자동 반영됩니다. (#22 @abc101 님께서 제보해주셨습니다.)
- 글 상세를 공유할 때의 미리보기 이미지(og:image)에도 같은 기준이 적용됩니다.
[1.0.5] - 2026-08-22
Security
- 비밀글 목록·상세 응답에 첨부 이미지의 미리보기 주소가 그대로 실려 나가던 문제를 수정했습니다. 이미지 자체는 이미 열람 권한이 없으면 제공되지 않았지만, 주소에 담긴 파일 식별값이 응답에 노출되어 있었습니다. 이제 열람 권한이 없으면 썸네일 주소가 비어서 전달되며, 비밀글이 아닌 글은 종전과 동일하게 표시됩니다. (KISA 측에서 제보해주셨습니다 — KVE-2026-1894)
[1.0.4] - 2026-08-19
Security
-
게시글·댓글 삭제와 게시글 수정 시 비회원 확인용 비밀번호/검증 토큰 입력에 형식 검증을 추가해 비정상 형태(배열 주입 등)의 요청을 차단합니다.
-
관리자 게시판 목록 조회의 정렬 기준과 페이지 크기를 허용된 값으로만 제한했습니다.
-
비밀글의 내용이 열람 권한 없이 새어 나가던 경로를 모두 막았습니다. 게시글 상세 화면은 비밀글 내용을 가렸지만, 상품 문의 목록·비밀글의 댓글 목록·비밀글의 첨부파일(다운로드/미리보기)은 게시글의 비밀 여부를 확인하지 않아 주소만 알면 원문·첨부를 볼 수 있었습니다. 이제 이 경로 전부에서 작성자 본인 또는 게시판 관리 권한(비밀글 열람)을 가진 요청에만 내용을 제공하고, 그 외에는 내용·제목·답변·첨부를 가립니다. 열람 권한자의 상세 화면에 표시되는 비밀글·삭제글 첨부의 이미지 썸네일은 한시적으로만 유효한 서명 주소로 전달되어, 보호를 유지한 채 종전처럼 정상 표시됩니다. (KISA 측에서 제보해주셨습니다 — KVE-2026-1914)
-
회원 프로필의 작성글 목록과 "내가 댓글 단 글" 활동 목록에서 다른 사람의 비밀글·블라인드 글 본문이 로그인 없이도 나가던 문제를 수정했습니다. 두 목록은 본문 앞부분을 함께 싣는데 그것을 가리는 설정이 실제로는 한 번도 켜지지 않았습니다. 이제 본인이 볼 때만 본문이 보이고, 다른 사람이 볼 때는 비워집니다. 글의 제목과 목록에서의 표시(비밀글·블라인드 배지)는 게시판 목록과 동일하게 그대로 유지됩니다. (KVE-2026-1914)
-
첨부파일 삭제·순서 변경에 담당 범위 제한을 적용했습니다. 회원 화면은 작성자 본인만 삭제하도록 막고 있었지만 관리 화면에는 같은 확인이 없었고, 순서 변경은 양쪽 모두 확인이 없었습니다. 순서는 목록 전체에 대한 하나의 값이라 범위 밖 대상이 하나라도 섞이면 요청 전체를 거부합니다. (KVE-2026-1919)
-
게시판을 찾을 수 없을 때 비밀글 보호가 통과되던 문제를 수정했습니다. 첨부파일 서빙과 댓글 목록은 부모 글을 찾지 못하면 검사를 건너뛰고 진행해, 게이트가 있어야 할 자리가 비어 있었습니다. 이제 부모 글을 확인할 수 없으면 차단합니다.
-
로그인 없이 열리는 목록(최근 글·인기 글)과 관리 대시보드의 요약 목록에서, 열람 권한이 없는 게시판의 글과 블라인드·비활성 게시판의 글이 노출되던 문제를 막았습니다. 이제 이 목록들은 블라인드·비활성 게시판 글을 제외하고, 열람 권한이 있는 게시판의 글만 각 요청자에게 보여 줍니다. 인기 게시판 목록과 통합 검색의 게시판 필터에서도 열람 권한이 없는 비공개 게시판이 더 이상 나타나지 않습니다. 비밀글은 기존과 동일하게 목록에 제목과 🔒 표시가 유지되며 본문만 보호됩니다. (sir.kr 커뮤니티의 Xbuilder 님께서 제보해주셨습니다.)
-
전체 게시판 목록(게시판 디렉토리)과 그 안의 게시판별 최신 글 목록에도 같은 열람 권한 기준을 적용했습니다. 위 목록들에는 제한이 적용되었지만 이 경로에는 빠져 있어, 첫 화면과 전체 게시판 화면에서 열람 권한이 없는 게시판의 이름과 글 제목이 로그인 없이도 보였습니다. 열람 권한이 있는 방문자에게는 종전과 동일하게 표시됩니다.
-
게시판 관리 대시보드(개요·글 추이·최근 글·미처리 신고)에 별도의 열람 권한을 요구하도록 했습니다. 이전에는 관리자이기만 하면 게시판 권한이 전혀 없어도 이 화면의 정보를 볼 수 있었습니다. 미처리 신고 집계는 비활성 게시판을 제외합니다. (sir.kr 커뮤니티의 Xbuilder 님께서 제보해주셨습니다.)
-
통합 검색 결과의 제목·본문 미리보기에서 검색어 강조 처리가 원문을 그대로 실어 보내던 것을, 안전하게 변환한 뒤 강조하도록 바로잡았습니다. (sir.kr 커뮤니티의 Xbuilder 님께서 제보해주셨습니다.)
-
댓글 비밀번호 확인 후 받는 임시 토큰이 실제 검증에 연결되어 있지 않던 문제를 수정했습니다. 이제 이 토큰으로 댓글을 수정·삭제할 수 있으며(비밀번호 재입력 대체), 토큰은 한 번만 사용되고 만료됩니다. (sir.kr 커뮤니티의 Xbuilder 님께서 제보해주셨습니다.)
Added
- 답글이 달린 글의 삭제 방식을 게시판마다 선택할 수 있습니다. "함께 삭제"(기본값)는 글을 삭제하면 달려 있던 답글도 함께 휴지통으로 이동하고, 글을 복원하면 그때 함께 지워진 답글만 같이 복원됩니다. "삭제 차단"은 답글이 남아 있는 동안 원글 삭제를 막고 사유를 안내합니다. 사용자가 직접 지운 답글은 원글을 복원해도 되살아나지 않습니다.
- 글쓰기 중 파일만 올리고 저장하지 않은 채 나간 임시 첨부를 매일 자동 정리합니다. 종전에는 이런 파일이 서버에 계속 쌓여도 회수할 방법이 없었습니다.
- 삭제한 첨부의 파일을 보존기간이 지난 뒤 완전히 파기하는 기능이 추가되었습니다. 게시판 환경설정 > 기본 설정에서 켤 수 있으며(기본 꺼짐), 보존기간은 휴지통 복원 가능 기간과 같게 유지하시면 됩니다.
Changed
- 글 저장·수정 시 비밀글 여부 값을 문자열(
"true"/"false")로 보내는 클라이언트도 수용하도록 해석을 관대화했습니다. 해석할 수 없는 값은 종전과 동일하게 거부됩니다. - 첨부 미리보기·작성자 아바타 주소 조립을 코어와 공유하는 단일 지점으로 정리했습니다. 표시되는 주소와 동작은 종전과 동일합니다.
- 코어 최소 요구 버전을 7.0.7 로 상향했습니다.
Fixed
- 통합검색에서 게시글 검색이 실패하면 "검색 결과 없음" 이 아니라 오류 안내로 구분해 표시되도록 실패 정보를 응답에 싣습니다. 실패 원인은 서버 기록에 상세히 남습니다. (#103 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 샘플 게시글 생성 도구가 데이터베이스 접두어를 기본값이 아닌 값으로 설치한 사이트에서 오류가 나던 문제를 수정했습니다. (#101 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 관리자 게시글 작성 화면의 안내 아이콘이 의도한 크기와 다르게 보이던 문제를 수정했습니다.
- 관리자 게시판 설정을 저장해도 SEO 미리 생성 캐시가 갱신되지 않아, 검색엔진에 예전 정보가 계속 노출되던 문제를 수정했습니다. 환경설정 기본값 일괄 적용에도 같은 처리가 적용됩니다.
- 일부 설정 저장 경로가 다른 저장 경로와 다른 처리를 거쳐, 저장 직후 조회가 저장 전 값을 돌려주거나 값의 형식이 정리되지 않은 채 남던 문제를 수정했습니다.
- 게시판 유형 삭제가 실패했을 때 내부 오류 원문이 그대로 표시되던 문제를 수정했습니다. 이제 사용 중인 유형·기본 유형이라 삭제할 수 없는 경우에는 그 사유가 안내되고, 그 밖의 오류는 서버 오류로 구분됩니다.
- 첨부 개수 상한 초과·대댓글 깊이 초과·댓글을 달 수 없는 글·메뉴 중복 안내도 같은 방식으로 정리했습니다. 안내 문구를 사용자의 언어 설정으로 만드는 시점이 응답을 만드는 시점과 어긋나 있던 것을 맞췄습니다. 표시되는 문구와 상태는 종전과 동일합니다.
- 신고 반려 누적 제한 안내 문구를 실제 동작에 맞게 정정했습니다. "설정 건수를 초과하면 차단"으로 적혀 있었지만 실제로는 설정 건수에 도달하는 순간부터 차단됩니다 — 5건으로 설정하면 5번째 반려부터 신고가 막힙니다.
- 관리자가 게시판 설정을 저장해도 백그라운드 작업에는 이전 설정이 계속 적용되던 문제를 수정했습니다. (#109 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 신고 현황 목록에서 항목을 선택한 뒤 검색하거나 페이지를 넘기면, 화면에서 사라진 항목이 선택된 채로 남아 일괄 처리 대상에 포함되던 문제를 수정했습니다. 이제 일괄 처리 대상은 언제나 화면에 보이면서 체크된 항목뿐입니다.
- 댓글 목록을 불러올 때 댓글마다 원글을 반복 조회하던 비효율을 제거해 응답을 더 빠르게 했습니다. 댓글이 많은 글일수록 개선 폭이 큽니다.
- 답글이 달린 글을 삭제해도 답글이 지워지지 않아, 목록에는 보이지 않으면서 주소로는 열리는 상태로 남던 문제를 수정했습니다. (#107 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 이커머스 문의 연동: 이미 답변이 있는 문의 글에는 연동 경로로도 답변 글이 중복 생성되지 않도록 방어를 추가했습니다. (#106 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 게시판을 삭제할 때 다른 기능(상품 문의 연동 등)이 그 게시판의 글과 연결해 둔 데이터를 함께 정리할 수 있도록, 삭제되는 글 목록을 연동 기능에 알려줍니다.
- 신고 목록의 동작하지 않는 정렬 파라미터를 정리했습니다.
- 관리자 화면(게시글 작성·환경설정 저장·기본값 일괄 적용·메일/알림 템플릿·SEO/스팸 캐시 정리·본인인증 정책)에서 저장·실행이 실패했을 때 실패 사유 대신 일반 안내 문구만 표시되던 문제를 수정했습니다. 이제 서버가 알려준 사유가 그대로 안내됩니다.
[1.0.3] - 2026-08-10
Security
- 게시판에 설정한 대댓글 최대 깊이가 모든 댓글 등록 경로에서 적용되도록 수정했습니다. 이전에는 글쓰기 화면을 거치는 요청에서만 깊이를 확인해, 연동 기능이 댓글을 직접 등록하면 설정한 깊이를 넘겨 달릴 수 있었습니다. 깊이를 넘긴 답글은 다른 위치로 옮겨 붙이지 않고 사유와 함께 거절합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시판에 설정한 첨부파일 최대 개수가 모든 첨부 경로에서 적용되도록 수정했습니다. 이전에는 글쓰기 화면에서 파일을 직접 첨부할 때만 개수를 확인해, 파일을 먼저 올려 두고 글을 저장하는 방식으로는 상한을 넘겨 첨부할 수 있었습니다. 이제 직접 첨부·미리 올린 파일 연결·이미 첨부된 파일까지 합산해 판정합니다. 이미 상한을 넘겨 등록된 기존 첨부는 그대로 두고 신규 등록만 차단합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
Added
- 사이트맵에 담을 게시판·게시글 수의 안전 상한을 지원합니다. 상한을 설정하면 게시판 목록·게시판·게시글 어느 항목이든 그 수를 넘지 않으며, 상한에 걸려 일부가 빠진 경우 기록으로 남습니다.
- 게시글·게시판을 공개/비공개로 바꾸거나 삭제하면 사이트맵에 해당 항목만 자동으로 반영됩니다. 전체를 다시 만들지 않고 바뀐 부분만 갱신하므로 게시글이 많은 사이트에서도 빠르게 최신 상태가 유지됩니다.
Changed
- 통합 검색의 게시글 결과를 최신순·오래된순·조회순으로 볼 때 이어보기 방식으로 뒤쪽 페이지를 이동할 수 있습니다. 관련도순은 종전의 페이지 번호 방식을 유지합니다.
- 플러그인으로 다른 검색엔진을 연결하면 게시글·신고 검색에도 그 엔진이 적용됩니다. 이전에는 연결한 엔진과 무관하게 기본 방식으로만 검색됐습니다.
- 게시글을 열 때 같은 글과 같은 게시판을 여러 번 다시 읽던 것을 정리했습니다. 글은 한 번만, 게시판도 한 번만 읽습니다. 화면에 보이는 내용은 동일하며 글이 열리는 속도가 빨라집니다. 조회수는 열람 권한을 확인한 뒤에만 올라갑니다.
- 사이트맵을 만들 때 게시판과 게시글을 한 번에 모두 메모리에 올리지 않고 나눠서 읽도록 바꿨습니다. 게시글이 많은 사이트에서 사이트맵 생성 중 메모리가 부족해 실패하던 문제가 줄어듭니다.
- 게시글 목록을 뒤쪽 페이지에서도 빠르게 열 수 있도록 조회 방식을 바꿨습니다. 예전에는 페이지가 뒤로 갈수록 건너뛰는 게시글의 본문 앞부분까지 함께 읽어 느려졌지만, 이제 현재 페이지의 게시글만 본문 미리보기를 읽습니다. 공지 노출·답글 표시·다음 페이지 버튼은 이전과 동일하게 동작합니다. (#74 @jiwonpapa 님께서 제보해주셨습니다.)
- 신고 관리 목록도 같은 방식으로 개선했습니다. 신고 건수·대상 글 상태처럼 목록에 함께 표시되는 정보를 예전에는 건너뛰는 신고까지 모두 계산했지만, 이제 현재 페이지의 신고에 대해서만 계산합니다. 신고가 많이 쌓인 사이트에서 목록 페이지 이동이 빨라집니다. (#74 @jiwonpapa 님께서 제보해주셨습니다.)
- 마이페이지의 「내가 쓴 댓글」·「내가 댓글 단 글」 목록도 같은 방식으로 개선했습니다. 각 글의 최근 댓글을 예전에는 건너뛰는 글까지 모두 찾아봤지만, 이제 현재 페이지의 글에 대해서만 찾습니다. 댓글 활동이 많은 회원의 목록 페이지 이동이 빨라집니다. (#74 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시글 목록을 조회순으로 볼 때도 뒤쪽 페이지가 빠르게 열리도록 색인을 정비했습니다. 게시판 설정의 기본 정렬을 조회순으로 두었거나 목록에서 조회순으로 바꿔 보는 경우가 해당됩니다. 기존 사이트도 업데이트 시 자동으로 반영되며, 게시글이 아주 많은 경우 이 과정에 수 분이 걸리고 그동안 글쓰기가 잠시 대기할 수 있습니다. (#74 @jiwonpapa 님께서 제보해주셨습니다.)
- 목록 첫 페이지의 공지를 개수 제한 없이 모두 읽던 것에 안전 상한을 두었습니다. 공지는 관리자가 등록하는 글이라 보통 문제가 되지 않지만, 어떤 이유로든 공지가 많이 쌓인 게시판에서 목록을 여는 것만으로 부담이 커지던 여지를 없앴습니다. 상한에 걸리면 최근 공지가 우선 표시됩니다. (#74 @jiwonpapa 님께서 제보해주셨습니다.)
- 답변글 최대 깊이의 안내 상한 표기를 실제 설정 가능 범위(1~10)에 맞게 정정했습니다. 실제로는 10까지 설정할 수 있는데 일부 안내에만 5까지로 적혀 있었습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시글이 많은 게시판에서 목록 정렬이 더 빨라지도록 색인을 정비했습니다. 신고 관리 목록에도 같은 정비를 적용했습니다. 같은 시각에 등록된 게시글이 많은 구간에서 순서를 정하느라 생기던 추가 작업이 사라집니다. 기존 사이트도 업데이트 시 자동으로 반영되며, 게시글이 아주 많은 경우 이 과정에 수 분이 걸리고 그동안 글쓰기가 잠시 대기할 수 있습니다.
- 관리자 게시판 목록이 게시판마다 매니저·스텝 역할과 그 역할에 속한 회원 명단(이름·이메일)을 함께 내려주지 않습니다. 목록 화면이 쓰지 않는 값이라 게시판 수만큼 늘어나던 조회와 전송량이 사라집니다. 역할 지정은 종전대로 게시판 상세·설정 화면에서 하며, 목록에 보이는 항목은 이전과 동일합니다. (#76 @jordy-bitree 님께서 제보해주셨습니다.)
- 한 글의 댓글이 아주 많아 목록이 일정 수에서 끊긴 경우, 끊겼다는 사실과 전체 건수를 함께 알려 줍니다. 예전에는 조용히 잘려 "댓글이 그만큼뿐" 으로 보였습니다.
- 댓글이 아주 많은 글에서도 뒤쪽 댓글을 볼 수 있도록 댓글 목록을 나눠 받을 수 있게 했습니다. 페이지 단위는 원댓글이며, 그 원댓글에 달린 답글은 함께 따라오므로 답글이 부모와 떨어지지 않습니다. 기존처럼 한 번에 받는 방식도 그대로 동작합니다.
- 게시글 검색 탭의 배지 숫자도 세지 못한 건수를 정확한 것처럼 표시하지 않습니다. 배지를 표시하지 않는 화면에서는 그 숫자를 세는 작업 자체를 건너뛸 수 있습니다.
- 게시글 목록의 총 건수도 일정 규모까지만 정확히 세고 그보다 많으면 "N건 이상" 으로 표시합니다. 페이지 이동은 끝까지 열려 있습니다.
- 신고 관리 목록의 총 건수에도 같은 방식을 적용했습니다.
- 개선된 사이트맵 생성 기능을 사용하기 위해 이 모듈은 이제 코어 7.0.6 이상이 필요합니다.
- 게시판 검색이 조건에 맞는 글을 두 번 조회하던 것을 한 번으로 합쳤습니다. 글이 많은 게시판일수록 검색이 빨라집니다.
- 검색 결과가 아주 많으면 총 건수를 "N건 이상" 으로 표시하고, 다음 페이지 이동은 끝까지 열어 둡니다. 마지막 페이지로 바로 뛰는 버튼만 이때 감춰집니다.
- 관리자 게시판 목록이 삭제글을 포함해 열릴 때마다 전체 건수를 다시 세던 것을 저장해 두고 재사용하도록 바꿨습니다.
- 답변글이 아주 많은 글을 열 때 답변 전체를 한꺼번에 읽던 것에 상한을 두고, 답변을 트리로 묶는 처리도 개선했습니다.
- 한 글의 댓글을 무제한으로 읽던 것에 상한을 두고, 같은 댓글을 두 번 가져오던 부분을 없앴습니다.
- 게시판 환경설정의 "기존 게시판에 일괄 적용" 화면을 정리했습니다. 대상 게시판(전체/선택)을 카드 형태로 눈에 띄게 표시하고, "선택한 게시판"을 고르면 검색 영역 위에 안내 문구가 함께 표시됩니다. 적용할 항목이나 대상 게시판을 고르지 않고 일괄 적용을 누르면 화면에 계속 남는 안내문 대신 토스트로 즉시 알려줍니다.
Fixed
- 게시판 알림 설정 화면에서 모든 알림의 제목·수신자·활성 여부가 비어 보이고 「이 채널에 대한 템플릿이 없습니다」로만 표시되던 문제를 수정했습니다. 편집 창을 열어도 내용이 채워지지 않았습니다. 채널을 전환하거나 새로고침해도 마찬가지였습니다. (#76 @jordy-bitree 님께서 제보해주셨습니다.)
- 관리자 게시글 작성·수정 화면의 첨부 영역에 첨부 가능한 개수와 파일당 용량 안내가 표시됩니다. 안내는 그 게시판에 설정된 값을 그대로 보여 주므로, 게시판마다 다른 제한이 화면에 정확히 나타납니다. 이전에는 안내가 아예 없어 저장을 시도한 뒤에야 제한을 알 수 있었습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시판 설정의 '새 글 표시 시간'이 저장 직후에는 숫자가 아닌 형태로 다뤄져, 조회 시점에 따라 값의 형태가 달라지던 문제를 수정했습니다. 새 글 표시 여부 판정에 쓰이는 값이므로 항상 숫자로 처리합니다.
- 게시글이 아주 많은 게시판에서 목록의 글 번호가 0 이나 음수로 표시되던 문제를 수정했습니다. 총 건수를 끝까지 세지 못하는 경우에는 번호를 지어내지 않고 「-」로 표시합니다.
- 통합 검색 결과에서 작성자 자리에 번역되지 않은 내부 문구가 그대로 보이던 문제를 수정했습니다. 이제 「비회원」으로 표시됩니다.
- 통합 검색을 최신순으로 볼 때 첫 페이지부터 이어보기 방식이 적용되도록 수정했습니다. 이전에는 뒤쪽 페이지로 갈수록 느려지는 방식이 계속 쓰였습니다. 주소로 특정 페이지를 열어 둔 링크는 종전대로 그 페이지를 보여 줍니다.
- 게시판 목록에서 총 건수를 끝까지 세지 못했을 때 "1페이지뿐" 으로 표시되어 뒤쪽 페이지를 볼 수 없던 문제를 수정했습니다.
- 마이페이지의 내가 쓴 글·내가 쓴 댓글 목록에서 총 건수를 끝까지 세지 못했을 때 페이지 이동 막대가 사라지던 문제를 수정했습니다.
- 글을 쓰면서 파일을 함께 첨부하면 글은 저장되는데 첨부파일만 사라지던 문제를 수정했습니다. 첨부 개수·용량·형식 검사와 권한 확인은 모두 통과한 뒤 저장 단계에서만 빠져, 등록된 글에 첨부가 하나도 남지 않았습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시판 신고 정책의 자동 숨김 기준 횟수를 0(자동 숨김 사용 안 함)으로 입력할 수 없던 문제를 수정했습니다. 서버는 0을 "사용 안 함"으로 처리하는데 화면에서만 1 이상을 요구해, 0을 입력하면 저장은 되면서도 입력칸이 계속 오류 상태로 남았습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 설정 화면의 선택 항목(라디오 버튼)을 키보드 방향키로 고를 때 선택이 저장되지 않던 문제를 수정했습니다. 마우스 클릭은 정상 동작했으나, 키보드만 사용하는 경우 화면 표시와 실제 저장 값이 어긋날 수 있었습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 글을 수정하면서 미리 올려 둔 파일을 첨부하면 저장은 되는데 첨부만 연결되지 않던 문제를 수정했습니다. 관리자 화면에서는 정상 연결되어 같은 요청이 화면에 따라 다르게 동작했습니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 개별 게시판을 수정할 때 목록 표시 개수·제목/내용 길이·댓글 깊이·첨부 개수 등 숫자 항목의 허용 범위가 화면에 표시되지 않던 문제를 수정했습니다. 게시판 환경설정(기본값) 화면에는 범위가 표시되는데 개별 게시판 화면에는 없어, 범위를 벗어난 값을 넣어도 저장을 눌러 봐야 알 수 있었습니다. 이제 두 화면이 같은 범위를 안내합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
- 데이터베이스에서 일부 컬럼의 설명이 비어 있던 문제를 바로잡았습니다. 회원·작성자 등 다른 표를 가리키는 컬럼이 대상이며, 업그레이드하면 이미 운영 중인 데이터베이스에도 설명이 채워집니다(직접 적어 넣은 설명은 그대로 둡니다).
- 관리자 게시글 목록에서 글을 열어 이전글·다음글로 넘어가거나 수정 후 돌아올 때 보고 있던 페이지·검색어·분류가 사라지던 문제를 수정했습니다. 목록 ↔ 상세 ↔ 이전/다음 글 ↔ 작성·수정 폼 어디로 오가든 목록 상태가 유지되며, 신고 관리와 게시판 목록도 동일하게 개선됐습니다. 새로고침 버튼도 걸어 둔 검색·필터를 지운 채 새로 부르지 않고 보고 있던 목록을 그대로 다시 부릅니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.)
- 관리자 게시글 목록에서 뒤쪽 페이지를 보던 중 검색하거나 게시 상태를 바꾸면 그 페이지 번호가 그대로 유지돼 결과가 없는 빈 화면이 열리던 문제를 수정했습니다. 검색과 상태 변경은 1페이지부터 보여주며, 사용자가 고른 표시 개수와 정렬은 그대로 유지됩니다. 검색창에서 엔터를 치는 경우와 검색 버튼을 누르는 경우가 서로 다르게 동작하던 것도 함께 맞췄습니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.)
- 신고 상세의 신고자 목록에서 한 페이지에 보여줄 개수를 0 이나 음수로 요청하면 오류가 나던 문제를 수정했습니다.
- 게시판 관리 목록과 신고 처리 로그에서 같은 시각에 등록된 항목이 여러 건일 때, 페이지를 넘기면 같은 항목이 두 번 보이고 다른 항목은 아예 보이지 않던 문제를 수정했습니다.
- 첨부파일을 사용하지 않는 게시판을 아무것도 바꾸지 않고 저장해도 "허용 파일 확장자를 최소 1개 이상 입력하세요" 오류가 나며 저장이 막히던 문제를 수정했습니다. 첨부를 쓰지 않는 게시판에서는 허용 확장자를 비워 두어도 정상적으로 저장됩니다. 게시판 환경설정의 기본값도 동일하게 동작합니다. (#78 @glitter-gim 님께서 제보해주셨습니다.)
- 마이페이지 「내가 댓글 단 글」에서 검색어를 입력하면 목록이 열리지 않고 오류가 나던 문제를 수정했습니다. 이제 댓글 내용으로 정상 검색됩니다.
- 새 글 표시 기간을 "0시간"(새 글 표시 안 함)으로 저장할 수 없던 문제를 수정했습니다. 0은 원래 새 글 배지를 끄는 값으로 동작하도록 되어 있었으나 저장 단계에서 막혀 있었습니다.
- 게시판 환경설정에서 제목·댓글 최소 길이를 0(제한 없음)으로 저장할 수 없던 문제를 수정했습니다. 내용 최소 길이는 0이 허용되어 같은 화면에서 항목마다 동작이 달랐습니다.
- 댓글 계층 정리 시 서로가 서로의 부모로 얽혀 최상위 댓글에서 닿을 수 없는 댓글이 아무 기록 없이 넘어가던 문제를 수정했습니다. 이런 댓글은 내용과 위치를 그대로 보존하되, 정리되지 않았다는 사실이 업데이트 기록에 남아 확인할 수 있습니다.
- 마이페이지 활동 목록에서 한 페이지에 표시할 개수를 0이나 음수로 요청하면 서버 오류가 나던 문제를 수정했습니다. 이제 허용 범위(1~100)로 자동 조정되며, 지나치게 큰 값도 상한으로 잘립니다.
- 게시판 신고현황 목록에서 뒤쪽 페이지를 보던 중 정렬을 바꾸면 이전 페이지 번호에 그대로 머물러 엉뚱한 구간이 보이던 문제를 수정했습니다. 이제 정렬을 바꾸면 첫 페이지부터 보여줍니다.
- 허용 확장자를 지정하지 않은 게시판에서 어떤 파일도 첨부할 수 없던 문제를 수정했습니다. 파일 선택 단계에서 막히던 것과 서버에서 거부되던 것을 함께 고쳐, 확장자를 지정하지 않은 게시판은 기본 확장자 목록을 사용합니다. 첨부 안내에 확장자가 비어 표시되던 것도 함께 해소됩니다. 확장자를 지정한 게시판은 지금처럼 목록에 없는 파일을 계속 거부합니다.
- 게시판 알림 설정에서 저장에 실패해도 아무 안내 없이 넘어가던 화면을 수정했습니다. 실패하면 그 이유가 화면에 표시됩니다.
- 신고 상세의 신고자 목록에서 한 페이지에 표시할 개수에 상한이 없어 신고자 전체를 한 번에 불러올 수 있던 문제를 수정했습니다. 이제 다른 목록과 같은 상한(100)이 적용됩니다.
- 게시판 유형 상세를 조회한 기록이 활동 로그에 내부 식별자로 표시되던 문제를 수정했습니다.
- 일부 안내 문구가 실제 문장 대신 내부 식별자(
sirsoft-board::messages....같은 문자열)로 표시되던 문제를 수정했습니다. 첨부파일이 있는 게시판을 찾지 못했을 때, 댓글 목록을 불러오지 못했을 때, 비회원 댓글의 비밀번호를 확인할 때, 삭제·블라인드된 글에 댓글을 달려 할 때, 권한이 없어 거절될 때가 해당됩니다. - 비밀글을 쓸 수 없는 게시판에서 비밀글로 저장하려 할 때, 답글 대상 게시판을 찾지 못했을 때, 신고 상태를 바꿀 수 없는 상태로 변경하려 할 때 나오던 안내가 정상 문장으로 표시됩니다.
- 댓글 수정, 신고 접수·처리, 블라인드·복원, 게시판 설정 일괄 적용 화면에서 오류 안내에 항목 이름이 영문 필드명으로 나오던 것을 한글 항목명으로 바로잡았습니다.
- 게시판 이름을 바꿨을 때 활동 로그의 변경 항목 이름이 비어 보이던 문제를 수정했습니다.
- 게시판 환경설정 조회·저장·일괄 적용과 관리자 대시보드 조회 화면에서 결과 안내가 실제 문장 대신 내부 식별자로 표시되던 문제를 수정했습니다.
- 환경설정을 여러 게시판에 일괄 적용할 때, 개별 저장 화면과 달리 글자 수·표시 시간 등의 값 범위 제한이 적용되지 않던 문제를 수정했습니다. 이제 일괄 적용도 개별 저장과 동일한 범위를 벗어난 값을 거부합니다.
- 다른 게시글의 주소로 댓글을 수정하거나 삭제할 수 있던 문제를 수정했습니다. 이제 댓글은 자기가 달린 게시글의 주소로만 수정·삭제됩니다. 관리자 화면의 댓글 수정·삭제·블라인드·복원도 동일하게 바로잡았습니다. (#80 @jiwonpapa 님께서 제보해주셨습니다.)
- 댓글 수정 시 본문에 함께 보낸 값으로 댓글이 다른 게시글로 옮겨지거나 작성자·작성 시각 정보가 바뀔 수 있던 문제를 수정했습니다. 수정으로 반영되는 항목은 내용·비밀글 여부·상태뿐입니다.
- 다른 게시글의 댓글을 답글의 부모로 지정할 수 있던 문제를 수정했습니다. 이렇게 만들어진 답글은 어느 게시글 목록에도 나타나지 않았습니다. (#80 @jiwonpapa 님께서 제보해주셨습니다.)
- 대댓글 깊이가 게시판 설정값을 넘어 계속 달리던 문제를 수정했습니다. 예전에는 6단계부터 들여쓰기가 더 들어가지 않고 설정한 최대 깊이도 지켜지지 않았습니다. 이제 설정한 깊이까지만 답글을 달 수 있고 화면의 단계 표시도 정확해집니다. (#80 @jiwonpapa 님께서 제보해주셨습니다.)
- 기존에 쌓인 댓글 중 깊이가 어긋났거나 다른 게시글의 댓글을 부모로 가진 것을 업데이트 시 자동으로 정리합니다. 잘못 연결된 댓글은 삭제하지 않고 최상위 댓글로 옮기며, 내용은 그대로 보존됩니다.
- 연동 기능이 블라인드·삭제된 글에 댓글을 등록하려 할 때 "댓글 등록에 실패했습니다" 라는 서버 오류만 표시되던 문제를 수정했습니다. 이제 글쓰기 화면에서와 똑같이 왜 등록할 수 없는지 사유가 표시됩니다.
- 관리자 목록에서 검색·필터·정렬을 바꿀 때 표가 다시 그려지는 동안 로딩 표시가 나오지 않던 문제를 수정했습니다. 응답이 늦으면 아무 반응이 없는 것처럼 보여 같은 조작을 반복하게 되던 상황이 사라집니다.
- 관리자 화면 일부 아이콘이 의도한 크기보다 크거나 작게 보이던 문제를 수정했습니다.
- 관리자 화면 일부 버튼·배지가 다크 모드에서 밝은 색 그대로 표시되던 문제를 수정했습니다.
- 게시판 모듈을 제거할 때 게시판별로 자동 생성된 관리자·승인 단계 역할이 1,000개를 넘으면 일부가 삭제되지 않고 남던 문제를 수정했습니다. 남은 역할은 사용하지 않는 게시판의 것이면서도 회원 권한 목록에 계속 노출됐습니다. 이제 개수와 무관하게 전부 정리됩니다. (#84 @glitter-gim 님께서 제보해주셨습니다.)
- 검색어에
+-*"<>같은 기호를 넣으면 게시판 검색이 오류 화면을 띄우던 문제를 수정했습니다. 이제 어떤 문자를 입력해도 검색이 정상 동작합니다. - 게시글 상세를 열 때 같은 글과 게시판을 여러 번 다시 조회하던 것을 정리했습니다.
- 관리자 게시판 목록·신고 관리 목록과 신고 상세의 신고자 목록에서 기록이 아주 많아 총 건수를 끝까지 세지 못하면 페이지 이동이 막히던 문제를 수정했습니다. 마지막 페이지로 바로 뛰는 버튼만 감춰지고 이전·다음 이동은 그대로 동작합니다.
[1.0.2] - 2026-07-14
Fixed
- 게시판 설정 화면의 상단 고정 영역이 좌우 여백과 어긋나 내용이 가로로 밀려 보일 수 있던 문제를 수정했습니다.
[1.0.1] - 2026-07-08
Added
- 관리자 게시물 조회 화면(목록·상세)에 "유저 화면 보기" 버튼을 추가했습니다. 클릭하면 해당 게시판/게시글의 실제 사용자 화면이 새 탭으로 열립니다.
- 사용자 게시판 화면(목록·상세)에 관리자 진입 버튼을 추가했습니다. 게시판 관리 권한이 있는 사용자에게만 "관리자 게시물 조회"·"게시판 관리" 버튼이 보이며, 클릭하면 관리자 화면이 새 탭으로 열립니다.
Changed
- 관리자 게시판 설정 화면의 주소가 게시판 번호 대신 게시판 아이디(슬러그) 기준으로 바뀌었습니다 (예: /admin/boards/free/edit). 새 게시판을 만든 직후 이동하는 편집 화면, 목록의 활성화 토글·삭제, 목록에서 여는 수정 화면, 상품 문의 설정의 "관리자 메뉴에 추가"까지 모두 게시판 아이디 기준으로 통일되었습니다. 기존 번호 기반 주소도 계속 동작합니다.
[1.0.0] - 2026-07-01
Added
- 관리자 대시보드의 게시판 "오늘 새 글/새 댓글" 배지를 클릭하면 게시판 관리 화면으로 바로 이동합니다.
- 게시판 생성/수정 화면에 "관리자 메뉴에 표시" 토글을 추가했습니다. 켜고 저장하면 좌측 관리자 메뉴의 "게시판 관리" 아래에 해당 게시판이 표시되고, 끄고 저장하면 메뉴에서 제거됩니다. 이전에는 게시판을 만든 뒤 수정 화면에서만 메뉴에 추가할 수 있었습니다. 게시판을 복사할 때도 원본의 관리자 메뉴 표시 상태가 복사본에 그대로 이어집니다.
레이아웃 편집기
- 게시판 화면을 샘플 데이터로 미리보고 편집할 수 있습니다 — 게시글 목록·상세·댓글, 게시판 관리/신고 화면이 샘플 데이터로 표시되며, 일반 글/비밀글 잠금, 글 있음/없음 같은 화면 상태도 미리보기로 전환해 볼 수 있습니다.
- 화면 상태 미리보기를 더 많은 게시판 화면으로 넓혔습니다 — 게시판 목록의 비어 있음, 글 작성/수정, 관리자의 게시판·게시글 폼(신규/수정/답글), 그리고 게시판 설정의 모든 탭(일반·기본값·신고 정책·스팸 보안·SEO·알림 정의·본인인증 정책)을 전환해 미리볼 수 있습니다.
- 데이터 소스 목록에서 이 확장이 제공하는 데이터 소스가 친화 명칭으로 표시되고, 어느 확장이 제공했는지 출처가 함께 표시됩니다.
- [검색엔진] 탭에서 게시글의 공유 이미지·제목·구조화 데이터 등 이 확장이 제공하는 SEO 자동값이 "게시글 제목"·"대표 이미지" 같은 데이터 연결 칩(출처 표시 포함)으로 보이고, 다른 데이터로 바꿔 지정할 수 있습니다.
관리자 대시보드 게시판 영역
- 관리자 대시보드 상단에 게시판 / 신고 빠른 진입 버튼을 추가 — 게시판 모듈이 활성화된 환경에서만 노출되며, 비활성화 시 자동으로 사라짐
- 관리자 대시보드 중앙에 게시판 통계 카드 영역 추가 — 오늘의 새 글·새 댓글 배지, 7일 게시글·댓글 추세 그래프(직전 7일 대비 증감율 포함), 최신 게시글 5건, 미처리 신고 5건 카드로 구성. 라이트/다크 모드 양쪽에서 텍스트·구분선·배지가 일관되게 보이도록 색상 페어 적용
- 게시판 모듈을 비활성화하면 위 버튼·카드 영역이 모두 사라지고, 재활성화하면 새로고침으로 자동 복귀
- 매 시간 자동 실행되는 게시판 집계 스케줄러 추가 — 게시글·댓글 통계를 일별로 누적하여 대시보드 카드와 추세 그래프의 데이터 출처가 됨. 수동 실행도 가능
Changed
- 코어 최소 요구 버전을 7.0.0-beta.8 로 상향. SEO 자동값 연결 칩 편집 기능이 코어 7.0.0-beta.8 에서 제공하는 편집기 연동 표면을 사용합니다.
- 게시글·댓글 작성일 표시 형식을 코어 표준(
Y-m-d H:i:s)으로 통일 — 이전의 한글 요일 포함 표기가 영문/일본어 사이트에서도 한글로 출력되던 다국어 미정합과 이커머스 주문일시와의 표기 불일치를 해소. 시드/시계 어긋남 등으로 미래 시각이 들어오는 경계 케이스도 안정적으로 처리 - 신고 정책 설정 화면의 알림 영역을 개편 — 별도 활성화 토글을 제거하고, 신고 접수·처리 알림이 채널별(이메일/사이트 알림)로 어떤 템플릿으로 발송되는지와 활성/비활성 상태를 한눈에 보여줍니다. 채널·템플릿·수신자 관리는 "알림 설정으로 이동" 버튼으로 알림 설정 메뉴에서 일원화했습니다.
- 게시판 설정의 금지어·허용 확장자 입력 방식을 태그 입력으로 통일했습니다 — 쉼표로 구분해 한 줄에 적던 방식에서, 단어를 입력하고 Enter 를 누르면 칩으로 하나씩 추가되는 방식으로 바뀌어 입력·삭제가 직관적입니다.
- 관리자 게시글 상세의 댓글 카드 우측 버튼 영역(답변/신고/더보기) 사이 간격을 일관되게 조정 — 버튼이 붙어 있던 시각 결함 해소
관리자 화면 외형 정합
- 게시판 관리 전반(환경설정 전 탭·게시판 폼·게시글 폼·신고 상세·목록·모달·검색바)의 카드·입력 칸·라벨·본문 텍스트·구분선 모양과 간격을 다른 관리자 화면과 동일한 결로 통일했습니다 — 화면마다 조금씩 다르게 보이던 카드 모서리·여백·헤더 간격, 입력 칸 테두리·배경, 글자 톤이 한 가지 기준으로 정합됩니다.
- 게시판 생성/수정 폼 "권한" 탭의 접근 제어 영역과 신고 상세 화면에서 항목·카드 사이 간격이 의도보다 부풀어 보이던 회귀를 바로잡아 다른 탭·화면과 동일한 간격으로 표시됩니다.
- 게시판 신고 정책 탭의 "채널별 발송 상태"에서 사이트 알림/이메일 아이콘이 라벨 위로 올라가 비대칭으로 보이던 회귀를 바로잡아, 아이콘이 채널 라벨 옆 가운데로 정렬됩니다.
- 이커머스 환경설정의 문의 게시판 선택 항목에서 라벨과 선택 박스 사이에 옅은 분리선·간격이 끼어 보이던 회귀를 바로잡아 한 필드로 응집됩니다.
- 게시판 댓글 패널 상단 헤더의 하단 분리선이 흐려져 헤더와 본문 경계가 모호하게 보이던 회귀를 바로잡았습니다.
- 게시판 관리 화면 곳곳의 역할 없는 빈 컨테이너 중첩을 정리해, 화면 모양은 그대로 둔 채 페이지 구조만 단순해졌습니다.
Fixed
폼·환경설정·정책 편집
- 관리자 대시보드의 게시판 위젯(최신 게시글·신고 관리 목록)에서 각 항목이 같은 화면 식별자를 공유해 일부 보조 기능·접근성 도구가 항목을 구분하지 못하던 문제를 수정했습니다 — 이제 목록의 각 행이 고유하게 식별됩니다.
- 게시판 본인인증 정책 편집 화면에서 "인증 목적"과 "적용 대상"을 바꿔 저장해도 반영되지 않던 문제를 수정했습니다 — 이제 정책 키·강제 시점·강제 위치를 제외한 모든 항목(인증 목적·적용 대상 등)을 자유롭게 변경할 수 있으며, 변경한 값은 업데이트 후에도 유지됩니다.
- 게시판 생성/수정 폼 "게시글 설정" 탭에서 필드 사이 구분선이 일부 그룹 경계에만 그어지고 일부 필드 사이에는 누락되어 보이던 회귀를 수정했습니다 — 다른 탭과 동일하게 모든 필드 사이에 일관된 구분선이 표시됩니다.
- 게시판 생성/수정 폼에서 탭을 클릭하거나 본문을 스크롤할 때 상단 탭 강조가 따라가지 않던 회귀를 수정했습니다 — 활성 탭이 현재 보고 있는 영역에 맞춰 자동으로 강조됩니다.
- 게시판 환경설정에서 게시판 목록·개별 게시판·게시글 상세의 "SEO 제공 페이지"를 꺼도 검색엔진 사이트맵(sitemap.xml)에 해당 주소가 그대로 남던 문제 수정 — 끈 페이지 유형의 주소는 사이트맵에서 제외됩니다.
삭제·복원·첨부·활동이력
- 답글이 달린 댓글을 삭제하면 그 댓글뿐 아니라 아래 답글까지 함께 사라지던 문제를 수정했습니다 — 삭제된 댓글 자리에는 "삭제된 댓글입니다" 표시가 남고, 다른 사람이 단 답글은 그대로 보입니다.
- 게시판 첨부파일을 내려받을 때 관리자 활동이력에 다운로드 기록이 남지 않던 문제를 수정했습니다 — 이제 첨부파일 다운로드도 업로드·삭제와 동일하게 활동이력에 기록되며, 활동이력에 표시되던 파일 이름이 비어 있던 문제도 함께 해소되어 어떤 파일을 다루었는지 확인할 수 있습니다.
- 로그인한 회원이 첨부파일을 내려받아도 활동이력의 "받은 사람"이 비어 있던 문제를 수정했습니다 — 이제 회원이 첨부를 내려받으면 누가 받았는지 활동이력에 정확히 남습니다. (로그인하지 않은 방문자의 다운로드는 종전과 같이 받은 사람 없이 기록됩니다.)
- 게시판을 삭제하면 소속 게시글·댓글·첨부파일과 첨부 원본 파일까지 함께 완전히 삭제되도록 수정했습니다 — 게시판이 사라진 뒤에도 글·댓글·첨부 데이터와 파일이 남아 용량을 차지하던 문제가 해소됩니다. (신고 접수 내역은 처리 기록 보존을 위해 그대로 유지됩니다.)
- 게시글을 삭제하면 그 글의 댓글·첨부파일도 함께 숨겨지고, 글을 복원하면 함께 부활하도록 수정했습니다 — 사용자가 글 삭제 전에 따로 지운 댓글·첨부는 복원해도 그대로 유지됩니다.
- 삭제된 게시글을 게시판 관리 권한자가 열었을 때 첨부파일이 보이지 않던 문제와, 글과 함께 숨겨진 댓글이 "삭제된 댓글입니다"로 가려지던 문제를 수정했습니다 — 이제 관리 권한자에게는 글과 함께 숨겨진 댓글의 원문과 첨부파일이 그대로 보입니다. (사용자가 직접 지운 댓글은 이전과 같이 가려진 채로 표시됩니다.)
게시판 설정 저장·검증
- 게시판 설정을 여러 게시판에 일괄 적용하던 중 일부 게시판에서 오류가 나면, 어느 게시판에서 실패했는지 알려주고 변경 전체를 자동으로 되돌리도록 수정했습니다 — 일부 게시판에만 설정이 적용되어 게시판마다 설정이 달라지던 문제가 해소됩니다. (전부 적용되거나 전부 적용되지 않으며, 실패 시 안내가 표시됩니다.)
- 첨부 "허용 확장자"를 비워 둔 채 저장하면 안내와 반대로 모든 파일 업로드가 거부되던 문제를 수정했습니다 — 이제 파일 첨부를 사용하는 게시판은 허용 확장자를 최소 1개 이상 입력해야 저장되며, 안내 문구도 이에 맞게 변경되었습니다. (파일 첨부를 사용하지 않는 게시판은 확장자를 비워 둘 수 있습니다.)
- 게시판 샘플 시더가 댓글·답글·첨부 비정규화 카운트를 동기화하지 않아, 시드 직후 게시글 상세 화면에서 댓글/답글 영역이 미표시되던 결함 해소
- 게시판 환경설정 "게시판 설정" 탭의 숫자 입력 필드에 허용 범위 안내(예: 5~100)를 표시하고, 입력칸의 최소·최대값을 실제 저장 한도와 일치시켰습니다. 답변글 깊이는 최대 10단계까지, 첨부 파일 용량 상한도 정상 적용됩니다. 모바일 페이지당 게시글 수 입력칸의 범위 안내와 최소·최대값도 실제 저장 한도를 따르도록 정합화했습니다.
- 환경설정에서 저장한 제목·내용·댓글 글자 수 상한이 실제 게시판 글쓰기 검증과 어긋나 저장 후 글 작성이 막히던 문제 해소 — 제목 최대 1000자, 내용 최대 100000자, 댓글 최대 10000자까지 일관되게 적용됩니다.
- 게시판 설정에서 최소 글자 수를 최대 글자 수보다 크게 저장할 수 있던 문제 해소 — 제목·내용·댓글 각각 최소값이 최대값보다 크면 저장이 막히고, 해당 입력칸에 안내 메시지가 표시됩니다.
- 게시판마다 설정한 "신규 게시글 표시 기간"이 게시글 목록의 [New] 배지에 반영되지 않고 항상 24시간 기준으로 표시되던 문제 해소 — 이제 설정한 기간(예: 1시간, 48시간)에 맞춰 목록의 [New] 배지가 표시됩니다.
- 게시판 이름·설명을 수정한 뒤에도 검색엔진에 이전 제목·설명이 계속 노출되던 문제 해소 — 게시판 정보를 수정하면 해당 게시판 목록 페이지의 검색엔진용 메타 정보가 즉시 갱신됩니다.
복사·권한·역할
- 게시판을 복사할 때 슬러그만 바꿔 저장하면 "관리자 값은 필수입니다" 오류로 저장이 막히던 문제 해소 — 복사 화면에 원본의 관리자·작업 단계 담당자 명단이 미리 채워지고, 권한 구성도 원본과 동일하게 복사됩니다. 복사본에는 새 게시판 전용 관리자 역할이 부여되며, 원본 게시판의 관리자가 복사본 권한에 섞여 들어가던 권한 누수도 차단했습니다.
- 게시판 복사 확인 창의 안내를 정리해, 무엇이 복사되고(설정·권한·관리자) 무엇이 제외되는지(게시글·댓글), 저장 전 새 슬러그를 확인해야 한다는 점을 한눈에 보이도록 했습니다.
- 게시판을 새로 만들거나 복사한 직후 권한 설정 탭의 역할 목록에 게시판 관리자·스텝 역할이 바로 표시되지 않고 새로고침해야 나타나던 문제 해소 — 저장 직후 화면에서도 부여된 역할이 모두 정상 표시됩니다.
- "게시판 관리" 권한을 받은 사용자가 게시판 화면에서는 관리 가능으로 보이는데도 실제로 다른 사람의 글·댓글을 수정하거나 삭제하려 하면 차단되던 문제 해소 — 이제 게시판 관리 권한만으로 타인 글·댓글의 수정/삭제와 수정 화면 진입이 정상 동작합니다.
- 게시판 권한 설정에서 "비밀글 조회" 권한의 역할을 비우고 저장할 때, 안내 메시지에 권한 이름이 영문 키(
posts.read-secret)로 표시되던 문제 해소 — 다른 권한과 동일하게 "비밀글 조회"로 표시됩니다.
노출 제어·분류·알림·삭제글
- 블라인드 처리된 게시글·댓글의 원문이 권한 없는 사용자에게도 '원글 보기' 버튼으로 그대로 열람되던 문제 해소 — 이제 원문은 게시판 관리자와 작성자 본인만 볼 수 있습니다. 목록의 제목·블라인드 표시와 블라인드 사유 안내는 이전과 동일하게 모두에게 표시됩니다.
- 게시판 목록·검색 결과에서 비밀글의 본문 요약이 권한 없는 사용자에게도 보이던 문제 해소 — 이제 비밀글과 블라인드 글의 본문 요약은 목록·검색에서 표시되지 않습니다. 제목은 이전과 동일하게 표시되며, 본문은 상세 화면에서 열람 권한이 있는 경우에만 볼 수 있습니다.
- 게시판 분류 개수 제한이 적용되지 않아 분류를 무제한으로 추가할 수 있던 문제 해소 — 분류는 최대 50개까지만 추가할 수 있으며, 빈 분류명은 저장되지 않습니다.
- 게시판 분류 입력 안내를 명확히 했습니다 — 분류를 삭제해도 해당 분류의 게시글은 사라지지 않고 "미분류" 필터에서 계속 조회할 수 있음을 안내합니다.
- 게시판에 설정한 금지어가 게시글에만 적용되고 댓글에는 적용되지 않던 문제 해소 — 이제 금지어가 포함된 댓글도 작성·수정 시 동일하게 차단됩니다.
- 분류가 있는 게시판에서 분류를 선택하지 않아도 글이 등록되던 문제 해소 — 이제 분류가 있는 게시판은 글 작성·수정 시 분류 선택이 필수이며, 작성 화면의 분류 항목에 필수 표시와 안내 메시지가 나타납니다.
- 내 알림 설정에서 "게시글 처리 알림"을 꺼도 관리자가 내 글·댓글을 블라인드·삭제·복원할 때 알림이 계속 발송되던 문제 해소 — 이제 이 알림을 끄면 해당 알림을 받지 않으며, 댓글·답글 등 다른 알림과 동일하게 개인 설정이 적용됩니다.
- 관리자 회원 수정 화면에 게시판 알림 설정 영역이 보이지 않던 문제 해소 — 이제 "게시판 알림 설정" 탭에서 게시글 처리·답변·댓글·답글 알림 수신 여부를 회원별로 켜고 끌 수 있습니다. 회원 상세 화면과 동일한 위치·구성으로 표시됩니다.
- 게시판 환경설정의 본인인증 정책 탭에서 출처 필터(전체/코어/모듈/플러그인)를 골라도 결과가 항상 비어 보이던 문제 해소 — 이 탭은 게시판 정책만 보여주는 화면이므로, 동작하지 않던 출처 필터를 정리했습니다. 강제 시점 필터와 검색은 그대로 사용할 수 있으며, 전체 출처의 본인인증 정책은 환경설정의 본인인증 화면에서 관리합니다.
- 블라인드·삭제된 원글에 답글 작성 폼으로 직접 들어가면 작성 폼이 먼저 열리며 원글의 제목·내용이 보이던 문제 해소 — 이제 블라인드·삭제된 원글에는 답글 작성 화면 진입 자체가 차단되어 원글 내용이 노출되지 않습니다.
- 삭제된 게시글·댓글의 원본을 게시판 관리 권한자가 볼 수 없던 문제 해소 — 이제 게시판 관리 권한이 있으면 삭제된 글·댓글의 원본 제목과 내용을 확인할 수 있습니다. 일반 사용자에게는 이전과 동일하게 노출되지 않습니다.
- 삭제된 게시글 상세에 답변 버튼이 그대로 보이던 문제 해소 — 삭제된 글에서는 답변 버튼이 표시되지 않습니다.
- 삭제된 게시글의 첨부파일이 권한 없는 사용자에게도 노출·다운로드되던 문제 해소 — 이제 삭제된 글의 첨부파일은 게시판 관리 권한자만 보거나 내려받을 수 있습니다.
신고 관리·목록 탐색
- 신고 관리에서 영구삭제 처리된 신고 건을 다른 상태(접수·검토·반려·게시중단)로 되돌리려는 요청이 잘못 성공으로 응답되던 문제 해소 — 영구삭제는 최종 상태이므로 다른 상태로의 변경이 거부됩니다. 같은 상태로의 변경 등 허용되지 않는 상태 전환도 함께 차단됩니다.
- 신고 관리 목록(신고현황)에서 검색 필드(전체·게시글제목·게시판명·작성자명·신고자명)에 단어를 입력해 검색해도 결과가 걸러지지 않던 문제 해소 — 이제 검색 종류를 고르고 검색어를 입력하면 해당 조건으로 신고 목록이 정확히 걸러집니다.
- 게시글 목록에서 분류·검색·페이지를 적용한 뒤 글을 열고 "목록" 으로 돌아오면 적용했던 분류·검색·페이지가 풀려 항상 첫 화면으로 돌아오던 문제 해소 — 이제 글 상세로 들어갔다 나와도 보던 목록 상태가 그대로 복원됩니다.
- 분류가 있는 게시판에서 글 상세의 이전/다음 글 버튼이 다른 분류의 글로 넘어가던 문제 해소 — 이제 이전/다음 글은 현재 보고 있는 글과 같은 분류의 글로만 이동합니다. 분류가 없는 글은 이전과 동일하게 전체 글을 기준으로 이동합니다.
- 답글 상세에서 이전/다음 글 버튼이 자기 글타래와 무관한 엉뚱한 원글로 이동하던 문제 해소 — 답글 상세에서는 이전/다음 글 버튼이 표시되지 않으며, 원글로 이동하려면 답글 상단의 원글 링크를 사용합니다.
[1.0.0-beta.5] - 2026-05-12
Added
- 게시판 환경설정의 본인인증 정책 탭에 권한 기반 버튼 비활성화 적용 — 수정 권한이 없는 운영자는 "정책 추가" / "수정" / "삭제" / "활성 토글" 버튼이 자동 비활성화
Changed
- 게시판 관리 화면 (환경설정 · 게시판 폼 · 모달 · 검색바) 의 입력 박스 외형을 관리자 표준 외형으로 정렬 — 텍스트·숫자·일자 입력이 슬러그 입력과 같은 모양으로 보이도록 일관화.
- 게시판 환경설정 화면의 페이지 타이틀을 일반 흐름으로 정리하고 (스크롤 시 함께 따라오던 동작 해제), 취소·저장 버튼을 화면 하단 고정(스티키) 으로 이전 — 탭은 기존과 동일하게 상단 고정 유지.
[1.0.0-beta.4] - 2026-05-11
Added
- 환경설정 → 신고 정책 탭에 신고 알림 채널 선택 UI 추가 (이메일 / 사이트 알림 다중 선택)
- 게시판 환경설정에 "본인인증 정책" 탭 추가 — 게시판 컨텍스트의 본인인증 정책을 코어 정책 관리 화면과 동일한 UI/UX (검색·필터(강제 시점/출처)·페이지네이션·정책 추가/편집 모달 직접 호출·이 모듈이 등록한 본인인증 목적 칩 섹션·데스크탑 테이블/모바일 카드 자동 분기 + enabled 인라인 토글) 로 한 곳에서 관리. 정책 목록의 "인증 목적" 컬럼이 코드명 대신 사람이 읽을 수 있는 라벨로 표시
- 본인인증 정책 4종 declarative 선언 (게시글 삭제·블라인드·신고 일괄처리·신고 삭제) — 기본 비활성, 운영자가 환경설정에서 활성화 가능
- 사용자(self) 본인인증 정책 4종 추가 — 자기 글 삭제, 자기 댓글 삭제, 신고 작성, 신규 사용자 첫 글 작성. 기본 비활성, 운영자가 환경설정에서 활성화 가능
- 본인인증 메시지 정의를 모듈 자체에서 선언하도록 정합화 (현재는 코어 sensitive_action 기본 문구를 그대로 사용하므로 빈 선언 유지)
- 게시판 모듈 자체 권한 신설:
sirsoft-board.identity.policies.{read,update}(정책 관리 최소 권한) - 게시판 알림 발송 이력 / 본인인증 이력 샘플 시더 추가 —
module:seed sirsoft-board --sample으로 댓글·신고 등 게시판 영역 더미 이력만 독립 생성 (코어/타 모듈 영역 침범 없음) - 게시판 알림 정의 7종(새 댓글·대댓글·답변글·게시글 처리·신규 게시글 관리자·신고 접수·신고 처리)을 모듈 manifest 에서 직접 선언하도록 통일 — 활성화/업데이트 시 운영자 편집값을 보존하면서 자동 등록·정리되며, 권한·메뉴·본인인증과 동일한 declarative 패턴으로 일관화
- 게시글 상세 페이지의 OG 메타태그·Article 구조화 데이터를 게시판 모듈이 직접 선언하도록 SEO declaration 구현 — 작성일·수정일·작성자·게시판 카테고리가 og:article:* 와 Schema.org Article 스키마로 자동 출력됨
- 게시글 API 응답에 첨부파일 개수(
attachment_count) 노출 — 기존 첨부 여부(has_attachment) 와 함께 제공되어 헤더 카운트와 첨부 수 표시를 일관되게 처리 - 활동 로그의 게시판 액션 라벨(게시글·댓글·신고 등)을 게시판 모듈 다국어 파일에서 관리하도록 정리 — 모듈 라벨이 자기 영역에서 자기설명되며, 일본어 등 추가 언어팩이 키 누락 없이 동기화
Changed
- 코어 최소 요구 버전을 7.0.0-beta.4 로 상향 (본인인증 인프라 + source 필터 API + 알림 시스템 권한 기반 수신자 타입 의존)
- 신고 알림(관리자 수신) 기본 수신자를 역할(role=admin) 에서 권한(
sirsoft-board.reports.manage) 기반으로 전환 — 권한이 부여된 모든 역할로 자동 확장 - 모듈 환경설정에서 알림 토글이 OFF 인 경우 발송 자체를 사전 차단하도록 정책 게이트 강화
- 게시판 유형(
board_types) 의 다국어 라벨이 활성 언어팩 추가 시 자동으로 새 언어 키를 포함하도록 정합화 — 운영자가 한국어 라벨만 직접 수정한 row 도 한국어는 보존하면서 신규 언어(예: 일본어) 라벨은 자동 동기화
Fixed
- 알림 템플릿 편집 모달의 입력 필드에서 글자를 입력할 때마다 화면이 심하게 버벅이던 문제 수정
- 게시판 환경설정 알림 탭의 채널 라벨이 식별자(mail / database)로 노출되던 문제 수정 — 활성 언어 기준의 사람이 읽을 수 있는 라벨로 표시
- 사용자 활동(작성/댓글) 조회 응답의 댓글 수 키를 단수형(
comment_count) 으로 통일 — 게시글 상세 응답과 키 명명을 일치시켜 프로필/마이페이지의 댓글 수 표시를 일관되게 함 - 관리자 게시글 상세의 섹션 순서 변경 — 첨부파일을 원글 인용 박스 위로 이동 (답글 화면에서 첨부파일이 더 잘 보이도록)
- 게시판 환경설정의 일괄 적용 체크박스가 라벨 클릭으로만 토글되고 체크박스 자체 클릭으로는 반응하지 않던 문제 수정 — 모든 일괄 적용 항목에서 라벨과 체크박스 어느 쪽을 클릭해도 일관되게 토글
- 게시판 환경설정 권한 탭의 권한 행과 섹션 헤더(관리자/사용자) 일괄 토글 체크박스가 직접 클릭으로 반응하지 않던 문제 수정
- 게시판/게시글/댓글 모델의 카운트 컬럼(게시글 수·댓글 수·답글 수·첨부파일 수)이 일부 흐름에서 정수가 아닌 문자열로 노출되거나 갱신되지 않던 문제 수정 — 모든 카운트 컬럼이 항상 정수로 처리됩니다
- 관리자 게시글 상세의 답글/댓글/첨부파일 헤더 카운트가 실제 수와 어긋나던 문제 수정 — "삭제 댓글 보기" 토글 ON 시에도 헤더는 활성 댓글 수만 표시
- 관리자 게시글 상세의 첨부파일 이미지 썸네일이 표시되지 않던 문제 수정 — 다운로드 URL 대신 미리보기 URL 사용
[1.0.0-beta.3] - 2026-04-21
Fixed
- 파티션 스키마 폐지 후에도 잔여 파티션 DDL 호출로 인해 신규 게시판을 만들지 못하던 문제 수정 (#12 @laelbe 님께서 제보해주셨습니다.)
- 일부 권한 설정에서 비밀글·접근 제한 게시글의 이전/다음 조회 시 500 오류가 발생하던 문제 수정 — 옆 글을 찾지 못하면 빈 값을 반환하도록 변경
- 큐 워커가 실행 중이지 않은 환경에서 댓글/게시글/첨부 수가 즉시 반영되지 않던 문제 수정 (#11 @laelbe 님께서 제보해주셨습니다.)
- CKEditor 등 임시 업로드를 거친 첨부가 게시글에 연결되어도 첨부 수가 늘어나지 않던 문제 수정
- 내가 댓글 단 게시글 활동(
activity_type=commented) 조회 시 쿼리 오류로 500 응답을 반환하던 문제 수정 - 삭제된 게시글에 달았던 댓글이 활동 통계(
total_comments)에 계속 포함되던 문제 수정
Removed
- 내부 파티션 관리 코드 일괄 제거 (파티션 스키마 폐지로 더 이상 사용되지 않음)
[1.0.0-beta.2] - 2026-04-20
⚠️ 업데이트 주의사항
- 파티션 제거 마이그레이션 포함 — 데이터 규모에 따라 시간이 오래 걸릴 수 있습니다
- 게시글 1만 건 이하: 약 1분 이내 / 50만 건 이상: 약 20~30분 이상
- 댓글 90만 건 이상: 약 20~30분 이상
- 강제 종료 시 모듈 상태가
updating으로 남을 수 있음 — tinker로status를active로 직접 복구
Added
- 사이트 내 알림 연동
- 이메일 외 사이트 내 알림(database 채널) 추가 — 알림센터에서 즉시 확인 가능
- 환경설정 > 알림 탭에서 채널별 ON/OFF 토글 및 템플릿 통합 관리
- 사용자 개인 알림 수신 설정(마이페이지) 반영
- 댓글 직권 처리(블라인드/삭제/복원) 시에도 알림 발송
- 게시글/댓글 처리 알림에 대상 유형 표기 추가
- 신고 누적 자동 블라인드는 직권 처리 알림에서 제외
- 알림 정의 일괄 초기화 기능 — 확인 모달 + 진행 스피너 UX 포함
- 게시판 알림 정의를 코어 리셋 로직에 자동 기여하여 기본값 복원 가능
- 알림 탭은 코어 알림 권한 기준으로 편집 가능 여부를 판단하도록 개선 (모듈 설정 권한과 분리)
- 게시판 유형(BoardType) 사용자 수정 보존 지원
- 게시판 환경설정 SEO 설정 탭 추가
- 게시판 목록/글 목록/게시글 상세 페이지별 메타 제목·설명 직접 설정
- 페이지별 SEO 제공 여부 온/오프 및 캐시 초기화 버튼
- SEO 변수 시스템 적용 — 게시판/게시글 페이지 타입별 변수 정의 및 레이아웃 연동
성능 최적화
- 이전글/다음글 조회를 독립 API로 분리하여 게시글 상세 페이지 초기 로딩 쿼리 감소 (#2 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시글·댓글 수 등 집계 정보를 사전 계산 컬럼으로 관리하도록 개선 — 목록 조회 시 COUNT 쿼리 제거 (#2 @jiwonpapa 님께서 제보해주셨습니다.)
- 게시글 본문 검색 및 통합검색에 FULLTEXT 인덱스 적용 — 대용량 데이터에서도 빠른 검색 가능 (#2 @jiwonpapa 님께서 제보해주셨습니다.)
Changed
- 코어 최소 요구 버전을 7.0.0-beta.2 로 상향
알림
- 알림 발송 방식을 코어 공통 필터 기반으로 전환하여 이중 발송 제거
- 알림 탭 채널 목록을 코어 공통 API로 교체
- 알림 정의 시더를 인라인 방식으로 전환 — 사용자 수정 자동 보존
- 레거시 메일 템플릿 테이블을 통합 알림 시스템으로 이관
- 이전 업그레이드 스텝에 클래스 부재 시 안전 스킵 처리 추가
- 알림 템플릿 편집 모달 다국어 탭을 동적 생성으로 전환
성능 최적화
- 게시글 목록 조회 시 비활성 게시판 필터링 방식을 개선하여 쿼리 성능 향상
- 인기글 정렬 기준을 조회수 기반으로 단순화하여 인덱스를 활용할 수 있도록 변경
- 글수정 폼 진입 시 불필요한 데이터 조회를 줄여 로딩 쿼리 감소
- 캐시 유지 시간을 설정값 기반으로 관리할 수 있도록 변경
기타
- 공통 캐시 시스템으로 이관 — 모듈 내 모든 캐시 호출을 코어 캐시 인터페이스로 전환하고 키 접두사 통일
- 게시판 목록 데이터 소스를 비인증 접근 허용으로 변경 — SEO 봇 대응
- 게시글 에디터를 확장 포인트(extension_point)로 변환
Removed
- 직접 발송 리스너 제거 — 코어 알림 시스템으로 대체
- 기본 설정·신고 정책 탭의 알림 채널 선택 제거 — 알림 탭으로 통합
- 알림 채널 관련 컬럼 및 모듈 전용 API 제거 — 코어 공통 API 사용
- 레거시 메일 템플릿 시더 및 관련 다국어 키 제거
[1.0.0-beta.1] - 2026-04-01
Changed
- 오픈 베타 릴리즈
[0.9.5] - 2026-03-31
Added
- 이커머스 1:1 문의게시판 Extension Point에
mode: "replace"적용 — 게시판 모듈 활성 시 default 폴백 메시지 교체
Fixed
- 게시판 글 목록·신고 목록에서 다른 페이지로 이동 후 돌아올 때 이전 검색어가 Input에 유지되던 문제 수정 —
_global상태를_local로 전환 (admin_board_posts_index.json, admin_board_reports_index.json)
[0.9.4] - 2026-03-30
Fixed
- 활동 로그 enum 미번역 수정 — Post, Comment, Board, Report 모델의
$activityLogFieldsstatus/설정 필드type: 'text'→type: 'enum'변경 + 6개 Enum 클래스에labelKey()메서드 추가 - 활동 로그 샘플 시더 enum 타입 동기화 —
ActivityLogSampleSeeder의 status 관련 9건type: 'text'→type: 'enum'수정 및old_label_key/new_label_key추가
[0.9.3] - 2026-03-30
Fixed
- 관리자 다크모드 레이아웃 전수 수정 — 19개 파일에서 누락된
dark:variant 약 70건 추가 (text-gray, bg-white/gray, focus:ring, text-red/blue, border-gray 등)
[0.9.2] - 2026-03-30
Changed
window.G7Config설정 노출 최소화 — frontend_schema 4개 카테고리(basic_defaults, report_policy, spam_security, display) 전체expose: false처리 (프론트엔드 미참조)
[0.9.1] - 2026-03-30
Changed
- ReportRepository의 직접
MATCH...AGAINST호출을DatabaseFulltextEngine::whereFulltext()정적 헬퍼로 전환 — 다중 DBMS 호환 - Post 모델에
FulltextSearchable인터페이스 추가 — Scout 검색 파이프라인 지원 searchIndexShouldBeUpdated()훅 기반 전환 — 검색 플러그인이 Post 인덱스 업데이트 제어 가능- 마이그레이션 FULLTEXT 인덱스 생성을
DatabaseFulltextEngine::addFulltextIndex()정적 헬퍼로 전환
[0.9.0] - 2026-03-30
Added
- FULLTEXT 인덱스(ngram) 추가 — boards(name), boards_report_logs(snapshot) 총 2개
Changed
- 신고 관리 검색 쿼리를
LIKE '%keyword%'에서MATCH...AGAINST IN BOOLEAN MODE로 전환 — boards.name, boards_report_logs.snapshot 검색 성능 향상
[0.8.1] - 2026-03-30
Fixed
- 신규 게시판 생성 시 조회수 표시가 기본 OFF로 설정되던 문제 수정 — 기본값을 ON으로 변경
- 신규 게시판 생성 시 최소 내용 길이 기본값이 10자로 설정되던 문제 수정 — 기본값을 2자로 완화
- 파일 크기 설정 단위를 bytes에서 MB로 통일 — 관리자 설정 입력, DB 저장, 검증, 안내 문구 모두 MB 기준으로 변경
- 게시글 삭제(소프트삭제) 시 댓글과 첨부파일이 함께 삭제되어 복원 시 미표시되던 문제 수정 — 게시글만 삭제하고 댓글/첨부파일은 유지
[0.8.0] - 2026-03-30
Added
- 이커머스 1:1 문의 게시판 연동 지원
- 이커머스 환경설정 > 문의게시판 설정 화면에 게시판 선택 드롭다운, 게시판 수정 이동, 문의내역 관리, 관리자 메뉴 추가 버튼 동적 주입
- 문의/답변 생성·수정·삭제를 게시판 게시글로 처리하는 훅 리스너 추가
PostRepository에 관계 포함 조회 메서드 3개 추가 (findWithBoard,findByIdsWithRelations,findFirstReplyWithBoard)- 검색/필터/정렬 성능 향상을 위한 누락 인덱스 일괄 추가 — board_posts 2개([board_id+author_name] 비회원 작성자 검색, [board_id+status+created_at] 게시판별 상태+날짜 필터)
Changed
- 문의 삭제/답변 삭제 시 게시판 알림이 발송되지 않도록 처리 방식 개선
- 외부 모듈 위임 방식에서
skip_notification옵션 직접 체크 방식으로 변경
- 외부 모듈 위임 방식에서
Fixed
- 게시글 수정 후
after_update훅이 트랜잭션 내부에서 실행되어 롤백 시 부작용이 발생할 수 있던 문제 수정 Board,Post모델 직접 조회를 Repository 경유로 교체
[0.7.1] - 2026-03-27
Fixed
- 게시판 관리 부모 메뉴 URL을 null로 변경 — 대응 라우트 없는
/admin/boardsURL이 404 발생 (module.php)
[0.7.0] - 2026-03-25
Added
- BoardActivityLogListener: 게시판/게시판유형/게시물/댓글/첨부파일/신고 전체 로깅
- 활동 로그 다국어 키 33개 정의 (resources/lang/ko/activity_log.php, en/activity_log.php)
- $activityLogFields 메타데이터: Board, Post, Comment 모델
- ActivityLog 샘플 시더 (database/seeders/ActivityLogSampleSeeder.php)
- ActivityLogDescriptionResolver: 활동 로그 표시 시점에 게시판/게시물/댓글 엔티티명을 ID에서 해석하는 필터 훅 리스너
- BoardActivityLogListener: 신고 일괄 상태변경 before 스냅샷 + after ChangeDetector 추가 (1훅 추가, 총 32훅)
- BoardActivityLogListener: 신고 일괄 상태변경 per-Report 로깅 전환 (건별 loggable_id 기록)
Fixed
- 활동 로그 description에 번역 키가 원문으로 노출되는 문제 수정 — src/lang 번역 파일 동기화, description_params 불일치 수정
- UpdateBoardTypeRequest:
name.ko로케일 하드코딩 메시지 제거 — LocaleRequiredTranslatable이 자체 메시지 반환
[0.6.10] - 2026-03-26
Added
- 사용자 게시판 목록/상세에서 manager 권한 사용자가 삭제된 게시글/댓글을 선택적으로 볼 수 있는 토글 기능 추가
Fixed
- 게시판 권한 탭 manager/step TagInput UUID 불일치 수정 — options 및 change 핸들러 표현식에서
u.id→u.uuid로 수정 (4곳) BoardController::getFormData()생성 모드에서board_manager_ids에 uuid 반환하도록 수정BoardSampleSeeder—pluck('id')→pluck('uuid')수정StoreCommentRequest— 서버 주입 필드(user_id,ip_address) 검증 규칙 제거 (규정 준수)CommentController—prepareForValidation()으로 처리된post_id중복 대입 제거- 신고 시스템 API 응답 UUID 적용 —
ReportResource,ReportLogResource,ReportDetailResource,ReportServiceid→uuid전환 - 마이페이지 내 게시글 목록에서 비활성 게시판(
is_active=false)의 게시글이 노출되던 문제 수정 - 공지글 쿼리에서 삭제 상태 공지 제외 누락 수정
- 삭제된 게시글 상세 접근 시 명시적 404 처리 추가
- 삭제된 게시글의 댓글을 권한 없는 사용자에게 반환하던 문제 수정
- 게시판 폼 탭 순서 통일 (기본정보 → 설정 → 권한)
- 대댓글 UI 들여쓰기 버그 수정
[0.6.9] - 2026-03-24
Added
- 게시판 설정 화면의 각 탭 이름을 한국어/영어로 표시할 수 있도록 다국어 키 추가
Changed
- 게시판 설정 화면을 기능별 탭(기본, 권한, 목록, 게시글, 답변글, 댓글, 첨부파일, 알림, 일괄적용)으로 분리하여 레이아웃 파일 전면 재구성
- 변경된 탭 구조에 맞게 레이아웃 렌더링 테스트 업데이트
[0.6.8] - 2026-03-23
Changed
- API Resource: author.id → author.uuid 전환 (PostResource, CommentResource, BoardResource)
- PostResource: user_id FK → user.uuid 전환
- CommentResource: author.id → author.uuid 전환
- 관리자 레이아웃: author.id → author.uuid 참조 전환 (5개 파일)
- 유저 게시글 라우트: 정수 제약 제거 (Route Model Binding 호환)
- FormRequest: 정수 검증 → UUID 검증 전환 (StoreBoardRequest, StoreCommentRequest, UpdateBoardRequest)
- BoardService: UUID→정수 FK 변환 처리 추가
[0.6.7] - 2026-03-21
Fixed
- 공개 API 라우트 throttle을 60/분(댓글은 30/분)에서 600/분으로 일괄 상향 — 페이지 간 네비게이션 시 동일 카운터(sha1(userId)) 공유로 인한 429 Too Many Requests 방지 (게시글, 댓글, 첨부파일, 사용자 프로필, 마이페이지 활동 라우트 포함)
[0.6.6] - 2026-03-21
Added
- 게시판 날짜 표기 방식 개선 —
standard(표준형) /relative(유동형) 전역 설정 추가 - 게시판 환경설정
general탭 신규 추가 — 날짜 표시 방식 선택 UI - 블라인드/삭제 게시글 댓글 작성 폼 숨김 및 안내 메시지 표시
Changed
PostResourcecreated_at— 원본 datetime 반환으로 변경, 포맷된 날짜는created_at_formatted필드로 분리SearchPostsListener— 게시판별 N번 쿼리 → 단일 쿼리로 리팩토링
Fixed
- 게시판 환경설정 권한 일괄적용 시 manager/step 역할이 초기화되던 문제 수정
- 게시판 권한 자동주입 정책 변경 — 게시판 생성/수정 시에만 적용, 일괄적용 시 제외
- 일괄적용 모달 열기 전 이전 오류 상태가 남아있던 문제 수정
- 이미지 미리보기(preview) API throttle을 게시판 API 그룹(60/분)에서 분리하여 전용 그룹(300/분)으로 변경 — 갤러리 게시판에서 다수 썸네일 로드 시 429 Too Many Requests 방지
[0.6.5] - 2026-03-18
Added
SeoBoardSettingsCacheListener— 게시판 모듈 설정 변경 시 관련 SEO 캐시(board/index, board/show, board/boards, sitemap) 선별 무효화
Changed
SeoBoardCacheListener— 게시판별 독립 무효화로 전환 (invalidateByLayout→invalidateByUrlURL 기반),search/index·home무효화 추가, 생성/수정 시 해당 게시물 상세 캐시 즉시 재생성(SeoCacheRegenerator)
[0.6.4] - 2026-03-16
Changed
- 마이그레이션 통합 — 증분 마이그레이션을 테이블당 1개 create 마이그레이션으로 정리
- 시더 디렉토리 분리 — 샘플 시더를
Sample/하위로 이동 - 라이선스 프로그램 명칭 정비
- 게시판 환경설정 메일 템플릿 탭 레이아웃 개선
[0.6.3] - 2026-03-13
Added
- 신고 접수 시 관리자에게 알림 이메일 발송 기능 추가
- 신고 처리(블라인드/삭제/반려) 결과를 게시글 작성자에게 알림 이메일로 안내하는 기능 추가
- 관리자 알림 발송 범위 설정 추가 — 게시글당 최초 신고 시에만 발송하거나, 신고가 들어올 때마다 발송하는 옵션 선택 가능
- 관리자 역할별 신고 알림 수신 여부 설정 기능 추가
- 이미 신고한 게시글/댓글의 신고 버튼 비활성화 기능 추가
Changed
- 신고 정책 설정 화면에서 알림 발송 범위를 더 직관적인 라디오 버튼 형태로 변경
- 신고 반려 처리 알림 문구 개선 — "반려(복원)"으로 명확하게 안내하도록 변경
- 블라인드 처리된 게시글 안내 메시지 통일
- 신고 알림 수신 관리자 역할 지정 방식 개선 — 중복 지정 없이 정확하게 반영되도록 수정
Fixed
- 존재하지 않는 게시글 접근 시 404 페이지로 이동하지 않던 문제 수정
- 신고 일괄 처리 드롭다운이 정상 작동하지 않던 문제 수정
[0.6.2] - 2026-03-12
Added
- 신고 케이스 구조 전환 — 게시글/댓글당 케이스 1행 구조로 변경 (boards_reports + boards_report_logs 분리)
- 신고자 목록 페이지네이션 API 추가
- 신고 처리 이력 타임라인 표시
- ReportLogResource 추가
- manifest에 license 필드 및 LICENSE 파일 추가
Changed
- 신고 목록 정렬 기준을 마지막 신고 일시 기준으로 변경
- 신고 일괄 처리 단순화 — 케이스 단위 직접 처리로 변경
- 게시판 샘플 시더 게시판 6개 → 8개로 확장
- 신고 샘플 시더 재신고자 없을 경우 방어 처리 추가
Fixed
- 재활성 사이클 카운트 버그 수정 — 이전 사이클 신고 로그가 현재 사이클에 포함되던 문제
- 반려 시 복구 대상 케이스 상태 조건 불일치 수정
[0.6.1] - 2026-03-11
Changed
BoardResource응답의user_permissions키를user_abilities로 변경 —can_*형식 통일getUserBoardPermissions()메서드의 반환 키를posts_write,manager등 underscore 형식에서can_write,can_manage등can_*형식으로 변경- Admin/User PostController의
include_user_permissions파라미터를include_user_abilities로 변경
Added
BoardUserAbilitiesTest— BoardResource user_abilities 키 구조, PostResource/CommentResource abilities 키 검증 테스트 13개
[0.6.0] - 2026-03-11
Added
- 게시판별 동적 권한에 스코프(scope) 메타데이터 지원 추가 (
resource_route_key,owner_key) config/board.php권한 정의에scope키 추가 (12개 권한: admin/user 각 6개)BoardPermissionService::ensureBoardPermissions()— 권한 생성 시 scope 메타데이터 자동 설정PostService— 목록/상세 조회 시$context파라미터 기반 스코프 필터링 적용CommentService::getCommentsByPostId()—$context파라미터 기반 스코프 필터링 적용AttachmentService::download()—$context파라미터 기반 스코프 접근 제어 적용- User 컨트롤러 전체에
AccessDeniedHttpExceptioncatch 및 403 응답 처리 - Admin PostController/AttachmentController에
AccessDeniedHttpExceptioncatch 추가 Upgrade_0_6_0.php— 기존 게시판 동적 권한의 scope 메타데이터 백필 업그레이드 스크립트BoardPermissionScopeServiceTest— 서비스 레이어 스코프 필터링 테스트 10개
Fixed
- User 컨트롤러에서
getBoardBySlug()호출 시checkScope: false적용 — 매니저 역할 사용자 500 에러 수정 PostRepository::countNormalPosts()— 누락된 스코프 필터링 추가
[0.5.5] - 2026-03-11
Fixed
- Board 모델
$guarded에서created_by,updated_by제거 후$fillable로 이동 — 게시판 생성 시 생성자/수정자 ID가 DB에 저장되지 않던 문제 해결 BoardService::createBoard()에Auth::id()기반created_by/updated_by설정 추가BoardService::updateBoard()에Auth::id()기반updated_by설정 추가
Changed
ModuleTestCase에$migrated플래그 추가 — 마이그레이션 체크를 프로세스당 1회로 최적화
[0.5.4] - 2026-03-11
Added
BoardService,ReportService에PermissionHelper::applyPermissionScope()/checkScopeAccess()적용BoardController,ReportController상세/수정/삭제 엔드포인트에AccessDeniedHttpException처리 추가- 게시판 목록 조회 시 스코프 필터링 적용 (본인만/역할/전체)
- 게시판 상세/수정/삭제/복사 시 스코프 접근 제어 적용
- 신고 상세/상태변경/삭제 시 스코프 접근 제어 적용
Fixed
PostCollection::toArray()클로저에$request변수 미전달 버그 수정 (Undefined variable $request)BoardPermissionTest테스트 assertions를permissions→abilities키로 수정PostResourcePermissionTest테스트 assertions를permissions→abilities키로 수정
[0.5.3] - 2026-03-11
Added
- 게시판 설정 화면에
isReadOnly패턴 적용 (읽기 전용 배너, 모든 폼 필드 비활성화, 저장 버튼 비활성화) - 게시판 폼 화면에
isReadOnly패턴 적용 (기본정보/권한설정/목록설정/게시글설정/알림설정 탭 전체) - 게시글 폼 화면에
isReadOnly패턴 적용 (제목/본문/카테고리/옵션/첨부파일 비활성화) BoardSettingsController에 abilities 응답 추가 (can_update)- 게시판 목록 DS에 403 errorHandling 추가
- 게시판 폼 DS에 403 errorHandling 및 roles DS fallback 추가
- 게시판 설정 DS에 403 errorHandling 및 보조 DS fallback 추가
Changed
- 게시판 목록 "게시판 추가" 버튼:
if(숨김) →disabled(비활성화)로 변경 - 게시글 목록 "게시글 작성" 버튼:
if(숨김) →disabled(비활성화)로 변경 - 게시글 상세 답글 버튼:
if(숨김) →disabled(비활성화)로 변경 - 게시글 상세 ActionMenu: 권한 없는 항목을 숨김 대신
disabled처리 - 댓글 답글 버튼 및 ActionMenu: 권한 없는 항목을 숨김 대신
disabled처리 - 댓글 입력 영역:
if에서 ability 조건 분리 → 내부 Textarea/Buttondisabled처리 - 신고 목록 일괄 작업 버튼:
if(숨김) →disabled(비활성화)로 변경 - 신고 상세 상태 변경 버튼:
if에서 ability 조건 분리 →disabled처리 - 블라인드/삭제 댓글 원본 보기 버튼:
if(숨김) →disabled(비활성화)로 변경 - 게시판 유형 관리 모달에
isReadOnly기반 disabled 추가
Fixed
ReportCollection의permissions→abilities키 불일치 수정 (신고 목록 일괄 작업 미표시 버그)ReportDetailResource의permissions→abilities키 불일치 수정 (신고 상세 상태 변경 버튼 미표시 버그)
[0.5.2] - 2026-03-10
Changed
- 권한 카테고리에
resource_route_key,owner_key스코프 메타데이터 추가 (boards, reports) - 라우트 미들웨어
except:owner:*옵션 제거 (scope_type 데이터 기반 시스템으로 전환) - Repository 목록 조회에
PermissionHelper::applyPermissionScope()적용 (Board, Post, Comment, Report) PermissionBypassable인터페이스 및getBypassUserId()제거 (Board, Post, Comment, Report, Attachment 모델)
[0.5.1] - 2026-03-10
Changed
- API 리소스 권한 플래그 키
permissions→abilities로 변경 (코어 표준화) permissionMap()→abilityMap(),resolvePermissions()→resolveAbilities()메서드명 변경BoardCollection.withPermissions()응답 키permissions→abilitiesPostCollection응답 키permissions→abilities- 기존
board_permissions키를 원래 이름permissions로 원복 (충돌 해소) - 관리자 레이아웃 JSON의
permissions.can_*/permissions?.can_*바인딩을abilities.can_*/abilities?.can_*로 변경 - 사용자 레이아웃 JSON의
permissions?.can_view바인딩을abilities?.can_view로 변경
Fixed
- 알림 채널(이메일/사이트 알림) 일괄 적용 시 채널 설정이 저장되지 않는 버그 수정
- 일괄 적용 모달에서 알림 채널 항목 선택 시 체크박스가 정상 동작하지 않는 버그 수정
- 일괄 적용 모달에서 알림 채널 항목명이 키 코드로 표시되는 다국어 누락 수정
[0.5.0] - 2026-03-06
Changed
- 메일 템플릿 목록 API에 검색/필터/페이지네이션 지원 추가
- 메일 템플릿 편집 모달 UX 개선 (blur_until_loaded, sticky footer, 함수형 body)
getDefaultTemplateData()를 Controller에서 Service로 이동 (Service-Repository 패턴 준수)- 메일 템플릿 탭 UI를 코어 환경설정과 동일한 구조로 변경
Added
- 메일 템플릿 미리보기(preview) API 엔드포인트 추가
- 메일 템플릿 검색 기능 (제목/본문/전체)
- 페이지당 항목 수 선택 및 페이지네이션
- 메일 템플릿 관련 다국어 키 추가 (검색/필터/빈 상태/편집 모달)
[0.4.0] - 2026-03-05
Added
- DB 기반 메일 템플릿 시스템 (5종: 새 댓글, 대댓글, 답변글, 관리자 처리, 관리자 새 게시글)
board_mail_templates테이블, BoardMailTemplate 모델/서비스/리포지토리/컨트롤러- 메일 템플릿 관리 API 및 환경설정 UI
- 업그레이드 스텝 (
Upgrade_0_4_0) — 기존 설치에 메일 템플릿 초기 시딩
Changed
- 5개 알림 클래스 DbTemplateMail 기반으로 전환 (Blade → DB 기반)
Removed
BoardNotificationMail,board-notification.blade.php삭제
[0.3.2] - 2026-03-06
Added
- 게시판 유형(BoardType)을 독립 엔티티로 분리 —
board_types테이블,BoardType모델 - 게시판 유형 API —
BoardTypeController,BoardTypeService,BoardTypeRepository추가 - 게시판 유형 요청/응답 클래스 —
StoreBoardTypeRequest,UpdateBoardTypeRequest,BoardTypeResource추가 - 환경설정 > 기본설정 탭에 게시판 유형 관리 모달 추가 (생성 / 수정 / 삭제)
- 게시판 유형 삭제 시 사용 중인 게시판 수 검증 (사용 중이면 삭제 불가)
- 기본값으로 설정된 게시판 유형 삭제 방지 로직 추가
- 미지원 게시판 유형에 대한 fallback 블록 추가 (basic 레이아웃으로 표시)
Changed
- 게시판 생성/수정 폼에서 유형 관리 버튼 제거 — 환경설정 > 기본설정에서 일원 관리하도록 UX 변경
- 게시판 폼 유형 Select 하단에 관리 안내 힌트 텍스트 추가
- 게시판 폼 및 환경설정 기본 게시판 유형 Select에 slug 함께 표시 + 긴 목록 스크롤 처리
- 게시판 유형 slug 허용 문자 규칙을 하이픈(-) 통일 (기존 언더스코어(_) 혼용에서 변경)
Fixed
- 게시판 유형 모달에서 저장 실패 시 필드별 에러 메시지 표시 및 빨간 테두리 강조
- 테스트 환경에서
Accept-Language헤더 미설정 시name.ko필수 검증이 통과되던 문제 수정
[0.3.1] - 2026-03-05
Added
- 신고 남발 방지 기능 — 일일 신고 횟수 제한, 반려 누적 시 신고 차단, 연속 신고 쿨타임
- 관리자 환경설정 신고 정책 탭을 "자동 숨김 설정" / "신고 제한 설정" 2개 카드로 분리
- 연속 신고 쿨타임 설정 항목 추가 (기본 60초, 0이면 비활성화)
- 각 설정 항목에 동작 설명 안내 텍스트 보강
- 관리자 신고 목록에 마지막 신고일시 표시 (2건 이상 신고 시)
- 관리자 신고 목록/상세에 비회원 신고자 배지 표시
- 비회원 신고 샘플 시더 데이터 추가
Changed
- 쿨타임 설정 변경 시 즉시 반영되도록 설정 조회 방식 변경
- 쿨타임 메시지를 신고 전용으로 분리
Fixed
- 신고 모달에서 사유 미선택 시 콘솔 오류가 발생하던 문제 수정
- 댓글 신고 시 관리자 목록에서 게시글 제목이 표시되지 않던 문제 수정
- 관리자 신고 목록에서 페이지/정렬 변경 시 체크박스 선택이 유지되던 문제 수정
- 연속 신고 쿨타임 설정값이 저장되지 않던 문제 수정
Removed
- "신고 차단 기간" 설정 항목 제거 — 실제 동작과 불일치하여 혼란 유발
[0.3.0] - 2026-03-03
Added
- 마이페이지 "내가 쓴 댓글" API (
GET /me/my-comments) — Comment 기반 페이지네이션 CommentRepository::getUserComments()— 삭제 게시글·비활성 게시판 댓글 자동 제외PostRepository::findByBoardId(),CommentRepository::findByBoardId()— 신고 처리용 Repository 메서드 추가
Changed
board_posts,board_comments,board_attachments단일 테이블 전환 (기존 슬러그별 동적 테이블 폐지)board_id파티션(PARTITION BY LIST)으로 게시판 분리 — 게시판 추가 시 파티션 동적 생성DynamicPost/Comment/Attachment모델 →Post/Comment/Attachment단일 모델로 통합- Repository 전체
setTableBySlug()패턴 →where('board_id', ...)단일 쿼리 패턴으로 전환 - 마이페이지 게시판 활동 조회 PHP
forPage()→ DBpaginate()전환 (메모리 부족·타임아웃 해결) - 통계
total_comments집계 조건을 목록 API와 동일하게 INNER JOIN 적용 (삭제 게시글 댓글 제외) - Admin 라우트에
admin미들웨어 추가 (5개 그룹) ReportService—logger()헬퍼 →Log::파사드 교체BoardService::clearBoardCaches()—Cache::forget()→CacheService::forget()통일PostService,CommentService— actionLog 배열 생성 중복 →buildActionLog()메서드 공통화
Fixed
- raw SQL 내 테이블명에 DB prefix 미적용 문제 수정
DB::table('x as y')alias에 prefix 이중 적용되는 문제 수정- 답글 작성 시 삭제된 게시글 체크 후 조기 종료 누락 버그 수정, 공지 답글 금지 및 깊이 제한 추가
- 댓글 작성 시 삭제된 댓글 체크 후 조기 종료 누락 버그 수정, 깊이 제한 추가
- 게시글 목록에서 depth 2 이상 답글이 표시되지 않는 버그 수정
- 관리자 게시글 목록 답글 depth 시각화 — depth에 비례한 들여쓰기 적용
- 관리자 답글 버튼 — 공지글이 아니고 최대 답글 깊이 미만인 게시글에만 표시되도록 조건 수정
- 인기글 목록이 HTTP 200이지만 빈 배열로 반환되는 버그 수정 (raw SQL DB prefix 누락)
- 게시글·댓글 API 응답에서 비밀번호 필드 노출 방지
- 게시글·댓글 트리거 타입을 Enum으로 올바르게 처리
- 댓글 단건 조회 시 소프트 삭제된 댓글이 조회되지 않는 문제 수정
- 신고 처리 시 DB 직접 접근 → Repository 패턴으로 교체
- 게시글 상세 조회 비즈니스 로직을 Controller에서 Service로 이동
- 신고 상태별 집계 로직을 Controller에서 Service로 이동
- 신고 가능 여부·본인 콘텐츠 검증 로직을 Controller에서 Service로 이동
Removed
BoardTableService— 동적 테이블 생성 서비스 삭제TableCreationException삭제DynamicPost,DynamicComment,DynamicAttachment모델 삭제getUserCommentedActivities()(PostRepository) — 미사용 메서드 (마이댓글 API 전환으로 대체)
[0.2.0] - 2026-02-26
Added
- 환경설정 페이지 (3탭: 기본 설정 / 신고 정책 / 스팸·보안)
- 환경설정 CRUD API (
GET/PUT /admin/settings,GET /admin/settings/{category}) - 일괄 적용 API (
POST /admin/settings/bulk-apply) — 체크된 항목을 선택 게시판에 일괄 적용 - 캐시 초기화 API (
POST /admin/settings/clear-cache) BoardSettingsService(ModuleSettingsInterface 구현)boards테이블에max_reply_depth(기본 5),max_comment_depth(기본 10) 컬럼 추가- 게시판 폼에 답변글 최대 depth(1
5), 대댓글 최대 depth(110) 필드 추가 - 게시판 폼 알림 탭에 알림별 채널 선택 UI 추가 (필터 훅
sirsoft-board.notification.channels로 확장 가능)
Changed
config/board.php의 기본값(defaults,default_board_permissions,blocked_keywords,view_count_*)을 ModuleSettings 시스템으로 이관config/board.php에서report_types제거 (dead code,ReportReasonTypeEnum이 원본)- 기존 코드의
config()참조를g7_module_settings()헬퍼로 전환 (9개 파일) boards테이블 기본값 통일:show_view_count=false,notify_admin_on_post=true,notify_author=true- 조회수 중복 방지 방식을 단일 캐시 TTL 방식으로 통합 (세션 방식 제거, API 미들웨어에
StartSession미적용)
Fixed
- 권한 TagInput 수정 시 저장 버튼이 표시되지 않는 문제 수정
- 일괄 적용 모달에서
fields값이 전달되지 않는 문제 수정 .포함 권한 키(예:sirsoft-board.posts.read)가BulkApplySettingsRequest검증에서 422 오류 발생하는 문제 수정
[0.1.2] - 2026-02-25
Changed
- 모듈 라우트 admin/user 분기 서빙 적용 (routes.json → routes/admin.json 이동)
[0.1.1] - 2026-02-24
Changed
- 버전 체계 조정 (정식 출시 전 0.x 체계로 변경)
[0.1.0] - 2026-02-23
Added
- 게시판 모듈 초기 구현
- 게시판 CRUD (생성, 읽기, 수정, 삭제) 기능
- 게시판별 스킨 설정, 카테고리 관리
- 게시물 CRUD 기능 (작성, 조회, 수정, 삭제)
- 비밀글 기능: 작성자/관리자만 열람 가능
- 댓글 시스템: CRUD, 대댓글 (계층형 댓글)
- 게시물 검색 기능 (제목, 내용, 작성자 검색)
- 첨부파일: 이미지/파일 업로드, 다운로드, 인라인 표시
- 카드/갤러리 레이아웃: 다양한 게시물 목록 표시 형태 지원
- 인기글/최신글 위젯
- SEO 메타 태그 자동 생성
- 관리자 레이아웃 (게시판 관리, 게시물 관리, 댓글 관리)
- 사용자 레이아웃 (게시판 목록, 상세, 작성/수정)
- 권한 시스템 연동 (게시판별 읽기/쓰기/댓글/관리 권한)
- 다국어 지원 (ko, en)