github esengine/DeepSeek-Reasonix studio-v2.43.0
Reasonix Studio v2.43.0

latest releases: v2.44.0, studio-v2.44.0, v2.43.0...
one day ago

本版新增会话间消息(实验)、跨项目的对话正文搜索、模型读视频、更新方式“自动下载”和可选起始分支的独立工作目录,并修复多个会话同时开着时的界面卡死、停止无效,以及一批界面和英文界面问题。

新增

  • 设置里新增“会话间消息(实验)”:可查看本机别的会话、给它们发文字;收到的文字在输入框上方等你批准,批准后才交给模型。默认关闭。关联 #11376。
  • 开启“会话间消息”后,模型多了 list_peers 和 send_peer_message 两个工具;发送前先问你(卡片显示收件会话和全文),对方的用户批准后才交给它的模型。关联 #11376。
  • 侧栏搜索除了按名称筛选,停顿后还会搜所有项目里对话的正文,列出命中的对话和片段,点一下就打开。关联 #11942。
  • 在 Windows 缩放 100% 的宽屏(2400 像素以上)上,首次使用会问一次“界面是不是偏小”,可一键放大并可恢复,不会擅自改动。关联 #11962。
  • 模型来源列表的小圆点会记住上一次测试:失败是红点、悬停可见原因,通过是空心圈,换了地址或密钥就清掉。关联 #12040。
  • 工具调用跑了 10 秒还没结束时,卡片上出现“只停止这一条调用”,点了只结束这一条,本轮继续,模型会被告知该调用是被你停止的。关联 #12254。
  • 对话里的图片也能从你授权给当前工作区的文件夹(设置 → 沙盒 → 额外文件夹)里显示,文件夹之外的本地图片仍显示为占位框。关联 #13125。
  • 新会话的分支入口升级为“配置工作目录”:可选起始分支,首次发送时创建独立的 worktree;已有对话仍可切换分支。关联 #13264 fixed in #13273 by @SivanCola。
  • 设置 › 版本 › 更新方式新增“自动下载”(默认关):后台下载并校验新版本,空闲时提示“重启并更新”,不会自动安装或重启。关联 #13291。
  • 任务运行时,输入框上方的状态条会写出本轮已运行多久(如“read_file · 1m 6s”),不用回到对话区看计时。关联 #13346、#13253。
  • 反馈窗口里添加的截图可以点击放大查看(发送和回复反馈两处),按 Esc 关闭,截图仍保留在草稿里。关联 #13350。
  • 侧栏首次读取项目和会话超过 15 秒时,会说明仍在读取并给出“重试”,重试会另起一次请求,不再排在卡住的请求后面。关联 #13345。
  • 输入框里的计划折叠在没有计划时显示 /goal 目标;对话、运行分析、工作台三个视图有了快捷键(Ctrl/⌘ 1、2、3)和命令面板入口。关联 #13369。
  • 设置里新增“多个会话同时写一个项目”开关(乐观模式,默认关),只对之后新开的会话生效。关联 #13384、#13392。
  • 用户配置里设 tools.mcp_resources = true 后,模型可读已连接 MCP 服务器列出的资源,每次先请你批准(默认关闭)。关联 #13385。
  • 读取 MCP 资源时,服务器声明的资源模板(如 doc://item/{id})生成的地址也可读,其它地址仍被拒绝。关联 #13385。
  • 「我的反馈」顶部新增吸顶筛选条(全部、新回复、需要你回复、未结束、已结束,带数量),条目多时也能找到有新进展的。修复 #13388 fixed in #13404。
  • 工具调用卡片上多了“把结果带到末尾”按钮,点一下就在对话末尾再显示这条调用的原始输出,不用再翻找。关联 #13394。
  • 模型现在能“看”视频:read_video 用本机 ffmpeg 均匀抽几帧作为图片给模型(看不到声音和动作),需要读图模型;没装 ffmpeg 会明确说明。关联 #13399。
  • 命令行发布包现在随带网页界面,解压后直接运行 reasonix serve 就能在浏览器里打开。修复 #13406 fixed in #13423。
  • 命令要访问不在 allowed_domains 里的网站时,批准卡多了“始终允许”,把该网站写进你自己的列表,以后不再询问。关联 #13478。
  • 用户配置新增 agent.goal_auto_retry(默认 0):目标因完成度检查不可用而暂停时,按退避间隔自动重试,最多这么多次。关联 #13478。
  • 设置 → 工具新增“计划批准”开关(也可在用户配置设 agent.plan_approval = "auto"):打开后提交的计划不再等你点批准,默认关闭。关联 #13478。
  • 点击“后台任务”里正在运行的任务可查看它的输出(每 2 秒刷新,可复制、可停止),不影响模型自己读取输出。关联 #4783。
  • 设置了“同时保留的会话标签数”后,窗口因满额收起某个会话时会提示是哪一个,并说明对话仍在列表里。关联 #13419。
  • 用户配置新增 sandbox.egress_unlisted = "allow":清单外的主机不再询问,每个主机只提示一次;拒绝名单照旧;默认关闭。关联 #13478。
  • 后台任务列表现在显示模型给任务起的名字(bash 新增可选的 description),悬停、聚焦或长按会弹出完整名字和完整命令,可选中复制。关联 #13458。

变更

  • 添加模型来源时,先填协议、地址和 API Key,来源名称挪到最后,连接后自动生成,不必先想名字。关联 #12040。
  • 模型服务的联网搜索、思考参数、上下文续接三个开关不再点一下就写入,而是进连接表单的草稿,点“保存”才生效,“还原”可撤回。关联 #12040。
  • 切换 Git 分支时,输入框里的分支按钮会写出“正在切换到 xxx…”,不再只是变灰。关联 #12780。
  • 侧栏“全部 / 进行中 / 置顶 / 归档”那一行去掉了多余的放大镜,会话搜索走顶栏。关联 #13023。
  • 会话运行中已保存的压缩结果与历史对不上、改发完整历史时,会提示原因,不再悄悄放大上下文。关联 #13148、#13295。
  • 设置保存因配置文件读不出而被拒时,提示直接写出是哪个文件。关联 #13220。
  • 创建独立工作目录只使用已提交的代码,草稿附件随任务迁移,失败时保留原草稿;聊天区五个配置菜单统一了字号、间距、圆角与选中态。关联 #13264 fixed in #13273 by @SivanCola。
  • 窄屏聊天区的空输入框工具栏在获得焦点时保持紧凑,输入文字、添加附件或打开菜单时才展开,点按时按钮不会在手指下移位。关联 #13264 fixed in #13273 by @SivanCola。
  • 改了无法读出范围的内容后,结束前的提示不再说“重做一遍就行”:只能用 conclude_blocked 说明哪一处无法确认,或交给你;同一项只完整解释一次。关联 #13293。
  • 一个文件夹里会话很多时,重启后的首次读取不再逐个打开会话文件,只重读有变化的会话,改名后刷新也快得多。关联 #13345。
  • 自动命名失败时会说明原因(标题模型超时、没返回文字,或接口拒绝并给出状态码和原话),不再只说“请重试”。关联 #13353。
  • 去掉会话上方“对话 / 运行分析 / 工作台”一行:运行分析和工作台改为顶栏右端图标(再点返回对话),计划只在输入框里。关联 #13369。
  • 辅助会话入口从顶部视图条移到输入框工具栏(附件按钮之后的聊天图标),悬停有说明,打开时图标保持按下态。关联 #13369。
  • 子代理工具(task、fleet)的说明讲清了:开启 write_lease = optimistic 后,不传 write_paths 的写入者只占正在写的路径,不再占住整个工作区。关联 #13395 fixed in #13397。
  • 内核带失败码退出时,崩溃目录里会留下一个写明退出码和原因的文件,不再是空文件或被直接删掉。关联 #13433。
  • 对话里卡片图标下面的竖线轨道和“执行过程”折叠区左边的线已去掉,同一次工具调用在不同位置的样子更一致。关联 #13456。
  • “带到末尾的结果”改成和执行过程里一样的一行(无边框、图标方块、竖线);暗色主题下执行过程的行也不再有整块底色。关联 #13456。
  • 开着多个会话标签时,切换标签和侧栏筛选更快:切换不再让所有隐藏会话整页重绘。关联 #13326。
  • 权限批准卡片上“本会话允许 / 始终允许”下多了一行说明:前者只在本次会话有效、不写磁盘,后者写入用户配置的权限规则,可在设置里撤销。关联 e54381d。
  • 辅助会话不再限制同时打开 3 个;想限制时在用户配置里设 agent.max_side_sessions。关联 #13526。
  • 安全加固:手写进收件夹的会话间消息正文,读取时同样清掉控制字符和方向覆盖符,假冒不了终端或审批界面。关联 #11376。
  • 安全加固:会话间消息里的会话名和发件人名读取时清掉换行、转义序列和标记,伪造的记录文件塞不进模型或终端。关联 #11376。
  • 设置“提问超时”后,模型交还任务清单却无人回应时,也会按此时间自动继续并写明假设,连续最多 3 次;默认关闭。关联 #13478。
  • 改进:本机所有窗格共用一条事件流,开多少窗格都只占 2 个连接,停止与提交不再被挤住。关联 #13533。
  • 对话里的批准、提问、记忆、守卫复核、扩展卡片等现在用同一种外壳:同样的圆角、边框和底色,标题栏不再单独填色,警告和错误也不再给整圈边框着色。关联 #13456。
  • 对话里低风险的“守卫复核:已允许”和“记住了”改成一行(“忘记”按钮在行内);被拦截或中高风险的复核仍是卡片。关联 #13456。
  • 对话里展开一个步骤后,详情改成四周细线的面板,不再是左边一条竖线。关联 #13456。
  • 侧栏左上角的品牌标题改成一行:字标右边是紧凑的实心“STUDIO”徽章,与字标垂直居中,明暗主题下位置一致。关联 #13456。
  • 对话里的主机提示(切换模型、告警、失败等)改成一行提示条:没有边框、标题栏和底色,只有图标的颜色表示严重程度。关联 #13456。

修复

  • 编辑模型来源时,“读取可用模型”按表单里还没保存的地址、密钥和协议去连,不再只测已保存的那一份。关联 #12040。
  • 选中 /review、/security-review 后不写任务直接回车,现在会按默认范围审查当前改动,不再被拒绝。关联 #12883。
  • 压缩后保留的失败工具结果不再随压缩轮数累积:它们有独立预算(窗口的 5%),更早的并入摘要。关联 #13148。
  • 会话标签页的圆点在回合结束后不会再偶尔一直“呼吸”。关联 #13254。
  • 更多只读 git 命令(merge-base、分支/远程/配置/暂存的查看形式)不再被当成“无法证明只读的改动”,也不再触发验证提示。关联 #13293。
  • 只读的 gh 命令(pr、issue、run、release、repo 的 list 与 view,pr checks,gh api 的读取)不再触发验证提示。关联 #13293。
  • 回复下方的复制、引用、更多按钮不再在这条回复的工具还在运行时出现,不会让人误以为任务已经结束。关联 #13343。
  • 回复里用 Markdown 写的本地图片:工作区内的图片现在能直接显示,工作区外的不再显示成裂图,改为带说明的占位框。关联 #13354。
  • 用 / 选好技能或命令后继续输入正文,不再一直弹出“正在加载命令与技能…”,只在光标处于斜杠词里时才显示。关联 #13358 fixed in #13361。
  • 发送带图片的消息时,较高的图片(如手机截图)不再撑出缩略图框、盖住消息文字,每张图都固定为缩略图大小。关联 #13368。
  • 从“已归档”里打开一个会话后,“全部”列表不再多出一条叫“新会话”的空行。修复 #13377 fixed in #13386。
  • 回答提问卡片时若内核没及时回应,错误提示现在有边距和醒目颜色,不再贴着卡片边缘。关联 #13379。
  • 已打开的会话不再因列表的筛选、搜索或分页丢掉自己的那一行,标签页重新显示会话标题,不再是“新会话”。修复 #13402 fixed in #13407。
  • 从旧版 Reasonix 找回会话后,原来的项目文件夹会自动出现在侧栏里,找回的会话不再“导入了却看不到”。修复 #13412 fixed in #13413。
  • Linux 上文件夹选择器弹不出来时,“添加文件夹”和“找回旧版会话”改为让你输入路径,不再毫无反应。修复 #13421 fixed in #13424。
  • 从旧版找回的会话带着旧版显示的标题;之前找回的那些,再点一次“找回旧版会话”就会补上标题,不再显示成 v4-文件名。关联 #13439。
  • 英文界面下,“项目自带的钩子要你批准”等 15 条提示不再显示成中文,并加了检查防止以后新增提示漏掉英文。修复 #13441 fixed in #13447。
  • 输入框下方“执行权限”下拉的小箭头比旁边的下拉箭头更小、位置偏下,现在与其他下拉一致。修复 #13472 fixed in #13509。
  • 选了中文后,输入 /goal、/memory、/mcp、/theme、/feedback 等命令弹出的子菜单说明不再是英文。修复 #13493 fixed in #13505。
  • 键盘用户:设置、命令面板等对话框现在把 Tab 键留在对话框里,关闭后焦点回到原处;远程会话的“删除”按钮在浅色主题下聚焦时有了焦点环。关联 d191b73。
  • 手机宽度下,连接设置里“模型”标题不再被挤成竖排两行,右边的按钮换到下一行。关联 #12040。
  • 设置里“网络 → 测试连接”的每一步结果按界面语言显示:英文界面不再出现中文的步骤名、提示和“key 被拒了”之类的句子。关联 #12040。
  • 修复:会话很多(约 2000 个)时左侧项目栏刷新很慢;Windows 上每次刷新从约 0.9 秒降到约 0.1 秒。关联 #13176。
  • 修复:设置 › 存储里“配置与凭据”一行不再把同一文件夹里的会话与归档也算进去,Windows 默认安装下它原先会显示成几十 GB。关联 #13345。
  • 修复:输入框下方“执行权限”在“全部放行”状态下,小箭头和警告图标现在与文字同色(此前箭头是灰色,浅色主题下图标比文字浅)。关联 #13472 fixed in #13509。
  • 修复:新会话在还没有任何计价时,底栏不再显示“本轮 ¥0.00”这个并非来自你设置的占位,第一次计价后才出现本轮费用。关联 #13513。
  • 修复:手动连接的 MCP 服务器现在也会像自动启动的那样记下握手结果,下一次会话不用重新握手;此前快速关闭会话会丢掉它。关联 #13485。
  • 修复:开着五六个会话标签时,停止和发送不再因浏览器连接数用完而卡住:不显示也不在运行的标签会放掉实时连接,显示时接着断点读。关联 #13491。
  • 修复:会话很多时,刚启动后第一次载入左侧项目栏很慢;Windows 上约 2000 个会话从约 10 秒降到约 1 秒。关联 #13176。
  • 修复:模型用 await_user 交还清单后,系统不再因“改动没验证”等缺口自己开新一轮,回合停下等你输入。关联 #13467。

升级须知

  • 设置 > 外观新增“同时保留的会话标签数”,默认 0:打开的会话都保留(此前超过 4 个会悄悄收起);设成 N 才收起最久没动的空闲会话。关联 #13419。

贡献者

感谢本版本的贡献者:@SivanCola


Adds messages between sessions (experimental), cross-project text search, video reading, auto-download updates and worktrees from a chosen branch; fixes the many-sessions freeze and UI bugs.

New

  • Settings gain Messages between sessions (experimental): list other local sessions, send them text, and approve what arrives in a bar above the composer. Off by default. Refs #11376.
  • With messages between sessions on, the model gains list_peers and send_peer_message; sending asks you first and shows the recipient and full text, and the other user must approve. Refs #11376.
  • The sidebar search now also looks through the text of conversations in every project once you pause, listing the matching conversations with a passage; click one to open it. Refs #11942.
  • On a wide display (2400 px or more) at 100% scaling, Studio asks once whether the interface is too small and offers 125% or 150% with a restore; it never resizes by itself. Refs #11962.
  • The dot on each model source remembers its last test: red for a failed one with the cause on hover, a hollow ring for a pass, cleared when the address or key changes. Refs #12040.
  • A tool call still running after 10 seconds offers "Stop only this call": it ends that call, the turn goes on, and the model is told you stopped it. Refs #12254.
  • Pictures in a conversation also load from a folder you granted this workspace (Settings, Sandbox, extra folders); local pictures elsewhere still show a placeholder. Refs #13125.
  • The new-session branch control becomes "Configure working directory": pick a base branch and a separate worktree is created on first send; existing conversations keep branch switching. Refs #13264 fixed in #13273 by @SivanCola.
  • Settings > Version > Update mode gains Download (off by default): it downloads and verifies a release in the background and offers a restart when idle, never restarting alone. Refs #13291.
  • While a turn runs, the chip above the composer says how long it has been running (e.g. "read_file · 1m 6s"), so you need not check the transcript. Refs #13346, #13253.
  • Screenshots attached in the feedback window can be clicked to view at full size, in both the new-report and reply forms; Esc closes the viewer and the screenshot stays attached. Refs #13350.
  • A first sidebar read that takes over 15 seconds says it is still reading and offers Retry, which starts a fresh request instead of queueing behind the stuck one. Refs #13345.
  • The composer's plan fold shows the /goal text when there is no plan, and the Conversation, Run analysis and Workbench views get shortcuts (Ctrl/Cmd 1, 2, 3) and command-palette entries. Refs #13369.
  • Settings gain a "Several sessions writing one project" switch (optimistic mode, off by default); it applies to sessions opened afterwards. Refs #13384, #13392.
  • tools.mcp_resources = true in your user config lets the model read a resource a connected MCP server lists, asking you first each time (off by default). Refs #13385.
  • The MCP resource tool also reads addresses a server's declared resource templates (like doc://item/{id}) can build; any other address is still refused. Refs #13385.
  • My feedback gets a sticky filter bar (All, New replies, Needs your reply, Open, Closed, with counts) so reports with news are easy to find in a long list. Fixes #13388 fixed in #13404.
  • Tool-call cards get a "show this result again at the end" button that repeats the call's own output at the end of the conversation, so you need not hunt for it. Refs #13394.
  • The model can look at a video: read_video samples frames with the local ffmpeg and hands them over as images (no audio or motion); needs an image-reading model and says so without ffmpeg. Refs #13399.
  • The command-line release archives now carry the web page, so reasonix serve opens in a browser straight after unpacking. Fixes #13406 fixed in #13423.
  • The card asking before a command reaches a site outside allowed_domains offers "always allow", adding the site to your own list so it is not asked again. Refs #13478.
  • New user-config agent.goal_auto_retry (default 0): a Goal paused because its completion check could not run is retried with backoff, up to that many times. Refs #13478.
  • Settings → Tools gains a "Plan approval" switch (also agent.plan_approval = "auto" in user config): when on, a submitted plan starts without waiting for your click; off by default. Refs #13478.
  • Clicking a running task under Background tasks shows its output (refreshed every 2 seconds, copyable, stoppable) without affecting the model's own reader. Refs #4783.
  • When the open-session limit you set makes the window fold a session out of the tab bar, a note names it and says it is still in the list. Refs #13419.
  • New user-config sandbox.egress_unlisted = "allow": hosts outside allowed_domains pass without asking, said once per host; denied_domains still refuse; off by default. Refs #13478.
  • The background task list now shows the name the model gave a task (bash takes an optional description); hover, focus or long press shows the full name and command, selectable. Refs #13458.

Changed

  • Adding a model source asks for protocol, address and API key first; the source name moves last and is made after connecting, so you no longer have to invent one up front. Refs #12040.
  • The web search, thinking and continuation switches on a model service join the connection form's draft: they apply on Save and Revert undoes them. Refs #12040.
  • While a Git branch switch runs, the branch button in the composer says "Switching to xxx…" instead of only fading. Refs #12780.
  • Removed the extra magnifier from the sidebar's All / Live / Pinned / Archived row; search sessions from the top bar. Refs #13023.
  • When a saved compaction stops matching its history mid-session and the full history is sent instead, a notice says why instead of widening silently. Refs #13148, #13295.
  • When a settings save is refused because the config file does not parse, the message names the file. Refs #13220.
  • A separate worktree uses only committed code and carries draft attachments, keeping the draft on failure; the five composer menus share typography, spacing, corners and selected state. Refs #13264 fixed in #13273 by @SivanCola.
  • Empty toolbars in narrow chat panes stay compact on focus and expand for text, attachments or open menus, so buttons stay under the pointer during a click. Refs #13264 fixed in #13273 by @SivanCola.
  • After a change the host could not read, the end-of-turn prompt no longer says making it again settles it: only conclude_blocked or you can, and it explains once. Refs #13293.
  • With thousands of sessions in one folder, the first read after a restart no longer opens every session file; only changed ones are re-read, and refreshing after a rename is much faster. Refs #13345.
  • A failed automatic naming says why (title model timed out, returned no text, or its endpoint refused with a status and its words), not only "try again". Refs #13353.
  • The Conversation / Run analysis / Workbench row is gone: Run analysis and Workbench are icons on the window bar (press again to return) and the plan is in the composer. Refs #13369.
  • The side-question entry moves from the top view strip to the composer toolbar (a chat icon after attach), with a tooltip and a pressed state while the panel is open. Refs #13369.
  • The task and fleet tool descriptions say that under write_lease = optimistic a writer without write_paths holds only the path it is writing, not the whole workspace. Refs #13395 fixed in #13397.
  • When the kernel exits with a failure code, the crash folder keeps a file naming the code and the reason, instead of an empty file that is dropped or removed. Refs #13433.
  • The vertical rail under each card's icon and the left rule of the Execution group are gone, so one tool call looks the same wherever it appears. Refs #13456.
  • A result brought to the end is the same single row as in the Execution group (no box, icon square or track); dark-theme rows there lose their slab background. Refs #13456.
  • With several session tabs open, switching tabs and filtering the sidebar is faster: a switch no longer redraws every hidden session. Refs #13326.
  • The approval card says where "Allow for this session" and "Always allow" are kept: the first only for the session, the second as a user-config permission rule Settings can undo. Refs e54381d.
  • Side conversations are no longer capped at 3 open at once; set agent.max_side_sessions in your user config to limit them. Refs #13526.
  • Hardening: a hand-written message body in the inbox folder is reduced on read like a sent one (controls and bidi overrides), so it cannot fake a terminal or the approval prompt. Refs #11376.
  • Hardening: names in messages between sessions are reduced on read, so a forged record cannot put line breaks, escapes or markup before the model or a terminal. Refs #11376.
  • With the ask timeout on, a task list handed back to you continues after that time, assumptions stated, at most 3 times in a row; off by default. Refs #13478.
  • Improved: local panes share one event stream, so any number of open panes holds 2 connections and Stop never starves. Refs #13533.
  • Approval, ask, remember, guardian, extension and similar cards now share one shell: the same radius, border and ground, a header with no fill, and no state-tinted border. Refs #13456.
  • A low-risk allowed guardian review and a remembered fact are now a single row (the Forget button stays in it); refusals and medium-or-higher-risk reviews keep their cards. Refs #13456.
  • An opened step's detail is now a panel with a hairline on all four sides, instead of a rule down its left edge. Refs #13456.
  • The sidebar's top-left mark is one row: the wordmark with a compact filled STUDIO badge beside it, vertically centred and in the same place in both themes. Refs #13456.
  • Host notices in the conversation (model switches, warnings, failures) are now a single bar: no box, header strip or wash, and the glyph's colour alone shows severity. Refs #13456.

Fixed

  • When editing a model source, "read available models" tests the address, key and protocol on the form that are not saved yet, instead of only the saved ones. Refs #12040.
  • Choosing /review or /security-review and pressing Enter with no task reviews the pending changes by their default scope instead of being refused. Refs #12883.
  • Failed tool results kept by a compaction no longer pile up across rounds: they get their own budget (5% of the window), older ones fold into the digest. Refs #13148.
  • A session tab's dot no longer sometimes keeps breathing after a turn has ended. Refs #13254.
  • More read-only git commands (merge-base and the listing forms of branch, remote, config and stash) no longer count as an unproven change or raise the verification prompt. Refs #13293.
  • Read-only gh commands (list and view of pr, issue, run, release and repo, pr checks, gh api reads) no longer raise the verification prompt. Refs #13293.
  • A reply's copy, quote and more buttons no longer appear while the tools under that reply are still running, so the turn no longer looks finished. Refs #13343.
  • Local pictures written in a reply: pictures inside the workspace now show, and pictures outside it no longer draw as broken images but as a placeholder that says why. Refs #13354.
  • After picking a skill or command with / and typing on, "Loading commands and skills…" no longer keeps appearing; it shows only while the caret is in a slash word. Refs #13358 fixed in #13361.
  • Tall pictures (such as phone screenshots) sent with a message no longer spill out of their thumbnail over the text: each is held to the thumbnail size. Refs #13368.
  • Opening a session from the Archived view no longer adds an empty "New session" row to the everyday list. Fixes #13377 fixed in #13386.
  • When the kernel does not answer in time while you answer a question card, its error now has padding and a clear colour instead of hugging the card's edge. Refs #13379.
  • A conversation open in a pane keeps its own titled row when the list's scope, search or page size leaves it out, so its tab shows the real title. Fixes #13402 fixed in #13407.
  • After recovering sessions from an older Reasonix, the project folders they came from appear in the sidebar, so recovered sessions are no longer imported but invisible. Fixes #13412 fixed in #13413.
  • On Linux, when the folder panel cannot be shown, Add folder and Recover older sessions ask for the path instead of doing nothing. Fixes #13421 fixed in #13424.
  • Sessions recovered from an older Reasonix keep the title 1.x showed; earlier copies get it on the next Recover older sessions, instead of showing as v4-file names. Refs #13439.
  • In the English UI, 15 notices such as "this project's hooks need your approval" no longer show in Chinese, and a check now stops a new notice from shipping without English. Fixes #13441 fixed in #13447.
  • The small arrow on the composer's execution-permission picker was smaller and sat lower than the other pickers' arrows; it now matches them. Fixes #13472 fixed in #13509.
  • With Chinese selected, the sub-menu descriptions of /goal, /memory, /mcp, /theme, /feedback and similar commands are no longer English. Fixes #13493 fixed in #13505.
  • Keyboard: Settings, the command palette and other dialogs keep Tab inside and return focus on close; the remote-session delete button shows a focus ring in the light theme. Refs d191b73.
  • On phone-width windows the "Models" heading in the connection settings no longer breaks into two lines; the buttons beside it wrap onto the next line. Refs #12040.
  • Settings → Network → "Test it" words every step in the interface language: the English window no longer shows Chinese step names, advice or sentences such as "key was rejected". Refs #12040.
  • Fixed: with thousands of sessions the sidebar refresh was slow; on Windows each refresh drops from about 0.9 s to about 0.1 s. Refs #13176.
  • Fixed: Settings › Storage no longer counts the sessions and archive in the "Configuration and credentials" row when they share a folder, as on a default Windows install. Refs #13345.
  • Fixed: on the permission picker in the Full access state, the arrow and warning icon now share the label's colour (the arrow was grey; the icon lighter in the light theme). Refs #13472 fixed in #13509.
  • Fixed: a fresh session no longer shows a "This turn ¥0.00" placeholder in a currency nothing has priced; the figure appears with the first priced round. Refs #13513.
  • Fixed: an MCP server connected by hand now leaves its handshake in the cache like a started one, so the next session needs no handshake; a quick close used to lose it. Refs #13485.
  • With five or six session tabs open, Stop and Send no longer stall on the connection limit: hidden idle tabs release their live connection and resume from their cursor. Refs #13491.
  • Fixed: the first sidebar load after start was slow with thousands of sessions; on Windows about 2,000 sessions drop from about 10 s to about 1 s. Refs #13176.
  • Fixed: after the model hands the list back with await_user, the host no longer starts new rounds for gaps like an unverified change; the turn waits for you. Refs #13467.

Upgrade notes

  • Settings > Appearance gains "Session tabs kept open", default 0: every open session is kept (it used to quietly fold one past 4); set N to fold the longest-idle one. Refs #13419.

Contributors

Thanks to this release's contributors: @SivanCola

What's Changed

  • test(boot): a changed system prompt says the saved fold was not reused by @esengine in #13340
  • fix(agent): stop telling the model that making an unproven change again settles it by @esengine in #13344
  • fix(studio): a refused settings save names the config file that did not parse by @esengine in #13348
  • fix(studio): attached feedback screenshots open at full size by @esengine in #13351
  • feat(studio): the running chip says how long the turn has been running by @esengine in #13355
  • fix(serve): say why automatic session naming failed by @esengine in #13356
  • fix(studio): a reply's actions wait until the tools under it have finished by @esengine in #13357
  • fix(studio): the branch chip says which branch it is switching to by @esengine in #13360
  • fix(studio): announce loading only while a slash word is waiting for the list by @esengine in #13361
  • fix(studio): local pictures in a reply load from the workspace channel or say why not by @esengine in #13362
  • test(theme): every shipped pack's grey inks read on the surfaces they are set on by @esengine in #13364
  • feat(update): a Download update mode that fetches but never installs or restarts by @esengine in #13367
  • fix(agent): bound the failed tool results a fold keeps verbatim by @esengine in #13366
  • fix(studio): a tall picture sent with a message no longer spills out of its thumbnail by @esengine in #13373
  • feat(studio): conversation pictures load from folders the user granted the workspace by @esengine in #13374
  • test(boot): hold the failed-result retention bound at the provider boundary by @esengine in #13376
  • fix(studio): the sidebar offers a retry when the first read is slow, and a retry does not queue by @esengine in #13378
  • fix(agent): say why a fold that stopped matching is no longer used by @esengine in #13380
  • fix(skill): a review skill chosen with no task reviews the pending changes by default by @esengine in #13381
  • fix(studio): give the ask card's delivery error room and colour by @esengine in #13382
  • perf(sessionstore): remember the session listing so a restart does not open every sidecar by @esengine in #13383
  • fix(serve): an open archived session no longer returns as an unlisted new-session row by @esengine in #13386
  • feat(studio): ask once whether the interface is too small on a wide display at 100% scaling by @esengine in #13387
  • feat(studio): create conversation branches from final replies by @Guan0923 in #11299
  • feat(agent): stop one running tool call without ending the turn by @esengine in #13391
  • feat(history): search conversation text from the sidebar by @esengine in #13393
  • feat(desktop): show the goal in the composer plan fold and add view shortcuts by @esengine in #13396
  • fix(delegation): say what a writer without write_paths claims under the optimistic write lease by @esengine in #13397
  • fix(agent): label a sub-agent's report with the origin of what it fetched by @esengine in #13398
  • feat(studio): a running background task can be opened to read its output by @esengine in #13389
  • feat(desktop): move the side question entry into the composer toolbar by @esengine in #13400
  • feat(studio): ask for protocol, address and key before the source name by @esengine in #13401
  • fix(filelock): take a free lock even after the caller's deadline has passed by @xxoingr in #13260
  • test(boot): start the scripted thought's pause after the host takes it by @xxoingr in #13261
  • fix(checkpoint): keep turn numbering above unreadable checkpoint files by @chuiwenwei in #13239
  • fix(session): audit every automatic-recall suppression identically by @chuiwenwei in #13240
  • feat(desktop): filter my feedback by progress and new replies by @esengine in #13404
  • fix(providers): test the address, key and protocol on the form, not only the saved ones by @esengine in #13405
  • fix(serve): a session open in a pane keeps its titled row whatever the list leaves out by @esengine in #13407
  • fix(serve): tell a browser what to do when this server has no web page by @esengine in #13409
  • feat(providers): the list remembers how each source's last test ended by @esengine in #13408
  • fix(cli): stop offering the retired light execution setting by @xxoingr in #13262
  • fix(migration): list the projects a recovered session was routed back into by @esengine in #13413
  • feat(studio): a switch for how sessions in one project wait on each other by @esengine in #13415
  • feat(peermail): the spool, the live record and the forbidden-read directory for messages between sessions by @esengine in #13411
  • feat(peermail): hold what other sessions send for the user, and deliver it only once approved by @esengine in #13417
  • fix(serve): find the page beside the real executable of a link by @esengine in #13420
  • fix(desktop): a Linux folder panel that cannot be drawn asks for the path instead of doing nothing by @esengine in #13424
  • fix(control): report a turn as running only while it executes, not while its TurnDone is delivered by @esengine in #13416
  • feat(desktop): move the pane views to the window bar and drop the view strip by @esengine in #13418
  • feat(studio): a setting for how many session tabs stay open before one is folded away by @esengine in #13419
  • feat(cli): upgrade keeps the page beside the binary in step with the kernel by @esengine in #13422
  • fix(stats): Flush reports the first append that failed by @chuiwenwei in #13425
  • fix(sessionstore): refuse a degraded rewrite when the checkpoint cannot be read by @chuiwenwei in #13426
  • fix(e2ebench): report a suite run whose metrics never landed as unmeasured by @chuiwenwei in #13428
  • feat(release): the CLI archives carry the web page by @esengine in #13423
  • fix(plugin): a legacy cache upgrade is not claimed unless it reached disk by @chuiwenwei in #13427
  • fix(host): a failing exit keeps its crash file with the code and the reason by @esengine in #13442
  • fix(sessionstore): an imported 1.x conversation keeps the title 1.x showed by @esengine in #13440
  • fix(providers): a draft address on another origin never borrows the saved key by @esengine in #13443
  • fix(i18n): give the fifteen untranslated notices English and guard the table by @esengine in #13447
  • test(e2ebench): skip the shell-stub tests on Windows by @esengine in #13448
  • fix(sessionstore): an unreadable sidecar is not an absent one by @chuiwenwei in #13437
  • feat(desktop): bring a tool call's result to the end of the transcript by @esengine in #13445
  • feat(peers): send messages to another session, /peer and HTTP verbs by @esengine in #13430
  • feat(shellsafe): classify read-only gh calls as reads by @esengine in #13450
  • feat(shellsafe): classify read-only git listings as reads by @esengine in #13455
  • feat(desktop): messages between sessions in Studio (S3 of #11376) by @esengine in #13460
  • feat(desktop): say which session a full window folded out of the tab bar by @esengine in #13461
  • test: cover the inbox edit verbs, completion reports and write inspection by @esengine in #13462
  • test(control): cover MCP install guards and import by @esengine in #13463
  • test: cover permission rule saving, network settings and bash path evidence by @esengine in #13464
  • feat(studio): 会话 worktree 配置与统一聊天区菜单 / session workspace setup by @SivanCola in #13273
  • fix(peers): the message frame cannot be closed or reopened by a differently cased or spaced tag by @esengine in #13466
  • feat(providers): fold the web search, thinking and continuation switches into the connection draft by @esengine in #13469
  • feat(tools): read_video samples frames from a video with ffmpeg by @esengine in #13454
  • test(shellsafe): run what the classifier calls a read; uniq treats a word after its file as an output by @esengine in #13465
  • fix(serve): take the project root from --dir, as other verbs do by @imcreazy in #13431
  • fix(crashreport): tell a recycled pid from the reader that wrote the dump by @imcreazy in #13434
  • feat(peers): list_peers and send_peer_message tools for the model by @esengine in #13468
  • fix(upgrade): refuse a page whose entries would land on one another by @esengine in #13473
  • test(evidence): cover completion adjudication and path evidence by @esengine in #13474
  • fix(desktop): keep the model list heading on one line at phone widths by @esengine in #13480
  • test(evidence): cover child evidence merge, background leases and the unreviewed baseline by @esengine in #13481
  • fix(studio): confirm @ references before sending / 修复目录引用回车误发送 by @SivanCola in #13459
  • fix(boot): keep the host tool groups out of the schema when no helper can run them by @imcreazy in #13432
  • test(plugin): deny cache-dir writes through an ACL on Windows by @xxoingr in #13486
  • test(worktree): compare a branch checkout's content, not its line ending by @xxoingr in #13488
  • perf(desktop): keep hidden panes from re-rendering on a tab switch by @esengine in #13492
  • fix(a11y): keep Tab inside modal dialogs and show focus on the session delete button by @esengine in #13494
  • test(shellsafe): tolerate git's background maintenance in the read-only differential snapshot by @esengine in #13482
  • feat(plan): let the user's own config start a submitted plan without the approval click by @esengine in #13479
  • feat(mcp): a read_mcp_resource tool for resources a server lists, off by default and user-file only by @esengine in #13485
  • feat(sandbox): offer always-allow on the egress card, writing the host to the user's allowed_domains by @esengine in #13487
  • fix(i18n): word the network test steps from codes so the English window stays English by @esengine in #13484
  • feat(desktop): remove the timeline rail from the conversation by @esengine in #13457
  • feat(desktop): draw a brought-to-the-end result as the same Line as the Execution group by @esengine in #13495
  • test(desktop): give the palette test the same ten seconds the other lazy-chunk tests get by @esengine in #13501
  • test(shellsafe): differential test for read-only commands wrapped in shell syntax and quoting by @esengine in #13489
  • fix(control): localize slash command argument hints by @esengine in #13505
  • feat(mcp): let the resource tool read addresses a server's declared templates build by @esengine in #13503
  • fix(desktop): drop the duplicate magnifier beside the session filters by @esengine in #13477
  • feat(studio): a Plan approval switch in Settings by @esengine in #13507
  • feat(desktop): one remember-choice footer for approvals, with where each choice is kept by @esengine in #13506
  • feat(goal): retry a Goal paused on its completion check, within a user-set allowance by @esengine in #13508
  • fix(desktop): draw the permission picker's chevron with the shared icon by @esengine in #13509
  • docs(release): studio 2.43.0 notes by @esengine in #13514
  • fix(desktop): show no session cost before anything has been priced by @esengine in #13517
  • fix(storage): do not credit a root with the entries a neighbour declares by @esengine in #13521
  • fix(desktop): colour the permission picker's chevron and icon like its label by @esengine in #13524
  • perf(serve): the sidebar tree no longer resolves or opens every session on each refresh by @esengine in #13515
  • feat(sandbox): a user setting that stops the egress question for hosts outside allowed_domains by @esengine in #13504
  • fix(desktop): only a few panes hold a live event stream, the rest resume from their cursor by @esengine in #13531
  • fix(peers): reduce the names in another session's record where they are read by @esengine in #13520
  • fix(peers): reduce a hand-written message body where the spool is read by @esengine in #13522
  • feat(desktop): draw host notices as a one-line bar, severity in the glyph ink only by @esengine in #13496
  • feat(side): no cap on open side conversations; agent.max_side_sessions is the user's own limit by @esengine in #13529
  • fix(web): hand pending prompts to late clients and stop false stale reports by @tongsailong in #13499
  • test(studio): the receipt card guard turns the card on, and the reask probe draft goes by @esengine in #13538
  • perf(sessionstore): read the sidecars of a cold session folder on a bounded pool by @esengine in #13518
  • feat(tools): bash takes an optional description that names a background job by @esengine in #13516
  • fix(plugin): a server connected by hand leaves its handshake in the cache by @esengine in #13534
  • feat(serve): carry every local pane on one multiplexed event stream by @esengine in #13533
  • test(history): close the shared catalog before resetting it in the session-search test by @esengine in #13483
  • test(serve): wait for the ask to reach the log before asserting what a resume replays by @esengine in #13542
  • test(workspacelease): wait for the first wait report instead of a fixed deadline by @esengine in #13535
  • feat(desktop): card grammar slices 3–5 and the one-row brand lockup by @esengine in #13546
  • feat(studio): carry every local pane on the hub's one multiplexed event stream by @esengine in #13537
  • feat(control): continue a task list handed back to the user once the ask timeout passes unanswered by @esengine in #13502
  • fix(control): a recorded await_user ends the readiness rounds the host would start by @esengine in #13536
  • fix(gitcmd): a git stopped by the deadline is the context's error, not a refusal of the folder by @esengine in #13553
  • docs(release): fold the remaining fragments into the studio 2.43.0 notes by @esengine in #13554

New Contributors

Full Changelog: studio-v2.42.0...studio-v2.43.0


macOS 已用 Developer ID 签名并公证,打开时不需要清除隔离属性。Windows 的窗口、内核与安装器都经 Certum 代码签名证书做了 Authenticode 签名。Linux Debian 系从 .deb 安装,Fedora、RHEL、openSUSE 等从 .rpm 安装(sudo dnf install ./ReasonixStudio-linux-amd64.rpm)。x86_64 用文件名带 amd64 的包,aarch64(统信 UOS、麒麟等)用带 arm64 的包。

三个平台都能自更新:Linux 的 .deb 走自己的包(.rpm 的自更新尚未提供,请手动下载新包),Windows 运行下一个安装器,macOS 替换自身 bundle。

Don't miss a new DeepSeek-Reasonix release

NewReleases is sending notifications on new releases.