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/internals.md (or send Accept: text/markdown).
桌面外壳内部
启动页、导航闸门、插件栈与配置参考。
启动页
窗口先加载 apps/desktop/ui 中打包的页面:它读取注入的 __SUPASTACK_APP_URL__,以十秒超时探测后端,可达时跳转过去。后端不可达会渲染 Can't reach host 状态并提供 Retry —— 网络恢复时也会自动重试 —— 因此冷启动永远不是空白窗口。带 ?target= 查询参数可以在普通浏览器中演练这个页面。
原生能力是插件,不是 IPC
外壳没有注册任何自定义命令 —— 每个原生能力都经 Tauri 插件抵达:带 deep-link 特性的 single-instance(在 Windows 与 Linux 上转发二次启动参数)、deep-link、window-state(只管几何 —— 缩放与频道各有自己的旁车文件)、opener、dialog、process(更新后重启)、updater、autostart、global-shortcut,外加 tray-icon 特性。扩展外壳意味着加一个插件和一项权限,而不是魔改 webview 界面。
导航闸门
导航只对打包的外壳页面、开发服务器来源以及精确配置的应用来源放行。无凭据的 HTTP(S)、mailto:、tel: 链接经 opener 插件交给系统浏览器;其余 scheme 一律取消。窗口尚不存在时到达的深链接会缓冲在托管状态中,窗口出现后生效。
配置与能力参考
tauri.conf.json 设定 productName、version(发布前提升 —— 工作流可覆盖它)、标识符(check:release-config 要求从 com.supastack.desktop 改掉)、supastack 深链接 scheme、更新器哨兵块、打包目标与占位图标。capabilities/default.json 授予 core:default 加 opener:allow-open-url —— 只有新插件需要更多权限时才放宽。
外壳如何测试
corepack pnpm --filter @supastack/desktop test 对启动页做语法检查,并运行覆盖 URL 解析、深链接、缩放与频道逻辑的 Rust 单元套件;typecheck 执行 cargo check。JavaScript 发布脚本由仓库的 vitest 套件覆盖,CI 管线则对每次改动在三种操作系统上构建真实安装包。
corepack pnpm --filter @supastack/desktop typecheck
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop check:release-config验证与排障
改动 src-tauri 后跑一遍包级套件,然后在每个目标操作系统上手动验证原生行为 —— 单元检查证明的是规则,不是窗口。新的外壳行为要收进插件与菜单项里,让 webview 保持为一个普通的 Web 应用。