Electron 桌面应用
CLI-JAW 也提供 Electron 桌面应用。打包构建会包含 Node.js 22 sidecar,因此无需全局 npm install,也能运行 dashboard server 并安装终端 jaw 命令。
安装
从 release 或手动 desktop-release workflow 下载桌面 artifact。macOS 提供 DMG/ZIP,Windows 提供 NSIS installer/ZIP,Linux 提供 AppImage。
# Build from source:
npm run electron:dist:mac
Bundled Sidecar
Release workflow 会在打包前运行 scripts/bundle-sidecar.sh。Sidecar 包含 Node.js 24.17、编译后的 server output、frontend assets、production dependencies、重建后的 native modules(如 better-sqlite3),以及 server/bin/jaw/server/bin/jaw.cmd CLI shim。
| 平台 | 目标 | Artifact |
|---|---|---|
| macOS | arm64 | DMG, ZIP |
| Windows | x64 | NSIS installer, ZIP |
| Linux | x64 | AppImage |
Electron main process 不直接 import native server modules。打包应用会优先发现 bundled sidecar;开发模式则 fallback 到全局 jaw binary。
面板布局
Electron 应用提供多面板工作区:
| 面板 | 位置 | 说明 |
|---|---|---|
| 仪表盘 | 中央 | 完整的管理仪表盘,包含实例、笔记、看板 |
| 终端 | 底部 | 内嵌终端,用于执行 CLI 命令 |
| 浏览器 | 右侧 | 基于 Webview 的标签页浏览器(仅桌面端) |
| 差异查看器 | 右侧 | 基于服务器 API 的 Git 差异面板(仅桌面端) |
| 文件夹面板 | 左侧/右侧 | 文件树导航 |
浏览器面板
桌面端浏览器面板使用 webview 标签实现完整的浏览功能。特性包括:
- 标签页管理(Cmd+T 新建标签页、Cmd+W 关闭标签页、Cmd+1-4 切换标签页)
- 智能地址栏——输入 URL 直接导航,输入搜索词则跳转至 Google
- 新标签页默认打开 Google
- 允许访问本地/私有主机(仅桌面端——Web UI 中不可用)
差异查看器
差异面板显示项目的 Git 变更:
- 仓库根目录候选项来自
projectDirs、workingDir、固定根目录、主目录回退 - 可配置的差异设置:根目录策略、差异模式、基准引用、未跟踪文件
- 基于服务器端 API,避免在 Electron 主进程中执行 git 操作
diff-service.ts中包含路径遍历和引用验证防护
键盘快捷键
完整列表请参阅键盘快捷键参考文档。主要的桌面端快捷键:
| 快捷键 | 操作 |
|---|---|
Cmd+T | 新建浏览器标签页 |
Cmd+W | 关闭当前标签页 |
Cmd+1-4 | 切换到第 1-4 个标签页 |
Cmd+R | 刷新主窗口 |
Cmd+Shift+R | 强制刷新 |
macOS 权限
Electron 应用可能会提示需要 macOS 自动化访问权限。请在"系统偏好设置">"隐私与安全性">"自动化"中授予权限。应用的退出流程可见且能妥善处理清理工作。当前 release artifacts 尚未签名/公证,因此 macOS 首次启动可能需要右键 → 打开。
终端命令安装
打包应用可在首次启动或 tray menu 中安装终端 jaw 命令,指向 bundled sidecar shim。macOS 在需要时通过 admin prompt 安装到 /usr/local/bin,Linux 使用 ~/.local/bin。Windows PATH 注册由 NSIS installer script 处理。
开发
# Run Electron in dev mode (concurrent with jaw server):
npm run electron:dev
# Typecheck/build the Electron app:
npm --prefix electron run build
# Create macOS DMG:
npm run electron:dist:mac