Skip to content

v1.0.0

Choose a tag to compare

@ct-jyjntc ct-jyjntc released this 28 Jul 12:47
· 133 commits to main since this release

中文

基于 v0.8.2..v1.0.0 的提交整理。首个 1.0.0 正式版桌面客户端。

新增

  • Hermes 风格 Bash 工具

    • 前台 / 后台执行分流(background 参数)
    • 拒绝误用的前台长任务调用
    • bash-command-classification 前台护栏逻辑
    • 主动触发 subagent 委托语言(ensure-subagent-delegation
    • PTY 会话 kill 改为进程组信号,清理更彻底
  • Todo Widget 可见性开关

    • 设置项 showTodos 控制 todo 扩展面板显示
    • 按最新 turn 使用情况过滤
    • 兼容 rpiv-todo 格式解析
  • 通知体验增强

    • 完成音与桌面通知独立开关
    • 切换时请求系统通知权限并展示样例
    • Electron 通知支持点击聚焦窗口
    • 可见性变化时重载通知偏好(无需整页重挂载)
  • Git 面板批量操作

    • 一键 Stage All / Discard All
    • 空路径保护,避免误调用 API
  • 草稿迁移

    • 新会话草稿 new:<cwd> 可转移到真实 session id
    • 首次发送后输入框内容不再被清空

修复

  • SSE / 会话生命周期

    • 事件流连接超时、中止与完整清理
    • 发送失败时回滚乐观消息(不限于连接错误)
    • 启动超时中销毁终端会话
    • extension binding 失败后可重试
    • wrapper 销毁时中止进行中操作并发送 session_destroyed
    • SSE 重连指数退避(最多 6 次),避免 tight reconnect 循环
    • 丢弃迟到的 SSE / loadSession 结果,防止旧 run 复活流式气泡
    • 分支切换时丢弃过期 context 响应
  • 会话并发与持久化

    • 拒绝并发 prompt(多标签 / 重叠 POST)
    • busy 时禁止 fork
    • 已销毁 wrapper 不再重置 idle timer
    • 首条助手消息前也确保 .jsonl 落盘,避免 idle 销毁后 ghost session id
    • 删除会话级联 reparent 前先销毁子 wrapper,并用原子 rename 写回
  • 配置安全

    • models.json 损坏时返回 500 + corrupt,防止 UI 用空配置覆盖
    • models.json 原子写入(tmp + rename)
    • skill 的 disable-model-invocation 切换先剥离旧 key,避免 YAML 重复键
    • 文件内容加载增加 request id,快速切换路径时不串数据

改进

  • 设置页通用 / 外观 / MCP 分区滚动与 overflow 修复
  • UI 圆角统一;去掉设置输入框硬编码 borderRadius: 0
  • 移除废弃的 /api/cwd/exec、旧 SettingsConfig 弹层及相关死代码
  • ChatWindow 用户输入提取对非数组 content 更稳健
  • MessageView / FileViewer / ModelsConfig 加载与错误路径加固

内部调整

  • 新增:bash-command-classificationensure-subagent-delegation 及测试
  • 强化 rpc-manageruseAgentSessiondraft-storesession-reader
  • 版本:@ct-jyjntc/pi-web@1.0.0

安装说明(本 Release 附件)

macOS

  • 附件:Pi-Web-1.0.0-arm64.dmg(Apple Silicon)
  • 签名:ad-hoc( Apple 公证)
  • 若 Gatekeeper 拦截:
# 方式 1:右键 App → 打开 → 打开
# 方式 2:
xattr -cr "/Applications/Pi Web.app"
open "/Applications/Pi Web.app"

Windows

  • 附件:Pi-Web-1.0.0-x64.exe(Windows x64 NSIS 安装包)
  • 双击安装,可自定义安装目录;安装后会创建桌面与开始菜单快捷方式。
  • 如 SmartScreen 提示「Windows 已保护你的电脑」:点击「更多信息」→「仍要运行」。

English

Prepared from commits in v0.8.2..v1.0.0. First 1.0.0 stable desktop release.

Added

  • Hermes-style bash tool

    • Foreground / background execution split (background param)
    • Reject misused long-running foreground calls
    • Foreground guardrails via bash-command-classification
    • Proactive subagent-delegation language (ensure-subagent-delegation)
    • PTY kill uses process-group signals for cleaner teardown
  • Todo widget visibility toggle

    • showTodos setting controls extension todo panels
    • Filter by latest-turn usage
    • Parse rpiv-todo format
  • Notification UX

    • Separate completion-sound and desktop-notification toggles
    • Request permission + sample notification on enable
    • Electron notifications click-to-focus the window
    • Reload prefs on visibility change without remount
  • Git bulk actions

    • Stage All / Discard All
    • Empty-path guards
  • Draft transfer

    • Promote new:<cwd> drafts onto the real session id
    • Keeps typed text after the first send

Fixed

  • SSE / session lifecycle

    • Proper stream cleanup, abort, and connect timeout handling
    • Roll back optimistic messages on any send failure
    • Destroy terminal sessions on startup timeout
    • Retryable extension binding after failure
    • Abort in-flight work and emit session_destroyed on wrapper teardown
    • Exponential SSE reconnect backoff (max 6 attempts)
    • Drop late SSE / loadSession results from older runs
    • Drop stale context responses during rapid branch switches
  • Session concurrency & persistence

    • Reject concurrent prompts (multi-tab / overlapping POSTs)
    • Block fork while busy
    • Never revive idle timers on destroyed wrappers
    • Persist .jsonl before the first assistant message (no ghost session ids after idle destroy)
    • Destroy child wrappers before cascade reparent; atomic rename writes
  • Config safety

    • Corrupt models.json returns 500 + corrupt instead of empty overwrite bait
    • Atomic models.json writes (tmp + rename)
    • Skill toggle strips existing disable-model-invocation key first (no duplicate YAML keys)
    • File content loads use request ids to avoid path-switch races

Improved

  • Settings page scrolling/overflow for general, appearance, MCP
  • Consistent border-radius tokens; remove hardcoded zero radii on settings inputs
  • Remove dead /api/cwd/exec, legacy SettingsConfig, and related code
  • More robust ChatWindow user-text extraction for non-array content
  • Hardened load/error paths in MessageView / FileViewer / ModelsConfig

Internal

  • New modules: bash-command-classification, ensure-subagent-delegation (+ tests)
  • Hardened rpc-manager, useAgentSession, draft-store, session-reader
  • Version: @ct-jyjntc/pi-web@1.0.0

Install Notes

macOS

  • Asset: Pi-Web-1.0.0-arm64.dmg (Apple Silicon)
  • Signing: ad-hoc (not Apple notarized)
  • If Gatekeeper blocks:
xattr -cr "/Applications/Pi Web.app"
open "/Applications/Pi Web.app"

Windows

  • Asset: Pi-Web-1.0.0-x64.exe (Windows x64 NSIS installer)
  • Run the installer; you can choose the install directory. Desktop and Start Menu shortcuts are created.
  • If SmartScreen says "Windows protected your PC": click "More info" → "Run anyway".