v1.9.0
What's Changed
- fix(videos): allow up to 9 reference images on Seedance 2.0 by @steebchen in #3027
- chore(deps): bump better-auth from 1.6.18 to 1.6.23 in the better-auth group across 1 directory by @dependabot[bot] in #3014
- feat(compliance): provider headquarters filter by @steebchen in #3018
- feat: gate provider listing behind verified email by @steebchen in #3029
- feat: per-mapping reasoning efforts, forward as-is by @steebchen in #3028
- fix: reset stale reasoning effort, clarify docs by @steebchen in #3030
- feat(ui): expandable details on model mapping card by @steebchen in #3031
- fix: prevent duplicate Stripe customers in top-ups by @steebchen in #3033
- feat(devpass): add raw revenue and cumulative view by @steebchen in #3035
- fix: idempotency keys for Stripe customer creation by @steebchen in #3036
- feat: add rename action to API key options menu by @steebchen in #3038
- fix(ui): OG image logo fixes, spacexai redirects by @smakosh in #3040
- ci(e2e): add shard job failure detection by @steebchen in #3032
- fix(devpass): self-heal leaked tier-change claims by @steebchen in #3039
- feat: self-refund for credit and plan purchases by @steebchen in #2984
- fix(api): validate chat support body with zod by @steebchen in #3000
- docs: document the verbosity parameter by @steebchen in #3043
- fix(api): don't error-log bogus Stripe webhook signatures by @steebchen in #3001
- fix(gateway): flatten xiaomi tool result to string by @steebchen in #3045
- fix(gateway): 400 on malformed tool_call arguments by @steebchen in #2997
- feat: UI/UX polish for landing and DevPass by @smakosh in #3052
- fix: treat minimax abort finish reason as upstream error by @steebchen in #3053
- feat(models): declare reasoning efforts for xai by @AmineAce in #3046
- fix(api): route cached mutations through cdb by @serhiizghama in #2898
- feat: raise provider listing fee to $1000 by @steebchen in #3056
- feat(models): declare reasoning effort for gemini-2.5-flash by @AmineAce in #3048
- feat(models): declare reasoning effort for glm-5.2 by @AmineAce in #3049
- feat(routing): add filtered providers and stripped params to routing metadata by @steebchen in #1657
- perf(ui): improve cwv, a11y, seo on top pages by @smakosh in #3054
- feat: handle together-ai minimax-m2.7 deprecation by @steebchen in #3057
- feat(models): declare reasoning efforts for google-ai-studio by @AmineAce in #3047
- fix: skip drizzle update on empty PATCH body by @steebchen in #3058
- feat: gross revenue splits on admin dashboard by @steebchen in #3059
- fix(gateway): block provider routing on dev plans always by @steebchen in #2622
- feat(devpass): premium cap as % of credits by @steebchen in #2835
- fix(worker): count premium usage for prefixed usedModel by @steebchen in #3044
- fix: e2e failures — dead models, caps, vertex keys by @steebchen in #3012
- feat: add legal links to provider request form by @steebchen in #3064
- feat(models): add glm-5.2 via alibaba by @steebchen in #3067
- fix(gateway): map reasoning_effort to Moonshot thinking by @steebchen in #3065
- test: deflake cancellation spec with mock sync by @steebchen in #3068
- fix(admin): drop cents in dashboard metric cards by @steebchen in #3069
- feat(error-handler): handle upstream gateway errors by @steebchen in #3062
- fix: handle reasoning summary done streaming events by @steebchen in #3063
- fix(code): align premium fair-use copy by @steebchen in #3070
- feat(models): declare reasoning effort for deepseek by @AmineAce in #3072
- feat: allow hiding DevPass profile picture by @steebchen in #3073
- feat(devpass): default service tier setting by @steebchen in #3071
- docs: fix premium weekly cap window wording by @smakosh in #3074
- fix(api): validate vertex service-account keys by @steebchen in #3066
- feat(gateway): exact reset time in premium cap error by @smakosh in #3076
- docs: reflect full-charge upgrade model in copy by @steebchen in #3077
- feat: premium tier visibility + shared models dir by @smakosh in #3078
- feat(models): declare reasoning efforts for meta by @AmineAce in #3079
- feat(docs): expand Features section by default by @smakosh in #3080
- feat(admin): redesign dashboard overview by @smakosh in #3081
- feat(models): declare reasoning efforts for sakana fugu-ultra by @AmineAce in #3083
- feat: show disabled actions for playground api key by @steebchen in #3086
- feat(devpass): remove allow-all-models option by @steebchen in #3087
- fix(code): align DevPass invoice table columns by @steebchen in #3089
- fix: reasoning_effort for alibaba/minimax/xiaomi by @steebchen in #3075
- fix: novita deepseek-v3.2 reasoning suppression by @steebchen in #3091
- feat(models): add kimi-k3 by @smakosh in #3092
- feat(anthropic): add extended thinking support by @steebchen in #3088
- feat: add devpass toggle to revenue chart by @steebchen in #3095
- feat(models): declare reasoning efforts for bytedance seed models by @AmineAce in #3096
- fix(devpass): skip card dedupe in local dev by @steebchen in #3094
- fix: forward gateway 4xx errors in embedTexts by @steebchen in #3098
- feat(stealth-provider): redact error details in logs by @steebchen in #3090
- feat(devpass): add weekly premium Reset Passes by @smakosh in #3093
- feat(code): add 3D passport to DevPass profiles by @smakosh in #3099
- feat(devpass): notify Discord on Reset Pass buys by @smakosh in #3106
- fix(models): declare reasoning effort tiers for deepseek v4 by @steebchen in #3105
- fix(gateway): stop false-negative on large structured SSE JSON by @steebchen in #3107
- fix(gateway): route Bedrock models without a global profile by @steebchen in #3104
- fix(gateway): hash prompt_cache_key before forwarding by @steebchen in #3110
- fix(gateway): rewrite developer role for opted-out mappings by @steebchen in #3103
- fix(gateway): keep session-sticky retries on pinned provider by @steebchen in #3102
- fix(gateway): handle deprecated top_p/temp on Claude by @steebchen in #3108
- feat(code): redesign profile sharing, add LinkedIn by @smakosh in #3111
- feat: support LLM_OPENAI_BASE_URL env override by @steebchen in #3112
- feat: add reset pass sales KPI to admin devpass by @smakosh in #3115
- feat(admin): split reset pass revenue, 2-row KPIs by @smakosh in #3116
- feat(models): add service tiers for gpt-5.1/5.2 by @steebchen in #3117
- fix(docs): canonicalize shared guides to main site by @smakosh in #3118
- feat(code): gate reset passes on usage, add refunds by @smakosh in #3120
- fix(alibaba): declare reasoningMaxTokens for kimi-k2.5 by @AmineAce in #3113
- feat(gateway): add /v1/key plan status endpoint by @smakosh in #3123
- fix(reset-pass): prevent double-refunding by @steebchen in #3124
- feat(models): declare reasoning efforts for xai grok-4.3 on aws-bedrock by @AmineAce in #3125
- feat(novita): add kimi-k3 mapping by @steebchen in #3122
- feat(admin): show error classification in mappings by @steebchen in #3126
- test: harden cancellation spec log waits by @steebchen in #3128
- feat: ignore expected errors in unstable mappings by @steebchen in #3129
- feat(devpass): revamp coding models surfaces by @smakosh in #3132
- feat(models): declare reasoning efforts for deepseek-v4-pro by @AmineAce in #3131
- chore(deps-dev): bump commitlint in / by @dependabot[bot] in #3135
- chore(deps-dev): bump eslint-import-resolver-typescript in / by @dependabot[bot] in #3137
- fix(bedrock): drop empty messages in Converse builder by @steebchen in #3127
- fix(models): correct gpt-5.1 reasoning effort tiers by @steebchen in #3101
- feat(models): declare reasoning efforts for glm-5.2 on bytedance by @AmineAce in #3138
- fix(moderations): retry with next env key on auth error by @steebchen in #3130
- test: cover each declared reasoning effort in e2e by @steebchen in #3139
- fix(models): disable vision on tundra kimi-k2.6 by @steebchen in #3140
- fix: retry 405 responses with another key by @steebchen in #3141
- feat(models): add Gemini TTS on Vertex+AI Studio by @steebchen in #3143
- chore(deps-dev): bump @types/node in / by @dependabot[bot] in #3134
- feat: group unstable mapping errors by streaming by @steebchen in #3144
- chore: gitignore .empryo local tooling directory by @AmineAce in #3146
- feat: rollover credits and timing choice on upgrade by @steebchen in #3147
- docs(blog): add kimi k3 SEO cluster (5 posts) by @smakosh in #3150
Full Changelog: v1.8.0...v1.9.0