開發指南
兩套獨立工具鏈
桌面應用使用 Go 1.27.2+ 和 go.mod 固定的 MyGo 0.4.8 工具。文件使用 Node.js 22+、pnpm 12.11.2 和 VitePress 2.0 alpha。建置應用不需要 Node。
go mod download
make dev
make run
make build檢查
make fmt
make check
make race
go tool mygo vet
make snapshots
go run ./tools/version快照運行 internal/app 測試,將真實 MyGo 視圖以淺色和深色模式繪製到被忽略的 snapshots/ 目錄。UI 測試還以最小視窗尺寸繪製全部五種語言。測試不會連接 OSS。
可選的原生捕獲會啟動真實視窗、寫入截圖並結束:
OSS_BROWSER_CAPTURE=/tmp/oss-browser.png go run . --config /tmp/oss-browser-settings.json文件
pnpm install --frozen-lockfile
cd docs
pnpm dev
pnpm typecheck
pnpm build
pnpm previewVitePress 在生產建置時校驗內部連結。文件包屬於根 pnpm 工作區;依賴變化時一並提交根 pnpm-lock.yaml。建置輸出位於 docs/.vitepress/dist;快取、依賴和建置產物均被忽略。
內部文章連結應相對於目前語言目錄(例如 ./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 網站圖示和 180px Apple touch 圖示。所有導出均保留透明度。MyGo 打包 resources/icon.png,全部五份 README 使用同一應用圖示。文件導航和本地化首頁使用 /icon.png。
原始碼佈局
| 位置 | 職責 |
|---|---|
| main.go, cli.go | 解析 CLI 並向原生應用傳遞啟動選項 |
| internal/app | MyGo 生命週期、分組視窗狀態、操作、視圖和 UI 測試資料 |
| internal/buildinfo | 向 CLI 和原生應用提供桌面版本 |
| internal/transfers | 批量排程、日誌、恢復、清理和傳輸規劃 |
| internal/ossclient | OSS SDK 邊界、物件操作和斷點續傳 |
| tools/version | 桌面/包版本同步及一致性檢查 |
| internal/config | 設定校驗與安全持久化 |
| internal/i18n | 五套嵌入式訊息目錄和語言解析 |
| internal/desktop | 原生服務邊界 |
| internal/tasks | 取消和過期回呼保護 |
| internal/files | 現有本地文字/校驗和工具,為後續功能保留 |
| internal/storage | 原子檔案寫入 |
| resources, tools/genicon | 應用資源和圖示生成 |
| docs | 獨立 VitePress 包 |
實現功能時再新增對應業務服務,不要建立空層。貢獻前閱讀儲存庫 AGENTS.md。
效能檢查
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 項任務完成。排程器工作量應獨立於已完成歷史。瀏覽器行切片發布後不可變;重新整理或合併時替換列表,使排序快取失效。