github looplj/axonhub v1.0.0-beta11

4 hours ago

What's Changed

  • fix(gql): return channel model entries in deterministic order by @JasonWenTheFox in #2416
  • fix(frontend): remove table row hover scale causing scrollbar flicker by @JasonWenTheFox in #2415
  • fix(channels): use reported Codex quota window durations by @Yuna-Celisse in #2417
  • fix(anthropic): preserve DeepSeek native web search tools by @remote-controlled-man in #2423
  • fix(security): cap inbound request body and decompression size by @MrLiuGangQiang in #2422
  • fix(security): prevent OIDC Host header injection by @MrLiuGangQiang in #2421
  • fix(frontend): make channels table responsive without clipping actions by @moonjoke001 in #2418
  • fix(security): prevent spoofed client IP headers by @MrLiuGangQiang in #2424
  • feat(quota): add Ollama Cloud quota tracking by @bookshiyi in #2413
  • refactor: generalize channel quota display and normalize provider limits by @llc1123 in #2419
  • fix(version): compare glued prerelease counters numerically by @EJCrystal in #2431
  • fix(frontend): hide empty channel column and correct ZenMux Gemini icon by @llc1123 in #2436
  • fix(frontend): clear stale project selection on account switch by @brynne8 in #2437
  • feat(channel): add dedicated zenmux_video channel type by @llc1123 in #2441
  • fix: allow adding custom models after fetching models in channel dialog by @llc1123 in #2440
  • fix(webhook): render occurred_at in the configured system timezone by @EJCrystal in #2443
  • perf(requests): avoid full count on paginated request list by @MrLiuGangQiang in #2446
  • feat(quota): add z.ai quota tracking by @BLumia in #2444
  • chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /integration_test/gemini by @dependabot[bot] in #2447
  • fix(channel): keep manual models consistent during model sync by @trim21 in #2454
  • fix(metrics): load exporter settings from environment by @imryao in #2450
  • feat(quota): replace quota enforcement with configurable routing by @llc1123 in #2448
  • fix(frontend): gate project-scoped queries until persisted project is validated by @brynne8 in #2439
  • fix(api): suppress stream errors after terminal events, close #2318 by @looplj in #2395
  • fix: retain live preview chunks when request completes by @brynne8 in #2456
  • feat: add bulk channel tag management by @AkaChou in #2463
  • fix(responses): preserve MCP namespace tool names across Chat Completions degradation by @mochenya in #2432
  • Revert "fix(responses): preserve MCP namespace tool names across Chat Completions degradation" by @looplj in #2467
  • feat(llm): response namespace transfomer by @looplj in #2468
  • fix: should always respect retry settings, close #2429 by @looplj in #2469
  • feat: change channel name left align, close #2390 by @looplj in #2470
  • chore: sync model developers data by @github-actions[bot] in #2472
  • fix: apply channel header overrides to model-list probes by @wangzhengzhuo05 in #2471
  • feat(channel): global auto-disable rules and bulk apply by @Elio9352 in #2453
  • fix(biz): read retry policy with a system bypass for API-key requests by @wangzhengzhuo05 in #2478
  • fix(biz): respect raw-URL marker and /v1 relays when fetching Zhipu/ZAI models by @EJCrystal in #2481
  • feat(requests): persist and display channel API key suffix in request execution details by @Silentely in #2480
  • feat(quota): read Command Code quota with the account API key by @myml in #2474
  • fix(openai): use fs paths for embedded fixtures by @remote-controlled-man in #2484
  • fix: use model card output limit as Anthropic max_tokens default by @EJCrystal in #2488
  • fix: load external response bodies stored in PostgreSQL jsonb by @imryao in #2498
  • feat(requests): add user agent column to request logs by @freebattle in #2494
  • feat: persist request and provider response headers by @imryao in #2502
  • chore: sync model developers data by @github-actions[bot] in #2507
  • fix(openai): accept images array in JSON image edit requests by @keeyangyy in #2497
  • fix(codex): preserve turn state across Responses transport by @imryao in #2506
  • fix: preserve provider-required User-Agent on outbound requests, refs #2303 by @remote-controlled-man in #2501
  • fix: use inbound request body in set_if_absent body overrides, close #2133 by @remote-controlled-man in #2499
  • feat: add reasoning effort to the model condition by @looplj in #2513
  • chore: update license by @looplj in #2514
  • docs: add greptile badge by @looplj in #2515
  • fix: keep the template popover scrollable inside the profiles dialog, close #2229 by @remote-controlled-man in #2517
  • perf(requests): virtualize conversation list and lazy-expand detail JSON by @EJCrystal in #2511
  • fix(openai): preserve allowed_tools tool_choice across Chat Completions routes, refs #2504 by @remote-controlled-man in #2519
  • fix: round robin strategy did not works for some times, close #2358 by @looplj in #2518
  • fix(dashboard): resolve empty fastestModels via LEFT JOIN by @brynne8 in #2521
  • feat(channels): auto-detect relay endpoints and show endpoint column by @freebattle in #2512
  • feat(codex): add GPT-6 Sol and Luna default models by @guliujian in #2527
  • fix(quota): restore OpenCode Go quota popover by @myml in #2525
  • fix(cline): keep quota fresh when usages ledger is rate limited by @freebattle in #2495
  • fix(anthropic): carry parallel tool use control through the transformer, refs #2504 by @serhiizghama in #2523
  • fix(scripts): make cleanup-sqlite.sh type-aware and non-aborting by @Catapult291 in #2526
  • fix(anthropic,gemini): fail closed on developer-only requests and dropped content parts by @525300887039 in #2520
  • feat(systemone): add native system one api format and typesafe jev provider support by @Silentely in #2524
  • feat(quota): support multi-key Zhipu channels and GLM coding plan credit limits by @MrLiuGangQiang in #2482
  • chore: sync model developers data by @github-actions[bot] in #2531
  • feat(sidebar): add customizable sidebar menu by @freebattle in #2530
  • feat(requests): add upstream model consistency audit by @EJCrystal in #2509
  • refactor: cleanup upstream response model by @looplj in #2533
  • feat(modelscope): add native async image generation and editing by @keeyangyy in #2534
  • feat(models): persist reasoning levels and export a Pi models.json provider by @trim21 in #2551
  • fix(openai): accept textual statuses in Responses streams by @llc1123 in #2553
  • feat(requests): record and show the channel API key index used per execution by @keeyangyy in #2550
  • fix(openai): keep content valid for reasoning-only assistant messages by @myml in #2552
  • feat(codex): support fast model aliases by @llc1123 in #2555
  • fix(channels): show Gemini endpoint protocol in channel list by @llc1123 in #2558
  • fix(playground): constrain layout to dashboard viewport by @JasonWenTheFox in #2554
  • feat(playground): remember the last selected model by @JasonWenTheFox in #2556
  • fix(orchestrator): support model aliases in channel tests by @llc1123 in #2563
  • fix(stream): preserve completed requests after trailing transport errors by @llc1123 in #2564
  • feat(admin): allow service account API keys on /admin/graphql by @trim21 in #2565
  • fix(quota): add conflict target to quota routing migration claim by @suixinio in #2562
  • chore(sync): keep providers.json key order stable by @trim21 in #2568
  • fix: suppress trailing SSE errors after terminal response by @Saerdna in #2319
  • fix(frontend): keep price time picker visible in dialog by @525300887039 in #2546
  • fix(frontend): make page headers responsive on narrow screens by @KremeCN in #2542
  • feat(auth): add activity-based JWT renewal for admin sessions by @llc1123 in #2559
  • fix(auth): harden JWT renewal error handling by @llc1123 in #2577
  • fix(frontend): keep cursor history aligned when paging backward by @llc1123 in #2578
  • fix: scope API key name uniqueness to creator by @brynne8 in #2575
  • refactor: branding new logo by @looplj in #2574
  • fix: default empty input_schema for Anthropic function tools with nil params by @mvanhorn in #1872
  • fix(responses): forward verified reasoning accounting header by @asuan-dev in #2035
  • chore(deps): bump nanoid from 5.1.16 to 6.0.0 in /frontend by @dependabot[bot] in #2181
  • fix(models): align association priority cap with backend contract by @ronronner02 in #2327
  • fix(requests): isolate playground requests by user by @brynne8 in #2206
  • chore(deps): bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 in /cmd/schema by @dependabot[bot] in #2583
  • feat(bailian): add native OpenAI Responses API support by @iwoov in #2290
  • Add MiniMax image generation support by @octo-patch in #2332
  • feat(analytics): show tok/s and TTFT in usage details and qualify performance filters by @llc1123 in #2585
  • chore(deps): bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 by @dependabot[bot] in #2492
  • fix(responses): ignore additional_tools input items by @Solaris-star in #2582
  • fix(responses): preserve web search call status in session input by @xujiantop-crypto in #2581
  • fix(openai): preserve custom tool input from final stream events by @hahahahahayesyeseys in #2500
  • fix(orchestrator): preserve non-streaming Anthropic requests by @Solaris-star in #2586
  • fix(api-keys): enforce personal key guard on template load and let system owners manage them by @iqiuzixuan in #2462
  • fix(frontend): fall back to document copy when Clipboard API rejects by @JasonWenTheFox in #2464
  • feat(channel): unify override template editing by @EJCrystal in #2529
  • fix(orchestrator): retry upstream connection resets before content by @llc1123 in #2589
  • revert(codex): remove hardcoded fast model aliases by @llc1123 in #2590
  • chore(codex): update client to 0.159.0 and model presets by @llc1123 in #2591
  • feat(codex): fetch official OAuth model catalog by @llc1123 in #2592
  • fix(openai): preserve refusal, audio, logprobs, and reasoning in aggregated chat streams by @remote-controlled-man in #2561
  • fix(openai): project aggregated citations to top-level field instead of leaking transformer_metadata by @remote-controlled-man in #2572
  • fix(orchestrator): prevent pass-through stream deadlock during pre-read by @Lopution in #2580
  • fix(transformer): preserve strict tool settings by @hahahahahayesyeseys in #2539
  • fix(frontend): stabilize popover positioning in dialogs by @llc1123 in #2593
  • fix(playground): initialize shared model state without an API key by @llc1123 in #2594
  • fix(orchestrator): apply prompt masking to pass-through request bodies by @cesaryuan in #2153
  • fix(playground): hide disabled channels from the playground selectors by @keeyangyy in #2597
  • feat(quota): show neuralwatt window marker and estimate by @djdembeck in #2599
  • fix(playground): 支持省略温度参数 by @Yibael in #2605
  • chore: sync model developers data by @github-actions[bot] in #2603
  • refactor(stream): unify terminal outcome finalization by @llc1123 in #2570
  • fix(apikeys): clear the IP allowlist when the restriction is turned off by @EJCrystal in #2602
  • fix(security): 修复 IPv4 映射地址的 IP/CIDR 匹配 by @Yibael in #2606
  • fix(responses): emit protocol errors for interrupted SSE streams by @llc1123 in #2595
  • fix: accept numeric strings in protocol usage cost by @llc1123 in #2611
  • fix: codex image generation pass through by @looplj in #2610
  • fix(bailian): support standard reasoning_effort none by @remote-controlled-man in #2414
  • feat: add OpenAI Decisions API phase one by @llc1123 in #2620
  • fix(antigravity): discover account models with current IDE client by @Yuna-Celisse in #2619
  • fix(anthropic): accept thinking.type=enabled without budget_tokens, close #2596 by @serhiizghama in #2617
  • fix(quota): preserve reported Codex window usage by @xujiantop-crypto in #2612
  • fix(orchestrator): support Decisions channel tests by @llc1123 in #2621
  • fix(responses): keep additional_tools for the official Codex backend by @zgq354 in #2618
  • fix(stream): use the usage-only chunk for terminal counts by @coulsontl in #2615
  • fix(channels): 修复 System One 渠道与 API key 的测试格式 by @Yibael in #2607

New Contributors

Full Changelog: v1.0.0-beta10...v1.0.0-beta11

Don't miss a new axonhub release

NewReleases is sending notifications on new releases.