- Add git CLI fallback when go-git in-memory clone fails
- Detect git CLI availability via `exec.LookPath` before fallback
- Extract `fetchFilesViaGoGit` into dedicated helper function
- Implement `fetchFilesViaGitCLI` using shallow `--depth 1` clone
- Use temp directory for CLI clone with deferred cleanup
- Add `copyFile` helper to support CLI-based file extraction
- Respect `SingleDirectory` and `PathPrefix` opts in CLI path
- Surface combined error when both go-git and CLI fallback fail
- Remove redundant inline comments from go-git implementation
- Update Svelte to version 5.53.5
- Upgrade @sveltejs/vite-plugin-svelte to 4.0.0
- Update lucide-svelte to version 0.575.0
- Upgrade Rollup to version 4.59.0
- Remove custom npm and pnpm install scripts
- Add postinstall script for svelte-kit sync
- Fix self-closing tags in Svelte components
- Change transcript joining to use newlines
- Make cleanPatternOutput method public in ChatService
- Remove svelte-markdown dependency from package.json
- Add new `create_slides` pattern to pattern explanations index
- Register `create_slides` in CONVERSION, VISUALIZE, and WRITING categories
- Add `create_slides` usage examples to `suggest_pattern` user guide
- Insert `create_slides` entry into `pattern_descriptions.json` with relevant tags
- Add `create_slides` pattern extract to `pattern_extracts.json`
- Shift pattern numbering from 97 onward to accommodate new entry
- Add default `NeedsRawMode` method to shared `PluginBase` struct
- Remove redundant `NeedsRawMode` implementations across all AI vendor plugins
- Consolidate default `false` return logic into single base plugin method
- Clean up duplicate boilerplate from anthropic, bedrock, copilot, gemini plugins
- Remove identical implementations from azureaigateway, vertexai, lmstudio, dryrun
- Add vendor selector dropdown to filter available models
- Introduce `selectedVendor` writable store for vendor selection
- Add `vendorNames` derived store with sorted unique vendor names
- Add `filteredModels` derived store filtered by selected vendor
- Fix model deduplication to use `vendor:name` composite key
- Sort models by vendor then name, case-insensitive
- Display vendor prefix in model option labels
- Append content to existing assistant messages instead of replacing
- Fix loading message removal to search by index, not position
- Refactor SSE buffer splitting to always retain incomplete segments
- Trim segments before parsing to handle whitespace edge cases
- Consolidate duplicate message update logic across chat components
- Process remaining buffer after stream completion more reliably
This commit addresses all review feedback from PR #2014 and adds
configurable API version support for Azure OpenAI backend.
PR Review Fixes:
- Add URL validation with HTTPS enforcement (ISC-C7)
- Implement cancellable context in SendStream with 300s timeout (ISC-C6)
- Add response body size limit (10MB) using io.LimitReader (ISC-C12)
- Update error body truncation from 200 to 500 characters (ISC-C13)
- Lowercase error messages per Go convention (ISC-C15)
- Add file-level documentation to all backend files (ISC-C14)
- Fix Bedrock max_tokens to respect opts.MaxTokens with fallback (ISC-C5)
- Document temperature/top_p mutual exclusivity in Bedrock (ISC-C11)
- Add debug logging when empty messages are skipped (ISC-C16)
- Add error check for empty message lists across all backends
- Verify and document Vertex AI endpoint path for APIM routing (ISC-C9)
- Update Azure OpenAI API version to 2025-04-01-preview (ISC-C10)
New Feature - Configurable API Version:
- Add APIVersion field to Client struct for Azure OpenAI backend
- Add optional setup question for API version (default: 2025-04-01-preview)
- Update AzureOpenAIBackend to accept and use configurable API version
- Maintain backward compatibility: empty version defaults to 2025-04-01-preview
- Add test coverage for custom API version and backward compatibility
- Update all existing tests to work with new backend signature
Test Coverage: 89.1% (maintained from 89.0%)
All 52 tests passing (49 existing + 3 new API version tests)
Internationalization polish: add AzureAIGateway locale strings across all 10 languages
- Add `azureaigateway_*` i18n keys to all 10 locale files
- Replace hardcoded error strings with `i18n.T()` calls
- Internationalize setup question prompts for gateway configuration
- Add `errors.New` in place of `fmt.Errorf` for static error strings
- Fix `url.QueryEscape` for API version query parameter encoding
- Correct `claude-opus-4-6-v1` model ID to include `:0` suffix
- Add error case for empty Bedrock text content blocks in `ParseResponse`
- Add test for Bedrock `ParseResponse` with no text content blocks
- Add `SendStream` context limitation note as inline code comment
- Truncate debug error body log output at 2000 characters
## CHANGES
- Add debug level 4 (`wire`) to `--debug` flag options
- Update zsh completion to include new `4` debug level value
- Update bash completion to include `4` in `compgen -W` word list
- Update fish completion description and arguments with level 4
## CHANGES
- Add `Wire` log level constant to debug level enum
- Expose `GetLevel()` function for safe concurrent level reads
- Log outbound message roles and content at wire debug level
- Log inbound stream updates and token usage at wire level
- Log non-streaming LLM responses at wire debug level
- Update `--debug` flag description to include new level 4
- Update `set_debug_level` locale strings across all 10 languages
- Add three new DigitalOcean error message translation keys across all locales
- Add plugin registry vendor and setup default translation keys
- Move misplaced locale entries into correct alphabetical order
- Replace hardcoded English error strings with `i18n.T()` calls in DigitalOcean client
- Sort Go import statements alphabetically in YouTube tool
- Replace `fmt.Errorf("%s", ...)` with `errors.New()` across all packages
- Add `errors` import where needed, remove unused `fmt` imports
- Lowercase error message strings in i18n locale files for Go conventions
- Add `plugin_registry_run_setup_select_defaults` i18n key for setup prompt
- Add `plugin_registry_could_not_find_vendor` i18n key for vendor errors
- Internationalize hardcoded English strings in `plugin_registry.go`
- Update `db_error_loading_env_file` format verb from `%s` to `%w` for wrapping
- Normalize error casing in en, de, es, fr, it, ja, pt-BR, pt-PT, zh, fa locales