Skip to content

Releases: glitter-node/glitter-gdpr

glitter-gdpr v0.5.2

Choose a tag to compare

@glitter-gim glitter-gim released this 06 Sep 05:53

Gnuboard7용 독립 GDPR 및 쿠키 동의 관리 플러그인입니다.

이번 릴리스는 커스텀 User Template과 SPA 환경에서 쿠키 동의 배너가 안정적으로 하나의 렌더링 경로만 유지하도록 개선한 안정화 릴리스입니다.

주요 변경사항

SPA 쿠키 배너 중복 렌더링 수정

SPA route transition 중 layout banner가 일시적으로 제거되는 순간을 최종 부재 상태로 오인하여 fallback banner가 함께 생성될 수 있던 race condition을 수정했습니다.

  • 실제 DOM mutation 이후 안정된 layout commit을 확인
  • layout banner가 존재하면 plugin fallback root를 자동 제거
  • 이미 발생한 duplicate 상태도 자동 복구
  • 반복적인 SPA route 이동에서도 단일 banner 유지
  • 임의 timeout에 의존하지 않는 안정화 처리
  • 특정 route, template, component identifier에 의존하지 않는 범용 처리

Custom Template 호환성 개선

user_global_overlay extension point가 없는 User Template에서도 GDPR banner를 사용할 수 있도록 layout contribution fallback을 개선했습니다.

  • 공식 user_global_overlay가 있으면 해당 extension point 사용
  • extension point가 없는 경우 실제 structural layout host 탐색
  • 적합한 layout host가 없으면 plugin-owned DOM fallback 사용
  • Toast 등 자식을 렌더링하지 않는 utility component를 layout root로 잘못 선택하던 문제 수정
  • layout renderer와 fallback renderer 간 상호 배제 보장

쿠키 안내 문구 재정의

사이트 운영자가 공개 쿠키 동의 UI의 문구를 한국어와 영어별로 재정의할 수 있습니다.

지원 항목:

  • 배너 제목
  • 배너 안내 문구
  • 필수 쿠키
  • 기능 쿠키
  • 분석 쿠키
  • 마케팅 쿠키

입력값을 비워 두면 플러그인의 기본 번역을 사용합니다.

관리자에서는 사용자 입력값과 실제 적용되는 effective 문구를 구분하여 확인할 수 있습니다.

쿠키 카테고리 운영 설정

사이트에서 실제 사용하는 쿠키 범주만 활성화할 수 있습니다.

  • Necessary
  • Functional
  • Analytics
  • Marketing

필수 쿠키는 항상 활성화됩니다.

비활성화된 선택 카테고리는 공개 동의 UI에서 제외되며, 과거 동의 정보가 있더라도 현재 정책에서 비활성 상태라면 허용되지 않습니다.

Runtime 안정화

이번 버전에서는 다음 rendering invariant를 기준으로 동작을 검증했습니다.

정상 layout 경로:

  • #gdpr_cookie_banner = 1
  • [data-glitter-gdpr-root] = 0

실제 fallback 경로:

  • #gdpr_cookie_banner = 0
  • [data-glitter-gdpr-root] = 1

두 렌더링 경로가 동시에 존재하는 상태는 허용하지 않습니다.

실제 Chrome E2E 검증

https://hub.glitter.kr/의 실제 Chrome 시크릿 환경에서 다음 시나리오를 검증했습니다.

  • Fresh guest 최초 접속
  • SPA navigation
  • Browser Back
  • Browser Forward
  • 동의 없이 진행
  • 거부 상태의 새로고침 지속성
  • 모두 동의
  • 동의 상태의 새로고침 지속성
  • 사이트 데이터 삭제 후 쿠키 배너 재등장
  • layout/fallback mutual exclusion

모든 시나리오를 통과했습니다.

Automated Verification

  • Vitest: 24 files / 373 tests PASS
  • TypeScript type check: PASS
  • PHP isolated regression tests: PASS
  • Vite static build: PASS
  • Plugin install/update lifecycle: PASS
  • Public layout API: PASS
  • GDPR settings API: PASS
  • Consent status API: PASS

Environment

  • PHP 8.2+
  • Laravel 12.x
  • Gnuboard7 Plugin Architecture
  • TypeScript
  • Vite

Installation

Gnuboard7 관리자 페이지의 플러그인 관리에서 GitHub 저장소를 이용하여 설치할 수 있습니다.

Repository:

git@github.com:glitter-node/glitter-gdpr.git

Release tag:

v0.5.2

Provenance

glitter-gdpr는 Glitter.kr가 독립적으로 유지보수하는 Gnuboard7 플러그인입니다.

현재 프로젝트에서 사용하던 맞춤 sirsoft-gdpr 구현을 기반으로 독립적인 namespace, route, permission, settings, frontend runtime, asset, cookie 및 database identity를 갖도록 분리되었습니다.

공식 SIRSOFT 또는 공식 Gnuboard7 플러그인 릴리스가 아닙니다.