Changelog
- ca90487 Merge branch 'main' into feature/add-gemini-3.1-flash-image-preview
- 38277c1 Merge pull request #1875 from woqiqishi/fix/tool-use-id-sanitize
- 1042489 Merge pull request #1893 from thebtf/fix/normalize-ttl-byte-preservation-mainline
- 98a1bb5 Merge pull request #1900 from rex-zsd/feature/add-gemini-3.1-flash-image-preview
- e9c60a0 Merge pull request #1910 from thebtf/fix/gemini-oauth-error-messages
- 631e5c8 Merge pull request #1922 from shenshuoyaoyouguang/pr/model-registry-safety
- b915371 Merge pull request #1925 from shenshuoyaoyouguang/pr/openai-compat-pool-thinking
- 15dd5db Merge pull request #1956 from router-for-me/vertex
- 4f48e52 Merge pull request #1957 from router-for-me/thinking
- 242aecd feat(registry): add gemini-3.1-flash-image-preview model definition
- a52da26 fix(auth): stop draining stream pool goroutines after context cancellation
- 424711b fix(executor): use aiplatform base url for vertex api key calls
- a02eda5 fix(openai-compat): address review feedback
- 7c12999 fix(openai-compat): improve pool fallback and preserve adaptive thinking
- 522a68a fix(openai-compat): retry empty bootstrap streams
- 97ef633 fix(registry): address review feedback
- 099e734 fix(registry): always clone available model snapshots
- dae8463 fix(registry): clone model snapshots and invalidate available-model cache
- 3a18f6f fix(registry): clone slice fields in model map output
- ce8cc1b fix(translator): pass through adaptive thinking effort
- 97fdd2e fix: preserve original JSON bytes in normalizeCacheControlTTL when no TTL change needed
- 553d6f5 fix: sanitize tool_use.id to comply with Claude API regex ^[a-zA-Z0-9_-]+$
- 11a795a fix: surface upstream error details in Gemini CLI OAuth onboarding UI
- 2b134fc test(auth-scheduler): add unit tests and scheduler implementation