Compare commits

...
2 Commits
Author SHA1 Message Date
dal4segno c01a3e534b docs: add GitHub Pages repository README
Publish GitHub Pages output / publish (push) Successful in 47s
2026-08-31 14:12:12 +09:00
dal4segno bcd47d93e7 feat: add feedback form links 2026-08-31 14:03:50 +09:00
6 changed files with 80 additions and 3 deletions
+16
View File
@@ -78,6 +78,20 @@
<a href="#/combination" aria-current={currentPath.startsWith('/combination') ? 'page' : undefined}>조합 탐색</a>
{#if showEventTab}<a href="#/event" aria-current={currentPath.startsWith('/event') ? 'page' : undefined}>이벤트 Pt</a>{/if}
<a href="#/data" aria-current={currentPath.startsWith('/data') ? 'page' : undefined}>사용자 데이터</a>
<a
class="feedback-link"
href="https://docs.google.com/forms/d/1z9c0c1crbCO6avXaYwrHZjhw2ib3zgAmW4ijJDTo4DM"
target="_blank"
rel="noreferrer"
aria-label="버그 제보 Google 폼을 새 탭에서 열기"
>버그 제보 <span aria-hidden="true">↗</span></a>
<a
class="feedback-link"
href="https://docs.google.com/forms/d/16NcTst7Rpa9XzqYIfPa4t9JF2X0CMfYzEbZrT8PLqco"
target="_blank"
rel="noreferrer"
aria-label="기능 건의 Google 폼을 새 탭에서 열기"
>기능 건의 <span aria-hidden="true">↗</span></a>
<a
class="report-link"
href="https://docs.google.com/forms/d/1bShzsxNN-iTk0uU3RfMfmLkYXYmUTmIWMmCtQmfl_Ik"
@@ -136,6 +150,8 @@
}
nav a:hover { color: #e2e6ed; background: rgb(255 255 255 / 5%); }
nav a[aria-current='page'] { color: #f1a1c3; background: rgb(239 139 182 / 12%); }
.feedback-link { border: 1px solid #9f5877; color: #edb8cf; background: linear-gradient(135deg, #482c39, #38232e); box-shadow: 0 0 12px rgb(175 91 128 / 10%); }
.feedback-link:hover { color: #f6d5e3; background: linear-gradient(135deg, #583444, #472a37); box-shadow: 0 0 16px rgb(175 91 128 / 18%); }
.report-link { flex: 0 0 auto; padding: 8px 12px; border: 1px solid #ef8bb6; border-radius: 9px; color: #21121a; background: linear-gradient(135deg, #f3a3c5, #e77ead); box-shadow: 0 0 18px rgb(239 139 182 / 18%); font-size: 13px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.report-link:hover { color: #160d12; background: linear-gradient(135deg, #f8bad3, #ee94ba); box-shadow: 0 0 22px rgb(239 139 182 / 30%); }
.report-link span { margin-left: 2px; font-size: 11px; }
+32
View File
@@ -0,0 +1,32 @@
# 홀로도리 계산기
홀로도리의 라이브 편성·점수 분석과 카드, 보드, 악곡 정보를 확인할 수 있는 비공식 웹 도구입니다.
## 서비스
[홀로도리 계산기 열기](https://doricalc-holo.live/)
## 주요 기능
- 라이브 편성 및 점수 분석
- 카드와 보드 정보 확인
- 악곡 및 채보 데이터 조회
- 편성 조합 최적화와 이벤트 효율 비교
## 의견 보내기
- [버그 제보](https://docs.google.com/forms/d/1z9c0c1crbCO6avXaYwrHZjhw2ib3zgAmW4ijJDTo4DM)
- [기능 건의](https://docs.google.com/forms/d/16NcTst7Rpa9XzqYIfPa4t9JF2X0CMfYzEbZrT8PLqco)
- [데이터 오류 제보](https://docs.google.com/forms/d/1bShzsxNN-iTk0uU3RfMfmLkYXYmUTmIWMmCtQmfl_Ik)
## 데이터와 개인정보
서비스는 정적 GitHub Pages로 제공되며, 계산과 사용자 데이터 저장은 브라우저에서 처리됩니다. 공개 가능 시각과 승인 데이터 버전 검증을 통과한 데이터만 배포합니다.
## 저장소 안내
이 저장소에는 GitHub Pages 배포용으로 자동 생성된 파일만 있습니다. 원본 코드와 개발 데이터는 별도의 비공개 저장소에서 관리하며, 이 저장소의 파일은 자동 배포 과정에서 갱신될 수 있습니다.
## 비공식 서비스
이 서비스는 게임 공식 운영 주체와 관련 없는 비공식 팬 도구입니다.
+3 -1
View File
@@ -6,6 +6,7 @@ $ErrorActionPreference = 'Stop'
$projectRoot = Split-Path -Parent $PSScriptRoot
$siteSource = Join-Path $projectRoot 'pages-dist'
$readmeSource = Join-Path $projectRoot 'pages/README.md'
$workflowSource = Join-Path $projectRoot 'pages/deploy.yml'
$temporaryRoot = Join-Path ([System.IO.Path]::GetTempPath()) ("holodori-pages-{0}" -f [guid]::NewGuid().ToString('N'))
$checkout = Join-Path $temporaryRoot 'repository'
@@ -28,13 +29,14 @@ try {
if (Test-Path -LiteralPath $oldSiteTarget) {
Remove-Item -LiteralPath $oldSiteTarget -Recurse -Force
}
foreach ($generatedPath in @('assets', 'icons', 'index.html', 'README.txt', 'VERSION.txt', '.nojekyll')) {
foreach ($generatedPath in @('assets', 'icons', 'index.html', 'README.md', 'README.txt', 'VERSION.txt', '.nojekyll')) {
$target = Join-Path $resolvedCheckout $generatedPath
if (Test-Path -LiteralPath $target) {
Remove-Item -LiteralPath $target -Recurse -Force
}
}
Copy-Item -Path (Join-Path $siteSource '*') -Destination $resolvedCheckout -Recurse -Force
Copy-Item -LiteralPath $readmeSource -Destination (Join-Path $resolvedCheckout 'README.md') -Force
New-Item -ItemType File -Path (Join-Path $resolvedCheckout '.nojekyll') -Force | Out-Null
$workflowTarget = Join-Path $resolvedCheckout '.github/workflows'
+10 -1
View File
@@ -6,6 +6,7 @@ const htmlPath = path.join(output, 'index.html');
const scriptPath = path.join(output, 'assets', 'app.js');
const stylePath = path.join(output, 'assets', 'app.css');
const packageJson = JSON.parse(await readFile(path.resolve('package.json'), 'utf8'));
const isPagesBuild = path.basename(output) === 'pages-dist';
let html = await readFile(htmlPath, 'utf8');
html = html.replace(/<script type="module" crossorigin src=/g, '<script defer src=');
@@ -45,7 +46,15 @@ await writeFile(stylePath, style);
await rm(path.join(output, 'data'), { recursive: true, force: true });
await writeFile(path.join(output, 'VERSION.txt'), `${packageJson.version}\n`);
await writeFile(path.join(output, 'README.txt'), `홀로도리 계산기 ${packageJson.version}
await writeFile(path.join(output, 'README.txt'), isPagesBuild
? `홀로도리 계산기 ${packageJson.version}
서비스: https://doricalc-holo.live/
이 파일들은 GitHub Pages 배포용으로 자동 생성되었습니다.
계산과 사용자 데이터 저장은 사용자의 브라우저에서 처리됩니다.
`
: `홀로도리 계산기 ${packageJson.version}
1. 압축파일의 내용을 모두 한 폴더에 풀어 주세요.
2. index.html을 Chrome 또는 Edge로 열어 주세요.
+3 -1
View File
@@ -7,6 +7,7 @@ import { fileURLToPath } from 'node:url';
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
const siteSource = path.join(projectRoot, 'pages-dist');
const readmeSource = path.join(projectRoot, 'pages', 'README.md');
const repository = process.env.GITHUB_PAGES_REPOSITORY ?? 'https://github.com/DD4SN/DD4SN.github.io.git';
if (!process.env.GITHUB_PAGES_TOKEN) {
@@ -48,9 +49,10 @@ try {
await requireGit(['clone', repository, checkout], { env: gitEnvironment });
const generatedPaths = ['site', 'assets', 'icons', 'index.html', 'README.txt', 'VERSION.txt', '.nojekyll'];
const generatedPaths = ['site', 'assets', 'icons', 'index.html', 'README.md', 'README.txt', 'VERSION.txt', '.nojekyll'];
await Promise.all(generatedPaths.map((generatedPath) => rm(path.join(checkout, generatedPath), { recursive: true, force: true })));
await cp(siteSource, checkout, { recursive: true });
await cp(readmeSource, path.join(checkout, 'README.md'));
await writeFile(path.join(checkout, '.nojekyll'), '');
await requireGit(['config', 'user.name', 'HolodoriCalc deployment'], { cwd: checkout, env: gitEnvironment });
+16
View File
@@ -34,6 +34,20 @@
<a href="/combination" aria-current={$page.url.pathname.startsWith('/combination') ? 'page' : undefined}>조합 탐색</a>
{#if showEventTab}<a href="/event" aria-current={$page.url.pathname.startsWith('/event') ? 'page' : undefined}>이벤트 Pt</a>{/if}
<a href="/data" aria-current={$page.url.pathname.startsWith('/data') ? 'page' : undefined}>사용자 데이터</a>
<a
class="feedback-link"
href="https://docs.google.com/forms/d/1z9c0c1crbCO6avXaYwrHZjhw2ib3zgAmW4ijJDTo4DM"
target="_blank"
rel="noreferrer"
aria-label="버그 제보 Google 폼을 새 탭에서 열기"
>버그 제보 <span aria-hidden="true">↗</span></a>
<a
class="feedback-link"
href="https://docs.google.com/forms/d/16NcTst7Rpa9XzqYIfPa4t9JF2X0CMfYzEbZrT8PLqco"
target="_blank"
rel="noreferrer"
aria-label="기능 건의 Google 폼을 새 탭에서 열기"
>기능 건의 <span aria-hidden="true">↗</span></a>
<a
class="report-link"
href="https://docs.google.com/forms/d/1bShzsxNN-iTk0uU3RfMfmLkYXYmUTmIWMmCtQmfl_Ik"
@@ -94,6 +108,8 @@
nav a:hover { color: #e2e6ed; background: rgb(255 255 255 / 5%); }
nav a[aria-current='page'] { color: #f1a1c3; background: rgb(239 139 182 / 12%); }
.feedback-link { border: 1px solid #9f5877; color: #edb8cf; background: linear-gradient(135deg, #482c39, #38232e); box-shadow: 0 0 12px rgb(175 91 128 / 10%); }
.feedback-link:hover { color: #f6d5e3; background: linear-gradient(135deg, #583444, #472a37); box-shadow: 0 0 16px rgb(175 91 128 / 18%); }
.report-link { flex: 0 0 auto; padding: 8px 12px; border: 1px solid #ef8bb6; border-radius: 9px; color: #21121a; background: linear-gradient(135deg, #f3a3c5, #e77ead); box-shadow: 0 0 18px rgb(239 139 182 / 18%); font-size: 13px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.report-link:hover { color: #160d12; background: linear-gradient(135deg, #f8bad3, #ee94ba); box-shadow: 0 0 22px rgb(239 139 182 / 30%); }
.report-link span { margin-left: 2px; font-size: 11px; }