npm @agegr/pi-web 0.12.0
v0.12.0

2 hours ago

中文

基于 v0.11.1..v0.12.0 的提交整理。

npm install -g @agegr/pi-web@latest

新增

  • 一键删除项目的全部会话:项目分组的 ⋯ 菜单末尾新增「删除全部会话… · N」,先确认(默认聚焦「取消」,回车不会误删),再删除该项目的所有会话(含置顶和归档的),正在运行或等待输入的会保留。(#1182)
  • 在新浏览器标签页打开会话:侧边栏会话标题现在是真正的链接,中键或 Ctrl/Cmd 点击即在新标签页打开;会话菜单新增「在新标签页打开」(T)。普通点击仍在当前页切换。(#1167, #1169,感谢 xcg)
  • 子代理可连接 MCP 服务器:配置文件写 mcp: on(或在 Agents 面板打开「连接 MCP 服务器」)后,子代理按普通会话相同的信任规则连接 mcp.json 中的服务器;只读工具的子代理(Explore、Plan)只运行服务器标为只读的 MCP 工具。(#1053, #1187)
  • 子代理模型支持 :level 后缀:provider/model:high 同时指定模型和思考级别,与 pi 的 --model 一致;Agent 工具说明里列出每个配置文件的思考级别。(#1188, #1189)
  • 终端在竖屏触屏上提供 Termux 风格的额外按键:两行 ESC / - HOME ↑ END PGUP 与 TAB CTRL ALT ← ↓ → PGDN,点按时软键盘不收起;CTRL、ALT 为单次修饰,也作用于软键盘输入的下一个字符。(#1166,感谢 vill)
  • 设置 › Skills 显示技能的完整说明。(#1158,感谢 tammelin)
  • 超过 256 KB 的 HTML 文件也能完整预览。(#1155,感谢 Tiger)

修复

  • 完成提示音:空闲时暂停音频上下文(Android Firefox 不再在两次提示音之间持有唤醒锁),运行期间保持运行,锁屏时结束的运行也会响;超过 3 秒才恢复的提示音直接丢弃,不在回来时迟到播放。(#1157, #1178, #1185)
  • 打开指向已删除会话的链接,不再显示该项目上次打开的会话,而是新建会话页并提示「该会话已不存在」。(#1168, #1180)
  • Windows 命令行:status、open、update、stop 在 Node 23–24.19 / 26.6 上不再以 0xC0000409(libuv 断言)退出。(#1174, #1179)
  • 扩展在回答生成或压缩期间调用 ctx.reload() 会被拒绝并给出警告(与 pi 的 TUI 一致),不再让进行中的回合失效。(#1172, #1173,感谢 solidlime)
  • 终端:手机软键盘弹出时面板短暂缩到一行,输入不再永久失效。(#1160,感谢 vill)

改进

  • 流式回复更轻:长回复按 Markdown 块增量解析,不再每个片段重解析全文 (#1176);每个片段只重新渲染正在生成的回复,输入框和小地图不再跟着渲染 (#1191)。
  • 代码高亮按需加载:约 300 种 Prism 语言不再随首屏加载,首次出现代码块时才单独加载 (#1183);长历史里的代码块在空闲时分批上色,打开会话更快 (#1181)。
  • 工具结果图片由浏览器长期缓存,不再每次重新下载。(#1181)
  • 会话列表:列表接口不再携带每个会话完整的首条消息(大目录下 3.2 MB → 385 KB)(#1176);每次运行结束只重建一次列表 (#1177);子代理关系只在文件变化时重新读取 (#1181);会话视图缓存的大小只计算一次 (#1181)。
  • 完成推送的标题直接取自当前会话,不再解析所有会话文件;工具结果的图片不再在事件流中重复发送。(#1176)
  • 设置 › MCP 服务器详情:状态与连接合为一行,工具列在 Tools 选项下,去掉重复的 Transport / Sign-in 行,字体与字号统一。(#1190)

内部调整

  • 删除只复述实现源码文本的测试(2968 → 2589 个)。(f364bc3)
  • 发布文档:按名称推送发布标签,补充前置检查与 npm 同步延迟说明。(30af3b4)
  • 发布 npm 包 @agegr/pi-web@0.12.0。

English

Prepared from commits in v0.11.1..v0.12.0.

npm install -g @agegr/pi-web@latest

Added

  • Delete all of a project's sessions: a project group's ⋯ menu ends with "Delete all sessions… · N". It asks first (Cancel is focused, so Enter deletes nothing), then deletes every session of the project, pinned and archived ones included, keeping those that are running or waiting for input. (#1182)
  • Open a session in a new browser tab: a sidebar session title is now a real link, so middle-click and Ctrl/Cmd-click open it in a new tab; the row menu gets "Open in new tab" (T). A plain click still switches in place. (#1167, #1169, thanks xcg)
  • Sub-agents can connect MCP servers: a profile with mcp: on (or the Agents panel's "Connect MCP servers" switch) connects the servers in mcp.json under the same trust rules as a normal session. With read-only tools (Explore, Plan), only MCP tools their server marks read-only run. (#1053, #1187)
  • Sub-agent models accept a :level suffix: provider/model:high sets the model and its thinking level, as pi's --model does; the Agent tool's description lists each profile's thinking level. (#1188, #1189)
  • Termux-style extra keys for the terminal on portrait touch screens: two rows, ESC / - HOME ↑ END PGUP and TAB CTRL ALT ← ↓ → PGDN; tapping keeps the soft keyboard open, and CTRL and ALT are one-shot, also applying to the next character typed on the soft keyboard. (#1166, thanks vill)
  • Settings › Skills shows a skill's full instructions. (#1158, thanks tammelin)
  • HTML files larger than 256 KB preview in full. (#1155, thanks Tiger)

Fixed

  • Completion sound: the audio context is suspended while idle (no wake lock between chimes on Firefox for Android) and held running during a run, so a run that ends while the phone is locked still chimes; a chime whose resume takes over 3 s is dropped instead of playing late. (#1157, #1178, #1185)
  • A link to a session that no longer exists opens a fresh composer with "This session no longer exists" instead of the project's last open session. (#1168, #1180)
  • Windows CLI: status, open, update and stop no longer exit with 0xC0000409 (a libuv assertion) on Node 23–24.19 / 26.6. (#1174, #1179)
  • An extension's ctx.reload() during a streaming turn or compaction is refused with a warning, as in pi's TUI, instead of invalidating the turn in flight. (#1172, #1173, thanks solidlime)
  • Terminal: input keeps working after the phone keyboard briefly shrinks the panel to one row. (#1160, thanks vill)

Improved

  • Lighter streaming: a long reply's markdown is parsed block by block instead of whole on every chunk (#1176); each chunk re-renders only the streaming reply, not the composer or the minimap (#1191).
  • Code highlighting on demand: Prism's ~300 languages no longer load with the first page; they load as their own chunk when the first code block appears (#1183). Fences in a long history get their colors in idle slices, so sessions open faster (#1181).
  • Tool-result images are cached by the browser for good instead of re-downloaded on every view. (#1181)
  • Session list: rows no longer carry each session's whole first message (3.2 MB → 385 KB on a large folder) (#1176); the list is rebuilt once per finished run (#1177); sub-agent relations are read only when their file changes (#1181); cached session views are measured once (#1181).
  • The completion push takes its title from the live session instead of parsing every session file, and a tool result's image no longer crosses the event stream twice. (#1176)
  • Settings › MCP server details: Status and Connection are one row, listed tools sit under the Tools choice, redundant Transport and Sign-in rows are gone, and fonts and sizes are consistent. (#1190)

Internal

  • Removed tests that only restated the implementation's source text (2968 → 2589 tests). (f364bc3)
  • Release docs: push the release tag by name, check prerequisites, note npm propagation. (30af3b4)
  • Published npm package @agegr/pi-web@0.12.0.

Don't miss a new pi-web release

NewReleases is sending notifications on new releases.