terms: agreement pages + site Notion-style editor + rp cancel fix

- 5종 약관(map/resourcepack/mod/installer/installer-rp) markdown 시드 + manifest/terms/ 노출
- 사이트 /op/agreement 목록 + Notion 스타일 markdown 에디터 (슬래시 명령어, 미리보기)
- 메인 installer: 음악퀴즈 선택 직후 약관 동의 페이지(맵·모드·설치기) 추가
- rp installer: 음악퀴즈 선택 직후 약관 동의 페이지(리소스팩·설치기) 추가
- rp installer 취소 버그 수정: buildResourcepackZip 단계간 + archive.abort() 폴링
- rp installer 취소 UX: 즉시 "취소 중…" 표시, 취소 시 installFailed 알림 생략
- 0.2.6 → 0.3.0 (큰 기능)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-20 00:55:36 +09:00
parent bc3841147f
commit ffb2048627
26 changed files with 1323 additions and 18 deletions

View File

@@ -155,6 +155,49 @@ main {
.toggleRow { display: flex; align-items: center; gap: 10px; margin: 8px 0; }
/* 약관 동의 페이지 — 탭 + 약관 본문 박스. */
.tabBar { display: flex; gap: 6px; margin: 12px 0 0; flex-wrap: wrap; }
.tabBtn {
background: transparent;
border: 1px solid var(--border);
color: var(--text);
padding: 6px 14px;
border-radius: 8px 8px 0 0;
cursor: pointer;
font-size: 13px;
}
.tabBtn.active {
background: var(--bg-card);
border-bottom-color: var(--bg-card);
color: var(--accent, #6cf);
font-weight: 600;
}
.agreementBody {
background: var(--bg-card);
border: 1px solid var(--border);
padding: 14px 18px;
border-radius: 0 10px 10px 10px;
max-height: 320px;
overflow-y: auto;
font-size: 13px;
line-height: 1.65;
}
.agreementBody h1, .agreementBody h2, .agreementBody h3 { margin: 12px 0 6px; }
.agreementBody h1 { font-size: 17px; }
.agreementBody h2 { font-size: 15px; }
.agreementBody h3 { font-size: 14px; }
.agreementBody p { margin: 6px 0; }
.agreementBody ul, .agreementBody ol { margin: 6px 0; padding-left: 22px; }
.agreementBody li { margin: 2px 0; }
.agreementBody code { background: rgba(255,255,255,0.08); padding: 1px 4px; border-radius: 3px; font-family: 'Consolas', monospace; }
.agreementBody pre { background: rgba(0,0,0,0.3); padding: 8px 10px; border-radius: 6px; overflow-x: auto; }
.agreementBody pre code { background: none; padding: 0; }
.agreementBody blockquote { margin: 6px 0; padding-left: 10px; border-left: 3px solid var(--border); color: #aab; }
.agreementBody details { margin: 6px 0; }
.agreementBody details > summary { cursor: pointer; padding: 4px 0; }
.agreementBody hr { border: none; border-top: 1px solid var(--border); margin: 10px 0; }
.agreementBody a { color: var(--accent, #6cf); }
.modalOverlay {
position: fixed;
inset: 0;