Repository navigation
chore: release 2.8.0 - #422
Merged
Merged
Conversation
Consume the pending changesets and bump the shared version to 2.8.0 so the main release workflow can tag cast-cli and cast-tui and publish GitHub release v2.8.0 from the root package version. Restore the #413 changelog entry to the wording from 3f4d997. Later provider pulls had rewritten that entry. Note the stdio EPIPE guard that landed with the Anthropic provider. Co-authored-by: Scott Miller <scott.miller.utah@gmail.com>
Test Coverage Report
Provider smoke: pass (26 passed, 0 failed, 2 skipped) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[2.8.0] - 2026-10-21
Added
anthropic-api/<model>uses nativeChatAnthropicandANTHROPIC_API_KEYagainsthttps://api.anthropic.com/v1. An exportedANTHROPIC_BASE_URLroutes builder calls through that proxy, with or without/v1./modellists active Claude ids withx-api-keyandanthropic-version, and falls back toclaude-sonnet-5-5,claude-opus-5-5, andclaude-haiku-5-5. The lifecycle query is dropped only after HTTP 400 or 422. The builder sends temperature0.7and omits it when the langchain-anthropic profile rejects temperature. An unknown id uses the Claude 4.7 and later pattern, including fable and mythos 5.x, and a family output floor. Opus 4 and Opus 4.1, including dated snapshots, use 32000. Claude 3 Haiku and Opus use 4096. The client sets a 600 second request timeout.anthropic/stays on OpenRouter. Deploy forwardsANTHROPIC_API_KEYonly for ananthropic-api/model and never forwardsANTHROPIC_BASE_URL. (#418)xai/<model>callshttps://api.x.ai/v1withXAI_API_KEY.x-ai/stays on OpenRouter. The model list keeps chat models and drops image, video, voice, embedding, multi-agent, andlatestaliases. The builder sends temperature0.7and does not sendstop,presence_penalty, orfrequency_penalty. Deploy forwardsXAI_API_KEYonly for anxai/model and never forwardsXAI_BASE_URL. (#414)openai-api/<model>usesOPENAI_API_KEYandhttps://api.openai.com/v1. The model list keeps chat ids and drops embedding, TTS, image, moderation, search, pro, deep-research, codex, and instruct ids. Reasoning models such aso3andgpt-5omit temperature.openai/stays on OpenRouter. Deploy forwardsOPENAI_API_KEYonly when that is the keybrain.modelneeds. (#415)gemini/<model>callshttps://generativelanguage.googleapis.com/v1beta/openaiwithGEMINI_API_KEY./modellists chat models and strips a leadingmodels/from ids the list endpoint returns, including a hand-typedgemini/models/<id>. Video ids such asgemini-omni-1.1-flashare excluded. Gemini 3 and 4 tool calls returnextra_content.google.thought_signature, and Cast echoes that object from the assistant message on the next request, including when several streams share one client. A signature repeated on two chunks of one tool call is echoed once.google/...stays on OpenRouter. Deploy forwards onlyGEMINI_API_KEY. The builder omits temperature so Gemini 3 thinking models keep the API default of 1.0. (#416)ollama/<model>callshttp://localhost:11434/v1with no API key. The chat client sends the placeholderollamaso the request does not carry an empty Bearer token.OLLAMA_API_KEYis optional and is used only when set, for Ollama cloud (OLLAMA_BASE_URL=https://ollama.com/v1)./modellists models from the OpenAI-compatibleGET /v1/modelsendpoint without a token and leaves out embedding names. When Ollama answers,cast provider ollamakeepsollama/qwen3only if that pull is present (qwen3andqwen3:latestmatch;qwen3:8bdoes not) and otherwise stores the first pulled chat model. When Ollama does not answer, it storesollama/qwen3and printsollama pull qwen3.qwen3,llama3.1, andgpt-ossare starting points. Ollama's default context length is 4096 tokens; raise it withOLLAMA_CONTEXT_LENGTHornum_ctx.cast deployto Fly, Railway, Sprites, DigitalOcean, or MicroVM refuses anollama/agent model before extract, git, or login. Docker rewrites a loopback base URL (127.0.0.0/8,::1,localhost,localhost., and IPv4-mapped loopback) tohttp://host.docker.internal:<port>/v1and does not copyOLLAMA_API_KEYor the builder's base URL.0.0.0.0and https on loopback are refused. On Linux, deploy prints that Ollama must listen beyond127.0.0.1(OLLAMA_HOST=0.0.0.0with a firewall, or the docker0 bridge IP, often172.17.0.1). A non-loopback builder URL is refused for Docker as well. Deploy forwards no Ollama credential. (#420)python/cast/providers/manifest.json. A new provider is a row with"impl": "openai-compatible"(base URL, key, model list, keyless flag, curated models, and non-secret settings such as a region). A module is only needed for a model-id rewrite. Direct prefixesopenai-api/,anthropic-api/,gemini/,bedrock/,ollama/, andxai/are reserved in the manifest and are not registered yet. (#413)Changed
openai/,anthropic/,google/,x-ai/, and the other OpenRouter vendor ids still use OpenRouter. A bare alias such asclaude-sonnet-4still uses OpenRouter, including the memory reflection fallbackclaude-haiku-latest. (#413)cast model not-a-real-modelnames the prefix convention and does not list the catalog.cast model qwen/qwen3-coderis an unknown curated OpenRouter id and lists the available ids. Deploy forwardsOPENROUTER_API_KEYfor any slash prefix that is not registered and not reserved, includingqwen/andz-ai/. Deploy forwards no inference key for a reserved prefix.openai-api/gpt-4otells you thatopenai/gpt-4ostill uses OpenRouter. The runtime and reflection catch a routing error and stay in echo mode. (#413)0.7. Models that matchomitTemperatureModelsomit temperature: reasoning-style ids such aso1andgpt-5, and Claude opus, sonnet, or haiku 4.7 and later (dotted or dashed, including 5.x). Explicit Claude 4.7 and later ids are sent as written. Earlier aliases such asclaude-opus-4andclaude-sonnet-4still pin to 4.5 and 4.6. A provider with nodefaultParamsno longer receives a hardcoded0.7. The runtime and reflection still pass no temperature. (#413)Fixed
StdioJsonRpcBridgeignoresEPIPEandERR_STREAM_DESTROYEDon the builder's stdin when the process exits beforestdin.writefinishes. The close handler still reports the builder error, and the write is not an uncaught exception. (#418)#413 wording
Restored the #413 entry to the wording introduced in 3f4d997. Later provider pull requests had rewritten that entry and left the link on #413:
chat_factory".openai-api/gpt-4otells you thatopenai/gpt-4ostill uses OpenRouter" with "openai/gpt-4ostill uses OpenRouter" in the Changed bullet.Those two bullets match 3f4d997 again. The other #413 bullets were already unchanged. #414, #415, #416, #418, and #420 keep their own entries and pull request numbers. The restored #413 sentence still describes the prefixes it reserved as not registered yet. Providers that landed after that commit are documented in their own entries. This release does not include a Bedrock provider.
#418 also includes the stdio EPIPE guard for #421. That fix was not in the Unreleased notes, so this release adds a Fixed bullet linked to #418.
Release workflow after merge
.github/workflows/release.ymlfinds no changesets on this commit, sochangesets/action@v1does not open a Version Packages pull request. It runsnpx changeset tag, which createscast-cli@2.8.0andcast-tui@2.8.0. The private root package is not tagged.The action's
createGithubReleasesinput defaults to true, so it also opens GitHub releases for those two package tags. That is the same pairv2.7.0already published. It does not createv2.8.0.publishedis then true. The next step reads the rootpackage.jsonversion (2.8.0) and runsgh release create v2.8.0. That tag does not exist, so this creates it. It does not recreatev2.7.0.Nothing in that path fails the previous "GitHub Actions is not permitted to create or approve pull requests" check, and nothing creates a second
v2.8.0tag or release. Generated notes start at the second-newestv*tag (v2.6.0), so they include commits already shipped inv2.7.0. That is the same notes range the workflow used for earlier releases.