docs+chore: 补 CLAUDE.md(联调启动 + 真相源约定)与 desktop/run-dev.sh
(此前误报已完成实为未提交,现真实补上。) - desktop/run-dev.sh:桌面端启动脚本,对齐 server/run-dev.sh,含麦克风权限提示 - CLAUDE.md:两条联调启动命令 + 麦克风/邮箱登录踩坑 + 真相源与闸约定 + 透明窗口范式 + TODO 约定 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# dudu — Claude 项目约定
|
||||
|
||||
五端语音输入法:Go 后端 + 桌面(Tauri 2)/Android/iOS/官网。按住快捷键说话 → 流式识别 → 上屏;时长计费,微信/邮箱登录。
|
||||
|
||||
## 本地联调启动(两个终端)
|
||||
|
||||
前置:`cd server && docker compose up -d`(起 pg/redis);`rbw unlock`(取 DashScope key)。
|
||||
|
||||
```bash
|
||||
# 终端 A — 后端 API(有 DashScope key 走真实 gummy,无则 mock;mock 邮件固定验证码 888888)
|
||||
cd server && ./run-dev.sh
|
||||
|
||||
# 终端 B — 桌面端(必须从你自己的终端前台跑,麦克风权限才归属该终端)
|
||||
cd desktop && ./run-dev.sh
|
||||
```
|
||||
|
||||
- dudu 是**托盘应用无主窗口**:菜单栏找蓝底声纹图标,设置/登录从托盘菜单点出。
|
||||
- **麦克风**:dev 跑裸二进制 `target/debug/dudu-desktop`,权限归属父终端。首次没声音 → 系统设置 → 隐私与安全性 → 麦克风 勾选你的终端 → 完全退出 dudu 重启(TCC 变更需重启进程)。打包版由 `src-tauri/Info.plist` 的 `NSMicrophoneUsageDescription` 触发系统授权框。
|
||||
- **邮箱登录**:登录窗切「邮箱登录」→ 任意邮箱 → 发送验证码 → 填 **888888**(仅 `AUTH_EMAIL_DEV_CODE` 设置时固定,`run-dev.sh` 已设;生产随机)。
|
||||
|
||||
## 真相源(改前必读)
|
||||
|
||||
- **协议**:只改 `server/pkg/protocol`,五端对照实现。
|
||||
- **界面**:`design/` 是唯一真相源,改 UI 前读登记簿 `design/index.html`。新颜色/组件/图标先登记 `design/tokens` | `components`+`index.html` | `icons.js`+`icon-map.json`,再写端代码。业务代码禁字面色(用 `var(--*)`/`DuduTheme`)、禁内联 `<path>`(走 `Icon`)、禁 emoji。
|
||||
- **令牌 codegen**:`design/tokens` 变更后 `node design-pipeline/export-tokens.mjs`(直写 ios/android/web 消费位置)并提交产物。
|
||||
- **组件源码变更后**:`node design-pipeline/bundle-components.mjs` 重建原型运行时 `design/_ds_bundle.js` 并提交。
|
||||
- **防漂移闸**(pre-commit + CI,启用:`git config core.hooksPath .githooks`):
|
||||
`node design-pipeline/check-ds.mjs`(真相源自检)· `check-code.mjs`(代码侧单源)· `export-tokens.mjs --check`(产物零 diff)。
|
||||
- 全景说明:`doc/frontend-overview.html`;改窗口先看 `design/ui_kits/desktop/`(原型先行)。
|
||||
|
||||
## 窗口范式(桌面)
|
||||
|
||||
透明无边框窗口共用 `desktop/src/shared/WindowFrame.jsx`:`transparent` + `titleBarStyle:Overlay` + `hiddenTitle` + `trafficLightPosition {18,18}` + macOS 原生阴影;页面自绘圆角边框。识别浮层/托盘/设置/登录均为此范式。**必须开 `macOSPrivateApi:true`**,否则透明窗口画白底。
|
||||
|
||||
## TODO
|
||||
|
||||
经全局 `/todo` skill 管理(看板 `todo/todo.html`),状态 open→doing→done→(用户)accepted。**禁用内置 TodoWrite。**
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
# 本地起桌面端(在 desktop/ 目录下运行):Tauri dev(Rust 系统层 + Vite 前端热更新)。
|
||||
# 前置:后端已起(../server/run-dev.sh);首次运行自动 npm install。
|
||||
#
|
||||
# ⚠️ 必须从你自己的终端前台运行:dev 跑的是裸二进制 target/debug/dudu-desktop,
|
||||
# 它是本终端的子进程,macOS 把麦克风权限算在终端头上。首次按住说话若没声音,
|
||||
# 去 系统设置 → 隐私与安全性 → 麦克风 勾选本终端(iTerm/Terminal),
|
||||
# 再完全退出 dudu 重启(TCC 权限变更需重启进程生效)。
|
||||
set -e
|
||||
|
||||
if [ ! -d node_modules ]; then
|
||||
echo "[run-dev] 首次运行,安装依赖…"
|
||||
npm install
|
||||
fi
|
||||
|
||||
exec npm run tauri dev
|
||||
Reference in New Issue
Block a user