For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/desktop/project-structure.md (or send Accept: text/markdown).
项目结构
找到 Rust 外壳、启动页、发布脚本以及与 web 应用的边界。
安装与配置
开始任何步骤前,请阅读开始之前和终端基础。在根目录打开 supastack 文件夹——即包含 package.json 的文件夹。Desktop checkout 包含 apps/desktop 及其发布脚本;All Platforms monorepo 还附带 Web 后端和移动应用。环境变量是存储在本地 .env 文件或托管平台控制台中的命名设置;外壳把 SUPASTACK_APP_URL 作为终端设置读取,而不是从文件中读取。
1. 打开 apps/desktop/src-tauri/src/lib.rs——所有原生行为都在这一个文件里。
2. 浏览 apps/desktop/src-tauri/——配置、能力和图标。
3. 在存储库根目录运行 corepack pnpm --filter @supastack/desktop dev,并确保后端可访问。
此 checkout 只包含 Tauri 外壳:Rust 源码、它的配置、启动页和发布脚本。产品界面位于窗口加载的 web 应用中——仅含 Desktop 的 checkout 自己没有应用界面。修改行为前先阅读 AGENTS.md 和 .ai/PROJECT_CONTEXT.md;.ai/ 镜像文档记录了单从文件看不出的决策。
apps/desktop/src-tauri/src/ Rust — window, tray, menus, deep links, updater
apps/desktop/src-tauri/ tauri.conf.json, capabilities/, Cargo.toml, icons
apps/desktop/ui/ Boot page (index.html + boot.js) shown while loading
apps/desktop/scripts/ Release preflight + update manifest
docs/ Runbooks incl. desktop updates
.agents/skills/ Task guides for coding agents改动应该放在哪
编辑前先确定改动属于哪一侧:用户视为产品界面的东西属于 web 应用;只有操作系统层面的行为才属于 Rust。
- 窗口、托盘、菜单、快捷键或单实例行为 →
apps/desktop/src-tauri/src/lib.rs。 - 新的 webview 权限 →
apps/desktop/src-tauri/capabilities/default.json——只有在原生功能需要时才扩大。 - 包标识符、版本、更新器端点或插件选项 →
apps/desktop/src-tauri/tauri.conf.json。 - 占位产品图标 → 替换
placeholder-icon.png并运行图标脚本。 - 启动、加载或离线遮罩行为 →
apps/desktop/ui/。 - 任何产品界面、设置或数据 → web 应用存储库——外壳绝不另起产品界面。
实现流程
做原生改动时,编辑 lib.rs,运行 cargo check 和 Rust 测试,然后在每个目标操作系统上实际操作窗口——托盘、快捷键和 deep-link 行为因平台而异。.agents/skills/ 中的 add-a-desktop-capability 技能按同样的顺序走一遍。
验证与排障
cargo check 捕获编译错误,cargo test 覆盖纯逻辑。真正的验证是在 Windows、macOS 和 Linux 上运行真实窗口——托盘、快捷键和 deep link 仅靠测试无法证明。
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop typecheck