**커뮤니티 보드 글쓰기 — 이미지·영상·링크카드 커서 위치 삽입 수정** — 글쓰기 에디터에서 이미지 붙여넣기, 영상 첨부, URL 링크 카드 삽입 시 커서 위치와 무관하게 항상 본문 맨 아래에 추가되던 버그 수정. **근본 원인**: 업로드 placeholder와 로딩 카드를 editor.appendChild()로 삽입하여 Selection/Range(커서 위치) 무시. **수정**: insertAtCursor() 헬퍼 함수 도입 — window.getSelection() Range API를 사용하여 현재 커서 위치에 정확히 삽입. 파일 대화상자 등으로 포커스 이탈 시에도 selectionchange 이벤트로 마지막 에디터 내 커서를 자동 보존·복원. 이미지 붙여넣기(Ctrl+V), 이미지 버튼(📷) 클릭 선택, 영상 버튼(🎬) 클릭 선택, 드래그 앤 드롭, URL 링크 카드(🪧/붙여넣기) 5가지 미디어 삽입 경로 모두 커서 위치 존중. board.js 전역 참조(window._gbbInsertAtCursor)로 크로스 스크립트 연동
Modrinth 기사 대표이미지 누락 수정 — modrinth_publish_to_wp()가 이미지 없이 즉시 publish 상태로 발행하던 문제 해결. icon/gallery 없는 프로젝트(BadOptimizations 등) 3건 수정 완료.
기존 게시글 평문 URL 미변환 버그 수정 — embed.php 5단계 정규식 lookbehind에서 > 문자 제거. <div>https://... 패턴에서 닫힌 HTML 태그 바로 뒤의 URL이 링크로 변환되지 않던 문제 해결. Discord, Naver Form 등 모든 일반 URL이 페이지 로딩 시 자동으로 <a> 태그로 변환됨.
🔧
개선 2
Modrinth 발행 안전장치 v2.2 — draft→이미지 확인→publish 전환 패턴 적용. Imagen AI 폴백 추가로 icon/gallery 없는 프로젝트도 자동 이미지 생성 후 발행.
글쓰기 폼 URL 제출 처리 개선 — 에디터에서 자동 생성된 링크(<a class=gbb-auto-link>)를 제출 시 평문 URL로 역변환하지 않고 링크 상태를 유지하도록 변경. 서버사이드 이중 변환 방지 및 저장 효율성 향상.
🆕
신규 기능 2
전역 대표이미지 안전망 v2.0 — transition_post_status 훅으로 모든 발행 경로 감시. 이미지 없이 publish 전환 시 Imagen AI 자동 생성 시도, 실패 시 draft 유지로 이미지 없는 기사 공개 원천 차단.
커뮤니티 게시판 URL 자동 링크화 시스템 — 글쓰기 에디터에서 URL 입력 시(Space/Enter) 자동으로 클릭 가능한 링크로 실시간 변환. 서버사이드에서도 저장 시 평문 URL을 <a> 태그로 자동 변환하여 누락 방지. 기존 HTML 태그/링크 카드/임베드는 보호 처리.
MC 관리자 페이지 — 신청서 바로가기 링크 추가 — 신청서 목록 동작 컬럼에 🔗 아이콘 추가. 클릭 시 해당 신청서의 프론트엔드 폼 페이지(/mc-server/?form={id})로 바로 이동 가능. 플러그인 v1.9.6
🐛
버그 수정 1
MC 신청서 자동 마감 시간대 버그 수정 (Critical) — 마감일 비교 시 PHP time()(UTC)과 KST로 저장된 마감일을 비교하여 9시간 지연 발생. WordPress current_time()으로 통일하여 KST 기준 정확한 마감 처리. 5분 간격 wp_cron 자동 마감 기능 추가(기존에는 DB status 전환 로직 없었음). 관리자 목록에 실시간 기한초과 표시 추가
🔒
보안 1
마감된 신청서 폼 페이지 보안 강화 — 마감/기한초과 신청서 접근 시 신청 폼과 제출 버튼 완전 제거. 마감 안내 메시지 + 목록 복귀 버튼으로 교체. 마감 사유(기한초과/수동마감/일반마감) 구분 표시
일간 매거진 3/28 미발행 장애 복구 (daily_magazine v3.3.1) — 3월 28일 일간 매거진(Vol.30)이 자동 발행되지 않은 장애 진단 및 수동 발행 복구. logrotate + shell redirect + 자체 로깅 충돌이 근본 원인. 수동 발행으로 Vol.30 Post #112344 복구 완료. 재발 방지: logrotate copytruncate 전환, cron redirect 제거, 오후 12:00 retry 추가, 엔진 v3.3.1 진단 로깅 강화
마비노기 모바일 1주년 기사 수정 — 불필요한 빈 게임정보 테이블 및 "아쉽게도 게임의 상세한 기종..." 잘못된 안내 텍스트 제거 (Post #111952)
🔧
개선 1
미디어 추출기 v5.0.0 — Ruliweb 이미지 고해상도 자동 변환(/img/ → /ori/) 및 소스 프로필 고도화. body_selector를 .news_content_wrapper로 정밀화하여 tbl_view(관련게임정보) 테이블 오염 방지
CDN HEAD 미지원 이미지 검증 실패 수정 — cdn.gametoc.co.kr 등 일부 CDN이 HTTP HEAD 요청에 404를 반환하여 원본 이미지 사용 실패, AI 이미지로 대체되던 문제 수정. HEAD 404 발생 시 GET Range(0-1023) 폴백 검증 로직 추가로 125건+ gametoc 기사 이미지 수집 안정화
사이드바 영상 혼입 방지 — 소스 프로필이 등록된 도메인에서 전체 HTML 영상 폴백 추출을 비활성화하여, gametoc.co.kr 사이드바 위젯의 관련 없는 YouTube 영상(스타세이비어 CBT 등)이 기사에 삽입되는 문제 수정
🆕
신규 기능 1
gametoc.co.kr 소스 프로필 등록 — gn_source_profiles에 게임톡(www.gametoc.co.kr) 본문 추출 프로필 추가. body_selector: #article-view-content-div, 노이즈 요소 제거 설정 포함
🔧
개선 1
FC 온라인 엪온 자율학습 기사 이미지 교체 — AI 생성 이미지에서 출처(gametoc.co.kr) 원본 프로모션 이미지로 수동 교체 완료
일간 매거진 3/27 발행 실패 복구 — PHP 8.4 Imagick 확장 미설치로 표지 생성 실패 + logrotate duplicate log entry 에러로 전체 로그 로테이션 실패가 복합적으로 작용. PHP 8.4-imagick 설치 및 logrotate 중복 설정 해결.
🔧
개선 1
매거진 엔진 v3.3.0 초고도화 — 자체 파일 로깅(shell redirect 의존 제거), 락 파일 동시 실행 방지, 실패 시 Discord 즉시 알림, Fatal Error 핸들러, --retry 모드 자동 재시도(07:20 cron), PHP/Imagick 버전 진단 로그 추가.
⚡
성능 1
logrotate 정상화 — gameboy-gamescout 중복 설정으로 인한 logrotate 전체 실패(exit code 1) 해결. collector 로그 로테이션 정상 동작 복구.
PixelBay 상품 자동 동기화 시스템 — pixelbay.kr 신규 상품을 gameboy.kr 버츄얼 게시판에 자동 등록하는 Cron 파이프라인 구축. 상품 이미지, 가격(무료/할인 표시), 작가, 옵션 목록, 상세 설명을 CSS 클래스 기반 카드 포맷으로 변환. 중복 방지 추적 테이블(gb_board_pixelbay_sync) 및 5분 간격 자동 실행 등록 완료.
🔧
개선 1
커뮤니티 게시판 v2.13.0 — PixelBay 상품 카드 전용 CSS(pb-product-*) 추가. 다크/라이트 모드 호환, 모바일 반응형 옵션 목록 지원.
스태프 역할 wp-admin 권한 부여 — 수습 스태프(trainee_journalist)와 정식 스태프(journalist)가 wp-admin에서 글 → 글 추가까지 접근 가능. 정식 스태프는 공개 발행 가능, 수습 스태프는 검토 대기(Pending)까지만 허용. mu-plugin(journalist-role-caps.php) + functions.php 연동.
🔒
보안 1
수습 스태프 발행 제한 가드 — 수습 스태프가 API/직접 DB 조작으로 글을 공개 상태로 변경하는 것을 방지하는 서버사이드 safeguard 구현 (transition_post_status 훅). 자기 글만 목록 표시.
Google News 수집 최적화 — Googlebot-News 전용 robots.txt 규칙 추가 + mu-plugin(google-news-noindex.php)으로 비기사 페이지에 googlebot-news noindex 메타 태그 삽입. 정적 페이지(about, contact 등), 카테고리/태그 아카이브, 커뮤니티 보드 등이 Google News에서 뉴스로 수집되지 않도록 방지. RSS 피드에서 Modrinth/공지 카테고리 제외 확장.
Android 구글 뉴스 앱 Viewport 보정 — 갤럭시 S25 등 Android 구글 뉴스 앱(WebView)에서 기사가 데스크톱 해상도로 렌더링되어 글씨가 작게 보이는 현상을 JavaScript로 자동 보정. Wide Viewport Mode 감지 후 viewport 메타 태그를 재설정하여 모바일 뷰 복원 (iOS에는 영향 없음)
MC 신청서 — RCON 명령어 설정 (v1.9.0) — 신청서 승인 시 서버로 전송할 RCON 명령어를 폼 빌더에서 자유롭게 구성할 수 있는 기능 추가. 명령어가 설정되지 않으면 기존 whitelist add 명령어가 자동 실행(하위호환). 지원 플레이스홀더: {minecraft_id}(마크ID), {username}(닉네임), {email}(이메일), {channel_name}(치지직 채널명), {user_id}(회원번호). 빠른 추가 프리셋(whitelist add / say 입장 알림 / give 선물) 제공. 명령어별 활성/비활성 토글, 설명 필드, 순차 실행(sort_order) 지원. 신청서 복제 시 RCON 설정도 함께 복제, 삭제 시 함께 정리. DB: wp_gbmcm_form_rcon_commands 테이블 신규 생성 (dbDelta v1.9.0 마이그레이션)