# Deno Desktop

`deno desktop` 从 Deno 2.9 起可用。它把 TypeScript/JavaScript 应用、Deno 运行时和 Web 渲染后端打成每个平台的自包含桌面产物。

## 最短流程

```bash
deno --version       # 需要 2.9+
deno desktop --hmr main.ts
deno desktop main.ts
```

入口可以是小型 `Deno.serve` 应用，也可以是 Next.js、Astro、Fresh、SvelteKit 等框架项目。具体 adapter、静态资源和开发命令按框架官方指南配置。

## 能力与边界

| 能力 | 当前含义 |
| --- | --- |
| 窗口 | `Deno.BrowserWindow` 管理生命周期与多窗口 |
| 前后端通信 | 显式 bindings，不把任意 renderer 输入当可信代码 |
| 桌面集成 | 菜单、托盘、Dock、对话框和系统通知 |
| 调试 | `--hmr` 与统一 DevTools |
| 分发 | 支持目标 triple 和 `--all-targets` 交叉构建 |
| 更新 | `Deno.autoUpdate()` + bsdiff + 失败回滚 |

```bash
deno desktop --target aarch64-apple-darwin main.ts
deno desktop --all-targets main.ts
```

## 发布检查

- 为 macOS/Windows 配置真实代码签名；ad-hoc 签名不足以消除 Gatekeeper 警告。
- 在每个目标 OS 验证通知、文件对话框、GPU、字体和自动更新。
- 自动更新清单使用 Ed25519 签名；更新服务走 HTTPS。
- 官方文档说明 Windows 当前尚不能应用已下载的 auto-update patch，发布前再次核对。
- 错误报告可能含 stack 与运行时上下文，只发送到 HTTPS，并先做数据分级。

官方依据：[Desktop apps](https://docs.deno.com/runtime/desktop/)、[Distribution](https://docs.deno.com/runtime/desktop/distribution/)、[Auto-update](https://docs.deno.com/runtime/desktop/auto_update/)。
