本版新增会话间消息(实验)、跨项目的对话正文搜索、模型读视频、更新方式“自动下载”和可选起始分支的独立工作目录,并修复多个会话同时开着时的界面卡死、停止无效,以及一批界面和英文界面问题。
新增
- 设置里新增“会话间消息(实验)”:可查看本机别的会话、给它们发文字;收到的文字在输入框上方等你批准,批准后才交给模型。默认关闭。关联 #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 = truein 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_domainsoffers "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_sessionsin 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,/feedbackand 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
- @imcreazy made their first contribution in #13431
- @tongsailong made their first contribution in #13499
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。