- Bump go-sqlite3 from v1.14.33 to v1.14.34
- Bump ollama from v0.15.6 to v0.16.1
- Bump google.golang.org/api from v0.265.0 to v0.266.0
- Bump google.golang.org/grpc from v1.78.0 to v1.79.0
- Remove deprecated Claude 3.x model references from Anthropic client
- Remove claude-3-7-sonnet model from OpenAI-compatible provider config
- Add changelog entry for PR #1996
- Add PDFURL and URLPDF to VSCode spell-check dictionary
- incoming 1996 changelog entry
- Upgrade Anthropic SDK Go dependency to version 1.23.0
- Add Claude Sonnet 4.6 to list of supported models
- Update `go.sum` checksums for new SDK version
- Add optional API key setup question to client configuration
- Add `ApiKey` field to the LM Studio `Client` struct
- Create `addAuthorizationHeader` helper to attach Bearer token to requests
- Apply authorization header to all outgoing HTTP requests
- Skip authorization header when API key is empty or unset
- Replace hardcoded error strings in `file_manager.go` with i18n translation keys
- Add file manager, Vertex AI, and Copilot i18n keys to all 10 locale files
- Internationalize Copilot plugin error messages and debug logs
- Internationalize Vertex AI model fetching error messages
- Fix JSON trailing comma syntax errors across all locale files
- Normalize German locale JSON indentation from tabs to spaces
- Use `AddSetupQuestionWithEnvName` for Bedrock AWS region setup
- Add new error messages for fetch operations
- Rename `errInvalidLocationFormat` to `errInvalidLocationFormatKey`
- Use `errors.New` instead of `fmt.Errorf` for fetch errors
- Update Chinese locale with fetch-related error messages
- Add VertexAI error message translations across 10 locale files
- Add Gemini TTS and audio error translations to all locales
- Add AWS Bedrock client error translations to all locales
- Add fetch plugin error message translations to all locales
- Replace hardcoded English strings with `i18n.T()` calls in Bedrock plugin
- Replace hardcoded English strings with `i18n.T()` calls in Gemini plugin
- Replace hardcoded English strings with `i18n.T()` calls in VertexAI plugin
- Replace hardcoded English strings with `i18n.T()` calls in fetch plugin
- Use `errors.New` instead of `fmt.Errorf` for non-formatted error strings
- Replace hardcoded strings with i18n keys in chatter.go
- Add translation keys for errors, warnings, and metadata in locale files
- Update file.go to use i18n for operation messages and errors
- Provide translations in German, English, Spanish, Persian, French, Italian, Japanese, Portuguese, and Chinese
- Enable localized output for stream updates and file plugin operations
- Ensure consistent error handling across supported languages
- Maintain backward compatibility with existing functionality
- Remove gpt-4o, gpt-4o-mini, gpt-4.1, and gpt-4.1-mini from ImageGenerationSupportedModels
- These models are being retired by OpenAI effective February 13, 2026
- Keep gpt-4.1-nano, o3, gpt-5, gpt-5-nano, gpt-5.2 as supported
- Update tests to use gpt-5.2 instead of gpt-4o as the example supported model
- Update test expectations to reflect deprecated models no longer being supported
This ensures users get accurate warnings when attempting image generation with
retired models, while maintaining support for currently available models.
Co-Authored-By: Warp <agent@warp.dev>
- Update default summarize model to `claude-sonnet-4-5`
- Replace `gpt-4o` references with `gpt-5.2` throughout docs
- Replace `gpt-4o-mini` references with `gpt-5-mini`
- Add MiniMax-M2.5 and M2.5-lightning to static models list
- Update image generation warning to suggest `gpt-5.2`
- Update OpenAI chat example script to use `gpt-5-mini`
- Update REST API docs and examples with current model names
- Add `fetchAbacusModels()` to dynamically retrieve models from Abacus RouteLLM API
- Fall back to static model list when Abacus API fetch fails
- Add GPT-5 Codex variants (5, 5.1, 5.1-max, 5.2) to static models
- Add GPT-5.2 and GPT-5.2-chat-latest to static model list
- Add claude-opus-4-6 and gemini-3-flash-preview to static models
- Add kimi-k2.5, glm-4.7, and glm-5 to static model list
- Rename `qwen/qwen3-Max` to lowercase `qwen3-max`
- Handle `static:abacus` as special case in `ListModels` routing
See https://www.anthropic.com/news/claude-opus-4-6
## CHANGES
- Upgrade anthropic-sdk-go from v1.20.0 to v1.21.0
- Add `ClaudeOpus4_6` to supported Anthropic model list
- Remove unused indirect dependencies from go.mod and go.sum
- Clean up legacy protobuf and gRPC version references
- Remove stale tensor, math, and image processing libraries
- Drop unused table writer and console dependencies
- Prune obsolete cloud.google.com version pins
- Update default API version from 2024-05-01-preview to 2025-04-01-preview
(required for o-series and GPT-5 models)
- Remove NeedsRawMode override that always returned false, inheriting parent
logic that correctly skips temperature/top_p for reasoning models
- Add /responses route to deployment middleware for future v1 API support
Tested against Azure OpenAI gpt-5.2-chat deployment.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## CHANGES
- Bump `anthropic-sdk-go` dependency from v1.19.0 to v1.20.0
- Add deprecation notice for pre-February 2026 legacy models
- Add new Claude Sonnet 4.0 and Opus 4.0 model aliases
- Extend 1M context beta support to all Sonnet 4 variants
- Reorganize model list to separate deprecated from current models
- Add `neturl` to VS Code spell-check dictionary
- Remove OAuth support from Anthropic client
- Delete `oauth.go` and related test files
- Simplify `IsConfigured` to check only API key
- Update configuration handling to remove OAuth references
- Clean up imports and unused variables in `anthropic.go`
- Adjust `GetConfig` and `UpdateConfig` methods in server configuration
- Remove OAuth-related environment variables from configuration
## CHANGES
- add MiniMax provider configuration with API endpoint updates
- implement NeedsRawMode method for MiniMax model handling
- define static MiniMax model list with M2 variants
- add Infermatic and Novita to VS Code extensions
- update test to use proper context.TODO() parameter
- configure MiniMax models as static discovery
- set ModelsURL to static:minimax for model listing
The OpenAI Go SDK's azure.WithEndpoint() middleware has a bug where it
expects request paths like /openai/chat/completions but the SDK actually
sends paths like /chat/completions (without the /openai/ prefix since
that's included in the base URL). This causes the SDK's route matching
to fail, resulting in deployment names not being injected into the URL.
Azure OpenAI requires URLs like:
/openai/deployments/{deployment-name}/chat/completions
But the SDK was generating:
/openai/chat/completions
This fix:
1. Adds custom middleware that correctly transforms API paths to include
the deployment name extracted from the request body's model field
2. Moves StreamOptions to only be set for streaming requests (Azure
rejects stream_options for non-streaming requests)
Fixes#1954
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Novita AI provider configuration with API endpoint
- Update README to include Novita AI in supported providers list
- Configure Novita AI to use OpenAI-compatible interface
- Add documentation comments for messageTextFromParts, contentBlocksFromMessage,
prependSystemContentToBlocks, contentBlockFromAttachmentURL, and parseDataURL
- Consolidate two switch statements in normalizeImageMimeType into single
idiomatic Go switch with direct returns
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add debug logging for failed data URL parsing
- Add debug logging for unsupported MIME types
- Add debug logging for non-base64 data URLs
- Add documentation for normalizeImageMimeType with API reference
- Add documentation for isPDFURL explaining extension-only limitation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
### CHANGES
- Update toMessages to handle multi-content messages with text and attachments
- Add contentBlocksFromMessage to convert message parts to Anthropic blocks
- Implement support for image URLs including data URLs and base64 images
- Add PDF attachment handling via data URLs and URL-based PDFs
- Introduce parseDataURL for extracting MIME type and data from data URLs
- Create normalizeImageMimeType to standardize supported image MIME types
- Add isPDFURL to detect PDF files from URL paths
- Refactor system content accumulation to use text extraction from parts
- Update tests to verify PDF attachment processing in multi-content messages
## CHANGES
- Add warning to stderr when using incompatible models with image generation
- Add GPT-5, GPT-5-nano, and GPT-5.2 to supported image generation models
- Create `checkImageGenerationCompatibility` function in OpenAI plugin
- Add comprehensive tests for image generation compatibility warnings
- Add integration test scenarios for CLI image generation workflows
- Suggest gpt-4o as alternative in incompatibility warning messages
Adds test coverage for the Infermatic AI provider in
TestCreateClient to verify the provider exists and
creates a valid client.
Part of #1033: Add Infermatic AI provider support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update the SendStream interface to match the current Vendor interface
which now uses chan domain.StreamUpdate instead of chan string.
Changes:
- Update SendStream signature to use chan domain.StreamUpdate
- Update sendChatMessageStream signature accordingly
- Update parseSSEStream signature accordingly
- Wrap all channel sends with domain.StreamUpdate{Type: StreamTypeContent}
This fixes the build error introduced when the streaming interface was
updated to support metadata like token usage alongside content.
## CHANGES
- Add DigitalOcean as a new AI provider in plugin registry
- Implement DigitalOcean client with OpenAI-compatible inference endpoint
- Support model access key authentication for inference requests
- Add optional control plane token for model discovery
- Create DigitalOcean setup documentation with environment variables
- Update README to list DigitalOcean in supported providers
- Handle model listing via control plane API with fallback
## CHANGES
- Add Mammouth provider configuration with API base URL
- Configure Mammouth to use standard OpenAI-compatible interface
- Disable Responses API implementation for Mammouth provider
- Add "Mammouth" to VSCode spell check dictionary
Add centralized factory function for AI vendor plugin initialization:
- Add NewVendorPluginBase(name, configure) to internal/plugins/plugin.go
- Update 8 vendor files (anthropic, bedrock, gemini, lmstudio, ollama,
openai, perplexity, vertexai) to use the factory function
- Add 3 test cases for the new factory function
This removes ~40 lines of duplicated boilerplate code and ensures
consistent plugin initialization across all vendors.
MAESTRO: Loop 00001 refactoring implementation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
### CHANGES
- Extract `getGeminiRegion` method for region determination
- Use `getGeminiRegion` in `sendGemini` for location setting
- Apply `getGeminiRegion` in `sendStreamGemini` for consistency
- Extract model fetching logic into a dedicated helper function.
- Improve response body cleanup during Vertex AI pagination loops.
- Remove unused time import and timeout constant from models.
- Streamline listPublisherModels function by delegating API requests to helper.
- Dynamic model listing from Vertex AI Model Garden API
- Support for both Gemini (genai SDK) and Claude (Anthropic SDK) models
- Curated Gemini model list (no API available to list them)
- Web search support for Gemini models
- Thinking/extended thinking support for Gemini
- TopP parameter support for Claude models
- Model filtering (excludes imagen, embeddings, legacy models)
- Model sorting (Gemini > Claude > DeepSeek > Llama > Mistral > Others)