
codename.swtiger.site
시작하려면 로그인이 필요합니다.
한 단어에 모든 걸 건다 — 스파이마스터의 짜릿한 두뇌 싸움. 코드네임은 레드·블루 두 팀으로 나뉘어, 보드 위 단어 카드 중 우리 팀 카드를 먼저 모두 찾아내면 이기는 실시간 팀 추리 게임이에요. • 팀 대결 — 동료와 호흡을 맞춰 상대보다 한발 빠르게. • 스파이마스터의 한 마디 — 단어 하나와 숫자로 여러 카드를 가리켜요. 적 카드와 암살자는 피하면서! • 제한시간의 긴장감 — 타이머가 흐르는 동안 과감하게 결정하세요. • 매너가 곧 실력 — 방해 플레이는 '신고하기'로, 모두가 즐거운 한 판을. 규칙은 1분이면 충분, 재미는 끝이 없어요. 지금 바로 한 판 시작해 보세요!
픽쳐스 개선 & 신고·기록 안정화
🖼️ 픽쳐스 모드 • 카드 이미지가 깜빡이던 현상을 해결했어요. • 그림 카드의 키워드가 선택·정답 공개 시에도 보이지 않도록 가렸습니다. 🚨 제시어 신고(AI 판정) 기능이 다시 정상 동작합니다. 💾 게임 기록 저장 기능을 복구했습니다.
코드네임 v1.9.0 — 대규모 업데이트
이번 업데이트로 게임 모드·신고·픽쳐스·전적·단어팩·접속 환경이 크게 개선됐습니다. ### 🎮 게임 모드 - **2인 / 3인 협력 모드** 추가 (공식 룰북 기반의 협력 플레이). - **숙련자(Expert) 룰 모드**: 0·무제한 단서를 허용. 상점에서 '숙련자 룰'을 보유한 방장이 켤 수 있습니다. ### 🚨 신고(단서 판정) - 허브 **'신고권' 연동**: 본인이 신고권을 보유했을 때만 신고할 수 있고, 판정이 성립하면 1개가 소모됩니다. - AI 심판에 **보드 단어 전체**(공개/미공개 표시 포함)를 전달해, 보드 단어와의 포함·파생(규칙 3) 판정 정확도를 높였습니다. ### 🖼️ 픽쳐스 모드 - 공개 / 미공개 카드 **구별 강화**. - 카드 **이미지 확대(라이트박스)** 추가. 확대 모달 제목에서 정답이 새지 않도록 키워드를 제거했습니다. ### 🛠️ 진행 · 편의 - **방장 전용 '게임 종료'** (아무 턴도 진행되지 않은 상태에서만). - 결과 화면 버튼 워딩 정리: **'새 게임' / '바로 다시하기'**. - **카카오톡 인앱 브라우저** 접속 시 외부 브라우저로 열도록 안내. - 이름을 한국식 **'성 + 이름'** 순서로 표기. ### 📊 전적 - **역할별 승률** 추가: 팀장(스파이마스터)과 팀원(오퍼레이티브)의 승·패·승률을 분리해서 보여줍니다. (기존 전적에도 소급 적용) ### 📚 단어팩 - **'애니메이션' · '웹툰' 단어팩** 추가 (상점에서 구매해 해금). ### 🌐 접속 환경 - **브라우저 확대(핀치/더블탭) 방지**로 게임 화면이 깨지지 않도록 개선. - **도메인 이전**: dongku.kim → **codename.swtiger.site** (기존 주소로 접속해도 자동 이동됩니다).
브라우저 확대(줌) 방지
게임 화면이 핀치 줌/더블탭 줌으로 깨지지 않도록 브라우저 확대를 차단했습니다. • viewport + touch-action(manipulation)로 더블탭 줌 차단 • iOS 사파리 제스처/멀티터치/트랙패드 핀치 줌 차단(JS) • 내부 스크롤·버튼·이미지 확대 모달은 정상 동작
전적: 역할별 승률 추가
전적 화면에 역할별 승률을 추가했습니다. • 팀장(스파이마스터) 승률 — 승/패 함께 표시 • 팀원(오퍼레이티브) 승률 — 승/패 함께 표시 역할은 게임 시작 시 고정되어 기록되므로 기존 전적에도 소급 적용됩니다.
애니메이션·웹툰 단어팩 추가
새 단어팩 2종을 추가했습니다. • 애니메이션 단어팩 (126단어) — 장르·연출·제작 등 애니 일반 어휘 • 웹툰 단어팩 (120단어) — 연재·장르·연출 등 웹툰 일반 어휘 두 팩은 상점에서 구매(허브 보유) 시 방장이 선택해 해금할 수 있습니다.
전적 초기화권 (상품 500인텔 등록 + 사용)
· 허브에 '전적 초기화권'(codenames-record-reset) 상품 등록 — 소모성, 500 인텔, ACTIVE, 코드네임 연결 · 내 전적 화면에 '전적 초기화권으로 초기화' 버튼 — 보유 확인→1 소모→전적(game_players) 초기화. 서버 권위, 미보유 시 상점 안내 · db.js deleteUserHistory 추가
신고 판정 전체 보드 전달 + 픽쳐스 공개구분/확대제목
· 신고 LLM 판정에 보드 '전체 단어'(공개+미공개)를 revealed 플래그와 함께 전달 — 단어(공개됨/미공개) 형태. 규칙3은 미공개 단어만 적용(공개 단어는 단서 허용), 라이브 검증 통과 · 픽쳐스 공개/미공개 구별 강화: 공개=강한 디밍+✓ 표시+팀색/배지, 미공개=선명+그림자(클릭감). 색약 대응(명도+아이콘) · 이미지 확대 모달 제목에서 키워드/식별자 제거 → '이미지'(+팀색 태그), alt 비움
신고 판정: 보드 단어-단서 포함관계(규칙3) 강화
· 신고 LLM 판정에 보드 미공개 단어 목록이 전달됨을 확인(전달 O: visibleWords→judgeClue→프롬프트) · 규칙3 프롬프트 강화: 목록의 각 단어와 단서를 1:1 대조해 (a)동일어 (b)어근 활용/파생형 (c)구성요소(합성어/부분단어, 양방향) 위반 판정 — 예 HORSESHOE↔horse, 바다↔바닷가 · 우연한 글자 겹침(CAR↔card)·정상 범주어(동물)는 위반 아님으로 유지, 그림 모드는 규칙3 제외 유지 · 라이브 LLM 4케이스 검증 통과, 정답 유출 방지(사유 서버 전용) 유지
방장 게임 종료(취소) + 결과화면 버튼 워딩
· 방장만: 게임이 시작됐지만 아직 아무 턴도 진행 전(단서 0·공개 0·turnCount 0)일 때 '게임 종료' 버튼으로 대기실로 취소 — 서버 권한·조건 검증, 종료 알림 · 결과화면 버튼 라벨 교체(동작 유지): '로비로'→'새 게임', '새 게임'→'바로 다시하기'
OIDC 클라이언트 rename: dongku-kim → codename
· Keycloak OIDC 클라이언트 clientId를 dongku-kim → codename으로 변경(내부 UUID·시크릿·redirect URI 유지) · 앱 OIDC_CLIENT_ID=codename · 로그인 URL/식별자에서 dongku-kim 제거 (로그인 테마는 codename 브랜딩 이미 지원)
SSO 리프레시 토큰 수명 연장 (offline_access)
· [원인] 온라인 리프레시 토큰이 SSO idle(30분)에 만료 → 인벤토리/인텔/신고권 등 늦은 허브 호출이 'token refresh failed (400)' · OIDC_SCOPE에 offline_access 추가 → 로그인 시 장수명 오프라인 리프레시 토큰(오프라인 세션 idle 30일, 재사용 가능) · 게임 세션 쿠키 수명 8시간 → 30일로 연장(오프라인 토큰과 일치) · 적용: 다음 로그인부터(기존 세션은 재로그인 시 전환)
신고권 연동 실제 활성화 (보유 확인 + 소모)
· [원인] REPORT_TICKETS 플래그가 off라 신고가 옛 인메모리 팀예산만 보고 통과 + 허브 consume:entitlements 스코프 미부여 · 허브 codenames 자격증명에 consume:entitlements 스코프 추가(보유유지) → 소모 API 호출 가능 · REPORT_TICKETS=1: 신고 전 본인 신고권 보유 확인(0이면 서버 차단), 판정 성립 시 1 소모(멱등), 소모 실패 시 신고 무효 — 서버 권위 · 신고권 0이면 버튼 비활성 + '상점에서 구매' 안내, 보유 수량 표시(게임 시작 시 조회·소모 시 차감)
브랜딩 전환: dongku.kim → 코드네임 / codename.swtiger.site
· UI/메타/OG의 dongku.kim 표기 제거 → 코드네임(og:site_name)·codename.swtiger.site · 캐노니컬/OG 절대경로(SITE_URL) 기본값 codename.swtiger.site로, .env에 명시(추상화) · 로그인 스플래시 헤딩/alt 코드네임으로 · OIDC 클라이언트 템플릿(scripts) 새 도메인 기준으로 갱신 (clientId 'dongku-kim'은 등록 식별자라 유지)
PWA 설치 권고 + 매니페스트/서비스워커
· 홈 화면 추가(PWA) 설치 권고 바텀시트 — 안드로이드 beforeinstallprompt 설치 버튼 / iOS 사파리 '공유→홈 화면에 추가' 안내 · 스탠드얼론(설치됨)·인앱 브라우저(카톡 등)에선 미표시, '나중에/다시 보지 않기' 기억 · manifest·service worker·앱 아이콘(192/512) 추가로 실제 설치 가능
픽쳐스 카드 가시성 + 이미지 확대
· 픽쳐스 공개 카드에 팀색 틴트·두꺼운 테두리·색약 대응 배지(🔴레드/🔷블루/💀암살자/⬜방관자) 표시 — 공개 카드 정체가 한눈에 · 스파이마스터는 미공개 카드도 옅은 팀색으로 정답 미리보기(단어 모드와 동일) · 일러스트 카드 확대(🔍 버튼 또는 카드 탭) 라이트박스 추가 — 추측 클릭과 분리
내 아이템 진단 로깅 + 세션 만료 안내
· '내 아이템' 실패 원인을 서버 로그에 기록(토큰 갱신 실패 사유 캡처) · 로그인 세션 만료 시 '다시 로그인' 안내로 전환 · 허브 아이템 type 필드를 신규 consumable 스키마에 맞춤
인앱 브라우저 로그인 차단 화면 (SSR)
· 카카오톡 등 인앱 브라우저로 접속 시, 로그인 자동 이동 전에 '외부 브라우저로 열기' 안내 화면을 서버에서 먼저 표시 (주소 복사·안드로이드 외부 열기 지원) · OG 미리보기 태그는 그대로 유지
2인 협력·숙련자 룰·신고권·인앱브라우저 안내
· 2인 협력 모드 추가: 한 팀 + 시뮬레이션 상대, 매 턴 팀장이 적 카드 1장을 직접 덮는 전략·점수제 (공식 협력 변형) · 숙련자 룰(추가 옵션): 0 단서(무제한 추측·관련 없음)와 무제한 단서 지원, 상점에서 '숙련자 룰' 보유 시 켜기 가능 · 신고하기를 허브 신고권 보유·소모와 연동 (서버 권위, 단계적 활성화) · 카카오톡 등 인앱 브라우저 접속 시 외부 브라우저 안내 + 주소 복사/외부 열기 · 룰북에 2인·숙련자 룰 반영
3인 플레이 모드 추가
· 3인 경쟁 모드: 레드/블루 팀장 2명 + 공용 팀원 1명 (공식 경쟁 변형) · 3인 협력 모드: 팀 1개 + 시뮬레이션 상대, 점수제 (공식 협력 변형) · 룰북에 3인 플레이 공식 변형 설명 추가 · 상점 바로가기 링크를 코드네임 전용(?game=codenames)으로 연결
표시 이름 한국식 '성이름' 표기
SSO 프로필의 family_name(성)·given_name(이름)을 '성이름' 순(가족명 먼저)으로 조합해 표시합니다. 예) family=홍, given=길동 → 홍길동 로비 참여자·팀(레드/블루)·팀장/팀원·인게임 참여자 현황·전적/기록 등 이름이 보이는 모든 곳에 적용. 성/이름 정보가 없으면 기존 name → username 순으로 폴백.
참가 버튼 크기 조정
랜딩 화면의 '참가' 버튼을 '방 만들기' 버튼과 동일한 크기(가로 꽉 채움)로 변경했습니다.
모바일 로비 UI 개선
모바일(아이폰 ~390px) 로비 화면 UI 개선: • 내 전적/내 아이템/상점 버튼 라벨 줄바꿈 깨짐 수정 • 단어팩 상점·새로고침 버튼을 별도 행으로 정리 + 문구 개선 • 팀 목록을 모바일에서 세로 배치(닉네임·방장·강퇴 가독성 향상) • iOS 하단 safe-area 대응으로 하단 컨트롤 잘림 방지 • 가로 오버플로 방지