Repository navigation
Releases: ironsparrows/swift-language-models
Release list
1.2.1
Release: patch
OpenRouter models and words
- Deprecates
inception/mercury-2: OpenRouter retires it on 2026-11-08. - Deprecates
inception/mercury-2.5: OpenRouter retires it on 2026-11-08. - Deprecates
inception/mercury-3: OpenRouter retires it on 2026-11-08. - Deprecates
minimax/minimax-01: OpenRouter retires it on 2026-11-05. - Deprecates
minimax/minimax-m2: OpenRouter retires it on 2026-11-05. - Deprecates
minimax/minimax-m2-her: OpenRouter retires it on 2026-11-05. - Deprecates
minimax/minimax-m2.1: OpenRouter retires it on 2026-11-05. - Deprecates
minimax/minimax-m2.7: OpenRouter retires it on 2026-11-05. - Adds
stealth/crouton-alpha. - Adds
tencent/hy4. - Deprecates
thinkingmachines/inkling-small:free: OpenRouter retires it on 2026-11-04. - Deprecates
thinkingmachines/inkling:free: OpenRouter retires it on 2026-11-04.
OpenRouter model data
inception/mercury-2: expirationDate none → 2026-11-08.inception/mercury-2.5: expirationDate none → 2026-11-08.inception/mercury-3: expirationDate none → 2026-11-08.liquid/lfm-2.5-2.6b:free: supportedParameters addstop_p.liquid/lfm-2.5-24b-a2b: supportedParameters addstop_p.meta-llama/llama-3.1-70b-instruct: expirationDate 2026-11-03 → none; supportedParameters dropsfrequency_penalty,logit_bias,min_p,presence_penalty,repetition_penalty,response_format,seed,structured_outputs,tool_choice,tools.minimax/minimax-01: expirationDate none → 2026-11-05.minimax/minimax-m2: expirationDate none → 2026-11-05.minimax/minimax-m2-her: expirationDate none → 2026-11-05.minimax/minimax-m2.1: expirationDate none → 2026-11-05.minimax/minimax-m2.7: expirationDate none → 2026-11-05.moonshotai/kimi-k3.1-pro: supportedParameters addstemperature,top_p.nousresearch/hermes-4-405b: supportedParameters addslogit_bias,seed,stop.nvidia/nemotron-3-nano-30b-a3b: supportedParameters dropslogprobs,top_logprobs.thinkingmachines/inkling-small:free: expirationDate none → 2026-11-04.thinkingmachines/inkling:free: expirationDate none → 2026-11-04.xiaomi/mimo-v2.5: contextSize 1,050,000 → 1,000,000; supportedParameters dropsseed.
OpenAI models and words
- Adds
gpt-5.3-codex, which OpenAI retires on 2027-04-01. - Adds
gpt-5.4-2026-03-05. - Adds
gpt-5.4-pro. - Adds
gpt-5.4-pro-2026-03-05.
Fetch log
Fetched 382 OpenRouter models into Catalogs/openrouter.json.
Fetched 46 OpenAI models into Catalogs/openai.json.
What's Changed
Fixes and catalog updates
- chore: update the model catalog by @swift-language-models-catalog[bot] in #39
Full Changelog: 1.2.0...1.2.1
1.2.0
What's Changed
Other changes
- feat: retry OpenRouter's requests with the backoff OpenAI's use, through one shared retry policy by @dioKaratzas in #35
- feat: let apps configure each provider's retries, timeout, image encoding and info cache by @dioKaratzas in #36
- docs: match the docs to the request configuration and line up the providers' retry wording by @dioKaratzas in #37
Full Changelog: 1.1.1...1.2.0
1.1.1
What's Changed
Fixes and catalog updates
- feat: read every provider's answer, usage and failure facts as typed values by @dioKaratzas in #34
Full Changelog: 1.1.0...1.1.1
1.1.0
What's Changed
New
- feat: retry and decode OpenAI answers as the official SDKs do, and catalog every OpenAI text model by @dioKaratzas in #33
Full Changelog: 1.0.2...1.1.0
1.0.2
What's Changed
Fixes and catalog updates
- chore: log under com.ironsparrows.swift-language-models and link the ironsparrows repository by @dioKaratzas in #32
Full Changelog: 1.0.1...1.0.2
1.0.1
What's Changed
Fixes and catalog updates
- feat: send an API key to another base URL, read back effort words, and build the catalog list once by @dioKaratzas in #31
Other changes
- refactor: share the connection, key and header types, and lay out each module by @dioKaratzas in #30
Full Changelog: 1.0.0...1.0.1
1.0.0
Release: major
The first stable release. OpenRouter's models work through Apple's Foundation Models API, and the public API is now settled: from here on, a breaking change comes only in a new major version.
.package(url: "https://github.com/dioKaratzas/swift-language-models", from: "1.0.0")Breaking changes since 0.9.5
- Shared metadata moves to the core:
LanguageModelMetadataKey,FinishReason,CitationandModelReasoning. OpenRouter-only keys start withopenRouter.. - Types with a single parent are nested under it, such as
OpenRouterOptions.AutoRouterandOpenRouterRouting.Sort. Closed enums become open vocabularies, and theBool?routing settings become thePermissionandRequirementenums. OpenRouterProviderandproviders()becomeOpenRouterEndpointandendpoints().LanguageModelsLogging.minimumLeveltakes Apple'sOSLogType, and the Pareto router's price cap is aDecimal.- Errors map more precisely:
- a
URLErroris rethrown as it is; - a 504 is a timeout;
- a spending budget that resets is
rateLimited; - a rejected image is
unsupportedTranscriptContent; token_limit_exceededgets its ownOpenRouterErrorcode.
- a
New
- A guided answer that breaks a guide throws a
ParsingErrorwhoseunderlyingErrorisGuideViolations, naming each value's path, keyword, value and limit. OpenRouterOptions.parallelToolCalls, a price cap for the Pareto router, and theOpenRouterPluginvocabulary.- The one retry of a briefly unavailable gateway waits for a
Retry-Afterof up to 10 seconds; a longer one throws at once, with the wait on the error.
Fixes
- Requests: the API key stays on a redirect to the same host; only the settings the app asked for are sent;
.offturns reasoning off on a model that can stop reasoning, even whennoneisn't among its levels. - Answers: a guided answer cut off at the token limit throws; tool-call arguments must be a whole JSON object; reasoning goes back as the model sent it; server-sent events follow every line-break rule; whole-number guides compare exactly.
- Logging: a host's error message stays out of the log.
- Catalog: an update can't deprecate a model the module's own code uses, and removing a model renames no other model's static.
- Docs: a response cache hit runs the answer's tool calls again.
Under the hood
OpenRouter's requests now go through a shared Chat Completions engine, which builds, sends, retries and streams each request, while OpenRouter adds only what its API does differently, as typed values. This changes no public API and no request: the exact bytes of each request and answer are pinned by tests. It prepares the package for more providers.
What's Changed
Breaking changes
- feat!: settle the 1.0 API, share a provider core, and fix what the pre-release review found by @dioKaratzas in #27
Other changes
- refactor: send Chat Completions requests through typed provider dialects by @dioKaratzas in #28
Full Changelog: 0.9.5...1.0.0
0.9.5
Release: patch
OpenRouter models and words
- Adds
z-ai/glm-5.3-flashx-legal. - Deprecates
nousresearch/hermes-3-llama-3.1-405bas removed: OpenRouter stopped listing it on 2026-11-02. - Deprecates
nousresearch/hermes-3-llama-3.1-70bas removed: OpenRouter stopped listing it on 2026-11-02.
OpenRouter model data
google/gemma-4-26b-a4b-it: maximumOutputTokens 235,929 → 32,768.google/gemma-4-31b-it: supportedParameters addsmax_completion_tokens.meta-llama/llama-3.2-3b-instruct: maximumOutputTokens 117,964 → 72,000.meta/muse-spark-open: maximumOutputTokens 131,072 → 943,718.openai/gpt-oss-20b: maximumOutputTokens 117,964 → 32,768.qwen/qwen3.8-27b: contextSize 1,000,000 → 1,024,000.x-ai/grok-4.7: supportedParameters addsstop,top_k.~deepseek/deepseek-v4-flash-latest: maximumOutputTokens 943,718 → 131,072.~x-ai/grok-latest: supportedParameters addsstop,top_k.
Fetch log
Fetched 380 OpenRouter models into Catalogs/openrouter.json.
What's Changed
Fixes and catalog updates
- chore: update the model catalog by @swift-language-models-catalog[bot] in #26
Full Changelog: 0.9.4...0.9.5
0.9.4
What's Changed
Fixes and catalog updates
- fix: send the requested token limit without lowering it to the catalog's by @dioKaratzas in #23
Full Changelog: 0.9.3...0.9.4
0.9.3
Release: patch
OpenRouter models and words
- Deprecates
z-ai/glm-4.7: OpenRouter retires it on 2026-12-31.
OpenRouter model data
deepseek/deepseek-v4-pro-0813: maximumOutputTokens 393,216 → 943,718.openai/gpt-oss-20b: maximumOutputTokens 32,768 → 117,964.z-ai/glm-4.7: expirationDate none → 2026-12-31.~deepseek/deepseek-v4-flash-latest: maximumOutputTokens 131,072 → 943,718.
Fetch log
Fetched 381 OpenRouter models into Catalogs/openrouter.json.
What's Changed
Fixes and catalog updates
- chore: update the model catalog by @swift-language-models-catalog[bot] in #21
Full Changelog: 0.9.2...0.9.3