Files
playuniare.sori.studio/docs/update.md

4.3 KiB
Raw Blame History

버그 수정 및 작업 기록

2026-06-19

  • Vue 3와 Vite 기본 프로젝트를 생성했다.
  • Tailwind CSS Vite 플러그인을 적용했다.
  • 기본 샘플 화면을 프로젝트 안내 화면으로 교체했다.
  • UGREEN NAS Docker 테스트·운영 배포 문서를 작성했다.
  • AI 작업 지침과 초기 명세, 화면 구조, 할 일, 의사결정 문서를 추가했다.
  • Vue 프로덕션 빌드, Docker Compose 설정, Docker 이미지 빌드와 Nginx 헬스체크를 검증했다.
  • NAS의 기존 uniare/config/www/images를 읽기 전용으로 공유하는 Compose 설정과 /card-assets Nginx 경로를 추가했다.
  • 로컬 Socket.IO 기본 포트를 31873으로 변경하고 운영 리버스 프록시 원칙을 문서화했다.
  • NAS HTTP 포트 충돌을 해결하기 위해 테스트·운영 포트를 환경변수로 변경하고 port is already allocated 복구 절차를 추가했다.
  • NAS ACL로 인한 카드 이미지와 favicon의 403 오류를 해결하기 위해 Nginx 워커 UID와 정적 파일 권한을 조정했다.
  • 테스트는 로컬에서 수행하고 NAS에는 운영 컨테이너만 배포하도록 Compose와 배포 문서를 단순화했다.
  • 운영 주소 http://playuniare.sori.studio와 향후 데이터 마이그레이션 원칙을 문서화했다.
  • 3840×2160 표준 플레이 보드를 반응형 화면에 적용하고 카드 크기 기준 가이드를 추가했다.
  • 보드 좌우 여백에 양쪽 플레이어의 라이프와 상태 정보를 표시하는 패널을 배치했다.
  • /card-assets의 실제 카드 한 장을 보드 기준 크기로 표시하고, 보드 정규화 좌표를 사용하는 마우스·터치 드래그를 구현했다.
  • 로컬 개발에서 운영 카드 자산을 사용할 수 있도록 .env.local 예시를 현재 운영 주소로 수정했다.
  • 화면과 배포 점검에 사용하는 기준 카드를 ua01/EX02BT_CGH-2-007.png로 변경했다.
  • 선택 카드 조작 바를 추가하고 앞면·뒷면, 탭·언탭, 맨 위 레이어 이동을 구현했다.
  • 카드 뒷면 임시 스타일과 키보드 포커스 선택을 추가했다.
  • 독립 카드 인스턴스 3장을 겹쳐 배치하고 선택·드래그 시 최상단으로 올리는 레이어 처리를 추가했다.
  • 선택 카드의 정규화 좌표와 상태를 표시하고 탭 회전 상태의 보드 경계 계산을 보강했다.
  • 기존 덱 빌더의 series와 cards 쿼리를 검증해 카드 수량만큼 독립 인스턴스로 확장하는 덱 파서를 추가했다.
  • 불러온 카드를 내 덱 영역에 뒷면으로 쌓고 잘못된 항목은 오류로 표시한다.
  • 게임 화면의 고정 헤더를 제거하고 16:9 보드가 뷰포트를 최대한 채우도록 변경했다.
  • F 키 전체화면, 카드 더블클릭 탭·언탭, 우클릭 카드 조작 메뉴를 추가했다.
  • 내 덱의 1장 드로우와 셔플을 구현하고 손패 카드를 화면 하단에 자동 정렬하도록 했다.
  • 우클릭 메뉴에 손패, 덱 위, 덱 아래, 무덤 이동 명령을 추가하고 영역별 덱·손패 카운터를 연결했다.
  • 덱 위에서 1~10장을 공개해 중앙에 정렬하고 각 카드를 기존 우클릭 메뉴로 정리하는 기능을 추가했다.
  • Vue Router와 Pinia를 도입하고 메인 화면을 비공개 방 대기실로 변경했다.
  • 덱 URL 등록과 50장·동일 카드 4장·트리거별 4장·AP 분리 검증을 추가했다.
  • 게임 진입 후 첫 손패 7장, 1회 멀리건, 라이프 7장 세팅을 구현했다.
  • 턴 시작 시 선후공별 AP·드로우를 처리하고 잠기지 않은 내 필드 카드를 일괄 언탭하도록 했다.
  • 게임 보드 기능이 커짐에 따라 후속 작업에서 영역 상태와 조작 로직을 composable·store로 분리할 항목을 등록했다.
  • Socket.IO 서버와 실제 방 생성·참가·덱 등록·준비 동기화를 추가했다.
  • 두 플레이어가 모두 준비하면 각 좌석에 맞는 게임 시작 정보를 전달하도록 구현했다.
  • 방을 이동할 때 이전 Socket.IO 채널에서 확실히 나가도록 정리했다.
  • Nginx의 /socket.io 프록시와 Docker 내부 실시간 서버 서비스를 추가했다.
  • 방 생성부터 양쪽 게임 시작까지 검증하는 2인 통합 테스트를 추가했다.