Releases: zhujunsan/kiro-gateway-deploy
Releases · zhujunsan/kiro-gateway-deploy
Release list
v0.4.38
Changed
- Worker
/provision改为复用已有隧道(修 ingress/DNS、沿用run_token),不再每次删建;同一用户并发签发由 D1provision_lock串行化,抢不到租约返回 409。重复重签不再轮换凭据,已在跑的 cloudflared 不会被踢下线。
Fixed
- 修复升级后短时间内「cloudflared 已连接 + DNS 解析失败」:身份迁移与「隧道已删」恢复会并发打两次
/provision,互相拆掉刚建的隧道和 CNAME,递归 DNS 缓存 NXDOMAIN。现改为进程内 singleflight,启动完成前健康探测不得重签;tunnel_exists查当前公网 hostname 而非新设备指纹。 - 新域名 180 秒内显示「DNS 生效中」而非立刻报故障;系统 resolver 负缓存时走 DoH IP 复测。DNS/TLS/4xx 探活按 3→10→30→60 秒退避,避免刷日志;网络切换、域名变化、DNS 修复或手动重启会立即重探。
/ensure-dns日志区分 API 记录与权威 DNS。
Full Changelog: v0.4.37...v0.4.38
v0.4.37
Changed
- 隧道地址变更时启动即弹出说明窗(新地址 + 请到菜单复制并更新 Cursor 等工具),菜单顶栏提示仍保留,点确定后才关闭。
- 说明窗改用托盘 Logo,不再显示系统默认文件夹图标;文案缩短为一句。
Fixed
- 修复 Windows CI:AppleScript 弹窗单测未考虑路径反斜杠转义,导致 v0.4.36 未能发布安装包。
Full Changelog: v0.4.36...v0.4.37
v0.4.35
Changed
- 同步上游网关至
main-c5c7028:web_search 调用 Kiro MCP 时补上profileArn(优先账号 ARN,否则回退PROFILE_ARN)。两者皆空时不再发无效请求。docker-compose 镜像 pin 至ghcr.io/zhujunsan/kiro-gateway:main-c5c7028。
Full Changelog: v0.4.34...v0.4.35
v0.4.33
Changed
- 隧道用户名改为按本机系统安装指纹签发(macOS
IOPlatformUUID/ WindowsMachineGuid/ Linux/etc/machine-id)。同一台电脑重新登录 Kiro 不再换域名;读不到设备 ID 时仍回退原来的 clientId 哈希。 - 升级后若本地已存域名与新指纹不一致,启动时自动按新指纹重签。托盘菜单最上方出现「隧道地址已变更」提示;点击后弹出说明(原先使用旧地址的客户端需要改 Base URL),确定后才关闭提示。启动时另有系统通知,避免漏看菜单。
dialogs.alert改为三端可用(macOS / Windows / Linux),超时从 30 秒加长到 300 秒,避免用户还没看完就被关掉。
Full Changelog: v0.4.32...v0.4.33
v0.4.32
Fixed
- 修复隧道端到端探活失败后反复软重连:此前任意失败(含 DNS / TLS / 4xx)连续两次就会重连,且计数在动作后清零,同一故障会循环重连。现按失败类型分类,仅 timeout / connect / unexpected / HTTP 5xx 触发一次恢复;DNS、TLS、代理、4xx 只标降级不重连。成功发出或升级重启后用 latch 锁住,直到探活成功、start/stop 或用户手动重连才允许下一轮。
- 降级菜单文案按失败类型区分(如「DNS 解析失败」「TLS 失败」「HTTP 502」),不再一律显示「边缘不可达」。
- 探活日志与 detail 去掉 querystring、脱敏密钥类字段并截断,避免把凭据或响应体打进日志。
Changed
- 刷新
uv.lock:uvicorn 0.52.4、sentry-sdk 2.68.0、pyinstaller 6.22.2、tiktoken 0.14.0,以及 charset-normalizer、idna、platformdirs、pygments、pyobjc、python-dotenv、typing-inspection 等小版本。
Full Changelog: v0.4.31...v0.4.32
v0.4.31
Changed
- Sentry Logs 只上报 warning 及以上:uvicorn 访问日志、升级检查等 INFO 不再计入 Logs 额度。此前一个账期就把免费 5 GB 打满,导致后半段监控被丢。错误事件(Issues)与 error 上的 INFO breadcrumb 仍保留。
Full Changelog: v0.4.30...v0.4.31
v0.4.30
Changed
- 升级 Python 依赖:fastapi 0.141.1、uvicorn 0.52.1、starlette 1.6.0、sentry-sdk 2.67.1、pyinstaller 6.22.0、websockets 17.0.1,以及 annotated-doc/types、anyio、certifi、packaging、platformdirs、regex、setuptools、typing-inspection 等小版本;重新生成
uv.lock。 - 遥测更新 skill 补充 Cloudflare 带宽步骤与
export_user_daily_tokens.py提醒。
Fixed
- 修复 supervisor 单测在本机已有 cloudflared(metrics
20241)时被真实readyConnections污染:测试 fake 改用独立端口,_quiesce一并清零连接期望值。
Full Changelog: v0.4.29...v0.4.30
v0.4.29
Fixed
- 修复断网恢复后隧道长时间不通:
NetworkWatcher此前把「无路由」(空指纹)直接忽略,于是拔插网线、睡眠唤醒、路由器重启后 DHCP 分回同一 IP 这三种情况前后指纹相同,watcher 完全不发通知,隧道一直卡在旧的边缘连接上。现在把空指纹记录为有效状态:有→空只记录不回调(无路由时重连无意义),空→有触发回调(即使地址与断网前相同)。 - 修复隧道断开后恢复过慢的三处短板:连接数掉到 0 时第一次探测就立刻软重连(跳过 cloudflared 自身的指数退避),
_TUNNEL_RECONNECT_TIMEOUT由 60 秒收紧到 5 秒后仍为 0 才重启进程,进程已死 / stdin 不可用时直接升级重启;隧道处于非健康 running 状态时强制走 3 秒探测档(此前只看网关健康度,隧道断了但网关健康会停在 15 秒档);穿隧道 e2e 探活连续失败 2 次即触发软重连,此前「降级(边缘不可达)」只显示状态、永不自动恢复(失败计数在_probe_tunnel_e2e内部维护,区分「真的探测失败」与「被 60 秒节流跳过」)。综合效果:断网到隧道重新连通从最坏 20–35 秒降到 2–4 秒,连接数掉 0 的发现时间从 15 秒降到 3 秒,边缘不可达从「永不恢复」变为约 7–10 秒。 - 修复流式对话进行中点「重启网关」十几秒没反应:uvicorn 收到 SIGTERM 会等在途 SSE 请求结束,而用户点重启往往正是因为请求卡住。优雅停止窗口从硬编码 10 秒收紧为
GRACEFUL_STOP_TIMEOUT = 5.0,SIGKILL 后的收尸等待提为KILL_REAP_TIMEOUT = 5.0;重启时在真正开始停止前先弹「正在重启网关…」通知,消除「点了没反应」的观感。
Changed
- 同步上游网关至
main-97cfd67:凭据文件(kiro-auth-token.json)改为原子写。此前_save_credentials_to_file()用open(path, 'w')覆盖,'w'模式一打开就把原文件截断为 0 字节,若进程在写完前被 SIGKILL(或断电 / 崩溃)会留下半个 JSON,accessToken/refreshToken一起损坏,下次启动解析失败、用户必须重新登录。现改为同目录临时文件 +Path.replace()原子重命名(与account_manager._save_state()一致),临时文件以 0600 创建、存在原文件时沿用其权限位,失败路径清理残留临时文件,且保留「保存失败不让 token 刷新整体失败」的兜底语义。本次收紧的 SIGKILL 窗口正建立在这个保证之上。 - docker-compose 镜像 pin 至
ghcr.io/zhujunsan/kiro-gateway:main-97cfd67。
Full Changelog: v0.4.28...v0.4.29
v0.4.28
Fixed
- 修复菜单持续打开时网关/隧道状态行只在打开瞬间更新一次、随后僵住:pystray 的
_menu_handle仅在_update_menu()中重新赋值,而菜单打开期间该调用被刻意屏蔽(避免破坏 AppKit 菜单跟踪),导致每秒的实时 patch 打到了一个已不在屏幕上的旧 NSMenu 上。现改为记住menuWillOpen:递来的当前菜单,整个打开会话内的实时刷新都以它为目标,菜单关闭后再回退到_menu_handle。
Changed
_live_patch_status_titles原有的独立菜单反查逻辑收敛到_resolve_status_menu,避免两处解析规则不一致。_on_menu_open中与_kick_probe_if_due重复的探测代码合并为一处。
Full Changelog: v0.4.27...v0.4.28
v0.4.27
Fixed
- 修复托盘菜单打开期间网关/隧道状态行不实时刷新:tick 回调中周期性触发 health probe(复用 2s throttle),确保菜单保持打开时状态标签在 2–3s 内反映真实健康状态变化。macOS / Windows / Linux 三平台均生效。
Changed
- 同步上游网关至
main-b0770ee(测试清理与 OpenAI parity 补充);docker-compose 镜像 pin 至ghcr.io/zhujunsan/kiro-gateway:main-b0770ee。
Full Changelog: v0.4.25...v0.4.27