게임·입장 UX와 물리/고지 개선을 반영한다.

비행기(세계여행) 칸 선택 이동, 주사위 무게감, 설정 패널·주사위 초기화,
개인정보 고지·파비콘·탭 제목을 정리하고 런타임 로그는 추적에서 제외한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
kimyu
2026-09-21 12:50:22 +09:00
parent 73520f9f06
commit 347dfc1f4a
21 changed files with 316 additions and 148 deletions

View File

@@ -17,6 +17,7 @@ export type OAuthStatePayload = {
cheesePerDice?: number;
multiplyByCheese?: boolean;
maxMultiplier?: number;
resetDiceQueue?: boolean;
/** unix ms */
exp: number;
};
@@ -116,6 +117,7 @@ export function createOAuthState(input: {
cheesePerDice?: number;
multiplyByCheese?: boolean;
maxMultiplier?: number;
resetDiceQueue?: boolean;
}) {
const state = b64urlEncode(randomBytes(24));
const payload: OAuthStatePayload = {
@@ -123,6 +125,7 @@ export function createOAuthState(input: {
cheesePerDice: input.cheesePerDice,
multiplyByCheese: input.multiplyByCheese,
maxMultiplier: input.maxMultiplier,
resetDiceQueue: input.resetDiceQueue,
exp: Date.now() + 10 * 60 * 1000,
};
return { state, sealed: seal(payload) };

View File

@@ -270,6 +270,14 @@ export function addDice(roomId: string, count = 1) {
return room;
}
/** 남은 주사위 큐를 0으로 초기화 */
export function clearDiceQueue(roomId: string) {
const room = getRoom(roomId);
if (!room) return null;
room.diceQueue = 0;
return room;
}
export function toPublicRoom(room: RoomRecord): PublicRoomState {
return {
id: room.id,