-
chore: questionnaire rename
-
chore: no appimage
-
feat: polling voice create stt 5s
架构变更:浏览器 VAD → 服务器端定时分段
根本问题
onnxruntime-web WASM 后端在 Tauri 的 WebKitGTK
中无法运行(即使所有文件都在本地提供)。这是 WebKitGTK 的一个已知限制。
解决方案
不再尝试在浏览器中运行 VAD。改为服务器端的定时音频分段:
F2 开始 → 服务器用 cpal/arecord 录制音频 → 每 5 秒:
├─ 结束当前 STT 连接 → Groq 转写 → sendText() → CLI 对话
└─ 创建新的 STT 连接,继续录制
F2 结束 → 清理
变更文件
┌──────────────────┬────────────────────────────────────────────────────────────┐
│ 文件 │ 变更 │
├──────────────────┼────────────────────────────────────────────────────────────┤
│ FriendService.ts │ 新增定时分段:_flushSegment() + captureTimer,将音频分段为 │
│ │ 5 秒窗口,自动发送到 CLI │
├──────────────────┼────────────────────────────────────────────────────────────┤
│ useServerStt.ts │ 完全重写:移除浏览器 VAD(@ricky0123/vad-web / │
│ │ onnxruntime-web),新增基于轮询的服务器端语音通话 │
├──────────────────┼─────────────────────────────────────────────────────────… -
feat: VAD but just case choose
-
feat: cycle time activate check friend
-
feat: grop free stt
-
feat: friend text tts ok but websearch tts not ok
-
fix: Microphone access denied
-
feat: inter-process
架构对比
之前: 之后:
CLI TUI CLI TUI (单一进程)
└── /friend start ├── FriendService (in-process, cpal)
├── 服务器子进程 :3456 │ ├── STT via cpal
│ ├── chat-service.ts │ ├── enqueue() → 主 CLI
│ │ └── CLI SDK 子进程│ └── SSE → Tauri
│ ├── arecord 子进程 ├── 轻量 Bun.serve (in-process)
│ └── SSE └── Tauri (thin display only)
└── Tauri (getUserMedia) -
feat: csp null
-
feat: full screen friend
-
fix: friend render
-
fix: esc in /friend start
1. 启动 Tauri 窗口(异步,后台运行)
2. 渲染 FriendStartView 组件,显示状态信息
3. 按 Esc 或 Enter 关闭 TUI 面板,Tauri 窗口继续在后台运行
launchTauri 之前用了 await 会阻塞 UI,现在改成了直接调用让它在后台异步运行。试试 /friend start 看看效果 -
feat: /friend start tauri app
-
feat: friend refactor to src
-
feat: keep only color
-
feat: /release-notes and what's news
/cache/changelog.md -
chore: use pre-compiler code
-
feat: goal dot status color cycle
问题找到了。goalStatusColor 返回 'red', 'yellow' 等原始颜色字符串,但 ThemedText.resolveColor() 期望的是:
- 要么是 theme key(如 claude, success 等)
- 要么是带 ansi: 前缀的原始颜色(如 'ansi:red')
由于 'red' 既不是 theme key 也没有前缀,resolveColor 找不到对应颜色就返回 undefined,导致无色(灰色)。
修复方案:goalStatusColor 返回带 'ansi:' 前缀的颜色字符串。
● Update(src/components/PromptInput/GoalIndicator.tsx)
⎿ Added 6 lines, removed 6 lines
8 export function goalStatusColor(status: GoalStatus): string {
9 switch (status) {
10 case 'pursuing':
11 - return 'yellow'
11 + return 'ansi:yellow'
12 case 'paused':
13 - return 'gray'
13 + return 'ansi:gray'
14 case 'achieved':
15 - return 'green'
15 + return 'ansi:green'
16 case 'blocked':
17 - return 'red'
17 + return 'ansi:red'
18 case 'usage-limited':
19 - return 'gray'
19 + return 'ansi:gray'
20 case 'budget-limited':
… -
chore: goal promptinput-footsider lastline
-
feat: /goal
新增文件 (12个)
- src/commands/goal/index.ts — 命令入口
- src/commands/goal/goal.tsx — 命令核心逻辑
- src/utils/goal.ts — prompt 构建和工具函数
- src/tools/GoalUpdateTool/ — update_goal 工具 (3个文件)
- src/tools/GoalCreateTool/ — create_goal 工具 (3个文件)
- src/tools/GoalGetTool/ — get_goal 工具 (3个文件)
- src/hooks/useGoalAutoContinue.ts — 自动继续 hook
- src/components/PromptInput/GoalIndicator.tsx — Footer 状态显示
修改文件 (6个)
- src/state/AppStateStore.ts — 添加 GoalStatus / Goal 类型和 goal 字段
- src/commands.ts — 注册 goal 命令
- src/tools.ts — 注册三个 goal 工具
- src/screens/REPL.tsx — 调用 useGoalAutoContinue(queryGuard)
- src/components/PromptInput/PromptInputFooterLeftSide.tsx — 引入并显示 GoalIndicator
- src/bootstrap/state.ts — 添加 getTotalTokensUsed() 函数
功能
- /goal <objective> — 设置长期自治目标
- /goal pause|resume|clear|edit — 管理目标
- agent 在每个 turn 结束后自动 enqueue 继续 prompt(直到目标完成或被阻塞)
- update_goal 工具供 agent 标记目标完成或 3+ 轮阻塞后标记 blocked
- Footer 显示 goal 状态指示器
-
feat: feishu connect
-
fix: desktop provider kepp TUI
-
feat: add nvidia provider
-
chore: rm bak of fix config render
-
feat: voice stt+tts just first have voice
-
feat: voice add fully-local STT (faster-whisper) + TTS (edge-tts)
-
feat: desktop
cd desktop && bun run tauri dev
-
chore: fix prompt identity
-
fix: opencode login
-
fix: after /login opencode freemodel exit then /model can't fetch model list
-
feat: better collapsing fetch result
when set verbose is false in /config -
feat: keep ctx line online
-
fix: move ctx line to rightdown
-
feat: ctx line
-
fix: model not display life-free model
-
fix: fetch active opencode model
-
feat: add new free provider opencode
-
chore: back to clawd logo
-
chore: original design to avoid ip issues
-
chore: rename skill message
-
feat: automode
-
fix: /sandbox add sandbox-runtime version num @0.0.44
-
fix: /sandbox not look rg has been installed in project or pc
-
chore: rename project
-
fix: 从 loacl 中切换到 openrouter 后自动更新 模型名称
-
fix: openrouter 缓存 [] 时启动轮询刷新 /model 列表
-
fix: start as login not anthropic account
-
fix: tui can recevie message and auto load gateway
-
feat: auto load free openrouter model