📋 Changelog

업데이트 로그

GAMEBOY.KR의 모든 변경사항을 투명하게 기록합니다

v3.50.0 현재 버전
213 릴리스 수
798 변경 항목
2주 전 마지막 업데이트
121~135 / 총 224개 릴리스 · 페이지 9/15
v3.18.14

🐛 버그 수정 1

  • MC 폼 빌더 — 저장 시 field_id 변경으로 submission 데이터 JOIN 깨짐 수정 — 폼 빌더에서 신청서를 저장할 때마다 기존 필드를 DELETE 후 INSERT하여 form_fields.id(AUTO_INCREMENT)가 바뀌고, 기존 submission_data.field_id 참조가 깨져 "📝 작성한 내용" 섹션이 미표시되던 근본 버그 수정. 수정: DELETE+INSERT → UPSERT 패턴 전환 — ① 기존 필드 UPDATE(ID 보존), ② 새 필드만 INSERT, ③ 삭제된 필드 중 submission_data 참조 있는 필드는 보존(데이터 무결성). PHP 폼 빌더 렌더에 data-field-id 속성 추가, JS addFieldCard()collectFields()id 수집 추가. 플러그인 v1.1.6→v1.1.7 (JS 캐시 버스팅)
v3.18.13

🔧 개선 1

  • MC 서버 내 신청 확인 — 필드 설명/입력 힌트 표시 — 신청서 확인 페이지(/mc-server/?my=ID)의 "📝 작성한 내용" 섹션에서 각 필드의 설명(description)💡 입력 힌트(placeholder)가 표시되도록 개선. 기존에는 질문 라벨과 입력 값만 출력되어 맥락 파악이 어려웠음. SQL JOIN 쿼리에 f.description, f.placeholder 컬럼 추가, 라벨 아래에 설명(#777 회색 텍스트) + 힌트(#666 이탤릭, 💡 아이콘) 조건부 렌더링 추가. 설명/힌트가 비어있는 필드는 해당 영역 미표시
v3.18.12

🆕 신규 기능 1

  • MC 서버 신청 — 치지직(Chzzk) 채널 정보 연동 — 마이페이지에 등록한 치지직 채널명·채널 URL이 MC 서버 신청 폼에 자동 입력되는 기능 추가. ① 마이페이지 설정 탭 (/mypage/?tab=settings): 🟢 치지직 채널명, 🟢 치지직 채널 URL 입력 필드 추가 (마인크래프트 ID ↔ 자기소개 사이 배치). chzzk_channel_name, chzzk_channel_url user_meta 저장. ② MC 관리 폼 빌더 (wp-admin > MC 관리 > 신청서 작성): field_type ENUM에 chzzk_channel_name, chzzk_channel_url 2개 타입 추가. 관리자가 신청서에 치지직 정보 필드를 자유롭게 배치 가능. ③ 프론트엔드 신청 폼 (/mc-server/?form=ID): 마이페이지에 등록된 치지직 정보가 자동 입력되며, 마인크래프트 ID와 동일한 "마이페이지에서 자동 입력됨" UX 패턴 적용. 치지직 채널명은 text 타입, 채널 URL은 url 타입(기본 placeholder: https://chzzk.naver.com/채널ID). ④ DB 마이그레이션: gbmcm_maybe_upgrade_db() 함수로 기존 wp_gbmcm_form_fields.field_type ENUM 자동 확장 (ALTER TABLE). admin_init 훅에서 버전 비교 후 1회만 실행. 플러그인 v1.1.5→v1.1.6
v3.18.11
v3.18.10

🐛 버그 수정 1

  • MC 서버 신청 — 취소/거절 시 신청 인원 카운트 제외 — 유저가 본인 취소(user_self_cancel)하거나 관리자가 신청을 취소/거절해도 신청 인원 카운트(👥 N/M명)에 여전히 포함되던 문제 수정. 근본 원인: 5곳의 SELECT COUNT(*) 쿼리가 WHERE form_id = %d로만 필터하여 cancelled, rejected 상태의 신청까지 전부 카운트. 영향: ① 최대 신청 수(max_submissions) 체크 시 취소된 건까지 포함되어 실제 유효 신청보다 더 빨리 마감 판정 ② 프론트엔드/관리자 양쪽에서 정원 표시 부정확 ③ 중복 신청 체크 시 이미 취소한 유저가 재신청 불가. 수정 5곳: ① 최대 신청 수 체크(제출 시) — AND status IN ('pending','approved') 조건 추가 ② 중복 신청 체크(제출 시) — 동일 조건 추가(cancelled 유저 재신청 허용) ③ 관리자 신청서 목록 총 신청수(submission_count) — 유효 신청만 카운트 ④ 프론트 폼 페이지 👥 N/M명 — 유효 신청만 카운트 ⑤ 프론트 목록 페이지 👥 N명 신청 — 유효 신청만 카운트. 관리자 목록의 ✅ 승인, ⏳ 대기, 🚫 취소 개별 카운트는 이미 상태별 필터를 사용하므로 변경 불필요. 플러그인 v1.1.3→v1.1.4 (캐시 버스팅)
v3.18.7

🐛 버그 수정 1

  • 🧀 치지직 라운지 수집기 이미지/임베드 수정 v1.1.0 — 치지직 라운지(/board/chzzk-lounge/) 게시글에서 OG 카드 썸네일과 본문 이미지가 깨져서 표시되지 않던 문제 수정. 근본 원인: 네이버 SmartEditor가 OG 카드 썸네일 URL을 프록시(dthumb-phinf.pstatic.net)로 감쌀 때 %22(인코딩된 따옴표)를 삽입하고 Referer 체크도 적용하여 제3자 사이트에서 이미지 로딩 시 403 에러 반환. 또한 YouTube 임베드는 SE HTML의 iframe 태그에 직접 포함되지 않고 data-module-v2 속성 내 JSON으로만 제공. 수정 4건: ① 네이버 프록시 URL에서 원본 이미지 URL 추출(fixNaverProxyUrl() — YouTube/Chzzk/네이버 10개 CDN 호스트 직접 접근), ② YouTube oembed를 data-module-v2 JSON 파싱으로 iframe 추출(extractModuleData()), ③ YouTube 동영상 링크에서 직접 고화질 썸네일 URL 생성(upgradeYoutubeThumbnail()), ④ HTML entity(=, &) URL 디코딩. 기존 게시글 36건 DB 마이그레이션 완료, 신규 수집 자동 적용. 수집 스크립트 v1.0.0→v1.1.0
v3.18.6

🔒 보안 1

  • MC 서버 제어 보안 감사 + 버그 수정 v1.3.1 — 플러그인 전체 감사(PHP 2개 + JS 1개 + CSS 1개 + 라이브 페이지) 실시. 보안 2건 + 버그 2건 + UX 개선 2건 + 코드 품질 1건 수정. ① SEC-1 (Critical): Discord 웹훅 URL이 소스 코드에 하드코딩 → wp_options DB로 마이그레이션, gbmc_get_discord_webhook_url() 함수로 분리. 기존 하드코딩 값은 플러그인 재활성화 시 자동 마이그레이션. ② SEC-3 (Medium): 암호화 키가 wp_options에 평문 저장 → wp-config.php 상수(GBMC_ENCRYPTION_KEY) 우선 사용, DB는 하위 호환 폴백. gbmc_get_encryption_key() 중앙 함수 도입. ③ BUG-3 (High): 명령어 템플릿 "▶ 순차 실행" 시 safeExecuteCommand() 위험 명령어 확인 모달이 우회되어 stop, stopd 등이 확인 없이 실행. DANGEROUS_COMMANDS + CAUTION_COMMANDS 사전 검사 추가. ④ BUG-1 (Low): 실행 완료된 once 예약이 🟢/⏸️ 아이콘으로만 표시되어 상태 불명확. ✅ "실행 완료" 배지 + 취소선 + 점선 테두리 + 반투명(60%) 스타일 추가, 토글 버튼 대신 "실행 완료" 텍스트 표시. ⑤ IMP-2: 서버 선택 시 활동 로그가 자동 로드되도록 loadActivityLog() 호출 추가. ⑥ CQ-1: Discord 웹훅 전송 실패 시 error_log 기록 추가. ⑦ CQ-2: 스케줄러 입력 필드 5곳의 중복 인라인 스타일을 gbmc-dark-input CSS 클래스로 통합. 버전 v1.3.0→v1.3.1
v3.18.5

🐛 버그 수정 1

  • 🚨 MC 서버 제어 — 예약 명령어 스케줄러 5중 근본 수정 — 예약 명령어(⏰ 스케줄러)가 자동 실행되지 않거나, 실행되더라도 status=error로 기록되고, 관리자 페이지에서 서버가 🔴 오프라인으로 표시되던 5가지 근본 원인을 동시 해결. ① SSH 키 경로 오류: DB에 미존재 경로(/var/www/.ssh/id_ed25519) 저장 → /home/dev/.ssh/id_ed25519로 수정. ② 에러 오탐지(False Positive): gbmc_execute_rcon()이 SSH Warning("Permission denied", "Permanently added")을 치명적 에러로 판정. SSH 경고 메시지 regex 필터링 추가로 깨끗한 RCON 응답만 반환하도록 수정. Permission denied (publickey) 진짜 SSH 인증 실패만 에러 판정. ③ 타임존 이중 적용 버그: strtotime(current_time('mysql'))이 PHP TZ=UTC 환경에서 KST 문자열을 UTC로 해석 → 9~18시간 오프셋으로 예약 시간 완전 오차. time() (UTC 유닉스 타임스탬프) + wp_date() (KST 포맷)로 교체하여 일관된 시간 계산 보장. ④ WP Cron 미작동: DISABLE_WP_CRON=true 환경에서 wp-cron.php CLI 실행 시 spawn_cron() HTTP 기반 이벤트 트리거 실패 → 독립 크론 러너(cron-run-schedules.php) 신설, 시스템 크론 매분 직접 호출. ⑤ PHP-FPM SSH 키 권한 문제: 웹 서버(PHP-FPM)는 www-data 사용자로 실행되어 dev 소유의 SSH 키(600 권한)를 읽지 못함 → 관리자 페이지에서 서버 🔴 오프라인 표시. gbmc_execute_rcon()에 실행 사용자 자동 감지 로직 추가: www-dataid_ed25519_www, devid_ed25519 자동 선택. 수정 후 관리자 페이지 🟢 온라인 + TPS 20.0 정상 표시

🆕 신규 기능 1

  • MC 스케줄러 Discord 웹훅 알림 — 예약 명령어 실행 시 결과를 Discord Gameboy Logs 채널에 Embed 형식으로 자동 전송. 포함 정보: 🖥️ 서버명, 💬 명령어, 📋 유형(1회/매일/매시/간격), 📄 RCON 응답(코드블록), ⏱️ 실행시간(ms), ✅/❌ 성공·실패 색상 구분(초록/빨강). 플러그인 v1.2.0→v1.3.0
v3.18.4

🔧 개선 1

  • 디스코드 링크 도메인 통일 (discord.sudapeople.tv → discord.gameboy.kr) — 사이트 전체에서 디스코드 링크를 구 도메인(discord.sudapeople.tv)에서 신규 서브도메인(discord.gameboy.kr)으로 일괄 변경. 변경 대상 3개 파일: ① functions.php — 하단 「GAMEBOY.KR 외부 채널」 섹션 디스코드 카드 링크, ② page-advertise.php — 광고 페이지 연락처 섹션 디스코드 링크, ③ single-daily_magazine.php — 데일리 매거진 프로모션 섹션 디스코드 링크. 로컬 + 원격 백업 후 수정, SCP 전송 및 캐시 퍼지(WP Super Cache + PHP-FPM) 완료. 라이브 사이트 데스크톱 검증 완료
v3.18.3

🆕 신규 기능 1

  • discord.gameboy.kr 서브도메인 추가 — Discord 커뮤니티 전용 서브도메인(discord.gameboy.kr) 신설. DNS CNAME 등록, Nginx 서버 블록 설정(정적 파일 서빙), Let's Encrypt SSL 인증서 발급 및 HTTPS 자동 리다이렉트 설정 완료. SSL 인증서 자동 갱신 포함
v3.18.2

🔧 개선 2

  • MC Management 관리자 페이지 UI 전면 개선 (CSS v2.0)mc-management.css 전면 재작성으로 관리자 신청서 목록(gbmc-management) 및 폼 빌더(gbmc-form-builder) 페이지 UI 대폭 개선. 변경 내역: ① 필드 카드 입력란(질문/설명/플레이스홀더) 간격 6→10px — 밀착된 입력란 사이에 여백 확보 ② 필드 헤더(#번호+타입+필수)와 입력 영역 사이 구분선(border-bottom) 추가 ③ 선택지 옵션 영역에 배경색 분리(rgba(20,20,31,0.5)) + 패딩 적용하여 시각적 구분 ④ 삭제 버튼 hover 시 빨간색 하이라이트 ⑤ 선택지 추가 버튼(+ 선택지 추가) 보라색 톤 스타일링 ⑥ 설정 섹션(⚙️ 설정) 제목에 구분선 + 체크박스 정렬 개선 ⑦ 액션 버튼(초안 저장/발행/목록) 상단 border-top 구분선 + gap 8→12px ⑧ 필드 동작 버튼(↑↓🗑️) gap 4→6px, 패딩 확대 ⑨ 카드 공통 패딩 20→24px ⑩ 테이블 빈 상태 메시지 패딩/폰트 개선 ⑪ 응답 카드 호버 효과·구분선 추가. 플러그인 버전 v1.0.4→v1.0.5 (캐시 버스팅)
  • MC Management 테이블 헤더 글자 안 보이는 문제 수정 — 신청서 목록 테이블의 컬럼 제목(#, 제목, 서버, 상태, 신청수, 생성일, 동작)이 어두운 배경에 묻혀서 보이지 않던 치명적 가독성 문제 수정. 근본 원인: WordPress wp-list-table 기본 스타일(color: #2c3338, 거의 검정)이 커스텀 다크 테마 배경(#1e1e2e)과 동일 명도라 글자가 식별 불가. !important로 헤더 텍스트 color: #e0e0e0, 셀 텍스트 color: #ccc, 배경·패딩·보더도 !important로 WP 기본 스타일 완전 override. 플러그인 버전 v1.0.5→v1.0.6

🆕 신규 기능 11

  • MC Management 신청 취소 + RCON whitelist remove — 승인된 화이트리스트 신청을 관리자가 취소할 수 있는 기능 추가. 취소 시 RCON whitelist remove 명령어를 서버에 전송하여 화이트리스트에서 자동 제거. ① AJAX 핸들러 gbmcm_ajax_cancel 추가 (nonce 검증 + 권한 체크 + RCON 실행 + 활동 로그 기록) ② DB 스키마 wp_gbmcm_submissions.status ENUM에 cancelled 추가 ③ 응답 카드에 승인 상태일 때 🚫 신청 취소 (화이트리스트 제거) 버튼 + 취소 사유 입력 필드 표시 ④ 취소 시 버튼 비활성화 + ⏳ 처리 중... UX ⑤ 필터 드롭다운에 🚫 취소 옵션 추가 ⑥ 통계에 취소 건수 표시 ⑦ RCON 결과 표시 배경색 분리 (승인=초록, 취소=빨강) ⑧ CSV 내보내기에 취소 상태 포함 ⑨ 승인 ↔ 취소 토글: 승인→취소→승인 반복 가능, 취소 시 whitelist remove, 재승인 시 whitelist add 자동 실행. 플러그인 버전 v1.0.6→v1.0.10
  • MC Management 테이블 본문 글자 가독성 수정 — 신청서 목록 테이블 데이터 행(제목, 서버, 신청수, 생성일)이 WP 밝은 배경에 묻혀서 안 보이던 문제 수정. .gbmcm-wrap table.gbmcm-table tbody td 고 specificity 셀렉터로 color: #333 !important 적용, strong #222, a 태그 #444 설정. 플러그인 버전 v1.0.9→v1.0.10
  • MC Management 중복 신청 사전 체크 UX 개선 — 중복 신청 감지 시점을 폼 제출 후 → 목록의 "신청하기" 버튼 클릭 시로 앞당겨, 이용자가 폼을 다 작성하고 제출한 뒤에야 거절당하는 불편 해소. ① AJAX 핸들러 gbmcm_check_duplicate 추가 (로그인 여부 + pending/approved 상태 중복 검사, cancelled는 재신청 허용) ② "신청하기" 버튼에 gbmcm-apply-btn 클래스 + data-form-id 속성 추가 ③ JS에서 버튼 클릭 시 ⏳ 확인 중... 표시 후 AJAX 호출 → 중복이면 alert로 안내 + 이동 차단, 통과하면 폼 페이지로 이동 ④ 네트워크 오류 시 서버 측 2차 체크에 의존하여 fallback 이동 허용. 플러그인 버전 v1.0.10→v1.0.11
  • MC Management 내 신청 확인 페이지 + 목록 신청 여부 표시 — ① 내 신청 확인 페이지 (/mc-server/?my=FORM_ID): 심사 상태(대기/승인/거절/취소) 뱃지 + 마크 ID + 승인일/사유 + 작성 내용 전체 표시, 개인정보이므로 noindex, nofollow SEO 처리 ② 목록 신청 여부 표시: 로그인 유저의 pending/approved 상태 일괄 조회 → 뱃지 ✅ 승인완료 또는 ⏳ 심사중 표시 + "📝 신청하기" 버튼이 "📋 내 신청 보기" 보라색 아웃라인 버튼으로 교체 ③ 신청 완료 성공 메시지에 "📋 내 신청 확인" 링크 추가 ④ CSS badge-applied(보라 뱃지) + gbmcm-btn-view(보라 아웃라인 버튼) 스타일 추가 ⑤ 데스크톱/모바일 양쪽 검증 완료. 플러그인 버전 v1.0.11→v1.0.12
  • MC Management 관리자 테이블 개선 — ① .gbmcm-wrap max-width: 1100px100% 변경으로 wpbody 풀 너비 확장 ② SQL에 approved, pending, cancelled 상태별 COUNT 서브쿼리 추가 ③ 테이블 헤더에 ✅ 승인, ⏳ 대기, 🚫 취소 컬럼 추가 ④ 각 숫자에 색상 구분 적용 (초록/노랑/회색). 플러그인 버전 v1.0.12
  • MC Management 응답 목록 개선 — ① 제목 위에 ← 목록으로 네비게이션 버튼 추가 ② 페이지 하단에 📜 활동 로그 섹션 추가: 해당 서버의 whitelist_add, whitelist_remove, form_save 이력을 wp_gbmc_activity_log 테이블에서 조회 → 시간/유형/내용/RCON 응답/상태/실행자/서버 컬럼으로 최근 50건 표시. 유형별 색상 구분 (WL 추가=초록, WL 제거=빨강, 양식 저장=보라). 플러그인 버전 v1.0.12
  • MC Management 유저 셀프 취소 기능 — ① 내 신청 확인 페이지(/mc-server/?my=ID)에서 pending 상태일 때 🚫 신청 취소 빨간 버튼 표시 ② AJAX 핸들러 gbmcm_user_cancel 추가 (본인 소유 + pending 상태만 취소 가능, nonce 검증) ③ confirm 확인 → 취소 완료 시 페이지 새로고침 ④ 활동 로그에 user_self_cancel 유형으로 기록. 플러그인 버전 v1.0.12
  • MC 서버 페이지 SNS 공유 섹션 제거/mc-server/ 커스텀 페이지에서 gbss-share-wrap gbss-top 공유 버튼이 의도치 않게 표시되던 문제 수정. gameboy-sns-share.php의 3개 함수에 get_query_var('gbmcm_page') 감지 시 early return 추가.
  • 사이드바 위젯 명칭 변경custom_html-3 위젯 타이틀 "🏆 스트리머 랭킹" → "🏆 방송인 랭킹" → "🏆 방송 채널 랭킹" 변경. 사이트 전체 "스트리머" → "방송 채널" 용어 통일 정책에 맞추어 사이드바 위젯 타이틀도 최종 변경.
  • MC Management 관리자 신청 삭제 기능 — 신청 내역을 관리자가 완전 삭제할 수 있는 기능 추가. ① 개별 삭제: 각 신청 카드에 🗑️ 삭제 버튼 추가, confirm 확인 후 submission_data + submissions 연쇄 삭제. ② 일괄 삭제: 전체선택 체크박스 + "🗑️ 선택 삭제 (N)" 버튼으로 복수 건 동시 삭제. 실시간 선택 카운트 업데이트, 전체선택↔개별 체크 동기화. ③ 삭제 내역 활동 로그(submission_delete, submission_bulk_delete) 자동 기록. AJAX 핸들러 2개(gbmcm_delete_submission, gbmcm_bulk_delete_submissions) + JS 이벤트 핸들러 4개(개별삭제/체크박스/전체선택/일괄삭제) 추가. 플러그인 버전 v1.0.12
  • MC Management 프론트 "이전 신청 보기" UX 개선/mc-server/ 목록에서 취소/거절된 이전 신청이 있는 유저도 자신의 신청 기록에 접근할 수 있도록 개선. ① 신청 여부 조회 쿼리를 pending/approved만 → 전체 상태(cancelled/rejected 포함)로 확대. ② 활성 신청(pending/approved): "📋 내 신청 보기" 단독 표시. ③ 이전 기록(cancelled/rejected) + 접수 중: "📝 재신청" + "📋 이전 신청" 두 버튼 동시 표시. ④ 이전 기록 + 마감: "📋 이전 신청 보기" 단독 표시. ⑤ CSS에 .gbmcm-btn-group(세로 배치) + .gbmcm-btn-sm(작은 버튼) 스타일 추가, 모바일에서 가로 배치로 전환.
v3.18.1

🆕 신규 기능 3

  • MC Management 프론트엔드 개발 완료 — /mc-server/ 신청 페이지 구현 — 마인크래프트 서버 신청 관리 플러그인(gameboy-mc-management)의 프론트엔드 전체 개발 완료. ① URL 라우팅: /mc-server/ 경로 WordPress rewrite rule + query_vars 등록 ② 템플릿 렌더링: 커뮤니티 보드와 동일한 template_redirect + get_header()/include/get_footer()/exit 패턴 적용(기존 template_include 방식에서 변경 — 커스텀 query var 페이지에서 안정성 확보) ③ 신청서 목록 페이지: 접수 중/마감 상태 뱃지, 서버명, 마감일, 신청 인원 표시 ④ 개별 신청 폼: Google Forms 스타일 다크 카드 UI, 텍스트/textarea/select/radio/checkbox/minecraft_id 필드 타입 지원 ⑤ 로그인 필수: 비로그인 시 로그인 페이지로 리다이렉트 ⑥ 마인크래프트 ID 자동 입력: user_meta minecraft_id 연동(마이페이지에서 자동 입력됨 표시) ⑦ AJAX 제출: 중복 신청 방지, 60초 rate limit, 필수 필드 검증, MC ID 정규식 검증(영문/숫자/밑줄 3~16자), 제출 데이터 wp_gbmcm_submissions + wp_gbmcm_submission_data 테이블 저장 ⑧ 프론트엔드 CSS/JS: frontend/css/mc-forms.css (보라 액센트 다크 테마, 모바일 반응형) + frontend/js/mc-forms.js (AJAX 제출, 성공/실패 메시지 UI) ⑨ 푸터 링크: "참여하기" 섹션에 ⛏️ MC 서버 + 시즌 뱃지 자동 삽입 ⑩ 테스트 신청서 생성: "시즌 1 화이트리스트 신청" (서버: 새벽야생, 최대 20명, 마감: 2026-04-01, 필드 4개) — E2E 테스트 통과
  • SCP 디렉토리 중첩 문제 해결 — SCP 복사 시 gameboy-mc-management/gameboy-mc-management/frontend/ 이중 디렉토리 발생 → frontend/ 디렉토리를 올바른 위치로 이동 후 중첩 디렉토리 삭제
  • Nginx FastCGI 캐시 퍼지/mc-server/ URL의 이전 404 응답이 캐시되어 페이지 미표시 → 캐시 전체 퍼지 + nginx reload로 해결
v3.18.0

🔧 개선 7

  • 사이트 전역 SEO 감사 — 6개 핵심 이슈 수정 — 전체 사이트 기술 SEO 전수 감사 실시. 메타 태그, 구조화 데이터, 이미지 최적화 등 6건의 이슈를 발견하여 수정 완료.
  • OG 이미지 1200×630 규격 적용 — 기존 640×640 정사각형 OG 이미지를 SNS 공유에 최적화된 1200×630 와이드 이미지로 교체. 카카오톡, 페이스북, X(Twitter) 링크 공유 시 카드 미리보기가 정상 표시됩니다.
  • 개별 기사 article:tag 3배 중복 제거 — 각 기사의 태그 메타가 3번씩 중복 출력되던 문제 수정. Rank Math에서 통합 관리하도록 중복 소스 제거.
  • 구조화 데이터 Breadcrumb "Home" → "홈" — 검색 결과 Breadcrumb 표시에서 영문 "Home" 대신 한국어 "홈"으로 올바르게 표시됩니다.
  • 리뷰 기사 게임 이름 깨짐 수정 — 리뷰 스키마의 게임 제목이 한글 멀티바이트 문자에서 깨지던 문제 수정. 모든 리뷰 기사에서 게임 이름이 정상 표시됩니다.
  • 기사 스키마에 글자 수(wordCount) 추가 — Google News 최적화를 위해 모든 기사의 구조화 데이터에 글자 수 정보 자동 삽입.
  • 매거진 H1 태그 SEO 개선 — 일간 매거진 페이지의 H1 태그에 날짜별 고유 한국어 제목 추가. 시각적 디자인은 유지하면서 검색엔진 최적화 강화.
v3.17.9

🔧 개선 4

  • 방송 채널 수탉 페이지 SEO 전수 감사 + 7건 수정https://gameboy.kr/streamer/sutak/ 페이지 SEO 전수 감사 실시. 7건의 기술적 SEO 문제를 발견하여 전량 수정 완료. ① 중복 Canonical URL 해소이 2개(홈페이지+스트리머 페이지) 출력되어 Google이 잘못된 canonical을 선택할 위험. 테마 gamernews_seo_is_handled() 함수에 /streamer/ 경로 감지 추가하여 사이트 전체 SEO 엔진이 방송 채널 페이지에서 실행되지 않도록 수정. ② 중복 Robots 메타 해소 — Rank Math + Streamer Hub 플러그인 각각 출력. disableRankMathOnStreamerPage()에 Rank Math robots/canonical 비활성화 추가. ③ 중복 Description/Keywords 메타 해소 — ①번 수정으로 동시 해결. ④ 외부 링크 보안 강화target="_blank" 69개 링크에 rel="noopener noreferrer" 누락(탭내빙 취약점). Streamer Hub 플러그인 내 11개소 일괄 추가. ⑤ 이미지 접근성 개선 — 트렌딩 게임 썸네일 31건의 alt="" 빈 속성을 게임 제목으로 교체 + loading="lazy" 추가. ⑥ 잘못된 Naver 인증 메타 제거naver-site-verification 값이 gameboy-streamer-hub(가짜 값)으로 설정되어 있어 삭제. ⑦ Rank Math 충돌 완전 해소 — 기존 OG/JSON-LD 비활성화에 더해 robots, canonical 출력도 비활성화하여 Streamer Hub 플러그인의 자체 SEO와 완전 분리
  • 커뮤니티 보드 전체 SEO 전수 감사 + 3건 수정/board/ 하위 12개 페이지(메인, 자유게시판, 베스트, 카지노, 배틀, 퀴즈, 랭킹, 데일리 룰렛, 파이오니어, 개별 게시글 등) 전수 감사 실시. ① 파이오니어 페이지 SEO 미구현 (Critical) — /board/casino/pioneers/ 페이지에 전용 SEO 데이터가 없어 Title이 "커뮤니티"(제네릭), Canonical/OG URL이 /board/(홈으로 잘못 지정)으로 출력. seo.phpcasino_pioneers 전용 case 추가하여 제목("🏆 최초 기록자 명예의 전당"), 설명, canonical, keywords, OG 이미지, JSON-LD(WebPage) 완비. ② 랭킹 페이지 이미지 alt 누락 21건ranking.php 내 MVP 아바타 + 5개 탭 랭킹 아바타의 alt="" 빈 속성 6건을 사용자 닉네임으로 교체하여 접근성 및 이미지 SEO 개선. ③ 가짜 Naver 인증 메타 태그 제거seo.php에서 naver-site-verificationgameboy-kr-community(플레이스홀더) 출력 → 삭제 (방송 채널 페이지와 동일한 패턴)
  • 방송 채널 랭킹 페이지(/streamers/) SEO 5건 수정 — 방송 채널 랭킹 페이지 전수 감사 + 중복 메타 태그 근본 해결. ① 중복 Keywords 메타 태그 해소gamernews_seo_is_handled() 함수가 /streamer/(개별 방송 채널)만 감지하고 /streamers/(랭킹 페이지)를 미감지하여 sitewide SEO 엔진이 이중 실행됨. /streamers/ 경로 감지 추가. ② 중복 JSON-LD 해소 — 동일 원인으로 CollectionPage+ItemList JSON-LD가 index.php와 sitewide SEO 양쪽에서 출력(5-6블록)→3블록으로 정상화. ③ Canonical URL 누락 수정 (Critical) — Rank Math가 standalone PHP 페이지에서 canonical 출력 실패하고, 기존 ob_start/ob_end_flush 패턴도 매칭 실패하여 canonical 0개 상태. 불안정한 ob_start 패턴을 제거하고 커스텀 SEO 훅에서 직접 출력으로 교체. ④ Dublin Core 중복 4건 제거 — sitewide SEO 엔진 스킵으로 DC.title/DC.description/DC.language/DC.publisher 자동 해소. ⑤ 외부 링크 보안 강화 — LIVE/채널 보기 target="_blank" 100건에 rel="noopener noreferrer" 일괄 추가(HTML 템플릿 2개소 + AJAX JS 동적 생성 2개소)
  • 수다 채널 → GAMEBOY.KR 외부 채널 섹션 정리 (9개 → 3개) — 푸터 하단 gb-suda-channels-section 채널 카드를 9개에서 3개로 정리. 섹션 제목 "수다 채널" → "GAMEBOY.KR 외부 채널"로 변경, 부제 "수다와 소통하세요" → "GAMEBOY.KR과 소통하세요"로 변경. 유지: ① GAMEBOY.KR 디스코드(커뮤니티 & 실시간 소통), ② GAMEBOY.KR 이메일(문의 & 협업 제안), ③ 카카오톡 오픈채팅(태그 "소통과 송금 기능으로 후원"으로 변경). 제거: 수다 유튜브, 수다 치지직, 수다위키, 수다 인스타그램, 수다 X(Twitter), 수다 GitHub. 제거된 채널의 CSS(색상, glow, hover) + .gb-x-logo 클래스 일괄 삭제. 데스크톱/모바일 검증 완료
v3.17.8

🐛 버그 수정 4

  • SteelSeries Arctis Nova Pro Wireless 딜 기사 원문 대비 7건 오류 수정 (Post #107259) — IGN 원문(Eric Song)과 대조하여 발견된 오류 일괄 수정. ① IGN CDN 제품 이미지 2장(PS5/PC 화이트 에디션, Xbox/PS5/PC 블랙 에디션) 삽입. ② 원문 기자명(Eric Song) 출처에 추가. ③ 하이퍼링크 5건(best gaming headsets 가이드, Nova Elite 제품, best wireless gaming headset 가이드, WC Freeze 젤 이어패드, Arctis Nova Pro 리뷰 by Kevin Lee) 삽입. ④ AI 환각 섹션 "한국 게이머를 위한 궁극의 오디오 솔루션인가?" 삭제. ⑤ AI 환각 댓글 유도 문구 삭제. ⑥ Eric Song 에디터 추천(개인 사용 경험 + WC Freeze 이어패드 업그레이드 팁) 섹션 추가. ⑦ DB source_domain NULL → www.ign.com 보정
  • 엑스박스 AI 코파일럿 기사 이미지 깨짐 + 원문 대비 5건 오류 수정 (Post #107262) — The Verge 원문(Emma Roth)과 대조하여 발견된 오류 일괄 수정. ① 깨진 이미지(로컬 파일 참조) → Verge CDN URL(platform.theverge.com)로 교체하여 Xbox Series X 화이트 에디션 사진 정상 표시. ② 원문 기자명(Emma Roth) 출처에 추가. ③ 하이퍼링크 9건(GamesRadar 보도, 게이밍 코파일럿 소개, Windows 11 베타, Xbox Ally 핸드헬드, Xbox 공식 페이지, Project Helix, PC 게임 플레이, Phil Spencer 퇴임, Asha Sharma CEO 선임) 삽입. ④ AI 환각 섹션 2건("한국 게이머들이 주목할 AI 비서의 잠재력과 도전 과제", "경쟁 구도 — 소니 플레이스테이션/닌텐도 스위치 비교") 삭제. ⑤ 발췌문(excerpt) 정확한 요약으로 교체
  • 마리오 + 래비드 스파크 오브 호프 기사 원문 대비 10건 오류 수정 (Post #107290) — Game Rant 원문(Aleksandra Kubas)과 대조하여 발견된 오류 일괄 수정. ① 원문 기자명(Aleksandra Kubas) 출처에 추가. ② takkk.jpg 콜라주 스크린샷 삽입. ③ 하이퍼링크 6건(닌텐도 eShop 스토어, OpenCritic 점수, 전략 RPG 랭킹, 스위치 2 출시 예정작, Rayman DLC 기사, 판매량 반등 기사) 삽입. ④ AI 환각 텍스트 3건("한국 게이머들은 자국 eShop에서 할인 여부를 확인해야", "카툰 폭력으로 E10+ 등급", "스컬 앤 본즈 연이은 출시 연기") 삭제. ⑤ AI 환각이 포함된 발췌문(excerpt) 정확한 요약으로 교체. ⑥ DB body_text 630자→3,793자 재추출, body_images/body_videos NULL → 정상 데이터 보정
  • Genesis Relic 기사 원문 대비 11건 오류 수정 (Post #107293) — IndieDB 원문(LiquidMeow)과 대조하여 발견된 오류 일괄 수정. ① 원문 기자명(LiquidMeow) 출처에 추가. ② 공식 YouTube 출시 트레일러 삽입. ③ Wishlist Actions 현황 차트 + Steam Deck Playable 등급 배지 이미지 2장 삽입. ④ "완벽 호환" 오역 → "Playable" 등급으로 정정(원문: 키보드 필요 가능성, 작은 텍스트 안내). ⑤ 2인 개발팀(2년 개발) 정보 추가. ⑥ 15% 출시 할인 $3.39 가격 정보 추가. ⑦ 에디터 기능(플레이어 커스텀 콘텐츠) 추가. ⑧ AI 환각 텍스트 3건(마인크래프트, 쿠키 클리커, 유니버설 페이퍼클립스 비교) 삭제. ⑨ AI 환각 섹션(한국 게이머 시장 분석) 삭제. ⑩ Steam 스토어 + IndieDB 게임 페이지 링크 삽입. ⑪ DB body_text/images/videos/source_domain/author 전부 NULL → 정상 데이터 보정

🔧 개선 5

  • 수다 채널 → GAMEBOY.KR 외부 채널 섹션 정리 (9개 → 3개) — 푸터 하단 gb-suda-channels-section 채널 카드를 9개에서 3개로 정리. 섹션 제목 "수다 채널" → "GAMEBOY.KR 외부 채널"로 변경, 부제 "수다와 소통하세요" → "GAMEBOY.KR과 소통하세요"로 변경. 유지: ① GAMEBOY.KR 디스코드(커뮤니티 & 실시간 소통), ② GAMEBOY.KR 이메일(문의 & 협업 제안), ③ 카카오톡 오픈채팅(태그 "소통과 송금 기능으로 후원"으로 변경). 제거: 수다 유튜브, 수다 치지직, 수다위키, 수다 인스타그램, 수다 X(Twitter), 수다 GitHub. 제거된 채널의 CSS(색상, glow, hover) + .gb-x-logo 클래스 일괄 삭제. 데스크톱/모바일 검증 완료
  • 뉴스 미디어 수집 엔진 v4.9.9 — IGN processedHtml 인라인 이미지 추출 신설(Step ④-0.5). IGN 딜/커머스 기사는 제품 이미지를 processedHtml 내 태그로 삽입하지만, 기존에는 feedImage(대표 이미지 1장)만 추출하여 다중 제품 이미지가 누락됨. processedHtml에서 태그를 직접 파싱하여 문맥 순서대로 이미지를 추출하고, 트래킹 픽셀(width=0|1), 아바타, 로고, 광고 이미지를 자동 필터링. ignimgs.com 외 외부 CDN 이미지(Amazon 등)도 수집 대상에 포함
  • 뉴스 미디어 수집 엔진 v4.9.8 — Vox Media(The Verge, Polygon, SB Nation) CDN 이미지 고해상도 변환 지원. isVoxMediaDomain() 4개 Vox Media 도메인 자동 인식. normalizeVoxMediaImageUrl() platform.theverge.com CDN에서 crop 파라미터 제거 + w=2400 + quality=90 적용하여 원본 비율 고해상도 이미지 자동 업그레이드. gn_source_profiles에 www.theverge.com 프로필 추가(body_selector: .duet--article--article-body-component, remove_selectors: .duet--article--related, .duet--article--share-buttons 등 7개)
  • 뉴스 미디어 수집 엔진 v4.9.7 — SVG 로고/아이콘 이미지 필터링 강화. Valnet CMS(GameRant 등)에서 본문 이미지 수집 시 사이트 로고 SVG 파일(gr-logo-icon-colored-light.svg, gr-db-logo-icon-colored-dark.svg)이 body_images에 혼입되는 노이즈 문제 해결. isIgnoredImage()logo-icon, /assets/images/.*logo, .svg$ 3개 패턴 추가. CLI 배너 버전 표시 v3.8→v4.9.7 동기화
  • 뉴스 미디어 수집 엔진 v4.9.6 — IndieDB, ModDB(DBolical 계열) 2개 사이트를 cURL 차단 도메인 목록에 추가. 해당 사이트는 Cloudflare/Anti-bot 보호로 cURL 요청에 403을 반환하여 불필요한 15초 타임아웃 대기가 발생하던 문제 해결. 향후 IndieDB/ModDB RSS 수집 시 스크래핑 시도를 즉시 건너뛰어 수집 속도 향상

GAMEBOY.KR 외부 채널

다양한 플랫폼에서 GAMEBOY.KR과 소통하세요