What's Changed
- feat: smart HTTP→upstream transport routing (sticky vs single-shot) by @Soju06 in #1093
- chore(ci): bump softprops/action-gh-release from 3.0.0 to 3.0.1 by @dependabot[bot] in #1067
- chore(docker): bump pgautoupgrade/pgautoupgrade from 18-alpine to 18-alpine by @dependabot[bot] in #1068
- chore(ci): bump docker/build-push-action from 7.1.0 to 7.2.0 by @dependabot[bot] in #1069
- chore(docker): bump astral-sh/uv from 0.11.21 to 0.11.23 by @dependabot[bot] in #1070
- chore(ci): bump actions/checkout from 6.0.2 to 7.0.0 by @dependabot[bot] in #1071
- chore(ci): bump github/codeql-action from 4.35.5 to 4.36.2 by @dependabot[bot] in #1072
- chore(deps): bump the frontend-minor-patch group in /frontend with 6 updates by @dependabot[bot] in #1073
- chore(deps): bump @types/node from 25.9.3 to 26.0.0 in /frontend by @dependabot[bot] in #1074
- chore(deps): bump pydantic-settings from 2.14.1 to 2.14.2 by @dependabot[bot] in #1081
- chore(deps): bump the python-minor-patch group with 7 updates by @dependabot[bot] in #1075
- feat: expose upstream transport observability by @Soju06 in #1096
- feat(proxy): repair account-bound egress routing by @Komzpa in #875
- fix(proxy): oauth blocked when bindings lack route by @tobwen in #1064
- feat+fix(report): reports enhancements by @huzky-v in #1060
- feat(reset-credits): add banked rate-limit reset credits by @huzky-v in #1053
- fix(db): optimize dashboard query hot paths by @Soju06 in #1107
- chore(docker): bump pgautoupgrade/pgautoupgrade from 18-alpine to 18-alpine by @dependabot[bot] in #1109
- chore(ci): bump azure/setup-helm from 5.0.0 to 5.0.1 by @dependabot[bot] in #1110
- chore(ci): bump actions/cache from 5.0.5 to 6.1.0 by @dependabot[bot] in #1111
- chore(docker): bump astral-sh/uv from 0.11.23 to 0.11.25 by @dependabot[bot] in #1112
- chore(deps): bump the frontend-minor-patch group in /frontend with 12 updates by @dependabot[bot] in #1113
- chore(deps): bump the python-minor-patch group with 11 updates by @dependabot[bot] in #1114
- fix(frontend): persist dashboard account list sort by @Soju06 in #1115
- feat(frontend): restore Simplified Chinese i18n by @Komzpa in #995
- feat(usage-api): add toggle to query additional usage, and add pooled usage to
/v1/usageby @huzky-v in #832 - feat(request-logs): record client IP by @Komzpa in #985
- perf(usage): avoid repeated history cache scans by @Komzpa in #902
- feat(warmup): add staggered idle limit prestart by @Komzpa in #905
- fix(db): merge post-batch migration heads by @Soju06 in #1116
- feat(request-ui): add showing elapsed time to request details by @huzky-v in #1103
- fix(zod): add the zod schema with new enum introduced at #875 by @huzky-v in #1102
- fix(retry): honor minute/hour and compound retry-after hints by @ozpool in #1052
- ci: remove unsupported review-thread workflow trigger by @Komzpa in #1117
- test: update codex label workflow event assertion by @Komzpa in #1118
- fix(usage): sync paid-plan upgrades on workspace-less accounts by @ozpool in #1098
- fix(proxy): strip unsafe HTTP headers before owner-bridge forward by @ozpool in #1036
- fix(proxy): strip internal responses lite header by @mhughdo in #1099
- add configurable limit warm-up exhausted threshold by @jawwadfirdousi in #1079
- fix(ui): stabilize account layout and API key dialog by @qdzsh in #1062
- fix(models): aggregate service tiers across accounts by @ozpool in #1106
- fix(http-bridge): clean stale inflight session futures by @zvladru in #1044
- fix(websocket): avoid fresh retry for tool-output deltas by @zvladru in #1042
- feat(usage): support Codex usage reset credits by @codemoo in #1105
- fix(proxy): set parallel_tool_calls to false for compaction requests by @alzeiby in #1054
- docs: explain routing strategy tradeoffs by @Komzpa in #1119
- fix(proxy): clarify account stream cap overload by @Komzpa in #1122
- fix(proxy): stop local rate-limit selection retry loops by @Komzpa in #1121
- Smooth weekly pace gap by @Komzpa in #1120
- fix(db): prevent SQLite FD retention in background refresh tasks by @Lotfree618 in #1127
- fix(quota-planner): normalize datetimes before database use by @zvladru in #1043
- chore(deps): bump ty from 0.0.55 to 0.0.56 in the python-minor-patch group by @dependabot[bot] in #1147
- chore(ci): bump astral-sh/setup-uv from 8.2.0 to 8.3.0 by @dependabot[bot] in #1140
- chore(ci): bump docker/login-action from 4.2.0 to 4.4.0 by @dependabot[bot] in #1141
- chore(ci): bump docker/metadata-action from 6.1.0 to 6.2.0 by @dependabot[bot] in #1144
- chore(docker): bump astral-sh/uv from 0.11.25 to 0.11.27 by @dependabot[bot] in #1145
- chore(deps): bump the frontend-minor-patch group in /frontend with 12 updates by @dependabot[bot] in #1146
- chore(docker): bump pgautoupgrade/pgautoupgrade from 18-alpine to 18-alpine by @dependabot[bot] in #1139
- chore(ci): bump docker/build-push-action from 7.2.0 to 7.3.0 by @dependabot[bot] in #1142
- chore(ci): bump docker/setup-buildx-action from 4.1.0 to 4.2.0 by @dependabot[bot] in #1143
- fix(dashboard-auth): harden local session ttl by @AnobleSCM in #1137
- fix: list Codex shell-only models in backend catalog by @Komzpa in #1138
- feat(accounts): test bound proxy pools by @Komzpa in #1124
- feat(metrics): expose account inflight lease gauge by @0xSolarPunk in #1148
- feat(fleet): add refresh endpoint by @AnobleSCM in #1128
- feat: add openai-compatible model sources by @evaldass in #1129
- fix(account-ui): fix overflow on account list page by @huzky-v in #1149
- feat(automations): scheduled cycles, grouped runs, and run details UI by @Kazet111 in #438
- feat(images): add route observability by @Komzpa in #1123
- feat(proxy): add TTFT phase observability by @Soju06 in #1156
- fix(models): serve the Codex catalog on /v1/models for Codex clients by @kevinWangSheng in #1163
- fix(proxy): fallback v1 usage limits to upstream quotas by @Daltonganger in #1151
- fix(proxy): preserve Responses Lite additional tools by @luawl in #1161
- feat(models): add GPT-5.6 bootstrap catalog with upstream-verified metadata by @Soju06 in #1176
- fix(proxy): support Codex image edit routes by @nazirulhafiy in #1160
- fix(model-sources): default Codex catalog context by @Komzpa in #1152
- fix(proxy): synthesize interrupted custom tool call outputs by @Soju06 in #1175
- fix(proxy): preserve all non-message system and developer input items by @Soju06 in #1172
- fix(proxy): preserve model_messages in catalog response by @zepx in #1178
- fix(ci): ignore superseded same-head check suites by @Komzpa in #1170
- fix(proxy): harden native Responses Lite continuity by @Komzpa in #1164
- ci: shard integration-core tests, PR-mode vitest without coverage by @Soju06 in #1179
- chore: release v1.21.0-beta.1 by @Soju06 in #1125
New Contributors
- @jawwadfirdousi made their first contribution in #1079
- @qdzsh made their first contribution in #1062
- @zvladru made their first contribution in #1044
- @codemoo made their first contribution in #1105
- @alzeiby made their first contribution in #1054
- @0xSolarPunk made their first contribution in #1148
- @evaldass made their first contribution in #1129
- @kevinWangSheng made their first contribution in #1163
- @luawl made their first contribution in #1161
- @nazirulhafiy made their first contribution in #1160
- @zepx made their first contribution in #1178
Full Changelog: v1.20.2-beta.1...v1.21.0-beta.1
Install / Run
uvx --from "codex-lb==1.21.0b1" codex-lb
docker pull ghcr.io/Soju06/codex-lb:1.21.0-beta.1
helm install codex-lb oci://ghcr.io/soju06/charts/codex-lb --version 1.21.0-beta.1 --devel