Skip to content

Releases: ErlichLiu/Proma

0.9.6

19 Apr 14:41
9b1c173

Choose a tag to compare

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-07 beta 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 视图保持一致(绿色 + 行前缀 + 深色背景)

  • 输入框列表交互优化 — 空列表项按 EnterBackspace 退出列表回到普通段落;换行改用 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 做一次性迁移;抽取 useSyncActiveTabSideEffects hook 统一关闭活跃 Tab 后同步 appMode / currentXxxId / workspace / 未查看已完成标记的副作用,顺带修复 GlobalShortcuts 漏清除已完成标记的问题

  • 启动 / 主题切换全屏闪烁 — 根因为 applyThemeToDOM 非幂等 + useEffect 冗余触发,叠加 vibrancy + backdrop-blur-xl 导致 Chromium 重建合成层。applyThemeToDOM 改为幂等(计算目标 class 与当前 <html> 对比一致则直接 return),ThemeInitializeruseMemo 计算影响 DOM 的签名作为 effect 依赖

  • 苍穹暮色侧边栏对比度--background 从 11% 调整至 13%,提升与 --content-area(8%)的明度差距,--card 保持 11% 不变

  • 飞书 / 微信 / 钉钉 Bridge 并发保护 — 所有 IM Bridge 在 handleUserMessage 入口处增加 isAgentSessionActive 检查,Agent 仍在运行时直接拒绝新消息并返回错误卡片,避免覆写 sessionBuffer 导致正在运行任务的结果丢失

  • DingTalk Bridge 重连保留 chatBindingsstartBot() 重连时改为复用现有 DingTalkBridge 实例(调用 stop() + updateConfig() + start())而非 delete + new,避免 BridgeCommandHandler 中的 chatBindings 被清空导致 /stop 返回"当前没有绑定的会话"

  • remarkMentions 并发正则污染MENTION_PATTERN 从模块级共享 /g 正则改为函数内局部变量,避免并发 remark pipeline 间 lastIndex 互相干扰导致 mention chip 间歇性丢失

  • settings 日志脱敏settings-service.ts updateSettings 日志从 JSON.stringify(全量设置) 改为只记录变更的 key 名,防止 API key / session ID 等敏感数据泄漏到控制台

  • AskUserBanner 自动跳转定时器清理 — 单选题选完后跳转下一问题的 setTimeout 在组件卸载 / 请求切换时未清理、150ms 内连续点击会排多个定时器导致越过应停留 tab,用 useRef 保存 timer id 并在点击前 / 卸载时 / 切换时 clear

  • Agent 流式中 prompt_suggestion 显示useGlobalAgentListeners 跳过 prompt_suggestion 写入 liveMessagesMapAtomSDKMessageRenderergroupMessages 显式排除 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 在开发模式(__dirnameapps/electron/dist)解析到不存在的 apps/default-skills,导致 ~/.proma-dev/ 下所有工作区都没有复制 skills。修正为 ../default-skills

  • Windows 下 bun dev 启动崩溃 — 修复 Windows 平台开发模式启动环境变量构建问题

  • 标签页持久化竞态 — 增加 restoredRef 守卫防止自动保存在异步恢复完成前覆写已持久化状态;beforeunload 阶段使用新增的同步 IPC 确保 tab 状态落盘;用运行时类型守卫替换 as 断言,处理 panel activeTabId 可能为 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-automax-h-[60vh] 解决 Skill 列表过长无法滚动;line-clamp-3 限制描述文本行数避免卡片高度不齐;移除多余 ScrollArea

  • 带状态指示会话误掉入下方列表working-atomsindicatorMap.has(id) 检查过于宽泛,completed 状态会话被误跳过导致不属于任何 working 组、掉进日期分组列表;改为仅跳过 running/blocked

依赖升级

  • Claude Agent SDK0.2.71 升级至 0.2.111(对应 Claude Code 2.1.111),关键能力:
    • 新增 query.interrupt() API,支持软中断并在同一 Query 生命周期内续跑,Agent 流式中打断发送体验依赖此能力
    • 延续长会话稳定性、UI 渲染性能、内存泄漏、流式错误处理等方向的大量累积修复

下载

  • macOS Apple SiliconProma-0.9.6-arm64.dmg
  • macOS IntelProma-0.9.6.dmg
  • WindowsProma-Setup-0.9.6.exe

0.9.5

13 Apr 19:35

Choose a tag to compare

Proma v0.9.5

推荐所有用户更新

Bug 修复

  • Agent Session 无法自动结束(彻底修复) — v0.9.4 的修复未能完全解决该问题;根因是 SDK async iterator 在发出 result 消息后永远不返回 done: true(因消息通道 generator 永不结束,导致 SDK 不关闭子进程 stdin);修复后在 adapter 层收到 result 时主动关闭消息通道,让 SDK 自然结束子进程,同时在编排层保留 2 秒 drain timeout 作为安全网

下载

  • macOS Apple SiliconProma-0.9.5-arm64.dmg
  • macOS IntelProma-0.9.5.dmg
  • WindowsProma-Setup-0.9.5.exe

0.9.3

13 Apr 11:33

Choose a tag to compare

Proma v0.9.3

Bug 修复

  • Fork 会话多轮对话失败 — 修复 fork 后第 2–3 轮对话触发"Session 已失效"错误并不断重试的问题;根因是 SDK forkSession() 在源 cwd 的 project-hash 下创建 JSONL,而 fork 会话的 cwd 对应不同的 project-hash 目录,导致首轮之后 SDK 找不到 session 文件;修复后在创建 fork 时立即将 session JSONL 复制到 fork 自身的 project-hash 目录下,每一轮都能直接 resume

  • Quick Task 面板主题不同步 — 修复通过 Option+Space 呼出的 Quick Task 面板在主窗口切换主题后仍显示旧颜色的问题;现在 settings 更新时会广播主题变更事件给所有 BrowserWindow,Quick Task 窗口实时响应

  • Windows 图标更换提示 — Windows 用户尝试更换应用图标时现在会看到明确的"不支持"提示,避免操作后无反馈的困惑

稳定性回退

  • 回退 Idle Timeout 系列修复 — 回退了 v0.9.2 中引入的 4 项 idle timeout / agent stability 改动(#237#245#256#257),这些修复在部分场景下引发了新的副作用;后续将以更稳妥的方案重新解决 idle timeout 误触发问题

下载

  • macOS Apple SiliconProma-0.9.3-arm64.dmg
  • macOS IntelProma-0.9.3.dmg
  • WindowsProma-Setup-0.9.3.exe

0.9.2

12 Apr 18:41

Choose a tag to compare

Proma v0.9.2

新功能

  • 快照回退与 Fork 重构 — 会话时间旅行与原生分叉 — 全面重构快照/回退机制,支持会话时间旅行(回退到任意历史节点并继续);引入原生 Fork 功能,从任意历史状态分叉出独立会话,彻底告别"操作失误只能重来"的困境(#238

  • 自定义 Logo — 现在可以在设置中更换 Proma 的应用图标,个性化定制你的桌面体验

  • Agent 交互 Banner 增加终止按钮 — 所有 Agent 交互确认 Banner(权限申请、工具调用等)新增 Dismiss 按钮,随时可以主动终止当前交互,不再被 Banner 卡住

  • 工作区列表支持拖拽调整高度 — 侧边栏工作区列表面板支持拖拽调整高度,灵活分配侧边栏空间(#239

Bug 修复

Idle Timeout 专项修复(四项)

  • 工具执行期间误触发 — 修复长耗时工具(如大文件写入、网络请求)执行期间 idle timeout 错误重试的问题(#256#257
  • 等待用户交互时误触发 — 修复 AskUserQuestion 等待用户响应期间 idle timeout 误触发的问题(#245
  • Hook 阻塞时间忽略 — idle timeout 计时现在正确忽略 Hook 执行占用的时间,避免因 Hook 耗时导致会话被错误终止(#247

Agent 稳定性

  • Agent 稳定性综合修复 — 0-token 响应检测与重试、idle timeout 初始化清理、Opus thinking budget 正确配置(#237
  • SubAgent 模型继承 — 非 Claude 模型渠道下(如自定义 API 接口),SubAgent 现在自动继承主 Agent 所用模型,而非错误回退到默认(#234
  • 模型标识覆盖 — 修复切换模型后,历史消息上的模型标识被新模型覆盖显示的问题(#233
  • 会话槽位并发写入 — 抢占会话槽位逻辑提前到 await 之前,防止并发场景下重复写入(原本可能导致会话数据冲突)

计划模式

  • 只读 Bash 命令 — 计划模式下现在允许执行只读 Bash 命令(如 lscat),同时修复关联的动画闪屏问题

快照回退

  • 附加目录支持 — 回退时现在从工作区配置正确读取附加目录,修复附加目录文件无法随回退操作恢复的问题
  • 并发安全与确认对话框 — 修复快速连续触发回退时的并发竞态问题,同时新增操作确认对话框防止误操作

界面与交互

  • StickyUserMessage 定位修复(两项) — 修复 StickyUserMessage 遮挡小地图悬停区域;修复跟踪逻辑始终锚定到最后一条用户消息(而非最近可见的那条)的问题(#246
  • AskUserBanner focus ring — 修复第一个选项显示多余 focus ring 的视觉异常(#251
  • 用户消息「展开全部」 — 修复点击「展开全部」后立即折叠回去的交互 bug
  • 助手消息结束跳动感 — 修复 Agent 助手消息流式结束时出现的短暂位移跳动
  • 任务卡片宽度 — 移除任务进度卡片的固定宽度限制,宽度自适应布局

构建与打包

  • 精简安装包体积 — 移除打包中冗余的 node_modules 和内置 Bun,安装包体积显著缩减(#255

下载

  • macOS Apple SiliconProma-0.9.2-arm64.dmg
  • macOS IntelProma-0.9.2.dmg
  • WindowsProma-Setup-0.9.2.exe

0.9.1

10 Apr 16:31

Choose a tag to compare

Proma v0.9.1

新功能

  • 内联聚合式任务进度卡片 — Agent 执行多步任务时,进度信息以内联卡片形式聚合展示,清晰呈现各子任务状态,替代此前分散的进度消息(#216

  • 输入交互体验优化 — 澄清 UI 标签文案,新增发送快捷键切换(Enter/⌘Enter),优化换行行为逻辑,让输入操作更符合直觉(#218

  • Agent 会话体验增强 — 新增通知点击导航至对应会话;会话列表增加运行状态指示;重构消息渲染链路提升健壮性和性能

  • Tab 栏三色状态指示 — Tab 栏指示点与侧边栏同步蓝(运行中)/ 橙(等待确认)/ 绿(已完成)三色状态,多任务并行时一目了然

  • 微信即时确认回复 — 微信收到用户消息后立即发送确认回复,消除「消息发出后无反馈」的等待焦虑

Bug 修复

  • Agent 模式闪屏优化 — 消除模式切换时的 opacity 空窗,减少 AppShell 重渲染,视觉过渡更加流畅

  • 计划模式修复(两项) — ExitPlanModeBanner 鼠标点击无效,采用 ref 模式消除闭包陈旧状态;ExitPlanMode 后第二轮对话仍提示计划模式,修复 workspaceId/slug 混用问题

  • 输入法兼容修复(两项) — AskUserBanner 输入法组合状态下回车选词误触发提交(#223);键盘 handler 闭包过期导致响应异常

  • 工具并发 400 错误 — 通过 toolUseConcurrency: 1 串行化工具调用,防止并发请求触发 API 400 错误

  • 社交平台 Workspace 切换路由 — 修复微信/飞书/钉钉 workspace 切换后路由仍指向旧工作区的问题

  • Skill 消息气泡渲染 — Skill 展开消息被错误渲染为用户消息气泡,现已正确识别为系统消息(#217

  • Agent/Chat 模式切换器 — 统一两种模式切换器的样式与选项顺序(#219

  • 任务看板名称丢失 — 修复中止任务后继续执行时看板任务名丢失的问题

  • Mention 选择残留文字 — 修复 mention 选择后输入框中残留匹配文字的问题

  • 无可用模型保护 — 无可用模型时锁住 Agent 输入框,防止用户误发消息

  • Chat 模式编辑框宽度 — Chat 模式编辑消息时编辑框占满整行宽度,编辑体验更舒适

  • Inline Code 样式修复 — 移除 prose inline code 默认的 backtick 伪元素,添加背景色区分,视觉更清晰

  • PR #216 / #218 缺陷修补 — 修复内联任务卡片和输入优化上线后发现的若干细节缺陷

依赖变更

  • Claude Agent SDK0.2.96 回退至 0.2.89(对应 Claude Code 稳定版本),修正上版本 SDK 引入的兼容性问题

下载

  • macOS Apple SiliconProma-0.9.1-arm64.dmg
  • macOS IntelProma-0.9.1.dmg
  • WindowsProma-Setup-0.9.1.exe

0.9.0

08 Apr 09:14

Choose a tag to compare

Proma v0.9.0

新功能

Tab 与导航体验升级

  • Chrome 风格 Tab 栏 — 全新标签栏设计,支持 hover 时展示迷你地图预览面板,快速浏览对话内容概览
  • 迷你地图可拖拽滚动条 — 在迷你地图右侧新增可拖拽的滚动进度条,精准定位长对话中的任意位置
  • Tab 切换自动恢复对话 — 切换 Chat/Agent 模式时自动恢复上一次对话窗口,保持工作连续性

多媒体与附件增强

  • 图片附件 Lightbox 预览 — 点击图片附件弹出 Quick Look 风格的灯箱预览,支持大图查看
  • 拖拽文件夹附加 — 支持直接拖拽文件夹附加到会话或工作区,批量导入更便捷

Agent 功能增强

  • 默认使用 Agent 模式 — 新建对话默认进入 Agent 模式,调整模式切换器显示顺序
  • 权限审批时保留输入框 — 权限审批弹窗期间输入框保持可用,streaming 中允许追加消息
  • 通知提示音与会话导航 — 新增 ding/ding-dong 音效,Agent 任务完成时发出自定义提示音通知

Skill 与工作区

  • 跨工作区 Skill 导入 — 支持从其他工作区导入已有 Skill,复用工作流不再需要重复创建
  • 用户级设置 — 加载 .proma 文件夹下的用户级别设置,跨工作区复用个人配置

编辑器与输入优化

  • macOS 快捷键增强 — 输入框支持 Ctrl+B 加粗和 Ctrl+S 删除线快捷键
  • 飞书设置页优化 — 权限详情收起态 + 新增飞书 CLI 配置引导

Bug 修复

  • Agent 会话 workspaceId 不同步 — 修复 Agent 会话切换时 workspaceId 不同步导致回填模式异常
  • 双 Session 并发竞态 — 修复手动停止后立即继续导致两个 session 同时运行的竞态 bug
  • AskUserQuestion 权限模式 — AskUserQuestion 在所有权限模式下均可正常触发交互式 UI
  • Agent 搜索失效 — 兼容新 SDK 消息格式,修复内容搜索完全失效的问题
  • SubAgent Spinner 终止异常 — 修复用户终止任务后 SubAgent spinner 仍持续转动的问题
  • Diff 着色范围限制 — diff 着色仅对 Edit 工具生效,避免命令参数被误染色
  • 系统通知声音 — 禁用系统通知声音,避免与自定义提示音重叠
  • ImageLightbox 空值处理 — 支持 src 为 null 时的安全渲染
  • Minimap 面板误触 — 仅在悬停横杠区域时触发面板,避免滚动条误触
  • 输入框代码块主题适配 — 浅色主题使用深色背景,森息夜语主题加深区分度
  • 输入框 Mention 草稿丢失 — 修复 IME 回车误触发、拖拽排序异常
  • 历史消息加载动画 — 取消历史消息加载时工具块的入场动画
  • 模型名称显示 — Agent 模式统一使用用户选择的 modelId 显示
  • Suggestion Chip 恢复 — 修复 Agent suggestion chip UI 不显示的问题
  • Session 终止进程清理 — 终止会话时正确调用 query.close() 确保 CLI 子进程被 kill
  • 文件浏览器过滤 — 过滤 .DS_Store 文件,Mention 空列表时 Enter 不阻塞发送
  • SKILL.md 解析 — 修复多行 description 解析失败的问题
  • 归档会话交互 — 优化归档会话的交互逻辑
  • 品牌素材打包 — 将 proma-logos 加入 extraResources 打包配置
  • 飞书 Bot 控制 — 修复停止不生效、button 嵌套警告及 UI 状态不刷新
  • 重复会话创建 — 修复切换 Chat/Agent 模式及 HMR 热重载时重复创建会话
  • @ 文件引用搜索 — 修复部分文件无法被搜索到的问题
  • 后台任务误判 — 修复 local_bash 后台任务被误判为 teammate 触发 auto-resume

架构优化

  • ModeSwitcher 逻辑提取 — 提取共享 restoreSession 逻辑,统一 openTab + setAppMode 封装
  • Streaming 清理去重 — 提取 finalizeStreamingActivities 消除 spinner 清理逻辑重复
  • TypeScript 路径别名 — 添加 @/types/* 路径别名,修复 tsc 类型解析
  • SDK Settings 写入优化 — 优化写入逻辑,新增 skipWebFetchPreflight 配置

UI 细节

  • Edit 工具行数着色 — 行数统计 +N/-N 使用绿/红着色,直观展示变更量
  • 面板按钮对齐 — 微调面板按钮 UI 对齐
  • Tab hover 预览优化 — 优化 hover 预览面板的交互体验
  • 工作区文件渲染 — 优化渲染逻辑,置顶会话按工作区过滤,Write 工具行数显示

依赖升级

  • Claude Agent SDK0.2.89 升级至 0.2.96

下载

  • macOS Apple SiliconProma-0.9.0-arm64.dmg
  • macOS IntelProma-0.9.0.dmg
  • WindowsProma-Setup-0.9.0.exe

0.8.1

02 Apr 16:20

Choose a tag to compare

Proma v0.8.1

新功能

IM 多平台集成

  • 微信集成 — 新增微信机器人接入支持,完成 IM 三端(微信/钉钉/飞书)统一架构
  • 钉钉多 Bot 支持 — 同时运行多个钉钉机器人,各自独立操作不同 Session
  • 飞书多 Bot 支持 — 同时运行多个飞书机器人,各自独立操作不同 Session
  • BotHub 统一设置页 — 统一机器人配置入口,集中管理所有 IM 渠道的 Bot 设置

Agent 功能增强

  • SubAgent 完成摘要显示 — SubAgent 执行完成后展示 AI 生成的进度摘要
  • 思考块 Markdown 渲染 — Agent 思考过程支持 Markdown 渲染与折叠控制
  • Agent 中断状态持久化 — 持久化中断状态,中断指示器改为 Footer Badge 显示
  • 12 个新工具类型翻译与图标 — 补齐缺失的 Agent 工具类型的国际化翻译和图标
  • SubAgent 委派策略升级 — 新增基于任务复杂度的自动模型选择(haiku/sonnet/opus 三级策略)

UI/UX 改进

  • 特殊风格主题系统 — 新增海洋/大地/赛博朋克三套特殊风格主题
  • 迷你地图搜索导航 — 支持在 Minimap 中搜索定位内容
  • Chat 模式工具渲染升级 — 对齐 Agent ContentBlock 渲染风格,统一视觉体验
  • 侧边栏对话标题优化 — 默认显示更长标题,hover 时操作按钮才展开
  • 界面缩放快捷键提示 — Tips 中新增缩放快捷键说明
  • "已被用户中断" Badge 迁移 — 从输入框移至助手消息 Actions Bar,布局更合理

交互优化

  • 交互横幅显示时隐藏输入框 — 避免横幅与输入框的视觉冲突
  • Plan 模式下允许 AskUserQuestion — 计划模式中支持向用户提问
  • Per-session 权限模式 — 权限模式按会话独立配置
  • 品牌素材下载 — 新增 14 个 Proma Logo 变体供机器人头像使用

Bug 修复

  • 置顶会话重复显示 — 修复置顶会话在日期分组列表中重复出现的问题
  • Tab 切换滚动位置 — 修复 Tab 切换时滚动位置无法恢复的问题
  • 侧面板折叠按钮 — 侧面板始终显示折叠按钮,移除 hasContent 条件限制
  • 附件预览间距 — 增加 ChatInput 中附件预览的间距
  • Chat 模式 API 错误处理 — API 报错时保留部分消息并显示错误提示,不再丢失内容
  • Minimap 跳转失效 — 修复用户消息点击跳转失效问题,复用渲染 group 对象
  • Agent 消息滚动跳动 — 修复对话完成后的滚动跳动问题
  • 快速任务窗口阴影 — 移除多余阴影 + 修复 Chat 流式闪屏
  • 深色主题颜色 — 深色主题颜色优化与 UI 细节调整
  • Agent 权限模式 — 全面修复动态切换、Plan 模式拦截、提示词语义一致性
  • Skills 重复注入 — 移除 Skills 列表在 Agent 上下文中的重复注入
  • 归档会话标签页 — 归档会话时自动关闭对应的标签页
  • 计划模式冗余 Suggestion — 计划模式完成后不再注入"请执行该计划"的多余建议
  • compact_boundary 持久化 — 持久化上下文压缩分界线系统消息,保留压缩状态

架构优化

  • Bridge Registry 统一管理 — 统一 Bridge 注册与管理机制,Session Recovery 去重
  • 文件面板零空间占用 — 收起时不再占据空间,切换按钮迁移至 AgentHeader
  • 右侧文件面板独立悬浮岛 — 文件面板改为独立悬浮设计,UI 更简洁
  • 用户消息气泡自适应 — 气泡宽度根据文字长度自适应
  • Agent 模式初始化优化 — 新建对话立即初始化 .claude 和 .context 目录
  • 标题生成提前 — 将标题生成提前至 SDK 初始化完成时触发
  • Skill 改进提示词优化 — 支持主动观察多步工作流并建议固化为 Skill

UI 细节

  • 输入框字号统一 — 统一字号 + 顶部间距优化 + 虚线边框主题适配
  • 停止按钮/输入框 — 样式优化:高度、透明度与主题色调整
  • Tab 切换同步 — Tab 切换时同步 Sidebar 状态 + Plan 模式输入框虚线边框
  • 滚动位置恢复 — 滚动位置恢复 + UI 样式优化

依赖升级

  • Claude Agent SDK0.2.87 升级至 0.2.89

统计数据

  • 128 个文件变更,新增 9,062 行代码,删除 1,145 行代码
  • 从 v0.8.0 到 v0.8.1 共 44 个提交

下载

  • macOS Apple SiliconProma-0.8.1-arm64.dmg
  • macOS IntelProma-0.8.1.dmg
  • WindowsProma-Setup-0.8.1.exe

0.8.0

29 Mar 19:54

Choose a tag to compare

Proma v0.8.0

🎉 重大更新

全局快捷键系统

  • Option+Space 快速任务窗口 — 全局快捷键唤起无边框透明置顶浮窗,支持 Chat/Agent 模式切换、附件粘贴/拖拽;提交后自动创建会话、打开标签页、发送消息并获取 AI 回复
  • 9 个应用内快捷键 — ⌘, / ⌘F / ⌘N / ⌘B / ⌘⇧M / ⌘K / ⌘L / ⌘. / ⌘W,集中式注册表替代分散的事件监听器
  • 快捷键自定义面板 — 设置页支持录制自定义按键、冲突检测、重置默认值

Skill 版本化管理

  • 默认 Skills 自动更新 — 所有默认 Skills 添加 version 字段,升级时自动替换旧版本
  • skill-creator 官方最新版 — 替换为 anthropics/skills 官方版本,包含 eval 系统、benchmark、description 优化器、subagent 协作
  • 持续改进提示 — 当 skill-creator 启用时,系统提示词自动注入 Skill 改进建议机制

新功能

用户体验优化

  • Draft 会话模式 — 空状态下复用完整输入框,发送首条消息后才出现在侧边栏;解决每次打开应用都创建空会话的问题
  • 自动归档系统 — 超过 7 天未活跃的对话自动归档,降低对话列表认知负担;归档对话在用户交互后自动恢复为活跃状态;每 24 小时定期检查
  • 全局搜索 Dialog — 支持跨所有对话(包括归档)的全局搜索
  • 空状态引导重设计 — 个性化时段问候 + 平台感知 Tips + 模式切换 Tab + 自动创建会话

UI/UX 改进

  • 设置改为浮窗形态 — 从全屏视图改为 Dialog 浮窗,轻遮罩 + 微缩放动画;顶部 Header 栏显示当前 tab 名称
  • 侧边栏用户头像 — 底部展示用户头像+名称+设置图标,折叠时仅显示头像
  • 左侧边栏圆角卡片 — 展开/折叠态均采用 rounded-2xl + shadow-xl + 毛玻璃背景,移除左右面板边框
  • VS Code 风格文件图标 — 文件列表根据文件名/扩展名/文件夹名自动显示对应图标
  • 模型配置改造 — 渠道配置改名为模型配置,编辑模式 auto-save 即时生效;模型列表分区:已启用模型始终置顶

Agent 功能增强

  • 会话分叉(Fork) — 支持从指定消息处创建分叉会话,使用延迟 fork 模式在首次发消息时通过 SDK resume + forkSession 创建分叉
  • 队列消息(Queue) — Agent 运行中可排队发送消息,通过 SDK streamInput 注入,支持取消和提升优先级,前端乐观更新 + 浮动卡片展示
  • Plan 模式指示 — 新增 EnterPlanMode 事件流转,渲染进程展示"Agent 正在规划中"指示条
  • 请求恢复机制 — 新增 GET_PENDING_REQUESTS IPC 通道,渲染进程重载后可恢复待处理的权限/AskUser/ExitPlanMode 请求
  • 运行时间与 Token 用量持久化 — 持久化每轮 Agent 的 durationMs 和完整 token 用量到 JSONL;DurationBadge 集成到操作栏,悬浮显示 token 明细
  • 工具调用结果可读性优化 — 新增语义化短语生成器,按工具类型结构化渲染(Bash 终端风格、Read 语法高亮、Edit diff 视图、Grep 搜索结果等)

Agent 系统提示词增强

  • 内置 SubAgent — 预定义 3 个 haiku SubAgent(explorer/researcher/code-reviewer)
  • SubAgent 委派策略 — 明确内置子代理使用场景和典型工作流
  • 文档输出规范 — 定义 CLAUDE.md / .context/note.md / .context/todo.md 的写入规范
  • 两层 .context/ 目录 — 明确会话级与工作区级 .context/ 目录的职责划分和选择策略

Bug 修复

  • 会话切换状态隔离 — 全局 agentChannelIdAtom/agentModelIdAtom 改为 per-session Map,切换会话时不再互相污染模型名称;liveMessages 清理加 running 检查,流式期间切回不再丢失工具输出数据
  • 附件残留清理 — 修复 Chat 和 Agent 模式下切换会话时,输入框中的图片和附件会显示到新会话的问题
  • 文件区域滚动条跳动 — 为会话文件区和工作区文件区分别添加独立滚动容器
  • Tooltip 显示问题 — 添加 Portal 让 tooltip 渲染到 body 层级,避免被 overflow 容器裁剪
  • 排队消息流程重构 — 延迟排队消息持久化到 turn 边界,修复 JSONL reload 后消息乱序;新增 queued_message_consumed 事件
  • 全项目类型检查错误 — 添加缺失的 @tiptap/suggestion 依赖
  • SSE 格式兼容 — 兼容 SSE 数据行冒号后无空格的格式,修复 Kimi API 流式输出

架构优化

  • 迁移 Agent 到 SDK v2 — claude-agent-adapter 从自定义事件转换改为直接透传 SDKMessage;重写 useGlobalAgentListeners 直接处理 SDKMessage 流;新增 SDKMessageRenderer/ContentBlock 组件渲染原生 SDK 消息
  • 关闭 Agent Teams 能力 — 移除 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 环境变量注入,删除 TeamActivityPanel 组件及相关状态(~1000 行)
  • 迷你地图适配 — 适配 ScrollMinimap 到 SDK 消息渲染路径,从 Turn 分组提取预览文本

依赖升级

  • Claude Agent SDK0.2.76 升级至 0.2.87,包含以下改进:
    • 新增 forkSession() — 支持从指定对话节点分叉出新会话
    • 新增 renameSession() — 支持重命名 SDK 会话文件
    • 新增 getSessionInfo() / tagSession() — 会话元数据查询与打标签
    • SDKSessionInfo 新增 tagcreatedAt 字段,listSessions 支持 offset 分页
    • 新增 agentProgressSummaries 选项,为子 Agent 定期生成 AI 进度摘要
    • 修复通过 query({mcpServers}) 传入的 MCP Server 无法执行 toggle/reconnect 的问题
    • 修复 options.env~/.claude/settings.json 覆盖的问题
    • 修复 NodeNext/Bundler 模块解析模式下 import type 失败的问题

文档更新

  • 架构文档完善 — 更新 CLAUDE.md 和 README.md,包含 Monorepo 结构、主进程服务层、AI Provider 支持列表、Agent SDK 集成架构、本地存储结构、完整技术栈版本信息
  • 教程系统支持 — 教程支持 <video> 标签渲染(rehype-raw + 手动提取)

统计数据

  • 145 个文件变更,新增 16,134 行代码,删除 4,873 行代码
  • 从 v0.7.3 到 v0.8.0 共 38 个提交

下载

  • macOS Apple SiliconProma-0.8.0-arm64.dmg
  • macOS IntelProma-0.8.0.dmg
  • WindowsProma-Setup-0.8.0.exe

0.7.3

15 Mar 17:00

Choose a tag to compare

Proma v0.7.3

新功能

  • Nano Banana 生图工具 — Chat 模式新增内置 Gemini 图像生成工具,支持文生图、参考图编辑、多轮连续修改;生成的图片直接内联显示在对话中,右下角悬浮下载按钮可一键保存;在 Chat 设置页配置 Gemini API Key 后即可启用

  • Agent 文件路径识别与预览 — Agent 消息中的行内代码如果是文件路径,会自动渲染为可点击的文件 chip;点击后弹出预览窗口,支持图片、视频、Markdown、JSON、XML、HTML、PDF、DOCX 等格式,不支持的类型自动调用系统默认程序打开;双击文件浏览器中的条目同样可触发预览

  • 输入框 Skill / MCP Mention 系统 — Agent 模式输入框支持 / 触发 Skill 列表、# 触发 MCP 工具列表、@ 触发文件引用;选中后在输入框显示带图标的彩色 chip(紫色 Skill / 绿色 MCP / 蓝色文件);发送后对话历史中同步渲染彩色 badge,同时自动向 Agent 注入 <mentioned_tools> 结构化指令,确保 Agent 主动调用对应工具

  • 工作区共享文件目录 — 每个工作区下新增 workspace-files/ 共享目录,该目录下的文件可跨会话被所有 Agent 会话访问;文件浏览器 UI 重新组织为「会话文件」(上方)和「工作区文件」(底部常驻)两个区域,职责分明;工作区级别的附加目录也会自动注入所有该工作区下的会话

  • @ 引用文件范围扩展 — Agent 输入框 @ 引用文件时,搜索范围从会话附加目录扩展至工作区级附加目录和工作区共享文件目录,搜索结果上限提升至 20 个,列表高度扩大支持滚动浏览

  • Chat 消息一键切换 Agent 模式 — Chat 模式下,助手消息 Action Bar 新增「切换到 Agent 模式」按钮;点击后自动创建 Agent 会话并迁移当前对话历史,切换完成后显示 Toast 通知

  • SDK 登录错误友好提示 — 将 SDK 原始错误 "Not logged in · Please run /login" 替换为中文友好提示"请检查是否选择了正确的 Proma 供应渠道和模型"

性能优化

  • 长对话渲染性能 — 采用 CSS content-visibility: auto 跳过屏幕外消息的 layout 和 paint 计算;消息列表先以真实高度完成初始布局(无跳动),再延迟启用 containment;预期布局计算量减少 90%+,200+ 条长对话滚动和流式输出明显更流畅

Bug 修复

  • 思考计时器 Tab 切换重置 — 修复 Agent / Chat 模式下,流式输出进行中切换 Tab 再切回后,思考计时器从 0s 重新计时的问题;时间戳现已持久化在 Jotai atom 中,切换 Tab 后组件能正确恢复已用时

  • Agent 会话重命名时附加目录丢失 — 修复新建 Agent 会话后,先添加附加文件夹再重命名时,附加文件夹丢失的问题;根因是重命名操作未正确保留 workspaceId

  • Agent 上下文超限错误处理 — 新增 prompt_too_long 错误码,自动识别 7 种常见上下文超限模式;超限时错误提示下方显示蓝色「压缩上下文」主按钮,「重试」降级为次要按钮;ContextUsageBadge 压缩按钮常驻显示,无需等待 warning 状态

  • Agent node 路径降级崩溃 — 修复运行时状态缓存未就绪时,node 路径降级逻辑导致 spawn ENOENT 的问题

  • SDK Base URL 隔离 — 修复 SDK base URL 规范化逻辑污染全局配置目录的问题,现已完全隔离

  • Agent 高级设置默认折叠 — 高级设置区块现在默认折叠,减少设置页面初始视觉复杂度,点击标题可展开/收起

依赖升级

  • Claude Agent SDK0.2.71 升级至 0.2.76,包含以下改进:
    • 新增 forkSession() — 支持从指定对话节点分叉出新会话
    • 新增 renameSession() — 支持重命名 SDK 会话文件
    • 新增 getSessionInfo() / tagSession() — 会话元数据查询与打标签
    • SDKSessionInfo 新增 tagcreatedAt 字段,listSessions 支持 offset 分页
    • 新增 agentProgressSummaries 选项,为子 Agent 定期生成 AI 进度摘要
    • 修复通过 query({mcpServers}) 传入的 MCP Server 无法执行 toggle/reconnect 的问题
    • 修复 options.env~/.claude/settings.json 覆盖的问题
    • 修复 NodeNext/Bundler 模块解析模式下 import type 失败的问题

下载

  • macOS Apple SiliconProma-0.7.3-arm64.dmg
  • macOS IntelProma-0.7.3.dmg
  • WindowsProma-Setup-0.7.3.exe

0.7.1

09 Mar 12:21

Choose a tag to compare

Proma v0.7.1

新功能

  • 飞书群聊完整支持 — 飞书机器人现已支持在群聊中被 @mention 触发 Agent 任务,同时也支持私聊;Bot 在群聊回复时自动以 Thread(话题)形式回复,避免刷屏打扰其他成员;自动注入最近 20 条群聊历史消息作为 Agent 上下文,帮助 Agent 理解当前对话背景;同时新增内置 MCP 工具 fetch_group_chat_history 供 Agent 主动查询更多历史消息

  • 飞书图片/文件接收 — 飞书用户可直接向机器人发送图片(支持 JPEG/PNG/GIF/WebP),图片自动下载并保存到 Agent Session 工作目录,通过 <attached_files> 标签注入 Prompt,Agent 可使用 Read 工具查看和分析图片内容,无需改动现有消息链路。并且以同样的方式支持文件上传,同时还支持飞书内部文档。

  • 飞书设置页双 Tab 重构 — 飞书设置页拆分为「Bot 配置」和「绑定管理」两个独立 Tab:Bot 配置集中管理 App ID/Secret、通知路由和权限等基础设置;绑定管理 Tab 提供可视化列表,展示所有群聊/私聊的绑定关系,支持查看当前绑定的工作区和会话、切换工作区、解除绑定等操作

  • 群聊回复 @mention — Agent 在群聊回复时自动将 @Name 转换为飞书 <at> 富文本标签,实现真实的 @mention 效果,群成员会收到通知提醒

  • 群聊自动权限模式 — 飞书群聊发起的 Agent 会话自动启用 auto 权限模式,无需用户手动确认权限,实现无缝自动化执行

  • 教程系统 — 设置面板新增「教程」标签页,可随时访问内置 Markdown 教程文档;首次启动 Onboarding 页面新增教程入口卡片和 Sheet 弹窗预览;完成 Onboarding 时自动创建包含教程附件的欢迎对话,引导新用户快速上手

Bug 修复

  • 飞书 App Secret 回显 — 加载飞书配置时并行获取并回显已保存的 App Secret(密文显示),用户点击眼睛图标可查看明文,避免反复粘贴

  • 飞书默认工作区设置生效 — 修复在飞书设置页保存默认工作区后不生效的问题;启动失败时现在会抛出明确错误而非静默返回

  • @mention ID 解析 — 修复 isBotMentioned 检测逻辑中 mention.id 为对象而非字符串时的判断失败问题,以及 bot info API 响应路径错误(bot 在顶层而非 data 字段下)

  • 流式会话模型图标 — 新增 model_resolved 事件,确保无论手动发起还是飞书触发的会话,模型图标都能立即正确显示

  • Agent 工作区迁移 — 修复迁移时因目标目录已存在导致的 ENOTEMPTY/EEXIST 错误;迁移成功后显示 Toast 引导用户切换工作区;IPC handler 添加 500ms 延迟重试,处理 UI/主进程 active 状态不同步;buildContextPrompt 新增工具活动摘要,减少迁移后的"失忆"感

依赖升级

  • Claude Agent SDK0.2.66 升级至 0.2.71(对应 Claude Code 2.1.71),包含以下改进:
    • 修复长会话 stdin 冻结问题,提升长时间运行稳定性
    • 修复启动时 5–8 秒冻结(语音模式 CoreAudio 初始化阻塞主线程)
    • 修复 fork 对话共享 plan 文件导致覆写的问题
    • 修复大尺寸图片导致长会话崩溃的问题
    • 修复第三方网关使用 ANTHROPIC_BASE_URL 时出现 400 错误
    • 减少约 74% 的 UI 渲染次数,性能显著提升
    • 修复长会话内存泄漏(消息积累、Hook 事件、JSON 解析)
    • 修复 Windows/WSL 非 ASCII 文本(中文、Emoji)剪贴板乱码
    • 扩展 Bash 工具自动放行命令列表,新增 fmtcommcmpseqexpr

下载

  • macOS Apple SiliconProma-0.7.1-arm64.dmg
  • macOS IntelProma-0.7.1.dmg
  • WindowsProma-Setup-0.7.1.exe