Skip to content
Open
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 .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.7.8"
".": "0.7.9"
}
76 changes: 76 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,81 @@
# Changelog

## [0.7.9](https://github.com/icoretech/codex-pooler/compare/codex-pooler-v0.7.8...codex-pooler-v0.7.9) (2026-09-11)


### Features

* **admin:** show requested, upstream-reported, and priced service tiers separately ([072580e](https://github.com/icoretech/codex-pooler/commit/072580e19a3046fcdaef6a2e22024129d6afe83d))
* **admin:** show the downstream delivery receipt in the request log attempt drawer ([457bfd9](https://github.com/icoretech/codex-pooler/commit/457bfd9a354b93d3c64cbf3528efe4b69abc01e0))
* **admin:** tell the service tier apart from reasoning effort in request logs ([2601d36](https://github.com/icoretech/codex-pooler/commit/2601d36ec784657d5b46caa41309b7a0b8abcd8a))
* **gateway:** derive the Codex routing hint for /v1 requests and keep it out of websocket reuse ([1934516](https://github.com/icoretech/codex-pooler/commit/1934516726d16aee58d2c622ca096fc10a2cec9e))
* **gateway:** forward provider session headers on the native websocket handshake ([b3075a9](https://github.com/icoretech/codex-pooler/commit/b3075a9c379d0cb7f6be65e622ba8b98a59f6981))
* **gateway:** record a downstream delivery receipt for native websocket terminals ([fbe2e71](https://github.com/icoretech/codex-pooler/commit/fbe2e715c812093660a809c879a99729e9bf7b19))
* **gateway:** record the downstream delivery receipt for HTTP SSE turns ([6b31f1d](https://github.com/icoretech/codex-pooler/commit/6b31f1d4944b7a610a292506ba393ac1b16fe43d))
* **gateway:** relay upstream parameter validation rejections to clients ([632d90b](https://github.com/icoretech/codex-pooler/commit/632d90bae53a5f43051cd144bc256bde6be94ba1))
* **gateway:** send a derived session-id upstream for /v1 requests with a prompt_cache_key ([4e32aeb](https://github.com/icoretech/codex-pooler/commit/4e32aeb9db803b05bef1c842a096bd57e936eeb1))
* **runtime:** name the blocking transaction when an owner lease renewal times out ([1f48723](https://github.com/icoretech/codex-pooler/commit/1f48723407183c2ceee28316ca8ab2d787828a29))
* **status:** add OpenAI incidents feed and admin surface ([2a0f615](https://github.com/icoretech/codex-pooler/commit/2a0f6155dfa1efc3703b2d6c81c391672e14ebf9))


### Bug Fixes

* **accounting:** keep the delivery receipt projection a runtime reference and accept an already-dead owner in the witness test ([faaaef8](https://github.com/icoretech/codex-pooler/commit/faaaef85659d6cb1f6660bf3be5169dda2a3fe7c))
* **accounting:** lock the session before the API key in the websocket resend claim ([cdb307b](https://github.com/icoretech/codex-pooler/commit/cdb307b34035656b14a3da3a48a6cbcb501c69dd))
* **catalog:** accept the flat default per-minute pricing shape ([1348a59](https://github.com/icoretech/codex-pooler/commit/1348a596dd5372bf520bd99579c501ef53f5f348))
* **gateway:** admit a byte-identical resend after a lifecycle-only upstream stream cut ([d1fb7ef](https://github.com/icoretech/codex-pooler/commit/d1fb7efed4c125f35b9384d6a60650775e70abbb))
* **gateway:** admit a byte-identical websocket resend after a provider terminal failure ([af00377](https://github.com/icoretech/codex-pooler/commit/af00377b633e0e65d7884a647c964b080f0dea1f))
* **gateway:** bound the idle lifetime of pooled upstream HTTP connections ([299bf37](https://github.com/icoretech/codex-pooler/commit/299bf370a14454950db268873d947d500b2fc4b5))
* **gateway:** finalize a websocket turn whose response task died by exception ([f9bf8f9](https://github.com/icoretech/codex-pooler/commit/f9bf8f9e87894a74f461bfd8322175030ddd6dcb))
* **gateway:** refresh and retry HTTP dispatch on a provider 401 instead of passing it to the client ([3f7b4ed](https://github.com/icoretech/codex-pooler/commit/3f7b4ed318547ffdd277c0a2686f6a2cd6d39979))
* **gateway:** rewrite ultra to the highest catalog level when a model lists no max ([b737f4e](https://github.com/icoretech/codex-pooler/commit/b737f4e6914b388739a4402f934070547b38f35a))
* **gateway:** scope the /v1 derived session-id to the Pool and API key ([dc16bb6](https://github.com/icoretech/codex-pooler/commit/dc16bb6a8acc46f7e9ee95d59b62b98ba389f502))
* **platform:** bound idle pooled connections for every outbound HTTP caller ([41ea506](https://github.com/icoretech/codex-pooler/commit/41ea506a1110ea8e1eb64e341099ef0c3562311f))
* **release:** restore the Repo config after a release task names its connections ([f457282](https://github.com/icoretech/codex-pooler/commit/f4572825ca1f61b4f6aba21f25ed3ec1e36333e1))
* **runtime:** bound the synchronous owner lease renewal lock wait inside Postgres ([ec9f577](https://github.com/icoretech/codex-pooler/commit/ec9f577e53b9786f6ee82adcf555d7deab2f379c))
* **runtime:** reference the lock wait diagnostics type through the owning module ([06c211a](https://github.com/icoretech/codex-pooler/commit/06c211a0b75a878219f8a227553c4fedf57000f2))
* **status:** preserve feed errors for worker retries ([d9704fc](https://github.com/icoretech/codex-pooler/commit/d9704fc61fcd202457663e19b1cba75b2fe9b221))
* **upstreams:** bound idle pooled connections for every provider HTTP caller ([db8380a](https://github.com/icoretech/codex-pooler/commit/db8380a6e0ef0fb035ab63dcc8cd4269674bdb51))
* **websocket:** acknowledge a parked local-owner response task when the socket terminates ([2d21e4f](https://github.com/icoretech/codex-pooler/commit/2d21e4fdce96b8d7c1e176caf6da73fffa3ef3d1))
* **websocket:** deliver at most one error frame per native turn on owner-forwarded sockets ([5d375fd](https://github.com/icoretech/codex-pooler/commit/5d375fdc421c8ba9465170d8f31e8c3b494c40ff))
* **websocket:** keep native websocket turns off HTTP dispatch regardless of the stream flag ([7878f5e](https://github.com/icoretech/codex-pooler/commit/7878f5e256150a00a37a0d184474b1a5ab9462cd))
* **websocket:** never relay a provider models ETag on native replay turns ([dc786f9](https://github.com/icoretech/codex-pooler/commit/dc786f93a8d6547900578fd0469ef716d9c2ccd9))
* **websocket:** settle direct and proxy response tasks when their socket dies unacknowledged ([edbddb8](https://github.com/icoretech/codex-pooler/commit/edbddb82e19c7ecc8e9ef811104fae29a29816a0))


### Performance Improvements

* **access:** take a share lock on api_keys for read-only runtime paths ([4e679c8](https://github.com/icoretech/codex-pooler/commit/4e679c8485cf70c1eb91b1369b024cd40de450ac))
* **gateway:** end socket terminate drains on signals and plumb owner timeouts through recovery ([d3c31cf](https://github.com/icoretech/codex-pooler/commit/d3c31cf39035a6a49f7f7e3c8b9a3566da9b4da4))
* **gateway:** report pre-content owner terminals immediately, plumb handoff timeouts, and bound hosted shell validation ([75c97dd](https://github.com/icoretech/codex-pooler/commit/75c97dd5a9b1b4afeb05eda4f87e8086f6253fd3))


### Tests

* **gateway:** give the rejection drain, replay cleanup and saved-reset decision time test-facing knobs ([10b9d7f](https://github.com/icoretech/codex-pooler/commit/10b9d7f813c0ac31d7fabfeec62974a84fd3c319))
* keep the suite fast, quiet, and off the network ([c53e54e](https://github.com/icoretech/codex-pooler/commit/c53e54ec0b684ec2618dc88f0ba4189e38dafc6e))
* **platform:** give the replay migration rehearsal and the owner protocol test real detection budgets ([cd65d47](https://github.com/icoretech/codex-pooler/commit/cd65d47c87f51879d67787a51e95c419f5c203f4))
* **platform:** pin one Finch pool per distinct outbound option set ([4a17825](https://github.com/icoretech/codex-pooler/commit/4a178255d5b7750de3976126b8e30ed83b471090))
* **quota:** prime the header exhaustion row from the hard-pin recovery test itself ([7ca2782](https://github.com/icoretech/codex-pooler/commit/7ca2782af338a6b16f0f80ca8cd7c50ab740d506))
* **runtime:** close the timing races in the backend HTTP owner lease tests ([28700ab](https://github.com/icoretech/codex-pooler/commit/28700ab2e267175fa42aee4c71a181e4e9d5458c))
* **runtime:** give the local owner crash test its own sandbox connections ([b8020d6](https://github.com/icoretech/codex-pooler/commit/b8020d6ca0e643457806105819287f5058c59095))
* **runtime:** purge the crash test's identity, secrets and assignment rows too ([2bb1d1b](https://github.com/icoretech/codex-pooler/commit/2bb1d1b314e4aad35febbfed0978f45618ea25fd))
* **runtime:** purge the owner crash test's committed rows and scope table-wide assertions to the Pool ([a29aceb](https://github.com/icoretech/codex-pooler/commit/a29aceb328277a8ca30a472bb346712e703e60a2))
* **runtime:** split the owner forwarding websocket test into family files ([1270b46](https://github.com/icoretech/codex-pooler/commit/1270b4626c0d48fb976c08d9187ef63e1b78608b))
* **runtime:** split the websocket controller test into family files ([b752030](https://github.com/icoretech/codex-pooler/commit/b752030157d8142129309663549b1c10bfafaf15))
* **support:** mark the lifecycle log capture helper for dialyzer ([945a1f9](https://github.com/icoretech/codex-pooler/commit/945a1f97afd590fc252a19ab5188e6844290c228))
* **support:** release held FakeUpstream websocket barriers on shutdown instead of waiting out the 15 s kill ([ea9abb0](https://github.com/icoretech/codex-pooler/commit/ea9abb0734e0bedf9d85d99af2e354d458faace1))
* **upstream:** add a native per-frame barrier mode to FakeUpstream and tag strict fixture provenance ([3eabd6a](https://github.com/icoretech/codex-pooler/commit/3eabd6a11d7eab84bc5030a42d99a4a841e10f2f))
* **upstream:** finish the strict FakeUpstream migration ([e6210dd](https://github.com/icoretech/codex-pooler/commit/e6210dda2f22b13516b0fb2a6d48edb0e4fd4a2d))
* **upstream:** migrate one protocol-sensitive test per family to strict fixtures ([5c6d346](https://github.com/icoretech/codex-pooler/commit/5c6d346a254a5c0e60d983ecaa50e9d7b00cd9fd))
* **v1:** wait for each websocket terminal settlement before the next loop shape ([7a5e64f](https://github.com/icoretech/codex-pooler/commit/7a5e64f19a5800cc4bb0a4680be36069bd80c237))


### Miscellaneous Chores

* **deps:** update dependency helm/helm to v4.3.0 ([#382](https://github.com/icoretech/codex-pooler/issues/382)) ([423457d](https://github.com/icoretech/codex-pooler/commit/423457d216dc5c5f9c78ab758da59df92581b940))
* **deps:** update dependency node to v26.8.2 ([#383](https://github.com/icoretech/codex-pooler/issues/383)) ([fbdd0c7](https://github.com/icoretech/codex-pooler/commit/fbdd0c7a87ee293baa4477a50cccb5b48f6ef7d1))

## [0.7.8](https://github.com/icoretech/codex-pooler/compare/codex-pooler-v0.7.7...codex-pooler-v0.7.8) (2026-09-10)


Expand Down
2 changes: 1 addition & 1 deletion docs-site/src/content/docs/deployment/docker-compose.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ For every self-hosted install, choose a tagged stable release before creating

```bash
export CODEX_POOLER_IMAGE=ghcr.io/icoretech/codex-pooler
export CODEX_POOLER_IMAGE_TAG=0.7.8
export CODEX_POOLER_IMAGE_TAG=0.7.9
scripts/self-host/generate-env.sh
```

Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ defmodule CodexPooler.MixProject do
[
app: :codex_pooler,
# x-release-please-start-version
version: "0.7.8",
version: "0.7.9",
# x-release-please-end
elixir: "~> 1.20",
elixirc_paths: elixirc_paths(Mix.env()),
Expand Down