Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "thinkwatch-lite",
"private": true,
"description": "Desktop app for a local AI API gateway on macOS, Windows and Linux",
"version": "2026.10.17",
"version": "2026.10.18",
"type": "module",
"packageManager": "pnpm@11.13.0",
"scripts": {
Expand Down
13 changes: 13 additions & 0 deletions release-notes/2026.10.18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
**Upgrade notes:**
- The bundled core is now 0.72.0, with control-plane protocol 47 as before. A remote server on core 0.71.0 or 0.72.0 keeps working.
- Nothing is cleared; the request history, stored payloads and settings carry over.

**Fixed:**
- A tool call whose arguments had a URL right after a non-ASCII character, such as Chinese text followed by a full-width colon and a link, no longer ends the answer early. Tool-call inspection, on in observe mode by default, crashed on such text while the answer streamed: Codex reported `stream disconnected before completion`, and the request was recorded as interrupted by an error inside the gateway.
- When the gateway's own code fails during a request, the request's error now says what failed and where, instead of only that the request was interrupted.

**Outbound redaction (Replace mode):**
- A private key echoed in an answer comes back with real line breaks instead of `\n`.
- A value inside a tool call's arguments is put back so the arguments still parse, in streamed and whole answers, replays and WebSocket connections.
- Codex's freeform tool input, such as `apply_patch`, is restored while it streams, and over WebSocket a placeholder cut across two messages is restored.
- A stored request shows the placeholder the upstream received, also when the client wrote the value with escapes such as `\u00e9` or `\/`.
30 changes: 15 additions & 15 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "thinkwatch-lite"
version = "2026.10.17"
version = "2026.10.18"
edition = "2024"
# **这个数决定依赖能升到哪一版。**edition 2024 的解析器只挑声明的 Rust
# 版本编得动的依赖:写 1.85 的时候,`cargo update` 一直停在旧的 time 和
Expand All @@ -26,12 +26,12 @@ license = "MIT"
# twcore 二进制必须和这里编译进去的协议镜像来自同一个 core 版本 —— 打包脚本正是
# 从 tw-api 锁到的 tag 去取二进制的(见 scripts/fetch-core.sh)。
[workspace.dependencies]
tw-api = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-types = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-yaml = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-guard = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-watch = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-link = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.71.0" }
tw-api = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }
tw-types = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }
tw-yaml = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }
tw-guard = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }
tw-watch = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }
tw-link = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.72.0" }

[lib]
name = "thinkwatch_lite_lib"
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "ThinkWatch Lite",
"version": "2026.10.17",
"version": "2026.10.18",
"identifier": "app.thinkwatch.lite",
"build": {
"beforeDevCommand": "pnpm dev",
Expand Down
1 change: 1 addition & 0 deletions src/i18n/core.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@
"lite.core_stopped": "core 在请求完成前停止运行,请求已中断。",
"// ── gw:网关的数据面。这些话同时发给 AI 客户端和界面 ──────────────": "",
"gw.internal": "请求被网关内部的错误中断。",
"gw.internal_panic": "请求被网关内部的错误中断:{detail}",
"gw.auth.no_key": "请求未携带网关密钥。请将 config.yaml 的 clients 中的网关密钥配置到客户端。",
"gw.auth.key_invalid": "网关密钥无效。请检查客户端配置中的密钥与 config.yaml 是否一致。",
"gw.auth.key_disabled": "网关密钥「{key}」已停用。在应用的密钥页启用它即可恢复。",
Expand Down
Loading