Skip to content

개발 가이드 ​

독립된 두 도구 체인 ​

데스크톱 앱은 Go 1.27.2+와 go.mod에 고정된 MyGo 0.4.8 도구를 사용합니다. 문서는 Node.js 22+, pnpm 12.11.2, VitePress 2.0 alpha를 사용합니다. 앱 빌드에는 Node가 필요하지 않습니다.

sh
go mod download
make dev
make run
make build

검사 ​

sh
make fmt
make check
make race
go tool mygo vet
make snapshots
go run ./tools/version

스냅샷은 internal/app 테스트를 실행하고 실제 MyGo 뷰를 밝고 어두운 모드로 Git에서 제외되는 snapshots/ 디렉터리에 렌더링합니다. UI 테스트는 다섯 언어 모두를 최소 창 크기로도 렌더링합니다. 테스트는 OSS에 연결하지 않습니다.

선택적 네이티브 캡처는 실제 창을 시작하고 스크린샷을 기록한 뒤 종료합니다.

sh
OSS_BROWSER_CAPTURE=/tmp/oss-browser.png go run . --config /tmp/oss-browser-settings.json

문서 ​

sh
pnpm install --frozen-lockfile
cd docs
pnpm dev
pnpm typecheck
pnpm build
pnpm preview

VitePress는 프로덕션 빌드에서 내부 링크를 검증합니다. 문서 패키지는 루트 pnpm 작업 공간에 속합니다. 의존성이 바뀌면 루트 pnpm-lock.yaml도 커밋하세요. 빌드 출력은 docs/.vitepress/dist이며 캐시, 의존성, 빌드 산출물은 Git에서 제외합니다.

문서 간 링크는 현재 언어 디렉터리 기준 상대 경로(예: ./design)로 유지하세요. 모든 루트 문서는 네 언어 디렉터리에 완전한 번역이 있어야 합니다. pnpm check:translations는 누락된 페이지와 영어 본문을 그대로 복사한 페이지를 검사하며 타입 검사 및 빌드 전에도 실행됩니다. [locale]/[page].paths.ts 로더는 개발 중 누락된 번역에 안내문이 있는 영어 대체 페이지를 제공할 수 있지만, 대체 페이지로는 공개 전 완전성 검사를 통과할 수 없습니다. 번역을 추가하면 대체 페이지가 자동으로 교체됩니다. 공통 이미지는 /design/workspace.png 같은 루트 경로를 유지합니다.

문서 GitHub Actions 워크플로가 제거되었습니다. 푸시와 풀 리퀘스트에서 사이트 빌드, 타입 검사, Pages 산출물 업로드를 더 이상 수행하지 않으며, 이 워크플로를 통한 수동 Pages 배포도 사용할 수 없습니다. 문서를 변경한 뒤에는 로컬 docs/ 디렉터리에서 pnpm typecheck와 pnpm build를 실행하세요. 릴리스를 참고하세요.

아이콘 리소스 ​

승인된 클라우드 및 스토리지 아이콘 원본은 resources/icon-oss-v3.png입니다. 저장소 루트에서 make icon을 실행하면 1024px 앱 아이콘, 512px 문서 로고, 64px favicon, 180px Apple touch 아이콘을 내보냅니다. 모두 투명도를 보존합니다. MyGo는 resources/icon.png를 패키징하며 다섯 README도 같은 앱 아이콘을 사용합니다. 문서 탐색과 현지화된 홈 페이지는 /icon.png를 사용합니다.

소스 구조 ​

위치책임
main.go, cli.goCLI 해석 및 네이티브 앱에 시작 옵션 전달
internal/appMyGo 수명 주기, 그룹화된 창 상태, 동작, 뷰, UI 고정 데이터
internal/buildinfoCLI와 네이티브 앱에 전달하는 데스크톱 버전
internal/transfers일괄 스케줄러, 저널, 복구, 정리, 전송 계획
internal/ossclientOSS SDK 경계, 객체 작업, 재개 가능한 전송
tools/version데스크톱/패키지 버전 동기화 및 일관성 검사
internal/config설정 검증 및 안전한 저장
internal/i18n내장된 다섯 메시지 카탈로그와 언어 결정
internal/desktop네이티브 서비스 경계
internal/tasks취소 및 오래된 콜백 방지
internal/files후속 기능을 위해 보존한 로컬 텍스트/체크섬 도구
internal/storage원자적 파일 쓰기
resources, tools/genicon앱 리소스 및 아이콘 생성
docs독립 VitePress 패키지

빈 계층을 미리 만들지 말고 기능을 구현할 때 비즈니스 서비스를 추가하세요. 기여 전에 저장소의 AGENTS.md를 읽으세요.

성능 검사 ​

sh
go test ./internal/transfers -run '^$' -bench 'BenchmarkQueue(AddBatch|Drain)' -benchmem
go test ./internal/app -run '^$' -bench BenchmarkObjectRowsCached -benchmem

대기열 벤치마크는 1,000/10,000/100,000개 작업 삽입과 1,000/10,000개 작업 완료를 다룹니다. 스케줄러 작업량이 완료 이력에 의존하지 않게 하세요. 브라우저 행 슬라이스는 공개 후 변경하지 않습니다. 새로 고침이나 병합 시 목록을 교체하여 정렬 캐시를 무효화하세요.

문서 조사 (중국어) ​

문서 조사 (중국어)

OSS Browser를 독립적으로 재구축한 프로젝트입니다.