Skip to content

Releases

Multi-Agent Studio v1.7.7.2

Choose a tag to compare

@ColtM1873 ColtM1873 released this 08 Nov 09:25

中文

本次为纯修复,无新增功能。

  • PDF → Markdown 乱码与假表格:矢量图里的文字常来自 Visio/Word 子集字体(ArialMT、TimesNewRomanPSMT 等),这些字体没有 Unicode 映射,任何提取器都只能得到 !"#$%&' 这类乱码。现在按「字体族 + 字母数字占比」识别图内文字,改为输出一条 > [图内文字无法可靠提取,已省略(图形区域文字缺少 Unicode 映射)] 占位,不再输出乱码;被图形框线误判成表格的图区也只留占位,不再生成假表格。
  • 数学公式符号还原:LaTeX 的 txfonts(txex / txsyc 等)同样缺少 Unicode 映射,此前 ∑ 会变成 X、≠ 会变成 ,、矩阵括号变成私有区字符或 (cid:N)。现在按 PDF /Differences 的字形名还原:∑、≠、⎡⎢⎣⎤⎥⎦、[] / () 均可正确输出;同时保留 pdfminer 的空格标注,避免整行单词粘连(AdversarialFiltering...)。
  • 版面清理:自动剔除页脚与页码;双栏页面按「左栏读到底再读右栏」重排(不再左右交错);合并行尾连字符(Evasion at-\ntacks → Evasion attacks)。
  • Markdown 安全:表格单元格转义 $ _ * ` [ ] ~ & < > # 等字符,并在表格块之间留空行,避免转换出的 $...$ 被前端 texmath 当作公式、渲染出 KaTeX ParseError。
  • 升级方式不变(按 README「版本迁移」覆盖文件);本次不涉及配置或数据库迁移。

English

This is a fix-only release with no new features.

  • PDF → Markdown garbage and fake tables: text inside vector figures often comes from Visio/Word subset fonts (ArialMT, TimesNewRomanPSMT, …) with no Unicode mapping, so every extractor can only produce garbage such as !"#$%&'. Figure text is now detected by "font family + alphanumeric ratio" and replaced with a single > [figure text could not be extracted reliably, omitted] placeholder instead of garbage; figure regions whose borders were mistaken for tables also become a placeholder rather than a fake table.
  • Math glyph recovery: LaTeX txfonts (txex / txsyc, …) also lack Unicode mappings, so ∑ used to come out as X, ≠ as ,, and matrix brackets as private-use characters or (cid:N). They are now restored from the PDF /Differences glyph names: ∑, ≠, ⎡⎢⎣⎤⎥⎦, [] / () all render correctly; pdfminer's space annotations are preserved so words no longer fuse into AdversarialFiltering....
  • Layout cleanup: page footers and page numbers are dropped; two-column pages are reordered as "read the left column to the bottom, then the right column" (no more interleaving); end-of-line hyphenation is joined (Evasion at-\ntacks → Evasion attacks).
  • Markdown safety: table cells escape $ _ * ` [ ] ~ & < > # and table blocks are separated by blank lines, so a converted $...$ is no longer treated as a formula and rendered as a KaTeX ParseError.
  • Upgrading is unchanged (see README "Version migration"); this release has no config or database migration.

Multi-Agent Studio v1.7.7.1

Choose a tag to compare

@ColtM1873 ColtM1873 released this 08 Nov 04:15

中文

新增

  • 「将本地PDF转换为md」按钮:会话页顶栏新增该按钮,位于「将本地md转换为HTML」左侧。点击后弹出系统文件选择窗口,选中 PDF 后复用文件工具里同一套 PDF→Markdown 转换(pdfminer 抽正文 + pdfplumber 基于框线抽表格;是否提取表格由「进阶设置 → 📄 PDF 表格提取」实时决定,失败回退 MarkItDown),在该 PDF 同目录下生成同名 .md;若同名 .md 已存在,则追加时间戳另存(同秒再加序号),绝不覆盖已有文件。主设置 →「🖨 转换 HTML」组新增显示开关「显示转换本地PDF按钮」(默认开启)。普通版与 Lite 版均可使用。
  • Lite 版补齐本地文件转换:Lite 版此前没有挂载「将本地md转换为HTML」端点(按钮点了会 404),本轮一并补上;现在 Lite 版的 md / PDF 两个本地转换按钮都可正常使用。

改进

  • 快照格式升级到 v3(只存消息、浏览时实时渲染):快照 JSON 现在只保存原始消息(main_messages / subgraphs[].messages / main_meta)与元数据,不再保存渲染后的 Markdown(main / subgraphs[].markdown)和固化的渲染设置(render_settings)。打开快照时按当前设置用与「浏览普通会话历史」完全相同的渲染函数实时生成,因此聊天图标及称谓、思考/工具默认展开等外观始终跟随当前设置;快照文件明显变小、读取更快。
  • 快照内编辑更轻:编辑只替换快照 JSON 里的那条消息,不再重渲染 Markdown、不再写回渲染设置;下次打开时按当前设置自动渲染。
  • 旧快照兼容:v1(只有渲染结果)仍按原样显示;v2(已保存消息)打开时也按当前设置实时渲染;在快照内编辑后记录会自动升级为 v3。不做任何数据迁移。

注意

  • 本轮改变的是快照的「视图来源」:消息内容与时间 / Source / Step / Thread / Checkpoint ID 不变,仅展开状态与图标称谓等视图偏好跟随当前设置。
  • 升级方式不变:覆盖文件后务必重跑 setup.bat 重新生成 MultiAgentStudio.exe,不要沿用旧 exe。
  • 本次不涉及配置或数据库结构迁移。

English

Added

  • "Convert local PDF to md" button: a new button in the chat header, placed to the left of "Convert local md to HTML". Clicking it opens the native file picker; after you select a PDF it reuses the exact same PDF→Markdown converter as the file tools (pdfminer for body text + pdfplumber for ruled-line tables; whether tables are extracted is decided live by "Advanced settings → 📄 PDF table extraction", with a MarkItDown fallback) and writes a same-name .md next to the PDF. If a .md with that name already exists, a timestamped copy is created instead (with a sequence suffix for same-second collisions) — existing files are never overwritten. Main settings → "🖨 Export HTML" group gains a new display switch, "Show the Convert local PDF button" (on by default). Available in both the standard and Lite editions.
  • Lite edition local-file conversion fixed: Lite previously did not mount the "Convert local md to HTML" endpoint (the button returned 404); it is now mounted as well, so both local conversion buttons work in Lite.

Improved

  • Snapshot format v3 (messages only, rendered on read): snapshot JSON now stores only the original messages (main_messages / subgraphs[].messages / main_meta) plus metadata — no rendered Markdown (main / subgraphs[].markdown) and no frozen render settings (render_settings). Opening a snapshot renders it live with the current settings through the same renderer used for normal chat history, so chat identity labels/icons and reasoning/tool expand state always follow the current settings; snapshot files are noticeably smaller and faster to load.
  • Lighter in-snapshot editing: editing only replaces that one message in the snapshot JSON — no Markdown re-render and no writing render settings back; the next open renders it with the current settings.
  • Old snapshot compatibility: v1 snapshots (rendered result only) still display exactly as before; v2 snapshots (which already have messages) are now rendered live as well; editing a v2 snapshot upgrades the record to v3 automatically. No data migration is performed.

Notes

  • What changed is where a snapshot's view comes from: message content, timestamps, Source / Step / Thread / Checkpoint ID are unchanged; only view preferences such as expand state and identity labels follow the current settings.
  • Upgrading is unchanged: after copying the files, re-run setup.bat to rebuild MultiAgentStudio.exe rather than reusing the old exe.
  • No config or database-schema migration in this release.

Multi-Agent Studio v1.7.7

Choose a tag to compare

@ColtM1873 ColtM1873 released this 07 Nov 14:32

中文

新增

  • 会话导出 / 导入(跨版本、跨存储后端):在会话选择页勾选会话 →「导出会话」,后端弹出系统保存对话框,把「该会话所属 multi-agent 的完整配置 + 每个会话的全部 checkpoint(主图 + 各子 agent)+ 一份可读的 conversation.md」打包成一个 zip;可选用密码加密(AES-256-GCM + scrypt/PBKDF2,文件头用 AESGCM 魔法字样识别,加密文件后缀 .zip.enc)。在另一台机器 / 另一个版本上「导入会话」即可续上历史,普通版 ↔ Lite、PostgreSQL ↔ SQLite 四象限互通。导入支持两种语义:「并入已有配置」或「永远新建一个配置」(跨机器导入会用本机连接设置重算连接串)。
  • 快照内编辑:快照浏览页接上与聊天页完全同源的编辑模式(共用同一个 createHistoryEditor,两视图只注入「取数 / 写回 / 重拉」三件事),编辑只改快照 JSON 并按快照里固化的渲染设置重渲染被改通道,不跑图、不碰会话数据库、不改文件名里的条数。
  • 聊天身份自定义:设置新增「聊天图标与称谓」,可自定义用户 / 助手的称谓与图标、思考过程图标(约 160 个 emoji 选择器),前端流式与编辑态、后端历史渲染(含快照)都能一致生效。

改进

  • 主界面 / 会话页 UI 打磨:卡片改为纵向 flex + 按钮 margin-top:auto,四个按钮在任意窗口宽度下都对齐一行;快照支持重命名(只改会话名,日期 / 时间 / 条数序号保留,快照文件同时改名并持久化 snapshot_name);流式输出切换成渲染历史时改用语义文本锚点而非像素 scrollTop 保持阅读位置,原本在底部则继续跟随底部。
  • 记忆库弹窗去掉误导性的刷新按钮。
  • requirements.txt 显式锁定 cryptography(加密导出用;原本会随其它依赖装进来,锁定是为了避免依赖链变化让加密导出在客户机上失效)。

修复

  • 模型连不上时只看到英文 Connection error.:运行期把连接类异常(超时、断连、DNS、TLS 等,含被包了一层的网络错误)与「步数超限」转成人话,并带上模型来源;同时写入 logs/server.log(此前这条路径只把异常字符串吐给前端、不打日志,事后无从排查)。非网络类错误保持原文,不吞信息。
  • 失败 / 中断后的「✓ 回填」点了没反应:一次运行会活过当前视图,回填挂起项原先放在 renderChatView 的闭包里,视图重渲染后气泡能弹出但回填不生效。挂起项改为模块级并按「所属会话」绑定,元素一律现查 DOM;可回填的消息不会因切换会话被静默丢弃(回到该会话时会补显)。
  • 浏览器面板句柄误判(BID110):面板句柄活性判据兼容 BID055 的离场钩子,「节点可见」不再等于「面板还开着」,panel.state 不会再对已关闭面板报 open。
  • 自定义称谓后所有会话变成「(无历史)」:settings 字典是作为 **kwargs 转发的,threads.get_thread_history_markdown / get_subgraph_history_by_node 的显式关键字参数列表必须接收它,否则 /history 直接 500。

注意

  • 快照格式升到 v2(多存一份可编辑的原始消息数组 + 固化的渲染设置)。旧快照仍可正常浏览,只是按「没有原始消息数组」判定为不可编辑,前端隐藏「进入编辑模式」按钮,不做任何数据迁移。
  • 本次不涉及配置或数据库结构迁移;新增的 cryptography 依赖由 setup.bat 自动安装。
  • 升级方式不变(见 README「版本迁移」):覆盖文件后务必重跑 setup.bat 重新生成 MultiAgentStudio.exe,不要沿用旧 exe。

English

Added

  • Session export / import (cross-version, cross-storage-backend): on the sessions screen, tick the sessions you want and hit "Export sessions". The backend opens the native save dialog and packs the full multi-agent config the sessions belong to + every session's checkpoints (main graph and each sub-agent) + a human-readable conversation.md into one zip. Optionally encrypted with a password (AES-256-GCM + scrypt/PBKDF2, detected by an AESGCM magic header, encrypted files get the .zip.enc suffix). Importing on another machine or an older/newer version resumes the history, and standard ↔ Lite, PostgreSQL ↔ SQLite all four combinations interoperate. Import offers two explicit semantics: "merge into an existing config" or "always create a new config" (a cross-machine import recomputes the connection string from local settings).
  • In-snapshot message editing: the snapshot viewer now has the same edit mode as the chat page (both share one createHistoryEditor; each view only injects "fetch / write back / reload"). Editing rewrites the snapshot JSON only and re-renders just the edited channel using the render settings frozen into that snapshot — no graph run, no session database writes, no change to the message count in the file name.
  • Custom chat identity: a new settings submenu lets you customize the user/assistant labels and icons plus the reasoning icon (a ~160 emoji picker). It applies consistently to the frontend streaming and edit views and to backend-rendered history (including snapshots).

Improved

  • UI polish on the main/session screens: cards are now a flex column with margin-top:auto on the actions row, so the four buttons stay aligned in one row at any window width; snapshots can be renamed (only the session name changes — the date/time/count serial is kept, the snapshot file is renamed too and snapshot_name persisted); switching from streaming output to rendered history now anchors on semantic text anchors instead of a pixel scrollTop, and keeps following the bottom when you were already there.
  • The memory-store modal no longer shows a misleading refresh button.
  • requirements.txt now pins cryptography explicitly (used by encrypted export; it was already pulled in transitively, the pin prevents a dependency-chain change from breaking encrypted export on customer machines).

Fixed

  • A bare English Connection error. when the model is unreachable: runtime connection-class exceptions (timeouts, disconnects, DNS, TLS — including network errors wrapped in another exception) and "step limit exceeded" are now humanized and include the model provider; they are also written to logs/server.log (previously this path only emitted the exception string to the frontend and logged nothing, leaving no trace to debug). Non-network errors keep their original text.
  • "✓ Refill" after a failed/interrupted send did nothing: a run can outlive the current view, and the pending refill used to live in renderChatView's closure — after a re-render the bubble appeared but refilling silently failed. The pending item is now module-level and bound to its owning session, with DOM elements looked up on demand; a refillable message is no longer silently dropped when you switch sessions (it reappears when you return).
  • Browser panel-handle misjudgement (BID110): the panel handle liveness check now honours BID055's leave hook, so "node is visible" no longer means "the panel is still open", and panel.state no longer reports open for a closed panel.
  • Every session showing "(no history)" after customizing labels: the settings dict is forwarded as **kwargs, so the explicit keyword lists in threads.get_thread_history_markdown / get_subgraph_history_by_node must accept it — otherwise /history returns 500.

Notes

  • The snapshot format is now v2 (it additionally stores the original message array plus frozen render settings). Old snapshots still display normally, but are marked non-editable ("no original messages") and the "Enter edit mode" button is hidden for them. No data migration is performed.
  • No config or database-schema migration in this release; the new cryptography dependency is installed automatically by setup.bat.
  • Upgrading is unchanged (see README "Version migration"): after copying the files, re-run setup.bat to rebuild MultiAgentStudio.exe rather than reusing the old exe.

Multi-Agent Studio v1.7.6.1

Choose a tag to compare

@ColtM1873 ColtM1873 released this 03 Nov 07:12

中文

  • 修复「常用 prompt 删除后又复活」:启动迁移不再把「指向已删除条目的悬空指针」当成旧版文本副本。此前在常用 prompt 里删除某条后,重启会把它以 Content-Hash ID 的形式重新写回全局库,表现为一条永远删不掉、且每次重启都换一个值的 cpXXXX 序列号;现在悬空指针会直接恢复为「未设置」,旧文本副本的迁移语义不变。
  • 启动端口冲突自动递增:默认 8000,被占用时自动改用 8001、8002……(最多 20 个),并正确避开上一个实例刚退出时的 TIME_WAIT。不再因为端口被占而卡在启动页读秒、无法进入。
  • 后端启动失败可见:uvicorn 端口绑定失败不再静默;启动页会替换为可读的错误页(说明端口可能被占用 / 数据库服务失败),托盘与 logs/server.log 同时给出原因。
  • 残留实例识别:只有「窗口真的被唤出且已进入应用界面」才认作「本程序已打开」;后端还活着但窗口已坏、或窗口停在启动页的残留实例会被识别出来,新实例自动改用新端口启动,不再出现「双击没反应」或被领回一个坏窗口。
  • 普通版与 Lite 版同步:两端都接入端口自增、失败上报与残留识别;Lite 版用独立的 app 标识,互不误判。
  • 升级方式不变:按 README「版本迁移」覆盖文件即可;本次改动不涉及配置或数据库迁移。

English

  • Fixed "deleted common prompts come back": the startup migration no longer treats a dangling pointer (a session ref whose target entry was deleted) as a legacy text copy. Previously, deleting a common prompt and restarting re-created it as a content-hash entry — a cpXXXX "serial number" that could never be deleted and changed value on every restart. Dangling refs now resolve to "not set"; legacy text migration is unchanged.
  • Automatic port fallback on conflict: the app now starts on 8000 and automatically falls back to 8001, 8002, … (up to 20 candidates), correctly skipping the TIME_WAIT window left by a just-exited instance. No more endless boot-screen countdown caused by an occupied port.
  • Backend startup failures are visible: a uvicorn bind failure is no longer silent. The boot screen is replaced with a readable error page (port in use / database service failed), and the tray plus logs/server.log explain the cause.
  • Stale-instance detection: "the app is already open" now requires the window to be actually raised and already showing the app UI. A stale instance whose backend is alive but whose window is broken or stuck on the boot screen is detected, and the new instance starts on a new port instead of silently exiting or handing the user a broken window.
  • Both editions updated: the normal and Lite editions share the port fallback, failure reporting, and stale-instance detection; Lite uses its own app identity so the two never mistake each other.
  • Upgrading is unchanged (see README "Version migration"); this release has no config or database migration.

Multi-Agent Studio v1.7.6

Choose a tag to compare

@ColtM1873 ColtM1873 released this 02 Nov 16:34

中文

  • 浏览器面板(下拉候选)判定重做:不再用「整页浮层数量 / 指纹」反推单个面板开没开,而是给面板认领身份(CDP 句柄集合),之后只问「这几个候选节点还在不在」。这是 BID089–BID109 二十余轮修复的收口。
  • 修复一批静默失败 / 反向操作:
    • 点击已经展开的下拉会把面板关掉,返回却只说「成功」;
    • 在筛选框输入时,输入前的隐式点击把面板关掉,返回不提候选已消失;
    • 批量填写(tool_06)的中间填写与收尾点击漏掉面板校验;
    • 模态框 / 弹窗里的下拉永远打不开;
    • 筛选把候选从多行筛到 1 行时,被误判成「面板被关掉」并多点一次;
    • 无关提示条 / toast 消失被误判成面板关闭,反而把仍开着的面板点关;
    • 补点恢复后承诺「候选项见下方返回内容」,而下方其实是「(页面无变化)」。
  • 新增结构化字段 panel:{"state": "open"|"closed"|"unknown", "clicks": n, "reason": …}。unknown 是合法结果(探测盲区 / 页面不可见),不再用散文让模型自己推断;普通按钮点击与普通文本框输入不产生该字段。批量工具(tool_06)按字段分别给出(tail + fields)。
  • 新增真实页面冒烟测试:用历史会话保存的真实页面回放,覆盖「不抛异常 / 不超时 / 点击次数 ≤ 2 / 无自相矛盾的提示 / 无假承诺」。
  • 升级方式不变:按 README「版本迁移」覆盖文件即可;本次改动不涉及配置或数据库迁移。

English

  • Reworked dropdown-panel detection: instead of inferring "is this panel open" from whole-page overlay counts / fingerprints, the browser tool now assigns each panel an identity (a small set of CDP handles) and simply asks whether those candidate nodes are still there. This closes out 20+ rounds of panel fixes (BID089–BID109).
  • Fixed a batch of silent failures / reverse actions:
    • clicking an already-open dropdown closed the panel but still reported success;
    • typing into a filter box closed the panel via the implicit focus click, with no disclosure;
    • batch fill (tool_06) skipped panel verification for mid-fills and the trailing click;
    • dropdowns inside modal dialogs could never be opened;
    • filtering candidates down to a single row was misread as "the panel was closed", causing an extra click;
    • unrelated toasts / validation hints disappearing were misread as "panel closed", closing a panel that was still open;
    • after a corrective click the result still promised "candidates are in the content below" while the body was "(页面无变化)".
  • New structured panel field: {"state": "open"|"closed"|"unknown", "clicks": n, "reason": …}. unknown is a legitimate result (probe blind spot / page not visible); plain button clicks and plain text inputs do not emit this field. The batch tool (tool_06) reports it per field (tail + fields).
  • New real-page smoke test: replays actual pages captured in past sessions, asserting "no exception / no timeout / ≤ 2 physical clicks / no self-contradictory notices / no false promise".
  • Upgrading is unchanged (see README "Version migration"); this release has no config or database migration.

v1.7.5.8.5

Choose a tag to compare

@ColtM1873 ColtM1873 released this 30 Oct 15:20

中文

  • 浏览器 profile 改为资源池:删除会话不再关闭浏览器、不删除 profile 目录,而是把 profile 释放回池并按 FIFO 复用;删除整个 multi-agent 同样释放其名下全部 profile。
  • 浏览器配色改为「程序级活动浏览器进程」资源:按配色优先级列表先来先分配,进程关闭即收回,程序重启后按仍存活的浏览器恢复占用;删除会话后浏览器仍开着时颜色继续被占用,新会话认领该 profile 时继承原颜色。
  • 杂项:.gitignore 忽略本地 ID91 规划稿。

English

  • Browser profiles are now a resource pool: deleting a conversation no longer closes the browser or removes its profile directory; the profile is released back to the pool and reused in FIFO order. Deleting a multi-agent releases all of its profiles the same way.
  • Browser colors are now program-level resources tied to live browser processes: allocated in preset-list order (random when full), released when the process exits, and restored after an app restart while the browser is still alive. Deleting a conversation keeps the color occupied by the running browser; the next conversation that claims the profile inherits it.
  • Chore: ignore the local ID91 plan draft in .gitignore.

Multi-Agent Studio v1.7.5.8.4

Choose a tag to compare

@ColtM1873 ColtM1873 released this 30 Oct 10:23

Multi-Agent Studio v1.7.5.8.4

中文

浏览器工具默认不再返回页面地址 · 敏感占位符保护(默认关闭的备用代码)

变更(Changed)

  • 浏览器工具返回内容默认不再携带 url(BID088,新增「进阶设置」开关):主界面「设置 → 进阶设置 → 浏览器接管」新增「浏览器工具返回内容携带url」开关,默认关闭。关闭时,除专门返回「tab → url 映射表」的工具(tool_40_return_urls_of_opened_tags)外,其余工具的返回内容都不带页面地址:
    • 全量返回(获取视窗全貌 / 切换标签页 / 返回 / 导航)的首行从 [document] url=… title=… 变为 [document] title=…(标题为空时只输出 [document]);
    • 增量返回里地址变化时的提示从 [增量] url 已变为 … 变为 [增量] 页面地址已变化(仍然保留「地址变过」这个事实,但不点名任何工具,避免诱导 LLM 去查地址);
    • tool_40_return_urls_of_opened_tags 不受影响,仍返回完整的 title→url 映射。
      动机:页面地址常带一长串没有语义的随机字符(推广 / 追踪参数),既挤占上下文又干扰推理。地址现在在产生处就不拼接,而不是事后再用正则删——既不会漏匹配,也不会误伤网页正文里本来就有的链接文本。需要地址时把开关打开即可恢复旧输出(与旧版本逐字节一致)。

内部(Internal)

  • 敏感替换列表占位符 <名称> 的整合层保护(BID087):新增一个默认关闭的代码开关 prefs.SENSITIVE_PLACEHOLDER_GUARD。当前管线的顺序是「先整合、后隐私遮蔽」,遮蔽生成的 <名称> 不会再经过整合层的符号转义,因此默认关闭既不改变任何输出,也不产生额外开销;代码仅作备用(将来若调整这两层的顺序,可直接打开)。

浏览器工具的这次行为变化默认生效:升级后若希望继续在返回内容里看到页面地址,请在「设置 → 进阶设置 → 浏览器接管」打开「浏览器工具返回内容携带url」。无需重启,保存后下一次工具调用即生效。

English

Browser tools stop returning page URLs by default · Sensitive-placeholder guard (off-by-default spare code)

Changed

  • Browser tool output no longer carries the page URL by default (BID088, new Advanced Settings toggle): Advanced Settings → Browser takeover now has an "Include URLs in browser tool output" switch, off by default. When off, every tool except the dedicated "tab → URL map" tool (tool_40_return_urls_of_opened_tags) returns no page address:
    • the first line of a full return (full viewport / switch tab / back / navigate) becomes [document] title=… instead of [document] url=… title=… (just [document] when the title is empty);
    • the incremental notice for an address change becomes [增量] 页面地址已变化 instead of [增量] url 已变为 … (it still states the fact, but names no tool, so the LLM is not nudged into looking the address up);
    • tool_40_return_urls_of_opened_tags is unaffected and still returns the full title→url map.
      Rationale: page URLs often carry a long run of meaningless random characters (campaign / tracking parameters) that burn context and distract reasoning. The URL is now omitted where it is produced, not stripped by a regex afterwards — nothing can slip through, and URLs that legitimately appear in page text are untouched. Turn the switch on to restore the previous output byte-for-byte.

Internal

  • Sensitive-placeholder protection in the merge layer (BID087): a new off-by-default code switch prefs.SENSITIVE_PLACEHOLDER_GUARD. The current pipeline merges first and masks afterwards, so masked <名称> placeholders never reach the merge-layer escaping; keeping it off changes no output and costs nothing. The code is a spare in case those two layers are ever reordered.

This behaviour change is on by default: after upgrading, enable "Include URLs in browser tool output" in Advanced Settings if you want page addresses back. No restart needed — the setting applies to the next tool call once saved.

Multi-Agent Studio v1.7.5.8.3

Choose a tag to compare

@ColtM1873 ColtM1873 released this 27 Oct 15:02

Multi-Agent Studio v1.7.5.8.3

中文

会话列表卡顿修复 · 跨 multi-agent 串页修复(ID101)

修复(Fixed)

  • 多浏览器任务下,会话选择页「加载非常久」(ID101):/api/sessions 会在请求里同步探测每个会话的 CDP 端口;Windows 向已关闭的本地端口 connect 会静默丢弃 SYN,必须等满 1 秒超时,旧实现还会对同一端口探两遍——每多一个已关闭的浏览器,接口就多 2.1 秒(现场实测空闲 4.0–4.2 秒;任务在跑时同一页面的请求堆到 16.8 秒)。现在浏览器进程已退出即直接短路,探测成本为 0;/api/sessions 改为只读后台监控缓存,不再做任何网络 I/O。
  • 会话列表要等状态接口返回才渲染(ID101):现在先用会话列表把页面画出来,运行状态与浏览器着色等 /api/sessions 回来后再原地补绘;同一时刻只发一个 /api/sessions,不再互相拖慢。
  • 点进另一个 multi-agent,却显示上一个 multi-agent 的会话(ID101):异步视图在 await 之后没有「页面还是不是我」的校验,上一个 agent 的迟到响应会把它的会话画进新页面(标题是新 agent、列表是旧 agent,重进一次才正常)。现在用渲染序号 + alive() 守卫,并固定本次渲染的 agent_id / agent_name,迟到响应一律丢弃;视图定时器也按归属自清理,不会再把旧列表画回来。

改进(Improved)

  • 浏览器关闭后重新打开更快(ID101):复用 / 重开浏览器前会先看进程是否已退出,不再白等两次端口超时。
  • 着色与状态标签无感补绘(ID101):列表立即出现,浏览器颜色与「正在进行 / 任务完成」标签稍后原地补上,不整页闪烁。

后端改动需重启程序后生效;前端静态资源刷新界面(F5)即生效。浏览器着色最多延迟约 3.5 秒(监控 1.5 秒 + 列表轮询 2 秒),这是刻意取舍。

English

Session list latency fix · Cross-agent stale render fix (ID101)

Fixed

  • Session picker took many seconds to load in multi-browser tasks (ID101): /api/sessions probed every session's CDP port inline. On Windows, connecting to a closed local port silently drops the SYN and waits for the full 1 s timeout, and current_port() probed the same port twice — every closed browser added 2.1 s (measured 4.0–4.2 s idle; same-page requests piled up to 16.8 s while agents were running). A launcher whose process has exited now short-circuits to zero cost, and /api/sessions reads the monitor-thread cache only — no network I/O in that endpoint.
  • The list waited for the status endpoint before rendering (ID101): the page now paints from /threads immediately and fills in run state / browser tint when /api/sessions returns; concurrent /api/sessions calls are de-duplicated.
  • Opening another multi-agent showed the previous one's sessions (ID101): async views did not verify ownership after await, so a late response from the previous agent painted its threads into the new page (new agent's title, old agent's rows; re-entering "fixed" it). A render sequence + alive() guard now discards stale continuations, and agent_id / agent_name are captured per render. View timers also self-clean by ownership instead of overwriting the new timer.

Improved

  • Reopening a closed browser is faster (ID101): reuse / re-launch now checks whether the browser process already exited instead of waiting out two port timeouts.
  • Tint and state tags fill in smoothly (ID101): the list appears at once; browser colors and "running / done" tags are patched in place without a full-page flicker.

Backend change needs a program restart; frontend assets apply after a refresh (F5). Browser tint can lag up to ~3.5 s (1.5 s monitor + 2 s list polling) — a deliberate trade-off.

Multi-Agent Studio v1.7.5.8.2

Choose a tag to compare

@ColtM1873 ColtM1873 released this 27 Oct 09:59

Multi-Agent Studio v1.7.5.8.2

中文

会话历史渲染修复 · 导出 md / HTML 按钮恢复

修复(Fixed)

  • 跑完一轮的会话重进仍是「流式输出界面」(ID100):本轮结束后前端只用流式 DOM 展示回复,从不重新拉取 /history;离开会话时又把这整页 DOM 当成历史基线缓存,再次进入时直接还原流式外观——没有 Checkpoint 信息块、思考/工具块样式也与历史界面不同。现在每轮 done 之后都会用 /history 做一次权威渲染,回复完成后即进入消息历史界面。
  • 助手回复下方没有「🖨 转换 HTML」「📄 导出 md 文件」按钮(ID100):导出按钮只挂在历史渲染的回复块上(该块带 data-md-b64 原文),流式回复块永远不会带;切回历史渲染后按钮随之恢复,md 与 HTML 都能正常导出。
  • 按钮在、点了却没反应(ID100):从 DOM 快照还原的按钮会丢失点击事件。现在每次渲染都会重建按钮行,快照恢复的按钮同样可点。
  • 重进会话后最新一轮回复消失(ID100):清理静态基线时同时清空旧的基线 Markdown,避免它覆盖刚拉取的完整历史。

改进(Improved)

  • 切回历史渲染时保持阅读位置(ID100):原来贴着底部就继续跟到底,否则停在原处,不再被拉回顶部。

本次只改前端静态资源,无需重启程序:刷新界面(F5)后生效。已打开的会话重新进入即是历史界面。

English

History rendering fix · Export MD / HTML buttons restored

Fixed

  • A finished conversation reopened in "streaming" style (ID100): after a run the frontend only showed the live-stream DOM and never re-fetched /history; leaving the conversation then cached that whole page as the static baseline, so the next visit restored the streaming look — no Checkpoint block, and reasoning/tool sections styled differently from history. Each done now triggers an authoritative /history render, so a finished run lands on the message-history view.
  • No "Export HTML" / "Export MD" buttons under assistant replies (ID100): those buttons are only attached to history-rendered reply blocks (the ones carrying the data-md-b64 source), which streaming blocks never have. They are back once the view switches to history rendering, and both MD and HTML export work again.
  • Button visible but unresponsive (ID100): buttons restored from a DOM snapshot lose their click handlers. The button row is now rebuilt on every render, so snapshot-restored buttons work as well.
  • Latest reply disappeared after reopening a conversation (ID100): clearing the static baseline now also clears the old baseline Markdown, so it can no longer overwrite the freshly fetched history.

Improved

  • Reading position preserved when switching to history rendering (ID100): stay pinned to the bottom if you were already there, otherwise keep your place instead of jumping back to the top.

Frontend-only change; no program restart needed. Refresh the window (F5) and reopened conversations will show the history view.

Multi-Agent Studio v1.7.5.8.1

Choose a tag to compare

@ColtM1873 ColtM1873 released this 27 Oct 08:15

Multi-Agent Studio v1.7.5.8.1

中文

浏览器配色修复 · 会话行按第二色着色

修复(Fixed)

  • 浏览器窗口不显示自定义配色(ID99):Chrome 自动化 profile 里存在 syncing_theme_prefs_migrated_to_non_syncing 迁移标记时,Chrome 会忽略 browser.theme 的两色种子,窗口回退默认蓝色;会话列表仍按配置显示颜色,出现「列表是青色、浏览器是蓝色」。现在每次启动浏览器前写入主题时会一并清除该标记,Chrome 重新迁移并应用配色。
  • 两个会话可能撞成同一个预设色(ID99):全新 profile 首次启动 Chrome 可能超过 30 秒,旧逻辑把它误判为「启动失败」并释放颜色,下一个会话于是拿到同一个预设。现在只要浏览器进程仍然存活就继续占色,进程退出后才按原规则释放。

改进(Improved)

  • 会话列表按「第二色」着色(ID99):会话行的左侧色条与圆点改用每条配色的第二种颜色(文字主题色),浅色底仍用主色,色条保持单色。第二色为白色或很亮时自动按亮度压暗,保证浅底上可见。

已打开的浏览器不会热更新:需要关闭后重新打开该会话的浏览器才会应用新配色。

English

Browser colour fix · session rows tinted with the second colour

Fixed

  • Browser window ignored the configured colours (ID99): when a Chrome automation profile contained the syncing_theme_prefs_migrated_to_non_syncing migration flag, Chrome ignored the browser.theme seed colours and fell back to the default blue, while the session list still used the configured colour ("teal list, blue browser"). The flag is now cleared whenever the theme is written before launch, so Chrome re-runs the migration and applies the colours.
  • Two sessions could get the same preset colour (ID99): a fresh profile's first Chrome launch can take longer than 30 seconds, which the old logic treated as a failed launch and released the colour, letting the next session take the same preset. The colour is now kept as long as the browser process is alive and only released after it exits.

Improved

  • Session rows are tinted with the second colour (ID99): the row's left bar and dot now use the second colour of each preset (the text/theme colour), while the light row background still uses the primary colour; the bar stays single-colour. Very light second colours (e.g. white) are automatically darkened for readability on the light background.

Already-open browsers are not hot-reloaded: close and reopen the session's browser to apply the new colours.