Commit Graph
88 Commits
Author SHA1 Message Date
Hide_D c1d5a80f79 fix: 배포 중 화면 유지와 자동 재연결 적용
정상 DEPLOY 중에는 기존 정적 프론트엔드를 유지하고 새 artifact 준비 후 전환합니다. 게임 화면은 일시적인 gateway 오류를 별도 상태로 표시하고 읽기 전용 probe로 제한적으로 복구합니다.
2026-08-27 02:08:44 +00:00
Hide_D 9613b482c1 feat: 일괄 릴리스 실행 계획을 추가한다
Gateway와 권한 있는 프로필 작업을 하나의 고정 커밋과 순서로 영속화한다. 앞 대상 성공 뒤 다음 작업을 claim하고 실패 대상은 같은 작업 ID로 재시도한다.
2026-08-25 09:19:12 +00:00
Hide_D 93684f12fa fix(gateway): RESET seed 산출물 재사용을 검증한다
DB 보존 DEPLOY가 만든 부분 빌드 worktree를 RESET-ready로 오인하지 않도록 실제 game API와 profile seed entrypoint를 확인한다. seed 전환 전 built CLI도 재검증해 산출물 누락 시 기존 runtime을 먼저 내리지 않는다.
2026-08-25 00:59:15 +00:00
Hide_D ce0c9e257d feat: 예약 초기화 중간 버전 업데이트를 허용한다
미래 예약 RESET을 보존하면서 DB 유지 DEPLOY 한 건을 별도 queue lane에 등록한다. 예약 시각까지 시작되지 않은 중간 배포는 RESET claim 전에 자동 취소하고 관리자 화면에 이 경계를 안내한다.
2026-08-24 13:22:19 +00:00
Hide_D 7a1254cb3a fix: 투표 UTC wall과 migration 시간대 경계를 고정한다 2026-08-24 09:18:42 +00:00
Hide_D d80ea1bd0e fix: Gateway 화면에서 raw 프로필 ID 노출을 제거한다
불변 profileName은 라우팅과 저장 경계에 유지하고 사용자 출력은 공통 표시명을 사용한다. 기본 인스턴스 suffix를 숨기고 비기본 인스턴스만 사람이 읽을 수 있게 구분한다.
2026-08-24 07:15:25 +00:00
Hide_D 39bf49bdaa fix: Gateway 기수 표시명을 명예의 전당과 왕조에 전달한다
RESET에서 Gateway의 한국어 표시명을 기수 메타데이터로 저장하고 통일 archive가 내부 profile key 대신 해당 snapshot을 사용하도록 한다. seeder와 Hall/왕조 투영 회귀 테스트를 함께 추가한다.
2026-08-24 04:38:40 +00:00
Hide_D f8fb570dac feat: 오프너의 천하통일 서버 정리를 허용한다
시나리오 초기화 권한 범위에서 실제 game DB의 통일 상태를 재검증한 뒤 완료 서버만 STOPPED로 정리한다. 런타임 전체 권한은 확대하지 않고 DB와 완료 기록을 보존한다.
2026-08-24 01:55:31 +00:00
Hide_D 14ffa76c49 feat: 예약 오픈 일정을 빌드 전에 공개
초기화 예약의 공개 선택을 operation payload에 저장하고 로비에서 준비 단계별로 표시합니다. RESERVED 인계와 STOPPED 무요청 경계를 테스트합니다.
2026-08-23 13:59:31 +00:00
Hide_D 0e3292f591 feat: 오래된 프런트엔드 빌드 자산을 안전하게 정리한다
현재·이전 release와 공유 asset 의존성, 진행 중 commit을 보호하고 24시간 유예 및 최신 2개 cache를 적용한다.

Gateway와 profile daemon의 기존 24시간 관리 주기에 artifact cleanup을 포함하고 fail-closed 회귀 테스트와 운영 문서를 보강한다.
2026-08-23 01:55:22 +00:00
Hide_D ade543f936 perf: 프로필 프런트엔드 자산을 커밋 단위로 공유한다
정적 운영 빌드에서 프로필별 base와 API 설정을 런타임 JSON으로 분리하고, 공용 Vite 번들과 sourcemap을 한 번만 생성·게시한다. Preview와 기존 정적 artifact의 전환 호환 경계는 유지한다.
2026-08-22 17:54:43 +00:00
Hide_D c2e1b8bf94 fix(gateway): 프로필 런타임 DB URL을 고정한다
game API와 daemon, worker PM2 정의에 인코딩된 profile DATABASE_URL을 명시한다. migration 성공 뒤 runtime과 rollback이 raw POSTGRES 비밀번호로 실패하는 경로를 회귀 테스트한다.
2026-08-22 16:06:14 +00:00
Hide_D 4b39be5997 fix(gateway): 프로필 DB URL 인코딩을 보존한다
Gateway orchestrator의 profile migration과 runtime이 GATEWAY_DATABASE_URL에서 schema만 바꾸도록 통일한다. 특수문자 비밀번호를 raw POSTGRES 값으로 재조합하지 않는 DEPLOY 회귀 테스트를 추가한다.
2026-08-22 15:50:53 +00:00
Hide_D eb77ea8e7e fix(gateway): 전용 데이터베이스 URL을 우선 사용한다
릴리스 프로세스가 전달한 GATEWAY_DATABASE_URL을 API와 orchestrator가 직접 사용하도록 고친다. 원시 POSTGRES_* 재조합으로 특수문자 비밀번호가 깨지는 회귀를 테스트한다.
2026-08-22 10:51:29 +00:00
Hide_D d3e5d12cbf feat(release): 정적 프런트엔드와 격리 빌더를 도입한다
Gateway와 프로필 릴리스가 불변 프런트엔드 아티팩트를 원자적으로 게시하고 실패 시 이전 포인터를 복구하도록 한다.

릴리스 빌드는 전용 builder protocol로 분리하고 성공한 Gateway 커밋을 재기동용 Git ref에 고정한다.
2026-08-22 09:32:47 +00:00
Hide_D f6f764da7f fix: 가오픈 동안 서버 게임 시계를 정지한다
정식 오픈 시각을 게임 시계 anchor로 전달하고, API가 실제 진행 상태와 시작 경계를 반환하게 한다. 프론트는 추가 조회 없이 경계에서 자동으로 시계를 시작한다.
2026-08-21 16:57:42 +00:00
Hide_D 88be40f729 feat(gateway): 프로필별 첫 기수 번호를 관리한다
첫 기수 번호를 완료 게임 수의 기준값으로 적용하고 0기를 API와 화면에서 보존한다. 시즌 번호와 독립된 RESET 계약을 관리 패널, 테스트, 운영 문서에 반영한다.
2026-08-21 13:49:11 +00:00
Hide_D 2b08fe5a9f fix: Gateway 후속 프로필 큐 정체를 자동 복구
PM2 Node client 세션을 직렬화하고 callback timeout 뒤 다음 orchestrator poll이 계속 진행되게 한다. 운영 판별과 제한 복구 경계 및 회귀 테스트를 함께 기록한다.
2026-08-21 02:04:01 +00:00
Hide_D 4da250bc6e merge: 최신 main을 게임 버전 표시에 통합 2026-08-21 01:28:58 +00:00
Hide_D 566df550cf feat: 게임 정보에 빌드 커밋 표시
프로필 배포가 고정한 전체 커밋 SHA를 프론트 빌드와 Turbo 캐시 입력에 전달한다. 게임 정보 대화상자와 데스크톱·모바일 Chromium 검증을 함께 보강한다.
2026-08-21 01:28:49 +00:00
Hide_D c5a41b23a8 fix(gateway): 초기화 예약 수명주기를 정합화
초기화 시작과 가오픈·정식 오픈 시각의 의미를 분리하고, 미래 가오픈 전에는 준비된 프로필을 RESERVED로 유지합니다.\n\n가오픈 시각에는 재빌드 없이 PREOPEN으로 전환하며 관리자 화면 도움말과 API·오케스트레이터·Chromium 회귀 검증을 보강합니다.
2026-08-21 01:18:07 +00:00
Hide_D 1279a68f1c fix(gateway): 배포 worktree 자동 정리 추가
Profile과 Gateway release의 현재 실행 및 rollback 경계를 보호하면서 오래된 commit worktree를 주기적으로 정리한다.
2026-08-20 16:25:40 +00:00
Hide_D 466f030889 fix: 실행 중인 릴리스 빌드를 안전하게 중단
Gateway와 프로필 DEPLOY의 빌드 단계만 취소하고 lease와 phase 전환을 직렬화한다. 관리자 화면에 중단·재시도 절차와 회귀 검증을 추가한다.
2026-08-20 02:27:52 +00:00
Hide_D b9d5edbb3d perf: 릴리스 프론트엔드 빌드를 안전하게 캐시
Gateway와 Profile 릴리스의 타입검사와 Vite 번들을 별도 Turbo 작업으로 캐시한다. DB 보존 DEPLOY는 game-api만 빌드하고 기본 동시성 1과 기존 산출물 계약은 유지한다.
2026-08-19 18:05:38 +00:00
Hide_D 4977fb615d fix: 일반 리셋이 서버 지정 브랜치를 추적
상위 배포 권한자가 선택한 branch 또는 commit 정책을 profile metadata에 보존하고 일반 시나리오 초기화가 이를 따르도록 변경한다. 같은 active commit의 설치 완료 workspace는 빌드를 생략하고 기존 migration, seed, readiness 흐름을 유지한다.
2026-08-19 13:42:52 +00:00
Hide_D 04fc7dfe52 fix: 프로필 프론트 빌드 heap을 분리
운영 runtime의 공용 Node heap은 유지하면서 profile vue-tsc와 Vite build에만 별도 NODE_OPTIONS를 적용한다.\n\nsam.hided.net HWE에서 확인한 1536 MiB heap OOM을 2048 MiB build override로 처리할 수 있도록 회귀 테스트와 운영 문서를 추가한다.
2026-08-19 13:20:40 +00:00
Hide_D 383d173790 feat: 오픈 게임 취소와 유산 정산 경로 추가
별도 최고위험 권한으로 실행되는 원자적 취소 작업을 추가한다. 버려진 게임과 장수 기록의 보존·삭제 옵션, 오픈 원금 전액 환급 및 획득 포인트 보전율, 취소 상태와 관리자·과거기록 UI를 함께 반영한다.
2026-08-18 13:31:49 +00:00
Hide_D 6f2d6f0379 perf: 프로필 DB 풀과 advisory lock 격리
역할별 PostgreSQL pool 상한과 동일 process 공유 pool을 적용하고 health 지표를 노출한다.\n\n게임 기능 advisory lock을 schema namespace로 통일하고 실제 PostgreSQL 통합 하네스를 보강한다.
2026-08-17 17:30:06 +00:00
Hide_D ca6823d409 feat: 실행 중 게임 옵션 변경을 지원
Gateway 관리 화면에서 현재 기수의 장수 생성 제한, 유저 자동턴, 턴 간격을 내구성 action으로 변경한다.

턴 간격 변경은 논리 tick과 현재 게임 시각을 보존하며 DB와 Redis의 tick 기반 시각을 재투영하고 기존 로그 timestamp는 유지한다.
2026-08-17 16:05:07 +00:00
Hide_D fb6add83a5 fix(gateway): 프로필 초기화와 전체 배포를 직렬화
진행 중인 프로필 RESET 또는 DEPLOY와 Gateway 전체 릴리스가 서로의 실행자를 중단하지 않도록 공통 advisory lock과 교차 RUNNING 검사를 추가한다. PostgreSQL 통합 테스트로 동시 claim과 후속 실행을 검증한다.
2026-08-17 14:41:18 +00:00
Hide_D 346f796cfc fix: 모든 토너먼트 writer의 source revision을 원자화
API store뿐 아니라 월 자동 개막과 runtime clock shift도 공통 Lua writer를 사용한다. 프로필 초기화 시 revision key도 함께 제거한다.
2026-08-16 18:49:33 +00:00
Hide_D 34a6be0c44 fix(game-engine): 밀린 턴을 월 경계별로 처리
실시간 게임 시계가 여러 달 앞선 경우 장수 턴을 현재 월 경계까지만 실행해 월 표시와 상태 전이 순서를 보존한다. 턴 데몬 전용 NODE_OPTIONS도 지원해 다른 런타임 프로세스와 heap 상한을 분리한다.
2026-08-16 06:48:35 +00:00
Hide_D 4f841ad82f fix(gateway): 일시정지와 서버 중지 상태 계약 분리 2026-08-15 17:12:13 +00:00
Hide_D 35d8824b95 refactor: tighten backend and logic boundaries 2026-08-15 06:46:52 +00:00
Hide_D 6478a9f478 fix(gateway): split profile identity from scenario 2026-08-13 16:03:41 +00:00
Hide_D 3620f79c6a feat(gateway): persist profile operation build logs 2026-08-11 15:11:27 +00:00
Hide_D 49970a0599 fix: bound release builds to one worker by default 2026-08-11 12:10:15 +00:00
Hide_D 3e938e17d6 perf: share Turbo cache across release worktrees 2026-08-11 11:59:18 +00:00
Hide_D 0c8185cfa9 fix(release): allow controller protocol self-upgrade 2026-08-11 00:01:47 +00:00
Hide_D 6bf8340a8a fix(release): fetch remote commit before self-upgrade 2026-08-11 00:00:02 +00:00
Hide_D c9e1200745 fix(gateway): require log-aware release controller 2026-08-10 23:58:02 +00:00
Hide_D d01be27828 feat(gateway): stream release progress logs 2026-08-09 09:50:06 +00:00
Hide_D 5e82fb52c6 fix: isolate child PM2 arguments 2026-08-08 15:05:55 +00:00
Hide_D 1a1d0b2d91 refactor: enforce package boundaries 2026-08-07 10:13:29 +00:00
Hide_D 76cf5cd597 fix: isolate profile frontend base paths 2026-08-05 00:30:18 +00:00
Hide_D b589f2edb2 fix(runtime): bound PM2 process restarts and identity 2026-08-04 16:01:43 +00:00
Hide_D 0550fc0587 fix(gateway): migrate fresh profile before reset state read 2026-08-04 15:08:33 +00:00
Hide_D 6e635a312f fix: support containerized release runtimes 2026-08-04 14:45:47 +00:00
Hide_D a26031dc3f feat: add logical game clock 2026-08-04 02:51:27 +00:00
Hide_D 8f5a5330ff fix(tournament): reset season runtime state 2026-08-02 04:45:07 +00:00