@liguoshuai/pi-web-chat 2.12.2 → 2.12.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  (`pi --mode rpc`) 与 pi 子进程通信,前端走 WebSocket 流式渲染。
10
10
 
11
11
  > 📦 **NPM 软件包**:[`@liguoshuai/pi-web-chat`](https://www.npmjs.com/package/@liguoshuai/pi-web-chat)
12
- > 🔗 **项目主页**:https://github.com/liguoshuai-1990/pi-web-chat
12
+ > 🔗 **项目主页**:https://github.com/liguoshuai-1990/pi-chat
13
13
 
14
14
  ---
15
15
 
@@ -132,8 +132,8 @@ npx @liguoshuai/pi-web-chat --port 8080 --cwd /path/to/your/project
132
132
  #### 方式 C:通过 Git 源码克隆与启动(适合二次开发)
133
133
 
134
134
  ```bash
135
- git clone https://github.com/liguoshuai-1990/pi-web-chat.git
136
- cd pi-web-chat
135
+ git clone https://github.com/liguoshuai-1990/pi-chat.git
136
+ cd pi-chat
137
137
  npm install
138
138
  npm start
139
139
  ```
@@ -181,11 +181,14 @@ Web 服务启动后,在浏览器中访问:
181
181
  | `PORT` | `3000` | Web 服务监听端口 |
182
182
  | `PI_BIN` | 自动探测(`~/.npm-global/bin/pi`、`/usr/local/bin/pi` 或 `PATH`) | 显式指定 pi 可执行文件绝对路径 |
183
183
  | `PI_SESSIONS_DIR` | `~/.pi/agent/sessions` | pi 的 session 存储目录 |
184
- | `IDLE_TIMEOUT_MS` | `300000` (5分钟) | 真正空闲(无连接+非流式)后的进程回收超时(0 为禁用回收) |
185
- | `MAX_AGENT_LIFETIME_MS` | `1800000` (30分钟) | 单个 Agent 进程后台生存硬上限(0 为无上限) |
186
- | `EVENT_BUFFER_SIZE` | `2000` | 离线环形 Buffer 允许缓存的最大事件条数 |
184
+ | `IDLE_TIMEOUT_MS` | `300000` (5分钟) | 真正空闲(无连接+非流式)后的进程回收超时(`0` 为禁用回收) |
185
+ | `MAX_AGENT_LIFETIME_MS` | `0` (无上限) | 单个 Agent 进程后台生存硬上限(`0` 为禁用) |
186
+ | `EVENT_BUFFER_SIZE` | `5000` | 离线环形 Buffer 允许缓存的最大事件条数 |
187
187
  | `MAX_CONCURRENT_AGENTS` | `0` (无限制) | 进程池最大并发 Agent 进程数量 |
188
188
  | `IDLE_DROP_HEAP` | `false` | 进入空闲时是否给 V8 引擎 GC 提示(需 `--expose-gc`) |
189
+ | `HOST` | `0.0.0.0` | 服务监听地址 |
190
+ | `AUTH_TOKEN` / `PI_AUTH_TOKEN` | 空 | 全局访问令牌,客户端需以 Bearer Token 鉴权(空为不鉴权) |
191
+ | `ALLOWED_ORIGINS` | 空 | 允许的 CORS/WebSocket 源白名单(逗号分隔,空为仅允许 localhost/同源) |
189
192
 
190
193
  ---
191
194
 
@@ -1,6 +1,6 @@
1
1
  # 架构设计文档
2
2
 
3
- > pi-web-chat 的技术架构、数据流、关键设计决策与扩展点说明(对应 v2.3.0 版本)。
3
+ > pi-web-chat 的技术架构、数据流、关键设计决策与扩展点说明(对应 v2.12.7 版本)。
4
4
 
5
5
  ---
6
6
 
@@ -147,11 +147,14 @@ Browser server.js pi RPC 子进程
147
147
  | `PORT` | `3000` | HTTP 与 WebSocket 监听端口 |
148
148
  | `PI_BIN` | 自动探测 | pi 可执行文件绝对路径 |
149
149
  | `PI_SESSIONS_DIR` | `~/.pi/agent/sessions` | 会话 JSONL 文件存取目录 |
150
- | `IDLE_TIMEOUT_MS` | `300000` (5分钟) | 真正空闲(无连接+非流式)后的回收超时(0 为禁用回收) |
151
- | `MAX_AGENT_LIFETIME_MS` | `1800000` (30分钟) | 单个 Agent 进程后台生存硬上限(0 为无上限) |
152
- | `EVENT_BUFFER_SIZE` | `2000` | 离线环形 Buffer 允许缓存的最大事件条数 |
150
+ | `IDLE_TIMEOUT_MS` | `300000` (5分钟) | 真正空闲(无连接+非流式)后的回收超时(`0` 为禁用回收) |
151
+ | `MAX_AGENT_LIFETIME_MS` | `0` (无上限) | 单个 Agent 进程后台生存硬上限(`0` 为禁用) |
152
+ | `EVENT_BUFFER_SIZE` | `5000` | 离线环形 Buffer 允许缓存的最大事件条数 |
153
153
  | `MAX_CONCURRENT_AGENTS` | `0` (无限制) | 进程池最大并发 Agent 进程数量 |
154
154
  | `IDLE_DROP_HEAP` | `false` | 进入空闲时是否给 V8 引擎 GC 提示(需 `--expose-gc`) |
155
+ | `HOST` | `0.0.0.0` | 服务监听地址 |
156
+ | `AUTH_TOKEN` / `PI_AUTH_TOKEN` | 空 | 全局访问令牌,客户端需以 Bearer Token 鉴权(空为不鉴权) |
157
+ | `ALLOWED_ORIGINS` | 空 | 允许的 CORS/WebSocket 源白名单(逗号分隔,空为仅允许 localhost/同源) |
155
158
 
156
159
  ---
157
160
 
package/docs/CHANGELOG.md CHANGED
@@ -5,8 +5,100 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+
9
+ ## [2.12.10] - 2026-09-04
10
+
11
+ ### Fixed
12
+ - **修复 GitHub Actions CI 的 Android 构建失败 (`clients/android/app/build.gradle.kts`)**:Kotlin DSL 脚本中 `java.util.Properties()` 因 `java` 标识符被 Java 插件扩展遮蔽而解析失败,导致 `./gradlew assembleDebug` 编译报错 `Unresolved reference: util`。改为脚本顶部显式 `import java.util.Properties` 并引用 `Properties()`,恢复 Android Debug APK 产物构建。
13
+
14
+ ### Changed
15
+ - 全端版本号统一递增至 2.12.10(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
16
+
17
+ ---
18
+ ---
19
+
20
+ ## [2.12.9] - 2026-09-04
21
+
22
+ ### Fixed
23
+ - **用户旅途文档修正与补充 (`docs/USER_JOURNEY.md`)**:基于 5 个代码探索子代理的完整分析结果,修正并补充文档内容:
24
+ - 修正痛点 #7:会话搜索功能仅 HarmonyOS 缺失(Web 和 Android 已有),原误标为"全端"问题。
25
+ - 新增痛点 #9-#13:HarmonyOS 端无 Token 输入 UI、错误信息不可见、无删除会话、无模型选择 UI;Android/HarmonyOS 端错误提示 UI 薄弱。
26
+ - 功能对齐矩阵补充 7 行:空状态引导芯片、键盘快捷键、消息发送失败重试、离开页面警告、图片 Lightbox、代码块复制按钮、错误提示方式。
27
+ - 三端交互差异对比补充 8 行:空状态引导、键盘快捷键、离开警告、发送失败重试、图片大图查看、明文 HTTP 限制、流式看门狗超时。
28
+ - 改进建议从 8 条扩展至 9 条,新增移动端错误提示增强建议。
29
+ - 文档末尾补充分析方法说明与子代理交叉验证过程。
30
+
31
+ ### Changed
32
+ - 全端版本号统一递增至 2.12.9(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
33
+
34
+ ---
35
+ ---
36
+
37
+ ## [2.12.8] - 2026-09-04
38
+
39
+ ### Added
40
+ - **用户旅途全景分析文档 (`docs/USER_JOURNEY.md`)**:新增面向终端使用者的 Customer Journey Map 文档,深度分析代码库后从用户视角梳理完整用户旅途,覆盖六大阶段(发现获取 → 配置连接 → 核心对话 → 会话管理 → 高级功能 → 异常恢复),包含产品定位与用户画像、系统拓扑与触点、三端功能对齐矩阵、交互模式差异对比、用户痛点与改进建议、协议消息全景附录。
41
+
42
+ ### Changed
43
+ - 全端版本号统一递增至 2.12.8(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
44
+
45
+ ---
46
+ ---
47
+
48
+ ## [2.12.7] - 2026-09-04
49
+
50
+ ### Fixed
51
+ - **全仓文档版本号漂移清理 (`README.md`, `clients/harmony/README.md`, `clients/android/README.md`)**:修复多处残留的旧版本号(`version-2.10.0` 徽章、HarmonyOS / Android 页首标题与工程目录注释中的 `v2.11.3`、`2.10.0`),统一对齐至当前版本 2.12.7。
52
+ - **Web 客户端仓库地址更新 (`clients/web/package.json`, `clients/web/README.md`)**:`repository` / `bugs` / `homepage` 及克隆地址由已废弃的 `pi-web-chat` 仓库更正为 Monorepo 主仓 `pi-chat`。
53
+ - **环境变量文档补齐与默认值修正 (`.env.example`, `server/.env.example`, `clients/web/README.md`, `clients/web/docs/ARCHITECTURE.md`)**:补充缺失的 `PI_AUTH_TOKEN`、`MAX_AGENT_LIFETIME_MS`、`EVENT_BUFFER_SIZE`、`IDLE_DROP_HEAP`、`HOST`、`ALLOWED_ORIGINS` 说明;修正 `MAX_AGENT_LIFETIME_MS`(默认 `0` 禁用)与 `EVENT_BUFFER_SIZE`(默认 `5000`)两处过时默认值。
54
+ - **Android 构建产物命名文档同步 (`README.md`, `clients/android/README.md`, `docs/ARCHITECTURE.md`)**:将过时的 `app-debug.apk` 引用更正为构建脚本实际产出的 `pi-chat-v{version}-debug.apk` 命名。
55
+
56
+ ### Changed
57
+ - 全端版本号统一递增至 2.12.7(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
58
+
8
59
  ---
9
60
 
61
+ ## [2.12.6] - 2026-09-04
62
+
63
+ ### Fixed
64
+ - **服务端代码深度扫描修复(`server/src/*`)**:
65
+ - `auth.js`:Token 校验改用 `crypto.timingSafeEqual` 恒定时间比较,消除计时侧信道攻击风险,并对非字符串输入做安全归一化。
66
+ - `ws.js`:修复 WebSocket 鉴权失败/容量拒绝时错误消息的 `id` 被错误放入 `details` 字段的问题,改为顶层 `id`,保证客户端可按请求 id 正确关联错误响应。
67
+ - `ws.js`:移除 `verifyClient` 中残留的空操作死代码(仅注释无逻辑的判断块)。
68
+ - `agent.js`:修复 `replayBufferedSse` 在非流式状态下回放后未清空事件缓冲区的问题(与 `replayBufferedWs` 行为对齐),避免旧事件向新连接的 SSE 客户端重复回放。
69
+ - `routes.js`:`/api/log-error` 端点新增字段长度截断(每字段上限 2048 字符),防止恶意/异常客户端写入超大内容刷屏服务端日志。
70
+
71
+ ---
72
+
73
+ ## [2.12.5] - 2026-09-04
74
+
75
+ ### Improved
76
+ - **CI NPM 发布支持动态 OTP 验证与 Automation Token 配置 (`.github/workflows/ci.yml`)**:
77
+ - 在 `workflow_dispatch` 触发器中新增可选的 `npm_otp` 参数,允许在缺少 Automation Token 时通过手动输入 2FA 一次性验证码完成 NPM 发布;
78
+ - 完善发布环境的 Token 传递与错误提示。
79
+
80
+ ### Changed
81
+ - 全端版本号统一递增至 2.12.5(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
82
+
83
+ ## [2.12.4] - 2026-09-04
84
+
85
+ ### Added
86
+ - **GitHub Actions CI 自动发布至 NPM Registry (`.github/workflows/ci.yml`)**:
87
+ - 新增 `publish-npm` 任务,集成 GitHub 仓库配置的 `NPM_TOKEN` Secret 与 `actions/setup-node` 注册表认证;
88
+ - 支持在推送版本 Tag(如 `v2.12.4`)或手动触发 `workflow_dispatch`(勾选 `publish_npm: true`)时,自动将全套 Monorepo 包(`@liguoshuai/pi-chat-protocol`、`@liguoshuai/pi-chat-server`、`@liguoshuai/pi-web-chat`)安全发布至 NPM Registry。
89
+
90
+ ### Changed
91
+ - 全端版本号统一递增至 2.12.4(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
92
+
93
+ ## [2.12.3] - 2026-09-04
94
+
95
+ ### Fixed
96
+ - **Android 端 Compose `Modifier.padding` 参数签名编译错误 (`clients/android/app/src/main/java/com/pichat/android/ui/screen/ChatScreen.kt`)**:修复输入栏容器 `Column` 中非法混用 `horizontal` 与 `top` / `bottom` 命名参数导致 Kotlin 编译报错(`None of the following candidates is applicable`)的问题,规范化为四向命名参数(`start`, `top`, `end`, `bottom`)。
97
+ - **GitHub Actions CI 升级 (`.github/workflows/ci.yml`)**:将 `actions/setup-java` 从 v4 升级至官方推荐的 v5。
98
+
99
+ ### Changed
100
+ - 全端版本号统一递增至 2.12.3(Monorepo Lockstep:Root / Protocol / Server / Web / Android / HarmonyOS)。
101
+
10
102
  ## [2.12.2] - 2026-09-04
11
103
 
12
104
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liguoshuai/pi-web-chat",
3
- "version": "2.12.2",
3
+ "version": "2.12.10",
4
4
  "description": "A ChatGPT/Gemini-style web UI for the pi coding agent, powered by pi's RPC mode.",
5
5
  "type": "module",
6
6
  "main": "server.js",
@@ -26,12 +26,12 @@
26
26
  ],
27
27
  "repository": {
28
28
  "type": "git",
29
- "url": "git+https://github.com/liguoshuai-1990/pi-web-chat.git"
29
+ "url": "git+https://github.com/liguoshuai-1990/pi-chat.git"
30
30
  },
31
31
  "bugs": {
32
- "url": "https://github.com/liguoshuai-1990/pi-web-chat/issues"
32
+ "url": "https://github.com/liguoshuai-1990/pi-chat/issues"
33
33
  },
34
- "homepage": "https://github.com/liguoshuai-1990/pi-web-chat#readme",
34
+ "homepage": "https://github.com/liguoshuai-1990/pi-chat#readme",
35
35
  "license": "MIT",
36
36
  "publishConfig": {
37
37
  "access": "public"
@@ -42,8 +42,8 @@
42
42
  "dependencies": {
43
43
  "express": "^4.21.2",
44
44
  "ws": "^8.18.0",
45
- "@liguoshuai/pi-chat-server": "2.12.2",
46
- "@liguoshuai/pi-chat-protocol": "2.12.2"
45
+ "@liguoshuai/pi-chat-protocol": "2.12.10",
46
+ "@liguoshuai/pi-chat-server": "2.12.10"
47
47
  },
48
48
  "scripts": {
49
49
  "build": "node --check server.js && node --check bin/pi-web-chat.js && node --check public/app.js",