Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions .agents/AGENTS.md

This file was deleted.

44 changes: 39 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,57 @@
# 빌드 산출물
/artifacts/
/artifacts-*/
/obj/
/.build/
/Minecraft-Servers-Data/
bin/
/*.exe
/*.jar
/*.zip

# 로컬 실행 데이터와 로그
/Minecraft-Servers-Data/
TestResults/
*.trx
*.log
*.cache
/*.audit.*

# 비밀값 (저장소에 절대 넣지 않는다)
*.pfx
*.p12
*.pem
*.key
*.snk
.env
/*.exe
/*.jar
/*.zip
/*.audit.*

# 빌드 시 생성되거나 로컬에만 두는 리소스
/admin-plugin-stubs/
/embedded-icon-preview.png
/launcher-icon-source.png
/launcher-icon.png

# 편집기·IDE 로컬 설정 (.vscode/tasks.json만 공유한다)
/.vs/
/.idea/
/.vscode/*
!/.vscode/tasks.json
*.suo
*.user
*.userosscache
*.sln.docstates

# AI 도구 로컬 상태
/.claude/settings.local.json

# 임시 파일과 편집 잔여물
/.tmp/
/tmp/
*.tmp
*.bak
*.orig
*.rej

# Windows 탐색기
Thumbs.db
desktop.ini
$RECYCLE.BIN/
35 changes: 0 additions & 35 deletions AGENTS.md

This file was deleted.

34 changes: 22 additions & 12 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# MineHarbor — Claude 작업 지침
# MineHarbor — 작업 지침

Windows용 Minecraft 서버 런처입니다. C# / WinForms / .NET Framework 4.8, 빌드는 .NET SDK 10.

## 작업 시작 전 읽기
**이 파일이 이 저장소의 유일한 작업 지침입니다.** 빌드·테스트·릴리스의 세부 절차는 `CONTRIBUTING.md`,
직전 세션의 작업 내역은 `docs/WORK_LOG.md`에 있습니다.

1. `docs/ai/SYNC_STATE.md` — 직전 작업자가 무엇을 했고 무엇이 남았는지
2. `AGENTS.md`, `.agents/AGENTS.md` — 공통 안전 규칙
3. `CONTRIBUTING.md`
## 작업 시작 전

1. `docs/WORK_LOG.md` 맨 위 항목 — 직전 세션이 무엇을 했고 무엇이 남았는지
2. `git status`와 현재 브랜치 — 커밋되지 않은 변경이 있는지

## 개발 명령 (Windows PowerShell)

Expand All @@ -18,6 +20,9 @@ Windows용 Minecraft 서버 런처입니다. C# / WinForms / .NET Framework 4.8,

코드를 고쳤으면 **반드시 위 셋을 돌려 통과를 확인**한 뒤 커밋합니다.
빌드 산출물 `artifacts\MineHarbor.exe`를 직접 실행해 화면을 확인하는 것이 가장 확실합니다.
설치 프로그램 빌드, `dotnet build`로 하는 SDK 스타일 확인, 로컬 자체서명 릴리스 검증은 `CONTRIBUTING.md`를 보세요.

새 소스 파일을 추가하면 `build.ps1`과 `MineHarbor.csproj`의 **명시적 소스 목록을 함께** 갱신해야 합니다.

## 이 저장소에서 반드시 지킬 것

Expand All @@ -29,7 +34,7 @@ Windows용 Minecraft 서버 런처입니다. C# / WinForms / .NET Framework 4.8,
`.gitattributes`가 `* -text`로 Git 쪽 정규화는 막고 있지만, 편집 도구는 막지 못합니다.

`.ps1`과 `CHANGELOG.md`는 **UTF-8 with BOM**으로 저장해야 합니다. Windows PowerShell 5.1이 BOM 없는 유니코드를 깨뜨립니다.
`.cs` 파일은 기존 인코딩(BOM 유무)을 그대로 유지하세요.
`.cs` 파일과 나머지 문서는 기존 인코딩(BOM 유무)을 그대로 유지하세요.

### 예외 메시지는 한국어·영어를 함께

Expand All @@ -46,8 +51,10 @@ throw Localized(new InvalidDataException("한국어 문구"), "English wording")

- UI 문구를 바꾸면 **한국어와 영어를 함께** 수정합니다.
- Windows 기본 알림창을 쓰지 않고 `ModernDialogs.cs`의 커스텀 대화상자를 씁니다.
- 둥근 모서리의 현대적 디자인(Toss 앱 스타일)을 유지합니다.
- 둥근 모서리의 현대적 디자인(Toss 앱 스타일)을 유지합니다. 버튼 이름을 길게 늘이는 대신 툴팁을 씁니다.
- 새 창에는 `AutoScaleMode.Dpi`와 접근성 정보(`AccessibleName`, `AccessibleDescription`)를 지정합니다.
- 기존 모듈 구조(UI, Network, Bridge, Storage)를 깨지 않습니다.
- 장시간 작업은 `Task`/`async`와 `CancellationToken`을 쓰고, 닫힌 폼에 완료 콜백을 보내지 않습니다.

`test.ps1`이 소스를 스캔해 `MessageBox.Show`, 기본 `new Button()`, 기본 `new CheckBox()` 사용을 차단합니다.

Expand All @@ -56,7 +63,9 @@ throw Localized(new InvalidDataException("한국어 문구"), "English wording")
- 다운로드는 HTTPS, 호스트 허용 목록, 크기·해시 검증을 유지합니다.
- UPnP는 런처가 직접 만든 매핑만 삭제합니다. 사용자가 연 포트는 절대 건드리지 않습니다.
- Discord 원격 제어는 임의 콘솔·셸·파일 명령을 노출하지 않습니다. 허용 사용자·역할·채널·프로필을 모두 검사합니다.
- 백그라운드 기능은 기본 비활성화·현재 사용자 범위·로컬 IPC를 유지하고, 소유하지 않은 프로세스나 포트를 건드리지 않습니다.
- 로그를 외부로 내보내는 경로(`SanitizeOperationMessage`, `RedactDiagnosticText`)는 IPv4·IPv6 주소와 경로를 가립니다.
- `.mineharbor` 아래 설정·기록은 크기·스키마 검증과 원자적 교체를 쓰고, 손상되거나 미래 스키마인 원본을 덮어쓰지 않습니다.
- 비밀키·토큰·인증서를 저장소에 넣지 않습니다.

### 버전과 릴리스
Expand All @@ -76,14 +85,15 @@ throw Localized(new InvalidDataException("한국어 문구"), "English wording")
- `git reset --hard`, `git clean -fd`, 강제 푸시는 사용자 승인 없이 실행하지 않습니다.
- 브랜치를 만들 때 **먼저 `git fetch origin main`** 하세요. 오래된 `origin/main`에서 브랜치를 만들면
최신 변경이 빠진 채로 작업하게 됩니다.
- 관련 없는 대규모 포맷팅을 하지 않습니다.
- 저장소 밖의 파일을 사용자 승인 없이 수정하거나 삭제하지 않습니다.
- 관련 없는 대규모 포맷팅을 하지 않습니다. 한 변경에는 한 목적만 담습니다.

## 작업 종료 시

`docs/ai/SYNC_STATE.md` 맨 위에 이번 작업 내역을 추가합니다.
무엇을 고쳤는지, 왜 그렇게 했는지, 검증은 어떻게 했는지, 무엇이 남았는지를 다음 담당자가 알 수 있게 씁니다.
`docs/WORK_LOG.md` 맨 위에 이번 작업 내역을 추가합니다.
무엇을 고쳤는지, 왜 그렇게 했는지, 검증은 어떻게 했는지, 무엇이 남았는지를 다음 세션이 알 수 있게 씁니다.

## 실제 사용자 자원

테스트에서 실제 사용자 서버 데이터, 공유기 설정, UPnP 매핑, 외부 포트, Discord 자격 증명을
사용하거나 변경하지 않습니다.
테스트는 임시 폴더만 사용합니다. 실제 사용자 서버 데이터, 공유기 설정, UPnP 매핑, 외부 포트,
Discord 자격 증명을 사용하거나 변경하지 않습니다.
Loading