v1.7.0: Trace & Trust
wisp-science v1.7.0
v1.7.0 is the Trace & Trust release. You can export a session trajectory as HTML, tell windows apart by project name, and drive Gemini or Google AI Mode from the agent. Trust work moves MCP secrets into the OS keyring, fails closed when a desktop turn cannot load a session, and blocks write/edit escapes through dangling or racing symlinks.
Downloads
- macOS (.dmg, signed + notarized): choose the Apple Silicon (aarch64) or Intel (x86_64) build; compatible versions can update in-app.
- Windows installers (MSI / NSIS): signed; if SmartScreen still triggers, choose "Run anyway".
- Linux (deb / AppImage): available for both x86_64 and aarch64.
See Assets below.
Highlights
Trajectory & Trace
- Export the session trajectory inspector as a standalone HTML page.
- Selecting a row no longer jumps the event list; the inspector pane scrolls on its own.
- Window titles include the open project name (
wisp science — my-project) so the taskbar, Alt-Tab, and macOS title bar can tell windows apart. The Projects home screen still uses the app name alone.
Browser, Motif & Share
- The agent can drive Gemini and Google AI Mode through
web_agent_*on an already-logged-in tab. - Tabs Wisp opened for a turn close when the turn ends.
- The Motif DNA workbench can load local sequence files and send selected ranges back into chat.
- Share PNGs render chat tables and KaTeX the same way the live conversation does.
- Vision-capable primary models receive
view_imageas native image content.
Trust & Secrets
- MCP HTTP headers and stdio env values are stored in the OS keyring, not SQLite. Saving connections refuses JSON that still contains secret values.
write/editcannot leave the workspace through dangling or racing symlinks.- Desktop turns fail closed instead of loading a leftover
session.json. - Unpaired
tool_callsare repaired on stuck/stop, andlast_seqpersists fromMAX(seq). - Deleting a project cascades leftover tables and ignores orphan schedules.
Runtime & Reliability
- Python/R workers own their process tree, shut down on a bound, and put a conda/pixi interpreter prefix on PATH.
- SSH harvest renews leases without stalling SQLite, and an ambiguous launch can reattach instead of leaking a remote job.
- Branch merge holds the workflow lock first;
replace_messagesis a single write transaction. - MCP Apps reuse one center tab for the same app, and
serverToolscalls honor timeout, grants, and schema. - Idle transfer-tray clocks and background polling stop when the UI is settled. Chat scroll stays anchored after tool results. Ambiguous edit matches report line numbers. Skill search recall is better for multilingual queries.
Full Changes
All commits since v1.6.0:
v1.6.0...v1.7.0
wisp-science v1.7.0
v1.7.0 是 Trace & Trust 版本。会话轨迹可导出为独立 HTML,窗口标题带上项目名以便区分,智能体也可驱动 Gemini 与 Google AI Mode。信任侧把 MCP 密钥放进系统钥匙串,桌面回合在无法加载会话时失败关闭,并堵住通过悬空或竞态符号链接逃出工作区的 write/edit。
下载
- macOS(.dmg,已签名 + 公证):请选择 Apple Silicon(aarch64)或 Intel(x86_64)对应架构;兼容版本可从应用内更新。
- Windows 安装包(MSI / NSIS):已签名;如仍触发 SmartScreen,可选择「仍要运行」。
- Linux(deb / AppImage):提供 x86_64 与 aarch64 两个架构。
见下方 Assets。
核心亮点
轨迹与可追溯
- 轨迹检查器可导出为独立 HTML 页面。
- 选中一行时事件列表不再跳动;检查器面板可独立滚动。
- 窗口标题带上当前项目名(
wisp science — my-project),任务栏、Alt-Tab 和 macOS 标题栏都能区分窗口。项目主页仍只用应用名。
浏览器、Motif 与分享
- 智能体可通过
web_agent_*在已登录标签页上驱动 Gemini 与 Google AI Mode。 - Wisp 为本回合打开的标签页会在回合结束时关闭。
- Motif DNA 工作台可加载本地序列文件,并把选中区间送回对话。
- 分享 PNG 会按实时对话同样渲染表格与 KaTeX。
- 具备视觉能力的主模型会以原生图片内容接收
view_image。
信任与密钥
- MCP 的 HTTP Header 与 stdio 环境变量存进系统钥匙串,不再写入 SQLite。若连接 JSON 仍含明文密钥,保存会被拒绝。
write/edit不能通过悬空或竞态符号链接离开工作区。- 桌面回合无法加载会话时失败关闭,而不会去读残留的
session.json。 - 卡住/停止时会补齐未配对的
tool_calls,last_seq按MAX(seq)持久化。 - 删除项目会级联清理残留表,并忽略孤立的 schedule。
运行时与稳定性
- Python/R worker 接管整棵进程树,关闭有时限,conda/pixi 解释器前缀会加入 PATH。
- SSH harvest 续租不再卡住 SQLite;启动结果不明确时可重新挂上远程任务。
- 分支合并先持有 workflow 锁;
replace_messages是一次写事务。 - 同一 MCP App 复用一个中心标签;
serverTools调用遵守超时、授权与 schema。 - 空闲时停止传输托盘时钟与后台轮询。工具结果返回后聊天滚动仍锚定。不明确的编辑匹配会报告行号。技能搜索对多语言查询的召回更好。
完整变更
自 v1.6.0 以来的全部提交见:
v1.6.0...v1.7.0
What's Changed
- fix(skills): improve multilingual search recall by @Yu-Qiao-sjtu in #959
- feat(motif): import local DNA and bridge sequence selections by @Yu-Qiao-sjtu in #965
- feat(browser): drive Gemini and Google AI Mode via web_agent_* by @xuzhougeng in #964
- feat(browser): close Wisp-opened tabs at turn end by @xuzhougeng in #963
- fix(trajectory): keep the list in place on selection and let the inspector scroll by @xuzhougeng in #968
- fix(runtime): bound worker shutdown so stopping a REPL cannot hang (#941) by @xuzhougeng in #955
- fix(runtime): own the worker's whole process tree when stopping a runtime (#941) by @xuzhougeng in #956
- fix(runtime): give a conda/pixi interpreter its prefix on the worker PATH (#941) by @xuzhougeng in #957
- Export session trajectory as HTML by @xuzhougeng in #970
- Reuse one center tab for the same MCP App by @xuzhougeng in #969
- fix(run): reattach SSH Runs after an ambiguous launch failure by @xuzhougeng in #974
- fix(store): make replace_messages a single write transaction by @xuzhougeng in #973
- fix(ui): put the model switch confirm on the window Escape stack by @xuzhougeng in #972
- fix(tools): block write/edit escapes through dangling or racing symlinks by @xuzhougeng in #971
- fix: collapse cumulative OpenAI-compatible SSE snapshots (#985) by @xuzhougeng in #992
- fix: absorb #987 model-switch, dead-window, and extension setup onto current main by @xuzhougeng in #990
- fix: persist last_seq from MAX(seq) and abort failed workers (#978) by @xuzhougeng in #996
- fix: desktop turns fail closed instead of loading session.json (#982) by @xuzhougeng in #994
- fix: hold workflow locks before session branch merge (#980) by @xuzhougeng in #999
- fix: cascade leftover project tables and ignore orphan schedules (#981) by @xuzhougeng in #993
- fix: store MCP header and env secrets in the keyring (#977) by @xuzhougeng in #995
- fix: renew harvest leases and keep collect off the SSH master (#983) by @xuzhougeng in #997
- fix: pair tool_calls on stuck/stop and repair unpaired history (#979) by @xuzhougeng in #998
- Close MCP App serverTools remaining boundaries by @xuzhougeng in #1001
- fix: share PNG renders Markdown tables and math like chat by @xuzhougeng in #1005
- fix(core): attach view_image natively when the primary supports vision by @xuzhougeng in #1009
- fix: share HTTP client and recheck browser connection by @xuzhougeng in #1011
- fix(tools): report ambiguous edit line numbers by @xuzhougeng in #1013
- perf: reduce idle background polling by @xuzhougeng in #1012
- fix(ui): preserve browser scroll anchoring by @xuzhougeng in #1015
- perf(ui): idle the settled transfer tray clock by @xuzhougeng in #1016
Full Changelog: v1.6.0...v1.7.0