github proma-ai/Proma v0.12.26
0.12.26

2 hours ago

Proma v0.12.26

对比基准:v0.12.23

这一版以交互细节打磨为主线:新增第 7 个特殊主题「旧屏微光」(CRT 终端风),把 Skills / MCP 管理升级为独立的「Agent 技能」全屏视图,并顺手减弱了深色主题过重的卡片阴影。稳定性方面清理了一批此前遗留的体验毛刺——左侧栏按钮 tooltip 闪现、Agent worktree diff 面板、GLM-5.2 等兼容渠道的上下文指示器、切换渠道后的模型残留等。

新功能

  • 「旧屏微光」CRT 终端主题 — 第 7 个特殊风格主题,暖磷光配色(约 90° 暖黄绿 hue、低饱和收敛)叠加 CRT 视觉特效:全屏扫描线 + 暗角 + 亮度脉冲、侧边栏 3.3px 辉光、全局直角化(--radius: 2px)、等宽字体 + 终端 $ 提示符 + 闪烁光标 + 机械滚动条,消息去气泡化并配 Paul Klee 预览图。已对光敏感用户做 prefers-reduced-motion 降级(辉光与暗角一并关闭),并把 CRT 叠层 z-index 从 9999 降到 100,避免与 Radix portal 同层、遮挡弹窗文字对比。输入框最终移除 $ 提示符回归现代多行 chat 习惯,THEME_STYLES 也抽为单一常量数组、新增主题只需改一处
  • 「Agent 技能」全屏视图 — 把原 AgentSettings 里的 Skills 与 MCP 管理迁出为独立全屏视图(左侧栏 Blocks 图标入口),AgentSettings 仅保留内置工具只读概览。商店风卡片网格 + 右侧详情抽屉(加宽至 62vw、整体可滚动,给 SKILL.md 说明留出空间),支持搜索、启用切换、更新、导入、卸载;右上角工作区下拉改用 Popover,修复 Electron 拖拽区导致下拉打不开。配套一轮交互打磨:移除失效的抽屉关闭按钮并统一返回箭头导航,删除确认改用 AlertDialog 替代原生 confirm,MCP 编辑改为防抖自动保存(新增 idle / dirty / saving / saved / error 状态提示),并修掉「打开详情时因 undefined 字段被误判配置变更而自动禁用」「关闭抽屉前未 flush 待保存变更导致列表读到旧状态」等边界问题
  • 上游响应解析失败自动重试API Error: JSON Parse error: Unable to parse JSON string 等上游响应体解析失败,本属网关瞬时异常(HTML 错误页 / SSE 截断 / 代理脏数据),此前 catch 与 assistant.error 两条重试通道均未覆盖。新增 MALFORMED_RESPONSE_PATTERN 判定,归类为可重试的 service_error,复用现有重试机制(指数退避 + 25 次 + 5 分钟预算)

Bug 修复

  • 深色主题阴影减弱 + 打开文件面板按钮迁移到 TabBar — 深色下卡片阴影由 shadow-xl 改为 dark:shadow-md / dark:shadow-sm,消除暗背景上过重的 halo。「打开文件面板」按钮从 AgentHeader 迁到 TabBar 右上角,与 DiffPanelTabBar 的关闭按钮同坐标,避免开 / 关之间按钮跳位;按钮抽离为 AgentPanelOpenButton 独立订阅 workspaceFilesVersionAtom,避免文件变更时整个 TabBar 重渲染
  • 左侧栏操作按钮 tooltip 闪现 — 左侧项目列表的归档 / 置顶按钮默认 hidden、hover 才显示,Radix Tooltip 首次挂载时若 trigger 尚未完成布局,会把浮层先放到视口左上角 (0,0) 再跳回正确位置,导致一闪而过。新增 SafeTooltip,进入打开态后延迟 60ms 再真正渲染 Content,并跳过 trigger rect 为 0 的打开请求,在不影响布局的前提下消除闪现
  • Agent worktree diff 面板修复 — 修正 Agent worktree diff 面板的若干显示问题,并把重复的路径归一化逻辑(.replace(/\\/g, '/').replace(/\/+$/, ''))抽取为 @proma/sharednormalizePathForCompareipc.ts / git-diff-service.ts / WorktreeSelector.tsx 统一复用
  • 流式指示器回退到用户选择的模型 LOGO — Agent 模式下流式状态的 model 始终为 undefined(model_resolved 被主动忽略),导致运行中气泡的 AssistantLogo 先显示 Proma 占位图标。改为与实际 Assistant 消息一致,回退到 sessionModelId 对应的模型 LOGO
  • GLM-5.2 等无流式 usage 渠道恢复上下文指示器 — 上一版修「result.usage 累计虚高」时删掉了 complete 事件的 token 字段,对 Anthropic 原生是对的(流式 message_delta 自带 usage),但 GLM-5.2 等走 Anthropic 兼容端点的渠道流式消息不携带 usage、真实值只在 result 返回,致使 ContextUsageBadge 永远 return null 不显示。折中方案:仅当流式 usage 从未写入过(prev.inputTokens 为空 / 0)时,从 result.usage 兜底写一次 token,已有流式真实值时不动,避免累计虚高回归
  • 渠道拉取模型清残留 + 切供应商自动填充名称handleFetchModels 改为 upsert 替换语义:拉取结果作为权威清单,丢弃不在新结果里且非手动添加的旧模型,避免切换渠道后旧模型永久残留;请求失败(4xx / 5xx / IPC 异常)同样清空残留。ChannelModel 新增 source?: 'manual' | 'fetched' 保护手动添加项不被覆盖。切换供应商时自动用 provider 名称填充渠道名(仅当名称为空或仍是上一个 provider 的默认名,用户手改的不动)
  • 移除定时任务页面重复的运行按钮 — 删除顶部与 Windows 原生窗口控制按钮重叠的「运行一次」按钮,保留底部按钮,并把 disabled 条件从 canPersistDraft 修正为 isReadyToRun,补充 tooltip 提示、调整按钮区 padding 与左侧内容区底部对齐
  • 文件路径 chip 跟随「Agent 预览展开方式」偏好 — 消息正文里的文件路径 chip 此前直接 openTab(type:'preview'),绕过 previewModePreferenceAtom,设置切换为「侧边分屏」后仍强制开成 Tab。改为统一走 useOpenPreview,与 SidePanel / PreviewOpenButton / 剪贴板预览三个入口保持一致

下载

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

Don't miss a new Proma release

NewReleases is sending notifications on new releases.