v1.9.0
run and eval can now use OpenRouter and Vercel AI Gateway as LLM providers. This release also fails closed on incomplete OpenAI-compatible completions, tightens Crowdin upload/error handling, and speeds up planning, scoring, and several file parsers.
Full changelog: v1.8.28...v1.9.0
Breaking changes
None.
Features
- Add Vercel AI Gateway as an LLM provider for
runandeval. Setllm.profiles.<name>.providertoai_gatewayand exportAI_GATEWAY_API_KEY. Model IDs such asopenai/gpt-5.6-lunapass through tohttps://ai-gateway.vercel.sh/v1. Image localization stays OpenAI-only. #1848 - Add OpenRouter as an LLM provider (
openrouter). Auth viaOPENROUTER_API_KEY; override the base URL withOPENROUTER_BASE_URL. Model IDs pass through unchanged. #1804
Fixes
- Reject incomplete or failed OpenAI-compatible completions instead of writing truncated translations. Fail closed on choice-level errors,
finish_reasonoferror/length/content_filter, andtool_calls/function_call. Transient 502/503/504 errors stay retryable. #1810 - Send the raw filename in the Crowdin
Crowdin-API-FileNameheader instead of query-escaping it, so names with spaces are not mangled. #1839 - Align Crowdin
SourceStringsUploadattributes with API v2 (fileId,maxLen,omitemptyon optional fields). #1823 - Surface Crowdin 400 error payloads instead of a generic status message, and allow the documented project-level notification roles. #1801
Performance
- Faster SHA-512 lock fingerprinting during planning (
hex.EncodeToStringinstead offmt.Sprintf("%x")): about 28% faster on large catalogs, 11% fewer allocations. #1753 - ICU parser plain-text fast path: about 19% faster and 60% fewer allocations on keys with no placeholders. #1775
- JS/TS locale module parser: about 35% faster parse and 60% fewer allocations; marshal about 30% faster. #1799
- Mozilla Fluent parser: about 45% fewer allocations via capacity hints and indent/comment fast paths. #1786
- Zero-allocation brace-placeholder scanner in eval scoring (replaces regex). #1821
- Lower allocation cost when building the selection catalog (pre-sized maps,
slices.SortFunc). #1809 - Segment profile validation fast paths and slice capacity hints. #1837
Tests
- Env loader, CLI telemetry, sync risk detection, SHA-512 fingerprint oracles, and brace-placeholder scanner coverage. #1824 #1811 #1788 #1774 #1836
- Parser coverage for Apple
.stringsdict, CSV, Liquid target fallback, Fluent attribute indents, JS/TS locale edges, and the ICU plain-text fast path. #1838 #1755 #1802 #1798 #1808 #1784 - Incomplete LLM completion and locale-path helper regressions. #1820
Maintenance
- Bump Go dependencies (OpenAI SDK
v3.50.0, WorkOSv10.1.1, OpenTelemetryv1.45.0). #1751