Releases: ErlichLiu/Proma
0.9.21
Proma v0.9.21
对比基准:v0.9.17
新功能
- 应用内自动更新 — 检测到新版本后自动后台下载,下载完成弹窗提示「立即重启更新」,一键完成升级;也支持退出时静默安装。告别手动去 GitHub 下载覆盖安装
- 托盘显示运行中任务 — 系统托盘菜单新增正在运行中的 Agent 任务列表,无需切回主窗口即可感知任务状态
- 语音输入权限引导 — 首次使用语音输入时自动弹出麦克风权限获取弹窗,避免用户不知道需要手动授权
- 文件路径图标升级 — Agent 消息中的文件路径芯片现在使用与右侧文件树一致的 VS Code Symbols 风格彩色图标(
.ts显示 TypeScript 图标、package.json显示 npm 图标等),视觉一致性和可读性大幅提升 - Write 工具结果可点击 — Write 工具执行结果中的文件路径从纯文本升级为可点击的 FilePathChip,直接点击即可预览写入的文件
Bug 修复
- 文件路径带行号无法预览 — 修复 Agent 模式下模型输出
file.ts:42或/path/to/file.ts:123:15等带行号/列号后缀的路径时,预览器无法打开的问题。自动剥离:line:col后缀再解析路径,芯片上仍保留行号显示方便定位 - 历史会话文件路径失效 — 新增 fallback 搜索机制:当文件的原始绝对路径不存在时(会话目录被清理、文件移动等),自动在工作区范围内按文件名递归搜索,尽可能找到同名文件并打开预览
- 文件不存在时的静默失败 — 点击不存在的文件路径时,弹出明确的错误提示框,而非静默失败
- macOS 自动更新不生效 — 修复 macOS 重启更新以及手动点击重启更新均无法退出并完成更新的问题
- 语音输入稳定性 — 修复语音输入重复拼接、断连后无法自动恢复的问题;优化浮窗布局
- 顶部 Tab 无法滚动 — 修复 Tab 数量较多时顶部 Tab 区域无法横向滚动的问题
- 主线程性能优化 — 将音频播放(
audio.currentTimeseek)和系统通知创建推迟到下一个宏任务,避免在 React 批量更新的同步调用栈中阻塞主线程导致掉帧
打包与分发
- 恢复 ASAR 打包 — 重新启用 ASAR 归档(通过
asarUnpack解压 SDK native binary),减小包体积、提高启动速度、避免源码暴露 - macOS 双架构并行构建 — CI 中 arm64 和 x64 改为并行构建,构建后自动合并
latest-mac.yml,确保两种架构用户都能正确接收自动更新 - 构建容错 — Electron 下载加入重试机制,应对 GitHub CDN 偶发 EOF 断连
下载
- macOS Apple Silicon —
Proma-0.9.21-arm64.dmg - macOS Intel —
Proma-0.9.21.dmg - Windows —
Proma-Setup-0.9.21.exe
0.9.17
Proma v0.9.17
对比基准:v0.9.16
Bug 修复
- Windows 模式切换点击修复 — 修复 Windows 下左上角 Chat / Agent 模式切换按钮不容易点按的问题,避免自定义标题栏拖拽热区拦截按钮点击
- 模式切换命中区域优化 — Chat / Agent 按钮整体明确声明为不可拖拽区域,并略微增加垂直点击面积,减少需要精确点击的情况
- 顶部 Tab 空白拖拽修复 — 修复 macOS 和 Windows 下顶部 Tab 栏空白区域不可拖拽窗口的问题
- Tab 交互区域隔离 — 单个 Tab 继续保持点击、关闭和拖拽排序可用,只有 Tab 栏空白区域恢复为窗口拖拽区域
界面与体验优化
- Windows 顶部交互更顺手 — 左上角模式切换区域不再和窗口拖拽行为抢事件,切换 Chat / Agent 模式更稳定
- 跨平台窗口拖拽更一致 — macOS / Windows 顶部 Tab 栏右侧空白、Windows 窗口按钮左侧预留空白都可用于拖动窗口
- 标题栏命中规则更清晰 — 在 TabBar 中补充明确中文注释,说明空白区域必须保持
titlebar-drag-region,避免后续维护时误把整条容器改回titlebar-no-drag
开发与打包
- 版本更新 —
@proma/electron从0.9.16升级到0.9.17 - 标题栏交互边界收敛 —
ModeSwitcher自身负责声明titlebar-no-drag;TabBar保持空白可拖拽,TabBarItem自身负责声明可交互区域不可拖拽 - 类型检查 — 已通过
bun run --filter='@proma/electron' typecheck
使用提示
- Windows 下如果之前点击左上角 Chat / Agent 切换经常变成拖动窗口,本版本应能明显改善
- 在 macOS / Windows 顶部 Tab 栏没有标签页覆盖的空白位置,可以直接拖动窗口
下载
- macOS Apple Silicon —
Proma-0.9.17-arm64.dmg - macOS Intel —
Proma-0.9.17.dmg - Windows —
Proma-Setup-0.9.17.exe
0.9.16
Proma v0.9.16
对比基准:v0.9.15
新功能
- 语音输入自定义热词实验 — 豆包流式语音输入新增本地自定义热词能力,可在「设置 → 语音输入」中按行或逗号填写产品名、技术词、人名等专有词 (#380)
- 请求级热词注入 — 启动识别时会把热词去重后直传给豆包 ASR 的
corpus.context.hotwords,无需先到火山控制台创建热词表 - 轻量词库配置 — 新增设置页多行输入控件,默认保存在本地配置中,适合作为热词识别效果的快速实验入口
- 安全兜底 — 读取旧配置或手动编辑过的配置时,对非字符串热词字段自动降级为空值,避免启动识别时报错
- 请求级热词注入 — 启动识别时会把热词去重后直传给豆包 ASR 的
Bug 修复
- 语音停顿后文本丢失修复 — 语音浮窗不再简单用最新 ASR 事件覆盖整段文本,会合并「已确认文本 + 当前分句」,避免用户自然停顿后前文被后续分句覆盖 (#380)
- 语音停顿容忍度提升 — 豆包 ASR 的
end_window_size从 800ms 调整为 5000ms,并补充force_to_speech_time,减少稍微停顿就被过早切句的问题 - Windows 缩放快捷键修复 — 修复 Windows 下主键盘
Ctrl++可能被上报为Ctrl+=导致无法放大的问题,并兼容小键盘加号 - Windows 顶部空间修正 — 左侧 Sidebar 不再沿用 macOS 红绿灯避让间距,Windows 下 Chat / Agent 模式切换区域更紧凑,减少顶部空白
- 关闭按钮遮挡修复 — 调整 Agent 侧栏文件区域与关闭按钮的层级和间距,避免窗口控制区与文件内容互相遮挡
界面与体验优化
- 语音识别跨停顿更自然 — 豆包返回全量文本或仅返回当前分句时,浮窗都会尽量保持一段完整、连续的听写结果
- 专有名词识别更可控 — 用户可以把项目名、框架名、英文缩写等直接加入热词输入框,用更低成本验证词库对识别准确率的改善
- Windows 侧栏布局优化 — Chat / Agent 模式切换高度提高,非 macOS 平台的侧栏顶部间距更贴合自定义标题栏
开发与打包
- 版本更新 —
@proma/electron从0.9.15升级到0.9.16 - Agent SDK 升级 —
@anthropic-ai/claude-agent-sdk及对应平台 optionalDependencies 从0.2.123升级到0.2.129 - 语音文本合并测试 — 新增
voice-text-normalizerBDD 风格测试,覆盖「停顿后返回当前分句」和「全量返回不重复拼接」两类场景 - 设置页基础组件 — 新增
SettingsTextarea,用于承载语音输入热词这类多行设置项
使用提示
- 如果语音输入经常把产品名、库名或人名识别错,可以在「设置 → 语音输入 → 自定义热词」中逐行添加,例如
Proma、Jotai、ShadcnUI - 自定义热词适合少量高频专有名词;如果需要大规模词表或强制替换词,后续仍可接入火山控制台的热词表 / 替换词表能力
- 本版本把语音停顿窗口放宽到 5 秒,适合听写时自然思考;再次按语音快捷键仍会立即停止并提交
下载
- macOS Apple Silicon —
Proma-0.9.16-arm64.dmg - macOS Intel —
Proma-0.9.16.dmg - Windows —
Proma-Setup-0.9.16.exe
0.9.15
Proma v0.9.15
对比基准:v0.9.12
新功能
-
豆包流式语音输入 — 新增系统级语音输入能力,可通过
Ctrl+~唤起独立浮窗,把语音实时转写为文本并写回 Proma 或当前光标位置 (#377)- 豆包大模型流式 ASR — 主进程接入火山引擎 OpenSpeech WebSocket,支持豆包语音识别模型 2.0,并处理自定义鉴权 Header、gzip 帧、增量转写和最终结果
- 独立语音输入浮窗 — 浮窗不抢焦点、不进入任务栏,录音时展示状态、音量反馈和实时转写内容;再次按快捷键可停止并自动提交
- 多种输出方式 — 默认模式下,如果从 Proma 内唤起会写入当前 Chat / Agent 输入框;如果从其他应用唤起,则优先写入当前系统光标位置;也可设置为仅复制到剪贴板或仅写入 Proma 输入框
- 外部应用自动粘贴 — 通过临时剪贴板 + 系统粘贴快捷键把文本写入前台应用,失败时保留文本到剪贴板;macOS 下会提示需要辅助功能权限
- 语音输入设置页 — 设置中新增语音输入配置,支持启用开关、APP ID、Access Token、Resource ID、连接模式、识别语言、输出方式和连接测试;Access Token 保存时走加密配置
- 连接模式与语言选择 — 支持双向流式优化版 / 标准版,支持自动识别、中文普通话、英语、粤语、日语、韩语
- macOS 麦克风权限声明 — 打包配置新增
NSMicrophoneUsageDescription,系统会明确说明 Proma 访问麦克风是为了实时语音转写
-
菜单栏会话快捷操作 — 系统菜单栏新增最近 Agent 会话入口和快速创建入口 (#376)
- 最近会话 — 菜单栏展示最近 3 个未归档 Agent 会话,并显示所属工作区;更多最近会话收纳到「更多」子菜单
- 快速打开 Agent 会话 — 从菜单栏直接打开指定 Agent 会话,并自动切换到对应工作区和标签页
- 快速新建 — 支持从菜单栏新建 Chat 对话或 Agent 会话
- 动态刷新 — 点击或右键菜单栏图标时重新读取会话列表,保证菜单内容接近当前状态
-
Dock / Launcher 角标未读数 — 新增应用级角标,汇总需要用户处理的 Agent 状态 (#373)
- 角标数量包含:已完成但未查看的 Agent 会话、待审批权限请求、待回答 AskUser 请求、待审批 ExitPlan 请求
- macOS 显示在 Dock 图标上,Linux 在支持 Unity Launcher 的环境下显示;数量归零时自动清除
- 新增
dock-badge-count计数工具及 BDD 风格测试覆盖
Bug 修复
- 权限模式彻底按 session 隔离 — 进一步移除工作区级权限模式读写入口,热切换和错误重试不再把当前 session 的权限模式写回工作区,避免不同会话之间继续出现状态污染 (#374)
- 粘贴链接稳定性修复 — 富文本输入禁用 TipTap 自动链接和粘贴自动链接,减少普通文本粘贴时被错误转换为链接的情况 (#375)
- 工作区文件监听修复 — 文件监听统一规范化 Windows / Unix 路径,只忽略工作区顶层
config.json,会话目录里的同名用户文件不再被误忽略 (#375) - 历史工具动画关闭 — 已完成的历史 Agent 消息不再播放工具活动动画,降低回看历史时的视觉干扰
- Agent 消息加载误判修正 — Agent 消息区域改为基于 SDKMessage 统一判断内容状态,避免空的旧消息数组影响空状态和淡入逻辑
界面与体验优化
- 语音按钮升级为系统级入口 — Chat / Agent 输入框里的麦克风按钮不再依赖浏览器 Web Speech API,统一唤起新的豆包流式语音输入浮窗
- 语音文本优先插入当前编辑器光标 — Proma 内回填语音结果时会优先写入最后聚焦的富文本输入框;如果无法定位光标,则回退写入当前 Chat / Agent 草稿
- 全局快捷键语义修正 —
Ctrl+~保持为物理 Control 键,不再在 macOS 上被转换成CommandOrControl,避免和其他快捷键语义混淆 - Agent 工具渲染路径简化 — 移除旧版
AgentMessage工具详情渲染组件,Agent 消息展示继续向统一 SDKMessage 渲染路径收敛,减少维护分叉
开发与打包
- 版本更新 —
@proma/electron从0.9.12升级到0.9.15,@proma/shared从0.1.17升级到0.1.19 - 新增依赖 —
ws@8.19.0用于主进程连接豆包 OpenSpeech WebSocket - 新增协作说明 — 仓库根目录新增
AGENTS.md,沉淀项目结构、架构约束、常用命令和 Agent SDK 集成注意事项 - 语音输入 MVP 设计文档 — 新增
docs/plans/2025-05-05-doubao-streaming-voice-input-mvp-design.md,记录豆包流式语音输入的方案与边界
使用提示
- 使用语音输入前,需要在「设置 → 语音输入」中启用功能并填写火山引擎豆包 ASR 凭证
- 第一次使用时系统可能请求麦克风权限;如果需要写入其他应用的当前光标位置,macOS 还需要在系统设置中允许 Proma 使用辅助功能
- 自动粘贴失败时,Proma 会把识别文本保留到剪贴板,避免丢失内容
下载
- macOS Apple Silicon —
Proma-0.9.15-arm64.dmg - macOS Intel —
Proma-0.9.15.dmg - Windows —
Proma-Setup-0.9.15.exe
0.9.12
Proma v0.9.12
新功能
- 商业版 Proma 增强 gpt-image-2 稳定性 增强商业版 gpt-image-2 稳定性,提高生成成功率
- 调整 Agent 运行指示条 调整 Agent 运行指示条,让完成运行的 Agent 会话显示绿色,用户阅读后则不显示颜色,进而实现用户能更方便的找到已经完成运行但是没有阅读的会话
-
@ 文件引用弹窗全面增强 —
@唤起的文件引用弹窗完全重写,带来更清晰的层级与更顺手的交互:- 会话/工作区分组 — 双 banner 分别展示「会话文件」与「工作区文件」,来源一目了然;工作文件顶层目录显示名改为「工作文件」
- 树形层级与目录展开 — 支持目录展开/折叠,展开键由反引号
`改为Tab(toggle),→展开 /←折叠保持不变;空查询下每组扩展至 100 条,并附加目录顶层文件夹 - 底部锚定向上生长 — 弹窗底部锚定在光标上方,展开文件夹时向上延展,
ResizeObserver监听高度变化自动重新定位 - 路径 Tooltip — 鼠标悬停 300ms 后在条目右侧显示完整路径,复用 Radix Tooltip 组件
- 双击目录插入引用 — 鼠标双击目录即可选中并插入
@引用(180ms 延迟区分单/双击) - 中文/特殊字符路径修复 —
htmlToMarkdown源头encodeURIComponent编码路径,remarkMentions智能检测已编码路径避免双重编码,MentionChip还原原始文件名,彻底解决中文/空格/特殊字符路径渲染断裂 (#362)
-
Windows 自定义标题栏 — Windows 平台改用自定义标题栏,样式与应用主题保持一致,观感更统一
-
Agent 设置页重构为 Tabs + Skills Master-Detail 布局 — 设置页改为三 Tab 布局(Skills / MCP / 内置工具),Skills Tab 升级为左列列表 + 右列详情的 Master-Detail 视图,支持 Skill 元数据内联编辑与
SKILL.md全文 Markdown 渲染;新增readSkillContent/writeSkillContentIPC API;AI 配置按钮移至顶部 action 区域并附带 Tooltip 说明;同时移除了冗余的 Agent 高级设置(思考模式、推理深度、预算、轮次)(#367)
Bug 修复
- 权限模式按 session 持久化,多 Tab 独立隔离 — 权限模式从全局共享改为按 session 维度持久化,
AgentSessionMeta新增permissionMode字段随 session index 落盘,新增UPDATE_SESSION_PERMISSION_MODEIPC 支持热切换;读回优先级为 session meta → workspace config → 全局 default,解决多 Tab 之间权限模式相互污染、重启后状态丢失的问题;初始模式为plan时主进程主动 emitenter_plan_mode,修复 plan 横幅不展示 (#365) - 热切换与 atom re-render 问题 — 修复热切换失败时 UI/后端状态不一致、
seed()异步竞态,以及agentSessionsAtom不必要 re-render 的性能问题 - 弹窗位置闪跳 —
anchorPopup将clientRect改为读取latestClientRect变量,ResizeObserver回调始终使用最新的光标位置,修复闭包捕获过期坐标导致的弹窗位置闪跳 - AssistantTurnRenderer 违反 React hooks 规则 — 错误消息和空内容的 early-return 移到所有
useMemo之后,避免条件渲染导致 hooks 调用顺序不一致 - 渠道开关与输入框状态断层 — 修复渠道开关切换与输入框可选状态之间的断层 (#323)
- 首次安装 Skills 未落到工作区 — 修复首次安装时默认 Skills 可能未安装到对应工作区的问题
- 用户悬浮消息占满屏幕 — 修复特定情况下用户悬浮消息可能占满整个屏幕的布局 Bug
其他改进
- Agent 模式系统提示词更新 — Agent 模式的系统提示词持续打磨,更贴近实际使用场景
下载
- macOS Apple Silicon —
Proma-0.9.12-arm64.dmg - macOS Intel —
Proma-0.9.12.dmg - Windows —
Proma-Setup-0.9.12.exe
0.9.11
Proma v0.9.11
新功能
-
商业版支持 GPT-Image-2 — 目前由于渠道和适配方案的问题,暂时仅商业版本提供 gpt-image-2 的能力,支持 Chat 和 Agent 模式下调用
-
Windows 环境检测 + 一键安装 — Onboarding 流程新增 Windows 环境自动检测,缺少 Git/Node 时可一键安装;聊天界面的错误卡片同步升级,提供更清晰的排障指引
-
渠道创建与配置提醒 — 渠道创建成功/失败时显示 toast 提示;渠道设置页新增保存确认与配置提醒,避免未保存即离开
-
Agent acceptEdits 切换为 SDK 原生 auto 模式 — 文件编辑审批模式由自定义实现替换为 Claude Agent SDK 原生
auto模式,行为更一致、维护成本更低 -
工作区 Badge 标识 — 正在工作中的区域增加 Badge 视觉提示,帮助快速定位活跃任务
Bug 修复
- 修复 API 异常时黑屏崩溃 — API 请求异常不再导致整个窗口白屏/黑屏 (#349)
- 修复回复完成时布局跳动和闪屏 — Chat/Agent 模式下消息生成结束瞬间的布局抖动问题已消除
- 降低 GPU 占用 — 移除面板
backdrop-blur并修正visualEffectState,GPU 占用显著下降 (#340) - 多 Bot 平台状态灯修正 — 多平台连接场景下,任一平台在线即显示绿灯 (#359)
- 飞书工作区切换后偶发会话错位 —
/workspace切换后/new不再偶发创建会话到错误工作区 (#354) - 文件预览弹窗滚动条始终可见 — 长文件预览不再需要 hover 才出现滚动条 (#355)
- 文件预览换行支持 — 预览面板正确渲染换行内容
- Plan 模式计划文档被误拦截 —
.md格式的计划文件不再被权限系统错误拦截 - 子进程生命周期管理 — 为 Claude 子进程增加 PID 追踪与平台差异化强杀兜底;关闭 Tab 时主动中止 SDK 子进程 (#357)
- SDKMessage 错误重试按钮 — path 2 路径也添加了对应的错误重试和开新对话按钮
- followWindow 修复 — 窗口跟随行为修正
- Skills 目录加载规则说明 — 系统提示词中明确标注 Skills 目录加载路径 (#348)
界面优化
- 晴空碧海主题微调 — 侧边栏蓝色降低饱和度、提升亮度,视觉更柔和 (#360)
依赖升级
- Claude Agent SDK 升级至 0.2.123 — 从 0.2.120 升级至 0.2.123
下载
- macOS Apple Silicon —
Proma-0.9.11-arm64.dmg - macOS Intel —
Proma-0.9.11.dmg - Windows —
Proma-Setup-0.9.11.exe
0.9.10
Proma v0.9.10
新功能
-
AskUserQuestion 选项预览 — AskUserQuestion 的每个选项现支持
preview字段,可展示 Markdown 格式的预览内容;当 Agent 发起提问时,用户能通过预览内容直观理解每个选项的具体含义与潜在影响,做出更清晰的决策 -
Kimi Anthropic 协议与 Coding Plan 支持 — 新接入 Kimi 模型的 Anthropic 兼容协议及 Coding Plan 能力,扩展模型生态
Bug 修复
-
Chat 模式 DeepSeek / Kimi 思考卡死 — Chat 模式下使用 Anthropic 协议时,思考参数配置不当导致 DeepSeek 和 Kimi 模型在 thinking block 阶段卡死。修复了协议适配中的参数传递逻辑,针对 DeepSeek 的思考参数格式做了特殊兼容;同时清理了 Onboarding 中不再需要的 Node.js 与 Git 检测步骤
-
AskUserQuestion 答案不生效 — AskUserQuestion 弹窗返回的答案 key 此前错误地使用了数字索引
String(i),与 Claude Agent SDK 的AskUserQuestionOutput类型约定(key 应为问题原文)不匹配,导致 Agent 无法正确解析用户选择。现已修正为问题文本作为 key,并新增空问题文本 fallback 与稀疏数组 null guard,防止运行时崩溃
下载
- macOS Apple Silicon —
Proma-0.9.10-arm64.dmg - macOS Intel —
Proma-0.9.10.dmg - Windows —
Proma-Setup-0.9.10.exe
0.9.8
Proma v0.9.8
新功能
-
Agent 运行速度显著加快 — 基于 Claude Agent SDK 0.2.120 的 native binary 架构升级(详见「依赖升级」),Agent 冷启动延迟显著降低、工具调用链路更顺滑;同时将单次会话的工具调用上限由默认值提升至 999,长链路任务不再被默认上限打断
-
Chat 不限制历史长度 — Chat 模式移除对会话历史长度的裁剪,长对话不再因前文被截断导致上下文丢失;设置面板中对应的「上下文历史长度」配置项同步下线
依赖升级
- Claude Agent SDK 升级至 0.2.120 — 从 0.2.111 升级至 0.2.120,覆盖 SDK 的架构级重构:
- 0.2.113 起 SDK 改为按平台分发 native binary(通过
optionalDependencies安装@anthropic-ai/claude-agent-sdk-{platform}-{arch}),cli.js与vendor/ripgrep/不再随包分发,ripgrep 编译进 binary - Proma 的 binary 路径解析、打包
files规则、CI 构建矩阵一并适配:electron-builder.yml新增四个平台子包 glob;release.yml拆为macos-latest(arm64) +macos-15-intel(x64) +windows-latest(x64) 三 runner 矩阵,各自打对应架构产物
- 0.2.113 起 SDK 改为按平台分发 native binary(通过
下载
- macOS Apple Silicon —
Proma-0.9.8-arm64.dmg - macOS Intel —
Proma-0.9.8.dmg - Windows —
Proma-Setup-0.9.8.exe
0.9.7
Proma v0.9.7
新功能
-
侧面板文件一键加入聊天 — 侧面板文件浏览器中的文件 hover 时显示
MessageSquarePlus图标,单击即可加入当前会话的待发送附件;发送时通过sourcePath直接引用原路径,避免重复复制。新增READ_ATTACHED_FILE安全 IPC 通道,带路径白名单、symlink 防绕过与 20MB 大小限制 -
手动标记会话为工作中 — 侧边栏每个会话项新增锤子图标按钮,点击即可将该会话固定在「工作中」分组,即使 Agent 已执行完毕也不会从列表中消失;标记为工作中时自动取消归档,运行中的会话按钮禁用。新增
TOGGLE_MANUAL_WORKINGIPC 通道与manualWorking会话标志 -
停止 Agent 快捷键 — 新增停止当前 Agent 运行的全局快捷键
Cmd+Shift+Backspace(由原先的Cmd+.迁移),Agent 模式和 Chat 模式的停止按钮 hover 时显示「停止 Agent (⌘⇧⌫)」Tooltip,设置页快捷键名称统一为「停止 Agent」 -
文件预览窗口体验升级 — 预览窗口默认宽度由 880 调整为 1200,高度跟随屏幕工作区全高并顶边居中显示;预览内容默认缩放提升至 1.15,图片/Markdown/代码等预览更清晰
-
钉钉 Bridge 支持发送图片 — 钉钉助手现已支持用户向 Agent 发送图片:通过 OAuth access_token 缓存 +
downloadCode换取临时 URL 下载图片,保存到 Agent Session 工作目录并通过<attached_files>标签注入 Prompt;handleRobotMessage拆分为同步 ACK + 异步处理,避免回调超时 -
微信 Bridge 支持发送图片/文件 — 微信 Bridge 支持接收用户发送的图片和文件:
ILinkClient.downloadImage()支持 CDN AES-128-ECB 解密(参考官方 SDK 实现),新增「先图后文」图片缓冲机制;内置 SSRF 防护(CDN 域名白名单)、内存炸弹防护(Content-Length检查)、路径穿越防御(sanitizeFileName+ensurePathWithin) -
DeepSeek V4 默认 Anthropic 协议与 1M 上下文 — 内置 DeepSeek 模型现默认使用 Anthropic 兼容协议,开箱即可在 Agent 模式下使用;DeepSeek V4 系列上下文窗口扩展至 1M tokens
-
设置区文案优化 — 优化设置区域的多处说明文案,降低新用户理解门槛
Bug 修复
-
附加文件夹首次不显示 — 修复会话文件区通过「附加文件夹」对话框添加目录后,首次需要切换会话才能显示的问题。根因是
AgentView中的useEffect用sessions旧值覆盖了SidePanel刚写入的新数据;改为仅冷启动水合,已有数据时不再覆盖 -
删除/归档当前会话后文件面板消失 — 修复删除、归档当前激活会话后右侧文件面板和按钮消失的问题。根因是
handleConfirmDelete/handleToggleArchive/handleToggleArchiveAgent的闭包捕获了旧的currentAgentSessionId,导致setCurrentXxxId(null)把新 tab 的 sessionId 覆盖为空;三个 handler 统一接入syncActiveTabSideEffects并移除冗余分支 -
上下文用量圆环切换 Tab 后消失 — 修复切换会话、重试、失败后消息输入框旁的上下文用量圆环丢失的问题。消息加载完成时保留
inputTokens/contextWindow,handleSend/handleRetry/ auto-send 重置流式状态时继承上次 usage;sendAgentMessage失败时只标running:false,不删除整个 entry。本次会话只要收到过回复就一直显示 -
侧边栏自动滚动到活跃 Tab — 在主区域选中某个会话标签页时,如果该会话在侧边栏中不在可视区域内,侧边栏会自动平滑滚动到该项。通过监听
activeTabId变化并调用scrollIntoView({ block: 'nearest', behavior: 'smooth' })实现 -
TabBar 与侧边栏子标签自动同步 — 修复点击顶部 TabBar 切换到置顶会话时,左侧侧边栏仍停留在「工作中」子标签导致选中项不可见的问题;现会根据
activeTabId自动将agentSubTab切换到对应分类 -
模型选择器选中项可见度 — 将模型选择器选中项的背景色从
bg-accent/30改为bg-foreground/10。部分主题(如「云朵舞者」)下accent色与背景亮度几乎一致导致选中态不可见;foreground在所有主题下都与背景有最大对比度 -
弹窗遮罩层统一暗度 — 将
dialog/alert-dialog/sheet/image-lightbox四个基础组件的遮罩层从bg-black/80统一为bg-black/20,与 Settings 弹窗视觉一致,整体体验更舒适 -
飞书图片扩展名缺失 — 修复飞书图片在
<attached_files>标签中缺少扩展名导致无法在 Proma 侧显示缩略图的问题,同时把飞书 bridge 的附件保存逻辑统一迁移到共享工具bridge-attachment-utils,复用微信/钉钉的sanitizeFileName和ensurePathWithin,净删约 60 行重复代码 -
Cmd+W 优先关闭浮窗 — 修复设置/搜索浮窗打开时
Cmd+W错误地关闭底层标签页的问题,现在会先判断浮窗状态,有浮窗打开时优先关闭浮窗 -
Dev 与正式版 userData 冲突 — 修复开发版与本地安装的正式版共享
@proma/electronuserData 目录时,ChromiumSingletonLock导致后启动进程静默退出的问题。非 packaged 环境下将 userData 重定向到@proma/electron-dev,并显式调用requestSingleInstanceLock防止重复启动同一版本
下载
- macOS Apple Silicon —
Proma-0.9.7-arm64.dmg - macOS Intel —
Proma-0.9.7.dmg - Windows —
Proma-Setup-0.9.7.exe
0.9.6
Proma v0.9.6
新功能
-
Ctrl+Tab 标签快速切换器 — Chrome 风格的键盘切换体验:快速按放
Ctrl+Tab切回上一个标签(MRU 顺序),长按Ctrl连按Tab弹出选择器循环选中、松开Ctrl确认,Ctrl+Shift+Tab反向循环;窗口失焦自动确认当前选择。切换器面板包含 Header、快捷键标注与 Tips 提示,并同步显示 Agent/Chat 状态指示线(Agent 运行中 / Chat 流式 / 等待用户输入 / 已完成未查看) -
标签页状态持久化 — 标签页(tabs + activeTabId)在应用重启后自动恢复;运行时状态持续写入
settings.json,关闭窗口前通过新增的同步 IPC(settings:update-sync)兜底落盘,避免在beforeunload阶段被异步写入截断。兼容旧版splitLayout结构一次性迁移上次激活标签 -
Agent 侧边栏 Working 区 — Agent 模式侧边栏置顶区新增「Working」分组,按状态聚合所有活跃会话:Todo(等待用户决策,橙色)、Running(执行中,蓝色)、Done(已完成,绿色,关闭标签即移除)。Working 跨工作区展示,一眼看到所有后台运行中的 Agent;置顶(Pinned)与 Working 合并为双 Tab 区域,各自带 badge 计数
-
Agent 侧边栏 Working/置顶区可拖拽高度 — Working/置顶区瘦身并改造为可拖拽双区,支持用 1px splitter(hover 扩为 4px 热区)自由调整上下比例,避免覆盖下方"最近会话"列表;高度持久化到 localStorage,约束在 [80px, 侧栏高度×70%]
-
标签页状态指示统一为线条 — Tab / 侧边栏 / 切换器的状态显示全面改为线条语言:侧边栏 Agent Tab 切换与 Working 子分组改用左侧 accent 竖线,Chat 列表项从呼吸圆点改为 emerald 竖线,TabBar 顶部 Tab 从圆点改为底部横线条,Ctrl+Tab 切换器也对齐该语言;窄 Tab(<72px)状态指示降级为图标右上角小徽章保持可见
-
文件浏览器写入联动 — Agent 调用 Write/Edit/MultiEdit/NotebookEdit/Update 工具时,右侧文件浏览器自动展开父目录链、平滑滚动到目标文件行并做 0.8s 高亮脉冲;行左侧额外保留 60s 的小圆点长效标记(跟随行缩进定位),错过瞬间动画仍能看到 Agent 最近修改了哪些文件。多根场景(会话目录、附加目录、workspace files)下各实例按 rootPath 前缀自治响应,不影响用户已选中的文件
-
文件预览支持编辑与快捷键关闭 — 预览窗口支持
Esc/Cmd+W/Ctrl+W关闭;纯文本/代码类文件(ts/tsx/py/go/rs/yaml 等 20+ 种)可点击「编辑」进入 Monaco,Markdown 使用 Vditor WYSIWYG;Cmd/Ctrl+S原子写入保存,未保存关窗弹出「保存/放弃/取消」对话框,fs.watch 监听外部修改做无脏自动重载 / 有脏弹询问。UI 采用 Typora 风格(暖白 / 深灰配色、毛玻璃工具栏、macOS hiddenInset 标题栏融合 traffic light、880×920 纵向阅读尺寸、PingFang SC + SF Pro / JetBrains Mono 字体) -
文件预览语言识别加强 — 代码高亮覆盖 20+ 种常见语言并对齐 Monaco 映射;新增
.gitignore/Dockerfile/Makefile/bun.lock/pnpm-lock.yaml/.editorconfig/.npmrc等按完整文件名识别;highlight.js 主包缺失的语言(dockerfile/swift/kotlin/diff/fish 等)改为按需动态注册子包,失败降级为无高亮 -
Markdown 预览样式优化 — 引用块改用 accent 粗左边框 + 淡背景、去除 italic 以提升中文可读性;表格改为圆角容器 + 斑马纹;代码块 / 内联代码补边框;GFM 任务列表自定义方形勾选;补充
kbd/mark/del/strong等内联元素样式;h4/h5/h6用次级文字色区分层级 -
用户消息气泡 Markdown 渲染 — 复用
MessageResponse组件为用户消息启用完整 Markdown 渲染(GFM 表格、代码高亮、KaTeX 公式);新增remarkMentions插件在 AST 层面将@file://skill:/#mcp:转为mention://链接节点渲染为彩色 chip,解决 Markdown 化后 mention 丢失的问题;新增remarkPreserveBreaks插件用 break 节点替代全局字符串替换,避免代码块内出现多余尾随空格;悬浮置顶条用stripCodeBlocks将 fenced code 显示为[code]占位符 -
为支持的 Claude 模型自动启用 1M context — Opus 4.6/4.7 与 Sonnet 4 系列自动注入
context-1m-2025-08-07beta header,突破 Agent SDK 默认 200K 上下文在 ~150K 触发压缩的限制,充分利用长上下文;Haiku 与非 Claude 模型保持 200K 行为不变 -
通用设置新增「消息悬浮置顶条」开关 — Agent 对话区顶部的用户消息悬浮置顶条现在可在「设置 → 通用设置」中一键关闭,默认开启,持久化到
~/.proma/settings.json;关闭状态下组件完全不渲染,同时跳过 scroll/ResizeObserver 监听与 DOM 查询,降低空转开销 -
/compact 体验优化与 ContextUsageBadge 重设计 — 点击手动压缩立即注入合成
/compact用户气泡并乐观置isCompacting,提供即时反馈,失败自动回滚;新增compactInFlight贯穿整个压缩 stream 抑制compact_boundary切换期间的指示器闪烁;CompactingIndicator改为与compact_boundary分隔线同款横线 + pill 无缝过渡;ContextUsageBadge 重构为 36×36 圆环按钮 + Popover,圆环按占用比例渲染、hover 弹出 token 明细与手动压缩按钮,按模型家族推断contextWindow作为流式 fallback 避免进度环无分母 -
Agent 流式中打断发送 — 流式输出过程中发送新消息从"FIFO 追加"改为基于 SDK 0.2.111
query.interrupt()的软中断:先中断当前 turn 再注入消息,收到aborted_streaming/aborted_tools结果时保留活跃 Query 让下一轮续跑;AssistantTurnRenderer 自检 turn 内 aborted 结果强制显示"已被用户中断"徽章 -
Agent 模式对瞬时网络错误自动重试 — 上游 API 偶发流式中断(
terminated/ECONNRESET/socket hang up/EPIPE/ETIMEDOUT/ENOTFOUND/EAI_AGAIN/ECONNREFUSED/fetch failed/premature close等)不再直接报错给用户;应用层新增TRANSIENT_NETWORK_PATTERN兜底匹配 stderr,SDK 标记为 unknown 但消息匹配网络错误的情形也映射为network_error;最大自动重试从 3 提升至 8,单次延迟上限 8s → 10s,叠加 ±20% jitter 防惊群,最坏累计 ≈55s;共享正则抽到error-patterns.ts避免两份副本偏差 -
开发 / 生产配置目录隔离 — 开发模式(
bun run dev)自动使用~/.proma-dev/目录存储配置,打包发布版保持~/.proma/,避免开发调试污染正式版配置文件 -
JSON 索引原子写入 + 备份轮转 — 会话 / 工作区 / 对话三类 JSON 索引改用安全写入模式:新增
safe-file.ts提供writeJsonFileAtomic(temp+rename)与readJsonFileSafe(main → .tmp → .bak 三级回退),每次写入前先落.bak备份,强杀 / 崩溃下显著降低数据丢失风险 -
Write 工具详情改为内容视图 — 展开 Write 工具调用详情时,由原来仅显示"已写入 N 行"改为展示实际写入内容,样式与 Edit 工具的 diff 视图保持一致(绿色 + 行前缀 + 深色背景)
-
输入框列表交互优化 — 空列表项按
Enter或Backspace退出列表回到普通段落;换行改用splitBlock创建新段落修复换行后列表inputRules失效;htmlToMarkdown块级元素末尾统一为单换行修复发送多余空行;复制时写入纯文本到剪贴板修复粘贴到外部应用出现大量空行;CSS 清除p/ul/ol/li默认 margin 保持视觉间距一致 -
nano-banana 批量生成参数 — MCP 工具新增
numberOfImages参数(1-4,默认 1)为未来 API 支持预留;过滤 Flash 模型的thought推理图像不再混入生成结果
Bug 修复
-
移除 Agent 模式分屏功能 — 分屏实际使用率低且带来多余的状态管理复杂度,完整移除
SplitContainer/SplitPanel/SplitModeToggle/MainContentPanel与相关 atoms / 类型,保留浏览器风格多标签页作为唯一多视图范式;PersistedTabState扁平化为{ tabs, activeTabId },对旧版splitLayout做一次性迁移;抽取useSyncActiveTabSideEffectshook 统一关闭活跃 Tab 后同步appMode/currentXxxId/workspace/ 未查看已完成标记的副作用,顺带修复GlobalShortcuts漏清除已完成标记的问题 -
启动 / 主题切换全屏闪烁 — 根因为
applyThemeToDOM非幂等 + useEffect 冗余触发,叠加 vibrancy +backdrop-blur-xl导致 Chromium 重建合成层。applyThemeToDOM改为幂等(计算目标 class 与当前<html>对比一致则直接 return),ThemeInitializer用useMemo计算影响 DOM 的签名作为 effect 依赖 -
苍穹暮色侧边栏对比度 —
--background从 11% 调整至 13%,提升与--content-area(8%)的明度差距,--card保持 11% 不变 -
飞书 / 微信 / 钉钉 Bridge 并发保护 — 所有 IM Bridge 在
handleUserMessage入口处增加isAgentSessionActive检查,Agent 仍在运行时直接拒绝新消息并返回错误卡片,避免覆写sessionBuffer导致正在运行任务的结果丢失 -
DingTalk Bridge 重连保留 chatBindings —
startBot()重连时改为复用现有DingTalkBridge实例(调用stop()+updateConfig()+start())而非 delete + new,避免BridgeCommandHandler中的chatBindings被清空导致/stop返回"当前没有绑定的会话" -
remarkMentions 并发正则污染 —
MENTION_PATTERN从模块级共享/g正则改为函数内局部变量,避免并发 remark pipeline 间lastIndex互相干扰导致 mention chip 间歇性丢失 -
settings 日志脱敏 —
settings-service.tsupdateSettings日志从JSON.stringify(全量设置)改为只记录变更的 key 名,防止 API key / session ID 等敏感数据泄漏到控制台 -
AskUserBanner 自动跳转定时器清理 — 单选题选完后跳转下一问题的
setTimeout在组件卸载 / 请求切换时未清理、150ms 内连续点击会排多个定时器导致越过应停留 tab,用useRef保存 timer id 并在点击前 / 卸载时 / 切换时 clear -
Agent 流式中 prompt_suggestion 显示 —
useGlobalAgentListeners跳过prompt_suggestion写入liveMessagesMapAtom,SDKMessageRenderer的groupMessages显式排除prompt_suggestion入 turn,修复其被错误追加到最后一条助手消息的问题 -
fork 跨 session UUID 错误 — 会话经历
session-not-found恢复后sdkSessionId会被替换,但旧消息 UUID 仍绑定在旧 SDK session 的 JSONL 中。Fork 旧消息时改从 Proma JSONL 查找消息实际所属的session_id,用消息真实归属的 SDK session 调用sdk.forkSession,修复 "Message not found in session" 错误 -
.bak自毁恢复路径 —readJsonFileSafe回退到.bak恢复主文件时,writeJsonFileAtomic会先把(已损坏的)主文件拷到.bak——覆盖了仅存的完好备份。新增skipBackup参数,.bak 恢复路径上禁用备份写入保留干净副本 -
开发模式 default-skills 路径错误 —
seedDefaultSkills()中../../default-skills在开发模式(__dirname为apps/electron/dist)解析到不存在的apps/default-skills,导致~/.proma-dev/下所有工作区都没有复制 skills。修正为../default-skills -
Windows 下 bun dev 启动崩溃 — 修复 Windows 平台开发模式启动环境变量构建问题
-
标签页持久化竞态 — 增加
restoredRef守卫防止自动保存在异步恢复完成前覆写已持久化状态;beforeunload阶段使用新增的同步 IPC 确保 tab 状态落盘;用运行时类型守卫替换as断言,处理 panelactiveTabId可能为 null 的情况并过滤无效 panel,focusedPanelIndex夹到合法范围 -
MainArea
activeTabId为空循环更新 —tabs非空但activeTabId为空的异常分支原先渲染WelcomeView,会触发openTab反复设置 tabs/activeTabId 导致状态循环。改为 useEffect 自动将activeTabId设为tabs[0].id,该分支直接返回null -
设置页若干 UI 问题 — 外观设置补充应用图标区块与主题设置的合理间距(
space-y-6);飞书机器人设置页打开时主动同步最新 Bot 状态,解决启动时序导致的颜色一直显示黄色;Agent 配置高级设置展开箭头移至标题右侧使标题左对齐;Agent 配置内置工具列表补充「联网搜索」工具(web-search);模型 icon 匹配规则新增 seed(豆包),seedgemini的具体规则排在前面不受影响;Tab预览面板关闭延迟从 40ms 延长到 200ms 避免鼠标移动意外消失 -
导入 Skill 弹窗滚动与对齐 — 给弹窗内容区添加
overflow-y-auto与max-h-[60vh]解决 Skill 列表过长无法滚动;line-clamp-3限制描述文本行数避免卡片高度不齐;移除多余ScrollArea -
带状态指示会话误掉入下方列表 —
working-atoms中indicatorMap.has(id)检查过于宽泛,completed 状态会话被误跳过导致不属于任何 working 组、掉进日期分组列表;改为仅跳过 running/blocked
依赖升级
- Claude Agent SDK 从
0.2.71升级至0.2.111(对应 Claude Code2.1.111),关键能力:- 新增
query.interrupt()API,支持软中断并在同一 Query 生命周期内续跑,Agent 流式中打断发送体验依赖此能力 - 延续长会话稳定性、UI 渲染性能、内存泄漏、流式错误处理等方向的大量累积修复
- 新增
下载
- macOS Apple Silicon —
Proma-0.9.6-arm64.dmg - macOS Intel —
Proma-0.9.6.dmg - Windows —
Proma-Setup-0.9.6.exe