feat: About 다이얼로그 추가, UI 최적화 및 서버 캐싱 강화

- About 다이얼로그 추가 (개발자 정보 및 개인정보처리방침)
- Markdown 렌더러 구현 (Bold, Italic, Code, Blockquote 지원)
- 전투 화면 하단 'About' 및 방문자 카운팅 UI 재배치 및 디자인 통일
- 프로덕션 환경에서 정적 파일 강력 캐싱 설정 (7일 유지)
- 파비콘 404 오류 해결을 위한 이모지 데이터 URI 추가
- 모바일 전투 화면 레이아웃 최적화 및 승리 연출 개선
- 일일 운영 지표(Daily Metrics) 수집 API 및 로직 추가
This commit is contained in:
2026-05-23 11:32:01 +09:00
parent e4f542d487
commit 3e5c079e68
18 changed files with 1811 additions and 79 deletions
+106 -3
View File
@@ -4,6 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Arena Picker</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>⚔️</text></svg>">
<style>
html.app-booting,
html.app-booting body {
@@ -63,9 +64,21 @@
<span data-status-text>옵션 대기 중</span>
</div>
</div>
<p id="visitor-count" class="visitor-count" aria-live="polite">
방문자 확인 중
</p>
<div class="arena-meta">
<p id="visitor-count" class="visitor-count" aria-live="polite">
방문자 확인 중
</p>
<button
id="about-button"
class="about-button"
type="button"
aria-haspopup="dialog"
aria-controls="about-dialog"
aria-expanded="false"
>
About
</button>
</div>
</section>
<section class="intro-stage" aria-label="Arena 시작 화면">
@@ -207,6 +220,96 @@ Player 10</textarea
</div>
</form>
</aside>
<div id="about-dialog" class="about-backdrop" hidden>
<section
class="about-dialog"
data-about-dialog
role="dialog"
aria-modal="true"
aria-labelledby="about-dialog-title"
tabindex="-1"
>
<header class="about-header">
<div>
<p class="eyebrow">About</p>
<h2 id="about-dialog-title">개발자정보</h2>
</div>
<button
class="about-close"
data-about-close
type="button"
aria-label="About 닫기"
>
X
</button>
</header>
<div class="about-tabs" role="tablist" aria-label="About 메뉴">
<button
id="about-tab-developer"
class="about-tab"
data-about-tab="developer"
type="button"
role="tab"
aria-selected="true"
aria-controls="about-panel-developer"
>
개발자정보
</button>
<button
id="about-tab-privacy"
class="about-tab"
data-about-tab="privacy"
type="button"
role="tab"
aria-selected="false"
aria-controls="about-panel-privacy"
tabindex="-1"
>
개인정보처리방침
</button>
</div>
<section
id="about-panel-developer"
class="about-panel"
data-about-panel="developer"
role="tabpanel"
aria-labelledby="about-tab-developer"
>
<dl class="about-fields">
<div class="about-field-row">
<dt>alias</dt>
<dd data-about-field="alias">horoli</dd>
</div>
<div class="about-field-row">
<dt>email</dt>
<dd data-about-field="email">sunha321@gmail.com</dd>
</div>
<div class="about-field-row">
<dt>github</dt>
<dd data-about-field="github">
<a href="https://github.com/Horoli" target="_blank" rel="noreferrer">
https://github.com/Horoli
</a>
</dd>
</div>
</dl>
</section>
<section
id="about-panel-privacy"
class="about-panel"
data-about-panel="privacy"
role="tabpanel"
aria-labelledby="about-tab-privacy"
hidden
>
<div id="privacy-policy-content" class="about-markdown"></div>
</section>
</section>
</div>
</main>
<script type="module" src="/src/main.js"></script>
</body>