From 7205c780a110564f6e844c1a4a7e5826a88c4b72 Mon Sep 17 00:00:00 2001 From: fylorn <249551762+fylorn@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:38:48 +0800 Subject: [PATCH] 2026.10.8: requests over 2 MiB are no longer refused, core v0.64.1 The bundled core is now 0.64.1 (control-plane protocol still 40). Its gateway read request bodies under the web framework's 2 MiB default, so a conversation holding a few inline screenshots was refused with 413 from then on, compaction included. The gateway's limit is now its intended 256 MiB, oversized requests get 413 in the client's error format, and the body is read only after the source and key checks (ThinkWatch-Core#295). The three new message codes are translated. Release notes in release-notes/2026.10.8.md. Co-Authored-By: Claude Opus 5.5 --- package.json | 2 +- release-notes/2026.10.8.md | 10 ++++++++++ src-tauri/Cargo.lock | 30 +++++++++++++++--------------- src-tauri/Cargo.toml | 14 +++++++------- src-tauri/tauri.conf.json | 2 +- src/i18n/core.zh.json | 4 +++- 6 files changed, 37 insertions(+), 25 deletions(-) create mode 100644 release-notes/2026.10.8.md diff --git a/package.json b/package.json index ff463131..0dbe30f3 100644 --- a/package.json +++ b/package.json @@ -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.7", + "version": "2026.10.8", "type": "module", "packageManager": "pnpm@11.13.0", "scripts": { diff --git a/release-notes/2026.10.8.md b/release-notes/2026.10.8.md new file mode 100644 index 00000000..9e8e701b --- /dev/null +++ b/release-notes/2026.10.8.md @@ -0,0 +1,10 @@ +**Upgrade notes:** +- The bundled core is now 0.64.1. The control-plane protocol stays at 40: this version connects to a remote server on 0.64.0 or 0.64.1, and 2026.10.7 connects to 0.64.1. +- Request history is kept. + +**Gateway:** +- Requests over 2 MiB are no longer refused. A conversation holding a few inline screenshots passed 2 MiB and was refused with 413 from then on, compaction requests included, so the session could not be compacted back under the limit. The gateway's limit is now its intended 256 MiB. +- A request over the limit is answered with 413 in the client's own error format. A request's body is read only after its source address and key are checked. + +**Updates:** +- A new version found by the daily check is listed in the notices, in grey, and shown as a system notification when notices are set to that. Before, it was a one-off system notification, and once it was dismissed only the menu item was left. Clicking the notice opens the update window. Finding a newer version replaces the notice for the older one. diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 5ea9277a..ac2713f3 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4766,7 +4766,7 @@ dependencies = [ [[package]] name = "thinkwatch-lite" -version = "2026.10.7" +version = "2026.10.8" dependencies = [ "anyhow", "block2", @@ -5268,8 +5268,8 @@ dependencies = [ [[package]] name = "tw-api" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "serde", "serde_json", @@ -5280,8 +5280,8 @@ dependencies = [ [[package]] name = "tw-dialect" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "serde", "serde_json", @@ -5289,8 +5289,8 @@ dependencies = [ [[package]] name = "tw-guard" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "base64 0.22.1", "bytes", @@ -5305,8 +5305,8 @@ dependencies = [ [[package]] name = "tw-link" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "serde", "serde_json", @@ -5332,8 +5332,8 @@ dependencies = [ [[package]] name = "tw-types" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "serde", "ts-rs", @@ -5341,8 +5341,8 @@ dependencies = [ [[package]] name = "tw-watch" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "notify", "thiserror 2.0.21", @@ -5351,8 +5351,8 @@ dependencies = [ [[package]] name = "tw-yaml" -version = "0.64.0" -source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.0#f2d4cafd979d979bcae69cb2d6a3f9007d275333" +version = "0.64.1" +source = "git+https://github.com/ThinkWatchProject/ThinkWatch-Core.git?tag=v0.64.1#1ddda16c1cab86129f2cda6c5c7decc663a51387" dependencies = [ "saphyr-parser", "thiserror 2.0.21", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index c4884337..09703cbe 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "thinkwatch-lite" -version = "2026.10.7" +version = "2026.10.8" edition = "2024" # **这个数决定依赖能升到哪一版。**edition 2024 的解析器只挑声明的 Rust # 版本编得动的依赖:写 1.85 的时候,`cargo update` 一直停在旧的 time 和 @@ -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.64.0" } -tw-types = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.0" } -tw-yaml = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.0" } -tw-guard = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.0" } -tw-watch = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.0" } -tw-link = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.0" } +tw-api = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } +tw-types = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } +tw-yaml = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } +tw-guard = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } +tw-watch = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } +tw-link = { git = "https://github.com/ThinkWatchProject/ThinkWatch-Core.git", tag = "v0.64.1" } [lib] name = "thinkwatch_lite_lib" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 752b8541..9eaf3539 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "ThinkWatch Lite", - "version": "2026.10.7", + "version": "2026.10.8", "identifier": "app.thinkwatch.lite", "build": { "beforeDevCommand": "pnpm dev", diff --git a/src/i18n/core.zh.json b/src/i18n/core.zh.json index 8290219d..0d4f2696 100644 --- a/src/i18n/core.zh.json +++ b/src/i18n/core.zh.json @@ -424,7 +424,9 @@ "gw.convert.tools_unsendable": "请求要求调用工具,但其中的工具都无法按上游「{upstream}」的格式发送。网页搜索这类服务端工具只能由所属的服务商执行。", "gw.files.unsupported": "网关不托管文件,图片和文档请直接放在请求中发送。", "gw.method.not_forwarded": "{method} {path} 不是 API 调用。网关只向上游转发 POST 请求。", - "gw.request.body_too_large": "请求体大小为 {size} 字节,超过上限 {max} 字节。", + "gw.request.body_declared_too_large": "请求声明的长度为 {size} 字节,超过上限 {max} 字节。", + "gw.request.body_over_limit": "请求体超过上限 {max} 字节。", + "gw.request.body_unreadable": "无法读取请求体:{detail}", "gw.upstream.timeout": "上游响应超时。", "gw.upstream.unreachable": "无法连接上游 {url},请检查接口地址、网络和代理设置。", "gw.upstream.forward_failed": "转发失败:{detail}",