라운드 접수량 버그 수정 + 토큰→코인 용어 통일 + 외부 배포(NAS)

플레이 피드백 4건(주목도 미차감, 상점 빈 상품, 상점 UX 오해, 재화 명칭)을
검토해 방향이 확정된 항목만 반영하고, 외부 테스터에게 링크를 공유할 수 있게
시놀로지 NAS 배포까지 준비했다.

## 게임 로직

- 라운드 접수량 크리티컬 버그 수정: 합본을 반복하면 라운드가 안 끝나던 문제.
  deskCards에서 파생시키던 값을 순수 누적 카운터(roundIntake)로 교체 — 결정
  노트: 2026-09-18-라운드-접수량-누적카운터
- DeskBar/CoreSwipeCard 정보 역할 분리: "이번 라운드 접수량/한도"는 결재
  화면 전담, DeskBar는 책상에 쌓인 것(총 주목도·축별 분포)만 표시
- 토큰 → 코인 용어 일괄 변경: core/ 전체(식별자·CSS·주석·UI)와 기획서 SSOT
  동기화, lucide Coins 아이콘 추가

## 배포

- vite base를 상대 경로로 변경 (Web Station 서브패스 서빙 시 asset 404 방지)
- 모바일 100vh → 100dvh (주소창 노출 시 하단 버튼 가림 방지)
- 빌드 식별자 표시, 타이틀/테마색/description 정리
- deploy.sh + npm run deploy — SSH 키 권한 문제(777 → StrictModes 거부)와
  NAS rsync 게이트를 scp -O로 우회해 실제 배포까지 검증 완료
  → https://play.mint-grape.duckdns.org/projectss/

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
kyoung5seo
2026-09-18 23:20:22 +09:00
co-authored by Claude Sonnet 5
parent 6398599199
commit 20207ff23c
27 changed files with 451 additions and 239 deletions
+12 -12
View File
@@ -41,7 +41,7 @@
font-weight: 700;
}
.audit-met { color: var(--color-token-budget); }
.audit-met { color: var(--color-coin); }
.audit-short { color: var(--color-risk-critical); }
.council-audit-breakdown {
@@ -50,7 +50,7 @@
margin: 6px 0 12px;
}
.council-token-pay {
.council-coin-pay {
display: flex;
align-items: center;
gap: 8px;
@@ -62,7 +62,7 @@
border-radius: 5px;
}
.council-token-pay button {
.council-coin-pay button {
background: rgba(255, 255, 255, 0.1);
border: none;
color: var(--color-text);
@@ -72,18 +72,18 @@
cursor: pointer;
}
.council-token-pay button:disabled {
.council-coin-pay button:disabled {
opacity: 0.3;
cursor: not-allowed;
}
.council-token-committed {
.council-coin-committed {
min-width: 14px;
text-align: center;
color: var(--color-token-budget);
color: var(--color-coin);
}
.council-token-note {
.council-coin-note {
opacity: 0.5;
font-size: 11px;
}
@@ -168,7 +168,7 @@
}
.council-justification-item button:hover {
border-color: var(--color-token-budget);
border-color: var(--color-coin);
}
.council-justification-item button:disabled {
@@ -223,7 +223,7 @@
}
.council-candidate.forced {
border-color: var(--color-token-budget);
border-color: var(--color-coin);
}
.candidate-name {
@@ -259,7 +259,7 @@
.council-required-delta {
font-size: 11px;
color: var(--color-token-budget);
color: var(--color-coin);
font-weight: 400;
}
@@ -306,7 +306,7 @@
.candidate-votes.lead {
opacity: 1;
color: var(--color-token-budget);
color: var(--color-coin);
font-weight: 700;
}
@@ -317,7 +317,7 @@
}
.council-candidate.winning {
border-color: var(--color-token-budget);
border-color: var(--color-coin);
}
.council-candidate.added {