What's Changed
- feat(channels): apply an exchange rate when filling prices from the model library by @keeyangyy in #2662
- chore(deps-dev): bump typescript-eslint from 8.57.1 to 8.72.1 in /frontend by @dependabot[bot] in #2840
- chore(deps): bump @xyflow/react from 12.10.1 to 12.12.0 in /frontend by @dependabot[bot] in #2841
- chore(deps): bump framer-motion from 11.18.2 to 14.9.0 in /frontend by @dependabot[bot] in #2842
- chore(deps): bump @radix-ui/react-switch from 1.2.6 to 1.4.1 in /frontend by @dependabot[bot] in #2844
- chore(deps): bump github.com/openai/openai-go/v3 in /integration_test/openai by @dependabot[bot] in #2845
- chore(deps): bump github.com/aws/aws-sdk-go-v2/config in / by @dependabot[bot] in #2846
- chore(deps): bump github.com/dlclark/regexp2/v2 in / by @dependabot[bot] in #2849
- chore(deps): bump github.com/samber/lo in / by @dependabot[bot] in #2850
- fix(safeguards): use short IDs for primary reviewer tool calls by @happyaron in #2853
- fix(aisdk): keep tool call ID across index-only stream deltas by @pcbeingused333 in #2852
- chore(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 in / by @dependabot[bot] in #2848
- chore(deps): bump streamdown from 1.6.11 to 2.7.1 in /frontend by @dependabot[bot] in #2843
- chore(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.1.2 in /frontend by @dependabot[bot] in #2891
- chore(deps): bump shiki from 3.23.0 to 4.5.0 in /frontend by @dependabot[bot] in #2890
- chore(deps): bump react-i18next from 15.7.4 to 17.1.10 in /frontend by @dependabot[bot] in #2888
- chore(deps-dev): bump knip from 5.87.0 to 6.44.1 in /frontend by @dependabot[bot] in #2887
- chore(deps): bump the npm-minor-patch group across 1 directory with 41 updates by @dependabot[bot] in #2886
- chore(deps): bump the shared-go-modules group across 3 directories with 18 updates by @dependabot[bot] in #2889
- fix(openai): map reasoning_text from Copilot chat completions to reasoning by @pujitha24 in #2894
- fix(anthropic): map content_filter finish reason to refusal stop reason by @pcbeingused333 in #2892
- fix(anthropic): map refusal and pause_turn stop reasons in streaming outbound by @pcbeingused333 in #2884
- ci: run frontend/backend checks only when relevant files change by @looplj in #2897
- fix(responses): prefer transport family when selecting endpoints by @i-square in #2881
- fix(channels): update Anthropic default models away from retiring Claude 4.5 by @pcbeingused333 in #2902
- docs: introduce plugin system solution by @looplj in #2896
- feat(plugins): add plugin management and sandboxed UI pages by @looplj in #2903
- fix(openai): record streamed usage emitted before the finish chunk by @marszhongx in #2705
- fix(stream): key terminal usage on real counts, not on chunk shape by @coulsontl in #2696
- fix(responses): preserve Anthropic non-strict tool defaults by @happyaron in #2904
- fix(ollama): keep tool calls that arrive in separate stream chunks by @pcbeingused333 in #2851
- feat(models): show priority and weight in association previews by @zhaozhaozz in #2857
- feat(orchestrator): add matching functions to override conditions by @trim21 in #2901
- perf(requests): cache missing system settings and skip payload re-reads by @zhaozhaozz in #2900
- fix(codex): expose image models missing from catalog by @llc1123 in #2911
- fix(quota): ignore expired reset credits when picking the next expiry by @myml in #2909
- feat(plugins): deliver gateway events to JS plugins by @looplj in #2912
- fix(quota): allow redeeming Codex reset credits before they expire by @myml in #2908
- feat(plugins): run plugin requests under a dedicated Plugin principal by @looplj in #2917
- docs(frontend): show a plain boolean condition in the override placeholder by @trim21 in #2915
- feat(antigravity): support selecting Google base URLs in channel settings by @zccrs in #2914
- fix(responses): map content_filter and cancelled finish reasons in non-streaming responses by @pcbeingused333 in #2907
- feat(plugins): inject system styles to plugin ui by @looplj in #2918
- refactor(frontend): reorganize navigation and settings pages by @looplj in #2919
- feat(plugins): proxy outbound HTTP through owner-granted network rules by @looplj in #2923
- fix(frontend): unify dialog footer layout and touch targets by @djdembeck in #2925
- feat(plugins): add marketplace and scoped request hooks by @looplj in #2926
- fix(override): set every element a query path matches by @nazarli-shabnam in #2924
- fix(anthropic): normalize tool use IDs in responses by @looplj in #2928
- fix: wrap token stats card title at narrow widths by @djdembeck in #2929
- feat(plugins): add string-list config and publish Jev Guard by @looplj in #2930
- feat(plugins): add app header slot by @looplj in #2931
- chore: sync model developers data by @github-actions[bot] in #2933
- feat(plugins): optimize the pack cmd develop experience by @looplj in #2934
- feat(plugins): register request-live plugin by @looplj in #2935
- feat: add opt-in pprof listener & optimize the memory footprint by @looplj in #2936
- fix(provider): retry storms, headerless 429 cooldown, error mapping and log noise by @Beyfish in #2609
- fix(frontend): use catalog IDs for OpenRouter and AiHubMix channel defaults by @pcbeingused333 in #2921
- feat(traces): sort traces by last request time by @trim21 in #2932
- fix(llm): tolerate object-shaped usage cost in unified Usage by @sleepwalkera in #2877
- refactor(orchestrator): snapshot system settings once per request by @looplj in #2937
- refactor(orchestrator): fetch channel metrics once per load-balancer … by @looplj in #2938
- fix(gemini): map LANGUAGE finish reason to content_filter by @pcbeingused333 in #2939
- chore(deps): bump github.com/openai/openai-go/v3 from 3.91.0 to 3.96.0 in /integration_test/openai in the auxiliary-go-modules group across 1 directory by @dependabot[bot] in #2940
- chore(deps): bump docker/login-action from 4.7.0 to 4.8.0 in the actions-minor-patch group by @dependabot[bot] in #2941
- chore(deps): bump react-day-picker from 9.7.0 to 10.0.2 in /frontend by @dependabot[bot] in #2948
- chore(deps): bump the npm-minor-patch group across 1 directory with 16 updates by @dependabot[bot] in #2950
- refactor(orchestrator): drive stream pass-through through the transfo… by @looplj in #2951
- docs: point docker badge to the published image on Docker Hub by @trim21 in #2949
- chore(deps-dev): bump @eslint/js from 9.39.4 to 9.39.5 in /frontend by @dependabot[bot] in #2947
- chore(deps-dev): bump eslint-plugin-react-hooks from 5.2.0 to 7.1.1 in /frontend by @dependabot[bot] in #2946
- chore(deps): bump the shared-go-modules group across 2 directories with 8 updates by @dependabot[bot] in #2945
- refactor(orchestrator): collect stream tail in OutboundPersistentStre… by @looplj in #2952
- chore(deps-dev): bump @trivago/prettier-plugin-sort-imports from 5.2.2 to 6.0.2 in /frontend by @dependabot[bot] in #2944
- chore(deps): bump dorny/paths-filter from 3 to 4 by @dependabot[bot] in #2942
- perf(orchestrator): consolidate persistence and eliminate update read… by @looplj in #2954
- fix(anthropic): map model_context_window_exceeded stop reason to length by @pcbeingused333 in #2955
- fix(frontend): avoid unnecessary permission checks in project pages by @looplj in #2957
New Contributors
- @i-square made their first contribution in #2881
- @marszhongx made their first contribution in #2705
- @nazarli-shabnam made their first contribution in #2924
- @Beyfish made their first contribution in #2609
Full Changelog: v1.0.0-beta12...v1.0.0-rc1