Skip to content

開発ガイド ​

独立した 2 つのツールチェーン ​

デスクトップアプリは 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 テストは全 5 言語を最小ウィンドウサイズでも描画します。テストは 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)にします。ルートの全記事には 4 言語それぞれの完全な翻訳が必要です。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 を梱包し、5 つの README も同じアイコンを使います。ドキュメントのナビゲーションと各言語のホームは /icon.png を使います。

ソース構成 ​

場所責務
main.go, cli.goCLI の解析とネイティブアプリへの起動オプション引き渡し
internal/appMyGo ライフサイクル、グループ化したウィンドウ状態、操作、ビュー、UI フィクスチャ
internal/buildinfoCLI とネイティブアプリに渡すデスクトップ版バージョン
internal/transfers一括スケジューリング、ジャーナル、復旧、清掃、転送計画
internal/ossclientOSS SDK 境界、オブジェクト操作、中断再開可能な転送
tools/versionデスクトップとパッケージのバージョン同期・整合性確認
internal/config設定の検証と安全な永続化
internal/i18n5 つの埋め込みメッセージカタログと言語解決
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 を独自に再構築したプロジェクト。