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 视图以浅色和深色模式渲染到被忽略的 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;缓存、依赖和构建产物均被忽略。

内部文章链接应相对于当前语言目录(例如 ./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/appMyGo 生命周期、分组窗口状态、操作、视图和 UI 测试数据
internal/buildinfo向 CLI 和原生应用提供桌面版本
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 的独立重构版本。