Skip to content

0.1.57

Choose a tag to compare

@github-actions github-actions released this 30 Sep 08:52
· 27 commits to master since this release

463898b fix(ui): 修复非 macOS 下弹层被标题栏容器遮挡

  • custom-electron-titlebar 的 .cet-container 自带 z-index:1 建立层叠上下文,把挂在 body 上的 Base UI 浮层整层盖住;覆盖为 z-index:auto,并用 body > 提高特指度对抗后注入的库样式
  • 仅影响 Windows / Linux(macOS 无 .cet-container)

a2169df fix(agents): /compact 摘要改用 user 角色写入历史

  • 摘要改为 role:"user" 并用 <previous_conversation_summary> 包裹,移除 allowSystemInMessages 兼容开关,从根上避免 System message must be at the beginning / InvalidPromptError

ed9e22c fix(detail): 详情页头部适配 macOS 红绿灯留白

  • compact 透传给详情页,头部按「侧边栏展开 → 红绿灯留白 → 让出折叠按钮」三级计算左内边距,并补 transition-[padding]
  • 同批次附 9 个文件的 oxfmt 格式化(仅折行/缩进,无逻辑变化)

d6e24b3 fix(agents): 修复含 system 摘要的 history 触发 InvalidPromptError

  • streamText / generateText 显式传 allowSystemInMessages: true(该方案后被 a2169df 取代)

0b0c5be feat(automation): 新增单次计划,定时触发更名为周期

  • 触发类型扩展为 周期(cron) / 单次(once) / 手动(manual);单次用 cron.at 一次性调度、触发后自清理,关闭期间错过不补跑并显示「已错过」
  • lastRunAt 语义改为「上次触发」,列表倒计时支持天/小时,设置弹窗改三段并接入 shadcn Popover + Calendar

4dc6545 chore(ui): 引入 shadcn Calendar / Popover 组件

  • 新增 calendar.tsx(react-day-picker)与 popover.tsx(Base UI),校正导入并移除误装的 cn、冗余 date-fns

57bad2a docs(overview, architecture): 同步移除会话头部时间戳后的说明

64ca7dd refactor(chat-header): 移除会话头部时间戳,仅保留侧边栏展示

c005f90 perf(chat): 流式输出时避免整体重渲染,修复切换会话卡顿

  • 移除无 selector 的 useAppStore() 全量订阅改为按需订阅,会话行状态拆出 SessionRowStatus 精确订阅,Session / Chat / ChatArea / ChatHeader / ChatInput 补 memo 边界

a11dd55 feat(sidebar): 项目区支持拖入文件夹添加项目

  • 项目区整体作拖拽落点,拖入文件夹即添加(行为同「添加项目」按钮),落点高亮与 FilePanel 同款;后端 addProject 统一校验 cwd 存在且为目录
  • 拖入路径优先 electron.getPathForFile,WebUI 下不接受拖拽;新增 sidebar.dropFolderOnly 文案

327b663 chore(deps): 升级 unified-realtime-asr 至 0.3.1

  • 仅改 volcengine ASR 适配器(默认端点切 bigmodel_async 优化链路、重复 partial 去重);公共 API 零变化,锁版与 package-lock 同步提交

3ae391c feat(peripherals): 外设语音面板松手后 5 秒倒计时自动发送

  • 复核态显示 5→1 倒数,归零复用点「发送」的同一条提交路径(来源仍为 voice);窗口期内可取消 / 返回 / 转文字作废倒数,再次按住继续往后追加
  • 文本为空或识别报错不倒数;常量 VOICE_PANEL_AUTO_SEND_SECONDS

b948656 fix(peripherals): 蓝牙适配器丢失后自动重建 UBM host

  • 按 UBM 错误码与 recreate-manager 动作识别「manager 已死」,invalidateBleHost 清空缓存并对旧句柄 best-effort destroy
  • connect / startVoice 允许重建后重试一次,修复此前只有重启进程才能恢复

13ff4a6 chore(release): 升级版本号至 v0.1.57

3cf3426 docs(speech, socket): 同步文本整理与合成前置校验的说明

17d7f36 fix(speech): 工具箱合成前拦截没有可朗读内容的文本

  • synthesizeSpeechToFile 增加与朗读链路同口径判定,提前抛明确错误,不再白花一次 provider 调用

1a592e4 feat(tts): 文本净化改用 remove-markdown,读法交给 TTS 引擎

  • 用 remove-markdown 替掉 sanitizeLine 的 12 条手写正则,修正 HTML 标签 / 脚注 / 引用式链接 / 图片 alt 的处理
  • 只补裸 URL、任务框、未成对标记等三处;删掉行首横线剥离以修复负号丢失,emoji / 数学符号 / 语种原样交给 provider 归一化

6bdc549 docs(media, toolbox): 同步 Range 分片回传与文字转语音

732cc75 fix(input): 输入法组合态下不响应 Enter / Escape

  • 组合中 Enter 是候选上屏、Escape 是取消候选,此前会误触跳转匹配 / 关闭查找框 / 结束内联重命名;code-detail、use-file-search、file-panel 三处补组合态守卫

f4ff3f8 refactor(session): 会话级配置编辑区收敛为共享组件

  • 新增 SessionConfigFields(popover / card 两变体),会话头部、加载失败页、新建会话弹窗三处共用;失败页可就地改配置后重载
  • i18n 归入 sessionConfig / session 两个 namespace,清理废弃 key

7d20eb2 feat(toolbox): 新增 text_to_speech 文字转语音工具

  • synthesize.ts 将实时合成攒成整段 PCM 落盘,wav 自拼 RIFF 头、mp3 交系统 ffmpeg;新增请求/响应 Zod 契约、主进程路由与 MCP 注册,缺 Provider / ffmpeg 返回带指引错误

7330d01 feat(media): 音视频文件支持 Range 分片回传与内嵌播放

  • serve-file 解析单段 Range(206 分片 / 起越界 416 / 多段回整份),WebUI 与 Electron 协议各自流式回传,长视频不再整份读进内存
  • 放行 fullscreen 权限修复播放器全屏永远 pending;新增 media-detail 预览与共享 getMediaKind

19e51e0 docs(speech): 语音架构文档同步「松手即关会话」的停止语义

b2980f7 fix(peripherals): 语音收尾链按 in-flight promise 去重

  • stop() 发现收尾链已在跑就复用,避免松手即关会话后并发 close() 重复报错

d110df7 fix(peripherals): 语音面板松手即关会话,尾句定稿不再丢失

  • 松手从「只停音频、会话再留 5s」改为直接 stop():VAD 静音断句要求音频流里真的出现静音,否则尾句 final 要等下次按住才补发
  • useRealtimeAsr 不再暴露 stopStreaming

4ab9224 fix(file-panel): 拖放落点按 VS Code 语义解析并整块高亮反馈

  • 落点改为「文件夹行 → 自身 / 文件行 → 父目录 / 树末尾空白 → 项目根」,只有真正可移动时才接受放置
  • 高亮改整块反馈(子树共用底色 + inset ring),行级 dragLeave 50ms 防抖;drop 收敛到 handleDropTo 并抽出路径工具函数

b2c2c2f docs(speech): 语音文档与手册同步为识别/合成统一模型

  • 文档与手册页改名(voice-input-architecture → speech-architecture、speech-to-text → speech),新增语音合成章节、各家默认音色与开关式配置步骤

5763921 refactor(speech): 移除 voice 字段的死校验渲染并澄清列表摘要语义

a4b3941 feat(speech): 设置页弹窗只做配置,表单与样式调整

  • 弹窗去掉启用开关,是否生效只由列表条目上的开关决定;Voice 改为可选(留空走默认音色),样式 border → ring 等调整

c85d40b refactor(speech): 识别方向命名统一为 ASR,语音默认值集中到 shared

  • sttEnabled → asrEnabled(含 settings.json 读取迁移),config/manager → asr-config/asr-manager
  • 新增 speech/util.ts 与 shared/speech.ts 收敛两侧重复逻辑与默认值,voice 不再必填

5fa6f34 feat(tts): 新增流式语音朗读(自动朗读 + 手动朗读)

  • 主进程新增无状态 TTS 转发(tts-config / tts-manager),音频经 tts-audio 推回渲染层
  • 渲染层朗读会话做净化分句、全局唯一 AudioContext 与 liveTtsSessionId 单闸门抢占;agent 回复加朗读按钮,header 加自动朗读开关与音量菜单,播放偏好存 localStorage

76eded2 refactor(speech): 语音 Provider 配置合并为识别/合成统一记录

  • SpeechToTextProviderInfo → SpeechProviderInfo,读取时兼容旧 speechToText 列表;设置页重做为一份列表 + 识别/合成两个方向开关,每方向至多一个启用
  • 路由 /settings/speech-to-text → /settings/speech,locale 收敛为 settings.speech.*

cddb86f chore(deps): 升级 unified-realtime-asr 至 0.3.0

  • 该版本引入 TTS 能力,识别侧配置字段随之调整,同步 package-lock.json

9d472b0 perf(markdown): 移除流式渲染的逐字动画

  • Streamdown 逐字动画会给每个字包 span[data-sd-animate],长文本流式渲染时 DOM 节点暴涨,且动画样式表本就未引入;保留 isAnimating 仍禁用复制/下载

58834d1 feat(agents): ImageAnalysis 工具支持一次分析多张图片

  • 入参由单张 path 改为 images: { name, path }[](1~10 张),name 作标签;单张失败不中断整次分析,全部失败才抛错
  • 移除与 thinking disabled 冲突的 reasoningEffort: "high"

f2694a8 feat(session): 分栏拖拽手柄增加 hover/active 状态高亮反馈

1288bf4 fix(ilink): 菜单与回复文案补空行分隔,修复 Markdown 软换行导致的合并显示

  • 七个菜单的标题与描述、四处 💡 引导语、!s 跨项目组标题统一补空行段落;纯展示改动,解析逻辑不变