v1.2.8 - Claude login, local hardening, and streaming performance / Claude 登录、本机加固与流式性能
This stable release consolidates the v1.2.8 beta line. It adds browser-based Claude login and opt-in subscription quota, hardens local listeners and update downloads, restores Codex streaming behavior, and reduces request-history and startup overhead.
本正式版整合 v1.2.8 beta 系列改动:新增 Claude 浏览器登录与可选的订阅额度查询,加固本机监听器和更新下载,恢复 Codex 流式响应,并降低请求历史与启动路径的开销。
Features / 新特性
- Claude browser login: Account Management can open or copy a PKCE authorization link, detect the loopback callback automatically, and import the resulting Claude OAuth account. Expired or unwanted login sessions can be refreshed in place.
- Claude 浏览器登录:账号管理可打开或复制 PKCE 授权链接,自动检测本机回调并导入 Claude OAuth 账号;过期或不再需要的登录会话可直接刷新。
- Opt-in Claude subscription quota: Claude OAuth accounts can show five-hour and weekly plan windows. The setting is off by default and requires explicit risk acknowledgement because the usage endpoint is undocumented and Anthropic restricts subscription credentials to its own clients.
- 可选的 Claude 订阅额度:Claude OAuth 账号可显示 5 小时和每周套餐窗口。该功能默认关闭;由于用量接口未公开,且 Anthropic 限制订阅凭据在其自有客户端之外使用,开启前必须明确确认风险。
- Quota failures stay separate from account health: An unavailable or changed Claude usage response reports no quota without marking an otherwise working account invalid.
- 额度失败不影响账号健康状态:Claude 用量接口不可用或响应结构变化时只报告额度不可用,不会把其他功能正常的账号误判为失效。
Bug Fixes / 问题修复
- Codex chat completions stream again: The compatibility path converts upstream events as they arrive instead of buffering the full response before sending anything to the client.
- Codex 对话补全恢复流式输出:兼容路径改为边接收边转换上游事件,不再等待完整响应后才向客户端输出。
- Proxy shutdown closes WebSocket bridges: Stopping or restarting the proxy now closes hijacked WebSocket sessions so they cannot continue relaying traffic, recording usage, or holding account reservations.
- 停止代理时关闭 WebSocket 桥接:停止或重启代理时会关闭已接管的 WebSocket 会话,避免其继续转发流量、记录用量或占用账号。
- Accurate Codex model reporting: Model-catalog polling no longer appears as inference usage, and active WebSocket requests show the model selected by the client.
- 准确显示 Codex 模型:模型目录轮询不再被统计为推理用量,活动中的 WebSocket 请求会显示客户端实际选择的模型。
- Request history pagination stays put: Periodic refreshes no longer force later history pages back to the first page.
- 请求历史分页保持当前位置:定时刷新不再把后续历史页强制跳回第一页。
- Codex config backups fail safely: If the original configuration cannot be backed up, one-click configuration now reports the error and leaves the source file unchanged.
- Codex 配置备份安全失败:原配置无法备份时,一键配置会报告错误并保持源文件不变。
- Clearer Claude quota state: Failed quota requests expose useful status information, and the quota switch remains off until its risk prompt is accepted.
- 更清楚的 Claude 额度状态:额度请求失败时会显示可用的状态信息,风险提示未确认前额度开关保持关闭。
Security / 安全
- Loopback Host validation: The proxy and control listeners reject non-loopback
Hostheaders, closing a DNS-rebinding path while preserving clients configured to use127.0.0.1.- 回环 Host 校验:代理和控制监听器拒绝非回环
Host请求,在不影响使用127.0.0.1的已配置客户端前提下关闭 DNS 重绑定路径。
- 回环 Host 校验:代理和控制监听器拒绝非回环
- Restricted update downloads: Installer and checksum downloads require HTTPS GitHub release hosts before the downloaded Windows installer can be launched with elevation.
- 限制更新下载来源:安装包和校验文件必须来自 HTTPS GitHub 发布主机,之后才允许提权启动下载的 Windows 安装包。
- Pinned release toolchain: CI and release workflows use Go 1.26.5 instead of depending on the runner's preinstalled Go version.
- 固定发布工具链:CI 与发布工作流固定使用 Go 1.26.5,不再依赖 runner 预装的 Go 版本。
Upgrade Guidance / 升级说明
- Existing configuration, account pools, request history, billing summaries, and theme state remain compatible with v1.2.7 and the v1.2.8 beta line.
- 现有配置、账号池、请求历史、费用汇总和主题状态与 v1.2.7 及 v1.2.8 beta 系列保持兼容。
- Claude subscription quota remains disabled unless the user explicitly accepts its policy and account-risk notice.
- Claude 订阅额度仅在用户明确接受相关政策与账号风险提示后才会启用。
- Beta users can upgrade directly to v1.2.8. The stable version compares newer than every v1.2.8 beta tag.
- Beta 用户可直接升级到 v1.2.8;正式版版本顺序高于所有 v1.2.8 beta 标签。
- The macOS universal DMG remains unsigned and not notarized. Quit OmniProxy before replacing the app in Applications.
- macOS Universal DMG 仍未签名且未公证;替换 Applications 中的应用前请先退出 OmniProxy。
Refactor & Performance / 重构与优化
- Request history uses WAL with
synchronous=NORMALwhen supported, and pruning runs periodically instead of on every insert with index-friendly retention queries.- 请求历史在支持时使用 WAL 与
synchronous=NORMAL,清理从每次写入改为定期执行,并使用可利用索引的保留期查询。
- 请求历史在支持时使用 WAL 与
- Realtime polling pauses while the desktop window is hidden, and the default history fetch is bounded to five table pages.
- 桌面窗口隐藏时暂停实时轮询,默认历史拉取量限制为表格的五页。
- Request model probing avoids full JSON decoding unless a rewrite is needed, OAuth expiry is checked before taking the refresh lock, and startup history probes no longer scan every row twice.
- 请求模型探测仅在需要改写时才完整解码 JSON,OAuth 到期判断提前到获取刷新锁之前,启动历史探测也不再两次扫描全部记录。
Validation / 验证
cd OmniProxyBackend && go test -count=1 ./...cd OmniProxyBackend && go vet ./...cd frontend && npm test(67 tests)cd frontend && npm run buildcd OmniProxyBackend && wails build -clean -ldflags "-X main.appVersion=v1.2.8"node scripts/check-lines.mjsgit diff --check- v1.2.8-beta.5 Windows, macOS universal, and publish jobs on Go 1.26.5
- SHA256 verification of all four public v1.2.8-beta.5 release assets
Full Changelog / 完整更新日志: v1.2.7...v1.2.8