Repository navigation
Releases: nullinject/cpr-excel-companion
Release list
Excel Companion 1.0.0-rc.9 — BPS 受众的 SIWC 授权
1.0.0-rc.9 · 2026-10-23
- SIWC 的
resource改为https://bps.openai.com:BPS 的访问执行按 token 受众匹配,
之前用https://api.openai.com/v1签发,BPS 直接返回no_matching_rule。 - 改用 Excel 加载项同款授权(SIWC):授权端点改为
auth.openai.com/api/accounts/authorize,
动态客户端 + PKCE,scope 含chatgpt.tokens.use.direct,resource 为https://api.openai.com/v1。
上一版误用 Codex OAuth(app_EMoam…),签发的 token 不被 BPS 接受。 - 旧版本保存的 Codex 会话缺少 direct 权限,升级后自动视为未授权,需要在开关上重新授权一次。
Excel Companion 1.0.0-rc.8 — SIWC 授权
1.0.0-rc.8 · 2026-10-23
- 改用 Excel 加载项同款授权(SIWC):授权端点改为
auth.openai.com/api/accounts/authorize,
动态客户端 + PKCE,scope 含chatgpt.tokens.use.direct,resource 为https://api.openai.com/v1。
上一版误用 Codex OAuth(app_EMoam…),签发的 token 不被 BPS 接受。 - 旧版本保存的 Codex 会话缺少 direct 权限,升级后自动视为未授权,需要在开关上重新授权一次。
- 授权链接改为可见可复制:插件页在 sandbox iframe 中运行,
window.open会被拦截,
现在直接显示授权地址并提供「复制」按钮,复制后在浏览器新标签页打开。 - 授权面板拆成两步提示(复制链接 → 粘贴回调地址),不再声称已自动打开页面。
- 账户级 BPS 授权开关:账户信息列表每行新增一个开关,开启后给出 ChatGPT 授权链接(Codex 官方 OAuth,PKCE),
Excel Companion 1.0.0-rc.7 — 授权链接可见可复制
1.0.0-rc.7 · 2026-10-23
- 授权链接改为可见可复制:插件页在 sandbox iframe 中运行,
window.open会被拦截,
现在直接显示授权地址并提供「复制」按钮,复制后在浏览器新标签页打开。 - 授权面板拆成两步提示(复制链接 → 粘贴回调地址),不再声称已自动打开页面。
- 账户级 BPS 授权开关:账户信息列表每行新增一个开关,开启后给出 ChatGPT 授权链接(Codex 官方 OAuth,PKCE),
把回调地址粘回页面即完成绑定;关闭即解除。授权按 CPR 账户 ID 隔离,保存到策略文件同目录的account-auth.json(0600)。 - 账户信息改为显示邮箱(缺失时退回名称,最后才是截断的账户 ID),不再直接暴露
acct_…主键。 - 已授权账户的 Excel 请求改用该会话的
Authorization与账号身份头覆盖宿主注入值;未授权账户行为不变。
Excel Companion 1.0.0-rc.6 — BPS 授权开关
1.0.0-rc.6 · 2026-10-23
- 账户级 BPS 授权开关:账户信息列表每行新增一个开关,开启后打开 ChatGPT 授权页(Codex 官方 OAuth,PKCE),
把回调地址粘回页面即完成绑定;关闭即解除。授权按 CPR 账户 ID 隔离,保存到策略文件同目录的account-auth.json(0600)。 - 账户信息改为显示邮箱(缺失时退回名称,最后才是截断的账户 ID),不再直接暴露
acct_…主键。 - 已授权账户的 Excel 请求改用该会话的
Authorization与账号身份头覆盖宿主注入值;未授权账户行为不变。 - 新增管理接口:
GET api/auth/status、POST api/auth/start、POST api/auth/complete、POST api/auth/logout。 - 授权失败、state 过期与文件不可写均返回明确错误,不静默回退到宿主凭据。
- 撤销 rc.4 的按钮式交互(改用开关);rc.4、rc.5 均已从 Releases 撤回(rc.5 误打包了旧前端产物)。
Excel Companion 1.0.0-rc.3 — CPR 3.29.7 SDK 同步
1.0.0-rc.3 · 2026-10-23
同步到 CPR 插件 SDK v3.29.7(提交 78bc57c5cf24b01a38e985cdd739bb4ae89ce11f)。此版本是发布候选,不是稳定 1.0。
- 清单升级:
upstream_adapterv1 → v4,managementv1 → v2,observerv1 → v2;进程协议 v5,宿主范围收紧为>=3.29.7, <4.0.0。 - 适配
UpstreamAdapterRequest.fast_mode三态,替换旧的disable_fast布尔语义;宿主冻结的 Fast 策略仍由宿主在 attempt 前应用,插件不二次改写。 - 请求与响应头改用
(String, Vec<u8>)字节形式,保留重复头与非 UTF-8 值;附件上传与受管 HTTP/WebSocket 出站同步调整。 service_tier从事件顶层移入ResponseObservation,同时上报请求 ID 与上游回显模型;原始观测与标准事实分离传递。- WebSocket 握手结果携带
http_version与拒绝时的 trailers,匹配 v4 升级枚举。 - 工具链固定 Rust 1.99.1,
Atomic::fetch_update改用try_update;SDK 内置测试随上游同步。 - 兼容性测试改为覆盖 3.29.7 起的宿主序列,并断言三项能力版本。
升级说明:宿主须为 v3.29.7 或更高;v3.18.x 宿主请继续使用 1.0.0-rc.1。早先按 3.18.2 SDK 构建、版本号同为 1.0.0-rc.2 的制品与本版内容不同,宿主禁止同版本替换,因此本版改用 1.0.0-rc.3。切换插件代次会使已有续接材料失效,客户端需重发完整历史。
Excel Companion 1.0.0-rc.11 — 加载项设备授权
1.0.0-rc.11 · 2026-10-23
- 改用 Excel 加载项真正的设备授权:
GET https://auth.openai.com/api/accounts/deviceauth/authorize?client_id=app_fnr0pYvVwwFDocDumLG3H2Bp,
浏览器登录后把页面上的user_code粘回,插件用POST /api/accounts/deviceauth/token {device_auth_id, user_code}换取 token。 - 授权链接与
device_auth_id由服务端签发,redirect 固定为auth.openai.com/basispoints/deviceauth/callback,audience 为https://api.openai.com/v1。 - 会话标记
source=excel-addin,直接用于 Excel 通道。 - 还原 SIWC 的
resource为https://api.openai.com/v1:https://bps.openai.com被授权端判定为 invalid_authorize_request。 - 会话新增
source字段;excel-addin来源(从 Excel 加载项缓存导入)无需 direct 权限即可用于 Excel 通道。 - SIWC 的
resource改为https://bps.openai.com:BPS 的访问执行按 token 受众匹配,
Excel Companion 1.0.0-rc.10
1.0.0-rc.10 · 2026-10-23
- 还原 SIWC 的
resource为https://api.openai.com/v1:https://bps.openai.com被授权端判定为 invalid_authorize_request。 - 会话新增
source字段;excel-addin来源(从 Excel 加载项缓存导入)无需 direct 权限即可用于 Excel 通道。 - SIWC 的
resource改为https://bps.openai.com:BPS 的访问执行按 token 受众匹配,
之前用https://api.openai.com/v1签发,BPS 直接返回no_matching_rule。 - 改用 Excel 加载项同款授权(SIWC):授权端点改为
auth.openai.com/api/accounts/authorize,
v0.10.1 — Integrated CPR managed upstream plugin
Excel Companion now runs entirely inside the CPR plugin process. The standalone bridge service, shared HMAC secret, proxy mapping sync and public bridge route are no longer required.
Changes:
- Uses CPR 3.18.2 managed upstream adapters for account authentication, proxies, HTTP/SSE, WebSocket continuations and metering.
- Moves routing policy, admission queues, monitoring and management operations into the plugin.
- Preserves attachment uploads, function/custom tool conversion, Excel replay and zero-usage prewarm.
- Handles native WebSocket metadata before response creation and retains usage facts on partial failures.
- Restores native account model discovery by removing the bridge base URL dependency.
Migration from 0.9.0:
- Copy the old bridge policy to a private file writable by the CPR user. Configure
policyFileandshowPage; removesecretFile,isolationScopeandbridgeControlUrl. - Replace the attempt binding with
nullinject.excel-companion.upstream-adapter, stageupstream, failure policyreject, provideropenai. Preserve the original Key/group/model scope and the request-completed observer binding. - Restore CPR
openai.api.base_urltohttps://chatgpt.com/backend-api. - After verification, remove the bridge service, bridge proxy route and account-map sync timer. Preserve backups for rollback.
Requires CPR >=3.18.2 and <3.19.0. Plugin upgrades invalidate existing continuation state; clients must resend full history. Native HTTP continuation remains unsupported; native WebSocket continuation uses the host-owned connection. See README for limits and rollback guidance.
Validation: 185 Rust tests, plugin Clippy, frontend tests/lint/typecheck/build, cargo audit and production dependency audit passed. After removing the production bridge, verified native and Excel SSE, zero-usage prewarm, both WebSocket continuation paths, function tool/result exchange, inline file upload, host usage observations, and model refresh for both enabled accounts (10 models each).
Assets include the Linux x86_64 plugin, source snapshot and SHA-256 checksums. No standalone bridge binary is needed.
Excel Companion 0.9.0 — 适配 CPR 3.18.2
修复 CPR 3.18.2 升级后 Excel Companion 无法启用的问题,并说明账号模型查询 502/503 的部署修复。
兼容性
- 宿主要求:CPR >=3.18.2、<3.19.0。不适用于旧版 3.16 / 3.17 宿主。
- 使用 CPR v3.18.2 官方 SDK,固定提交
e30aad475560b94db2d999e2251d180e45d52671。 - 迁移至清单 v2、进程协议 v2、中间件 v3,以及统一的
observer完成事件。 - 保留宿主提供的请求终态、Key 归属、用量和耗时,将
usage.failure映射到现有桥接监控字段。
升级步骤
- 备份插件配置、桥接策略、Compose 和反向代理配置。
- 通过 CPR 正式插件安装接口安装附件中的 Linux x86_64 插件包。
- 保留原
attempt绑定范围;将原request_lifecycle/usage观察绑定迁移为nullinject.excel-companion.observer,设置stage=observation、failurePolicy=observe、event=request_completed。保留所需请求范围,避免重复订阅。 - 桥接使用独立 Compose 网络,移除
network_mode: service:codex-proxy-rs。例如将桥接端口发布为127.0.0.1:8093:8089,同步调整反向代理回源地址,插件控制地址设置为http://excel-companion-bridge:8089/_control。 - 核对部署镜像与实际宿主版本一致,避免容器重建后意外降级。保留原账户代理、路由规则和指向桥接的
openai.api.base_url。
共享网络命名空间部署中,CPR 更新重启可能使桥接停留在旧命名空间,导致模型目录和请求入口返回 502,账号刷新表现为 503。安装插件本身不会自动修改 Compose 或反向代理,需要同时完成上述部署调整。
验证
- 182 项 Rust 测试通过,插件 Clippy 全目标检查通过。
- 前端 2 项测试、ESLint、TypeScript 和 Vite 构建通过。
- RustSec 审计:0 项已知漏洞、无警告。
- CPR 3.18.2 实例验证:插件正常运行;两个启用账号均成功刷新模型,各返回 10 项。
- 原生请求、Excel 请求以及 Excel WebSocket 首轮和续接均完成,监控记录保留成功终态、通道、tokens 和耗时。
附件与范围
nullinject.excel-companion-0.9.0-x86_64-unknown-linux-gnu.tar.gz:CPR 可安装插件包。- 同名
.sha256与checksums.txt:SHA-256 校验文件。 cpr-excel-companion-0.9.0-source.tar.gz:与此标签对应的源码快照。
插件包 SHA-256:3361dd2d8f337bad39ed1dd34694440f9e60cc4026060bf210ffbf84f4d805f2。
本版本保留现有独立桥接,不包含新的桥接二进制,也未实现完整的 upstream_adapter 迁移。附件、工具转换和历史缓存仍由现有桥接负责。此处验证不代表所有附件、工具或高负载场景均已在线复测。
源码提交:ff442b65ad85e7730fd8f8679da0ecf44fef53ea。
Excel Companion 0.8.9
0.8.9 · 2026-09-29
- 撤销
0bd540f引入的提示词改写和桥接策略重试循环。 - 新增默认关闭的
policy_errors_as_server_error:仅将 Excel 通道的明确 policy 错误映射为普通server_error,交由调用方现有机制决定重试;原始诊断日志、usage 与部分输出保留,桥接不额外发请求。 - 升级须同时更新桥接与插件,并通过宿主正式安装/版本切换接口部署,不直接写插件数据库记录;配置默认关闭,不自动更改账户、模型或现有开关。保留现有更新来源绑定,GitHub 来源使用同一仓库的正式 Release。
验证:工作区测试、前端构建和 Linux x86_64 release 构建通过;CPR 3.16.0 安装包校验通过。开关默认关闭,桥接不自行重放请求。部署须同时替换本版本源码构建的桥接二进制。