v1.0.0-beta8

looplj/axonhubv1.0.0-beta8Sep 2, 2026by looplj

AI Summary

A comprehensive beta update approaching version 1.0, focusing on UI stability, quota management across various providers (xAI, OpenCode, Charm Hyper), and new channel features like drag-and-drop reordering and price export.

Key Highlights

  • Unify auto-refresh controls and stabilize list animations
  • Add support for xAI subscription SSO channel and Responses API
  • Add provider quota estimation feature
  • Add OpenCode Go quota tracking via official usage API
  • Add hot-reload model catalog from upstream via backend

New Features

  • Unified auto-refresh controls and list animations
  • xAI subscription SSO channel and Responses support
  • Provider quota estimation
  • Drag-and-drop column reordering
  • Hot-reload model catalog
  • Export/import channel model prices as JSON
  • Mine API keys tab

Full Release Notes

## What's Changed
* opt: anthropic signature recognization by @looplj in https://github.com/looplj/axonhub/pull/2197
* feat: unify auto-refresh controls and stabilize list animations by @AkaChou in https://github.com/looplj/axonhub/pull/2198
* fix: correct currency code example from RMB to CNY by @hanuxxx in https://github.com/looplj/axonhub/pull/2202
* feat(quota): add Charm Hyper credit balance checker by @djdembeck in https://github.com/looplj/axonhub/pull/2199
* fix(quota): color Codex quota bars by usage by @djdembeck in https://github.com/looplj/axonhub/pull/2166
* feat(quota): track OpenCode Go quota via official usage API by @jveko in https://github.com/looplj/axonhub/pull/2204
* feat: hide unroutable configured models from public lists by @CberYellowstone in https://github.com/looplj/axonhub/pull/2215
* fix(trace): only persist explicitly identified traces by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2208
* fix(responses): harden stream terminal, retry, and resource boundaries by @wtj-0527 in https://github.com/looplj/axonhub/pull/2196
* feat: add xai_responses channel type by @kirafishy in https://github.com/looplj/axonhub/pull/2212
* fix(prompts): parse project GUIDs in prompt schema by @Likhixang in https://github.com/looplj/axonhub/pull/2200
* chore(actions): upgrade workflows to node24 actions by @llc1123 in https://github.com/looplj/axonhub/pull/2219
* fix(responses): preserve image tool_choice without pass-through by @llc1123 in https://github.com/looplj/axonhub/pull/2218
* fix(codex): skip pass-through for unsupported response limits by @llc1123 in https://github.com/looplj/axonhub/pull/2217
* feat(requests): add reusable column reordering with drag-and-drop by @djdembeck in https://github.com/looplj/axonhub/pull/2222
* feat: persit chunks for failed stream request by @looplj in https://github.com/looplj/axonhub/pull/2224
* feat(quota): allow exempting channels from quota filtering by @djdembeck in https://github.com/looplj/axonhub/pull/2214
* feat: add xAI subscription SSO channel and Responses support for xai by @llc1123 in https://github.com/looplj/axonhub/pull/2225
* feat: provider quota estimate by @looplj in https://github.com/looplj/axonhub/pull/2228
* feat: add codex missing headers by @looplj in https://github.com/looplj/axonhub/pull/2230
* fix(actions): derive unstable version from latest tag by @llc1123 in https://github.com/looplj/axonhub/pull/2231
* fix(llm): preserve top-level reasoning tokens by @djdembeck in https://github.com/looplj/axonhub/pull/2237
* fix(nanogpt): escalate quota status to exhausted at 100% by @djdembeck in https://github.com/looplj/axonhub/pull/2236
* fix(codex): fix HTTP 400 missing reasoning.context all_turns by @djdembeck in https://github.com/looplj/axonhub/pull/2235
* feat(frontend): add sans/serif/mono font options to theme menu by @ChancenJ in https://github.com/looplj/axonhub/pull/2234
* chore: minor ui/error optimization by @looplj in https://github.com/looplj/axonhub/pull/2238
* fix: image outbound & override by @looplj in https://github.com/looplj/axonhub/pull/2241
* fix: restore meta muse lineup in model catalog by @djdembeck in https://github.com/looplj/axonhub/pull/2258
* fix(channel): write UTC updated_at when saving model prices by @ChancenJ in https://github.com/looplj/axonhub/pull/2257
* fix(frontend): grant system-level route access to owner users by @qinkangdeid in https://github.com/looplj/axonhub/pull/2254
* fix(copilot): send Grok models through Responses API by @ripenedcat in https://github.com/looplj/axonhub/pull/2250
* opt: gemini channel compatible by @looplj in https://github.com/looplj/axonhub/pull/2259
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2242
* feat: introduce unified opencode transformer, close #2240 by @looplj in https://github.com/looplj/axonhub/pull/2260
* feat: GC 支持剥离已存储的请求/响应载荷 by @CberYellowstone in https://github.com/looplj/axonhub/pull/2246
* fix(frontend): correct conversation sidebar height by @KremeCN in https://github.com/looplj/axonhub/pull/2267
* fix: skip postgres monotonic updated_at cleanup by @djdembeck in https://github.com/looplj/axonhub/pull/2266
* fix: use HTTP URL for WebSocket model discovery by @techblack in https://github.com/looplj/axonhub/pull/2265
* fix: should reload channels after txn commited, close  #2256 by @looplj in https://github.com/looplj/axonhub/pull/2261
* fix: forward image parameter in /v1/images/generations by @clhey in https://github.com/looplj/axonhub/pull/2251
* fix: double count reasoning token for throughput by @looplj in https://github.com/looplj/axonhub/pull/2270
* fix(requests): expose personal key callers to project owners by @brynne8 in https://github.com/looplj/axonhub/pull/2269
* fix: use ping for Responses WebSocket channel tests by @techblack in https://github.com/looplj/axonhub/pull/2264
* fix(requests): honor effective API key scopes by @brynne8 in https://github.com/looplj/axonhub/pull/2277
* fix: stabilize auto-refresh list transitions by @AkaChou in https://github.com/looplj/axonhub/pull/2275
* fix(codex): accept completed JSON Responses from compatible relays by @MrLiuGangQiang in https://github.com/looplj/axonhub/pull/2243
* fix(channels): map ollama_anthropic to the ollama provider by @hihanley in https://github.com/looplj/axonhub/pull/2299
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2295
* fix: i18n conversation viewer and tool_choice stat by @djdembeck in https://github.com/looplj/axonhub/pull/2298
* docs(i18n): clarify storage policy and payload storage copy by @brynne8 in https://github.com/looplj/axonhub/pull/2296
* fix: preserve conditional template overrides by @CBOSSX in https://github.com/looplj/axonhub/pull/2287
* docs(i18n): clarify where store-chunks persists stream chunks by @trim21 in https://github.com/looplj/axonhub/pull/2306
* feat: support Codex alpha search proxy by @JerryLiu369 in https://github.com/looplj/axonhub/pull/2274
* fix(providers): accept boolean experimental flag by @djdembeck in https://github.com/looplj/axonhub/pull/2305
* fix(gemini): preserve concrete MIME types for remote media by @llc1123 in https://github.com/looplj/axonhub/pull/2205
* feat: hot-reload model catalog from upstream via backend by @CberYellowstone in https://github.com/looplj/axonhub/pull/2263
* fix(channels): validate bulk ordering weight input by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2335
* fix(frontend): support clipboard copy on insecure HTTP origins by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2334
* feat(frontend): add 100-row pagination option by @JasonWenTheFox in https://github.com/looplj/axonhub/pull/2333
* fix: skip spurious default-value changes that trigger SQLite rebuilds by @ChancenJ in https://github.com/looplj/axonhub/pull/2331
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/2325
* fix(ui): add viewport height floor to DialogContent by @ronronner02 in https://github.com/looplj/axonhub/pull/2328
* feat(channels): support export/import channel model prices as JSON by @ChancenJ in https://github.com/looplj/axonhub/pull/2322
* fix(frontend): trim price inputs before saving channel model prices by @trim21 in https://github.com/looplj/axonhub/pull/2321
* feat: auto set prompt cache key from trace id by @looplj in https://github.com/looplj/axonhub/pull/2339
* fix: request performance metric accurate by @looplj in https://github.com/looplj/axonhub/pull/2341
* feat: support add image in playground by @BLumia in https://github.com/looplj/axonhub/pull/2340
* fix: decode snake_case OIDC claims for email linking by @imryao in https://github.com/looplj/axonhub/pull/2320
* fix: classify upstream stream interruptions and keep latency metrics on failed executions by @zhaozhaozz in https://github.com/looplj/axonhub/pull/2317
* fix(frontend): paginate API key selectors and filters by @suixinio in https://github.com/looplj/axonhub/pull/2346
* ci: validate bundled providers.json against its schema by @trim21 in https://github.com/looplj/axonhub/pull/2315
* feat: return AxonHub cost on usage.cost across API formats by @trim21 in https://github.com/looplj/axonhub/pull/2300
* feat(api): support downstream Responses WebSocket by @techblack in https://github.com/looplj/axonhub/pull/2255
* feat: add mine api keys tab, close #2271 by @looplj in https://github.com/looplj/axonhub/pull/2349
* fix: requests db index name length & rules by @looplj in https://github.com/looplj/axonhub/pull/2351

## New Contributors
* @hanuxxx made their first contribution in https://github.com/looplj/axonhub/pull/2202
* @jveko made their first contribution in https://github.com/looplj/axonhub/pull/2204
* @kirafishy made their first contribution in https://github.com/looplj/axonhub/pull/2212
* @Likhixang made their first contribution in https://github.com/looplj/axonhub/pull/2200
* @ripenedcat made their first contribution in https://github.com/looplj/axonhub/pull/2250
* @techblack made their first contribution in https://github.com/looplj/axonhub/pull/2265
* @clhey made their first contribution in https://github.com/looplj/axonhub/pull/2251
* @CBOSSX made their first contribution in https://github.com/looplj/axonhub/pull/2287
* @JerryLiu369 made their first contribution in https://github.com/looplj/axonhub/pull/2274
* @ronronner02 made their first contribution in https://github.com/looplj/axonhub/pull/2328
* @imryao made their first contribution in https://github.com/looplj/axonhub/pull/2320

**Full Changelog**: https://github.com/looplj/axonhub/compare/v1.0.0-beta7...v1.0.0-beta8