# LineUp Tauri Reference Host 这是 LineUp Mini Runtime 的第一版 Tauri 2 Reference Host。它独立于当前 `upstream/tangsengdaodao-android/` 快速实验工程,不替换或修改现有 Android 验证路径。 ## 已实现的最小闭环 - 可信 Host 前端:AppServer 地址、手机号/验证码登录、退出; - AppServer 交互:`/login`、`/messages/send`、`/messages/sync`; - 用户消息本地即时回显与送达状态; - HTTP 同步游标:首次 `0`、后续最后序号 `+ 1`; - `lineup.v1.text`、`agent.status`、`agent.progress`、`error` 的基础 Renderer; - `marked + DOMPurify` 的 GFM Markdown 安全渲染; - Tauri 2 Rust Host、capability 文件与桌面窗口配置。 AppServer 已配置只允许 `tauri://localhost`、`https://tauri.localhost`、`http://tauri.localhost` 三个 Tauri Host origin 跨源调用。若产品使用新的 Tauri origin 或独立 Web 客户端,应先在 `lineup-app-server/configs/lineup.yaml` 的 `client.allowedOrigins` 显式加入,不能放开任意 Origin。 macOS 的 `src-tauri/Info.plist` 为当前 Tailscale / 私网 HTTP AppServer 配置了 `NSAllowsArbitraryLoadsInWebContent`。该例外仅作用于 Host 的 WKWebView 内容请求,使其能访问类似 `http://100.x.y.z:8090` 的地址,不放宽 Rust 原生网络层;待所有 AppServer 都迁移到 HTTPS 后应移除。 `ui.open / patch / close` 和 `app.call` 已被协议层识别,但目前安全降级为可见提示;它们是下一阶段 Mini Runtime Surface Host 与 Capability Registry 的实现范围,不能在当前 Host 页面中直接执行 Agent JavaScript 或直接授予设备能力。 ## 本地命令 ```bash cd lineup-app/tauri npm install # 日常开发:启动 Vite 热更新 + 未打包的 Tauri 桌面壳 npm run desktop:dev # 纯 Web 开发:仅启动 Vite,在浏览器打开 http://127.0.0.1:1420 npm run web:dev # 仅检查并构建前端静态文件 npm run build # Linux:仅构建 Debian 包,避免为不需要的 AppImage 下载额外运行器 npm run tauri -- build --debug --bundles deb # macOS(Apple Silicon / Intel):生成 .app 与 .dmg npm run tauri build -- --debug ``` `npm run desktop:dev` 不生成 `.app`、`.dmg` 或安装包。前端 TypeScript / CSS / HTML 保存后会由 Vite 自动热更新;改动 `src-tauri/` 中的 Rust Host 代码时,Tauri 会重新编译并重启开发窗口。只有需要交付可安装文件时才执行 `tauri build`。 `npm run web:dev` 只运行同一份可信 Host Web UI,适合在浏览器中快速调试登录、消息和 Renderer。它不具备 Tauri 原生能力,也不应作为第三方 Mini Runtime Surface 的安全验收环境。AppServer 已对固定开发 Origin `http://127.0.0.1:1420` 配置 CORS;若改动 Vite 端口或 host,必须同步收紧更新 AppServer 的 `client.allowedOrigins`。 本项目的 `tauri` 与 `check:rust` npm 脚本会自动识别 Linux x86_64、macOS Apple Silicon、macOS Intel 的 Rust stable toolchain,并加入 `PATH`。因此不要直接执行裸 `tauri build`;统一使用 `npm run tauri build -- --debug`。如 Rust toolchain 安装在其他位置,可临时覆盖: ```bash RUST_TOOLCHAIN_BIN=/path/to/rust/bin npm run tauri build -- --debug ``` ## 本机构建状态(2026-08-03) - `npm run build`:已通过; - Cargo/Tauri Rust crates:已下载并开始编译; - Tauri Linux desktop build:已通过;debug 可执行文件和 Debian 包已生成; - Android Spike:尚未开始。仍需要 Android NDK、Rust Android targets 与 Tauri Android 初始化。 Linux 桌面构建依赖以下系统开发库;本机已具备。新环境缺少时可安装: ```bash sudo apt-get update sudo apt-get install -y pkg-config libdbus-1-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev ``` 本机已生成的产物: ```text src-tauri/target/debug/lineup-tauri src-tauri/target/debug/bundle/deb/LineUp_0.1.0_amd64.deb ``` Tauri 构建产物位于 `src-tauri/target/`,已被 Git 忽略。图标源文件是 `src-tauri/icons/icon.svg`,其余 PNG/ICO/ICNS 与 Android/iOS 图标由 `npm run tauri icon src-tauri/icons/icon.svg` 生成。 ## 目录边界 ```text tauri/ ├── src/ # 可信 LineUp Host 前端 │ ├── main.ts # 会话 UI、AppServer transport、Renderer 调度 │ └── protocol.ts # 平台无关的 LineUp v1 → ConversationItem 解码 ├── src-tauri/ # Tauri Rust Host 与 capability 配置 └── package.json # Vite、Tauri CLI 与前端依赖 ``` 第三方 Agent Surface 未来必须运行于独立隔离执行域,只能经 LineUp Mini Runtime 事件桥与 Capability Gateway 通信;不得访问 Tauri `invoke`、Host DOM、登录态或本机特权。