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
- @moonjoke001 made their first contribution in #2418
- @EJCrystal made their first contribution in #2431
- @mochenya made their first contribution in #2432
- @wangzhengzhuo05 made their first contribution in #2471
- @Elio9352 made their first contribution in #2453
- @freebattle made their first contribution in #2494
- @keeyangyy made their first contribution in #2497
- @guliujian made their first contribution in #2527
- @serhiizghama made their first contribution in #2523
- @Catapult291 made their first contribution in #2526
- @Saerdna made their first contribution in #2319
- @asuan-dev made their first contribution in #2035
- @iwoov made their first contribution in #2290
- @octo-patch made their first contribution in #2332
- @xujiantop-crypto made their first contribution in #2581
- @hahahahahayesyeseys made their first contribution in #2500
- @iqiuzixuan made their first contribution in #2462
- @Lopution made their first contribution in #2580
- @Yibael made their first contribution in #2605
- @zgq354 made their first contribution in #2618
- @coulsontl made their first contribution in #2615
Full Changelog: v1.0.0-beta10...v1.0.0-beta11