diff --git a/.github/workflows/background_agent_mvp.yml b/.github/workflows/background_agent_mvp.yml index af679425e73fb7984f44f1cea717756de17d7380..f40f44a28a9905c78b290cefb956f98bc4976524 100644 --- a/.github/workflows/background_agent_mvp.yml +++ b/.github/workflows/background_agent_mvp.yml @@ -187,8 +187,8 @@ jobs: - Fix - Validation - Potentially Related Issues (High/Medium/Low from LINKED_ISSUES.md) - - Release Notes - Reviewer Checklist + - Release Notes (final section; format as Release Notes:, then a blank line, then one bullet like - N/A) Constraints: - Do not merge or auto-approve. @@ -251,9 +251,34 @@ jobs: printf "Automated draft crash-fix pipeline output for %s.\n\nNo PR_BODY.md was generated by the agent; please review commit and linked artifacts manually.\n" "$CRASH_ID" > "$BODY_FILE" fi - if ! python3 -c 'import re, sys; body = open(sys.argv[1], encoding="utf-8").read(); raise SystemExit(0 if re.search(r"Release Notes:\r?\n\s+-", body) else 1)' "$BODY_FILE"; then - printf '\nRelease Notes:\n\n- N/A\n' >> "$BODY_FILE" - fi + python3 -c ' + import re + import sys + + path = sys.argv[1] + body = open(path, encoding="utf-8").read() + pattern = re.compile(r"(^|\n)Release Notes:\r?\n(?:\r?\n)*(?P(?:\s*-\s+.*(?:\r?\n|$))+)", re.MULTILINE) + match = pattern.search(body) + + if match: + bullets = [ + re.sub(r"^\s*", "", bullet) + for bullet in re.findall(r"^\s*-\s+.*$", match.group("bullets"), re.MULTILINE) + ] + if not bullets: + bullets = ["- N/A"] + section = "Release Notes:\n\n" + "\n".join(bullets) + body_without_release_notes = (body[: match.start()] + body[match.end() :]).rstrip() + if body_without_release_notes: + normalized_body = f"{body_without_release_notes}\n\n{section}\n" + else: + normalized_body = f"{section}\n" + else: + normalized_body = body.rstrip() + "\n\nRelease Notes:\n\n- N/A\n" + + with open(path, "w", encoding="utf-8") as file: + file.write(normalized_body) + ' "$BODY_FILE" EXISTING_PR="$(gh pr list --head "$BRANCH" --json number --jq '.[0].number')" if [ -n "$EXISTING_PR" ]; then diff --git a/.rules b/.rules index a4345d34fbc6951b6bf660a13afb54dbbdcdc6f2..67179a9f472ef70eddd1510bb756c24f232c2600 100644 --- a/.rules +++ b/.rules @@ -145,9 +145,17 @@ When an agent opens or updates a pull request, it must: - Avoid conventional commit prefixes in PR titles (`fix:`, `feat:`, `docs:`, etc.). - Avoid trailing punctuation in PR titles. - Optionally prefix the title with a crate name when one crate is the clear scope (for example, `git_ui: Add history view`). -- Include a `Release Notes:` section in the PR body with one bullet: +- Include a `Release Notes:` section as the final section in the PR body. +- Use one bullet under `Release Notes:`: - `- Added ...`, `- Fixed ...`, or `- Improved ...` for user-facing changes, or - - `- N/A` for non-user-facing changes. + - `- N/A` for docs-only and other non-user-facing changes. +- Format release notes exactly with a blank line after the heading, for example: + +``` +Release Notes: + +- N/A +``` # Crash Investigation diff --git a/docs/.rules b/docs/.rules index 4e6ca312f13b12a54a73d736ffeed8a8e09061ef..a7dbf1662c8e65d1ee154e577330843b4a3d4cc4 100644 --- a/docs/.rules +++ b/docs/.rules @@ -156,3 +156,14 @@ Zed doesn't index your project like IntelliJ does. You open a folder and start w ``` While some users might miss indexing, Zed's approach is actually better because it's faster. ``` + +## Pull request hygiene + +- Include a `Release Notes:` section as the final section in the PR body. +- For docs-only PRs, use exactly: + +``` +Release Notes: + +- N/A +``` diff --git a/docs/src/ai/agent-panel.md b/docs/src/ai/agent-panel.md index adee09a861ac655fef72b2a042db188cedf8ea62..b62512d469bee4c1e776f29fddc35bcc4d979467 100644 --- a/docs/src/ai/agent-panel.md +++ b/docs/src/ai/agent-panel.md @@ -134,7 +134,7 @@ You can also do this at any time with an ongoing thread via the "Agent Options" After you've configured your LLM providers—either via [a custom API key](./llm-providers.md) or through [Zed's hosted models](./models.md)—you can switch between their models by clicking on the model selector on the message editor or by using the {#kb agent::ToggleModelSelector} keybinding. -> The same model can be offered via multiple providers - for example, Claude Sonnet 4 is available via Zed Pro, OpenRouter, Anthropic directly, and more. +> The same model can be offered via multiple providers - for example, Claude Sonnet 4.5 is available via Zed Pro, OpenRouter, Anthropic directly, and more. > Make sure you've selected the correct model **_provider_** for the model you'd like to use, delineated by the logo to the left of the model in the model selector. ### Favoriting Models diff --git a/docs/src/ai/agent-settings.md b/docs/src/ai/agent-settings.md index 9995062b07afa359e2e2c5fd3b439c5a0311ad84..511da53c4353616531205762a111847cb9f41f73 100644 --- a/docs/src/ai/agent-settings.md +++ b/docs/src/ai/agent-settings.md @@ -11,7 +11,7 @@ Settings for Zed's Agent Panel, including model selection, UI preferences, and t ### Default Model {#default-model} -If you're using [Zed's hosted LLM service](./subscription.md), it sets `claude-sonnet-4` as the default model for agentic work (agent panel, inline assistant) and `gpt-5-nano` as the default "fast" model (thread summarization, git commit messages). If you're not subscribed or want to change these defaults, you can manually edit the `default_model` object in your settings: +If you're using [Zed's hosted LLM service](./subscription.md), it sets `claude-sonnet-4-5` as the default model for agentic work (agent panel, inline assistant) and `gpt-5-nano` as the default "fast" model (thread summarization, git commit messages). If you're not subscribed or want to change these defaults, you can manually edit the `default_model` object in your settings: ```json [settings] { @@ -37,7 +37,7 @@ You can assign distinct and specific models for the following AI-powered feature "agent": { "default_model": { "provider": "zed.dev", - "model": "claude-sonnet-4" + "model": "claude-sonnet-4-5" }, "inline_assistant_model": { "provider": "anthropic", @@ -68,7 +68,7 @@ Here's how you can customize your settings file ([how to edit](../configuring-ze "agent": { "default_model": { "provider": "zed.dev", - "model": "claude-sonnet-4" + "model": "claude-sonnet-4-5" }, "inline_alternatives": [ { @@ -85,14 +85,14 @@ When multiple models are configured, you'll see in the Inline Assistant UI butto The models you specify here are always used in _addition_ to your [default model](#default-model). For example, the following configuration will generate three outputs for every assist. -One with Claude Sonnet 4 (the default model), another with GPT-5-mini, and another one with Gemini 2.5 Flash. +One with Claude Sonnet 4.5 (the default model), another with GPT-5-mini, and another one with Gemini 3 Flash. ```json [settings] { "agent": { "default_model": { "provider": "zed.dev", - "model": "claude-sonnet-4" + "model": "claude-sonnet-4-5" }, "inline_alternatives": [ { @@ -101,7 +101,7 @@ One with Claude Sonnet 4 (the default model), another with GPT-5-mini, and anoth }, { "provider": "zed.dev", - "model": "gemini-2.5-flash" + "model": "gemini-3-flash" } ] } @@ -128,7 +128,7 @@ Specify a custom temperature for a provider and/or model: // To set parameters for a specific provider and model: { "provider": "zed.dev", - "model": "claude-sonnet-4", + "model": "claude-sonnet-4-5", "temperature": 1.0 } ] diff --git a/docs/src/ai/inline-assistant.md b/docs/src/ai/inline-assistant.md index 05fafa336e4f6a2d28e970ca51beea4250b08b9c..f1391f8d58dc8746bceece6bcfa3ce091ea4785f 100644 --- a/docs/src/ai/inline-assistant.md +++ b/docs/src/ai/inline-assistant.md @@ -54,7 +54,7 @@ Here's how you can customize your settings file ([how to edit](../configuring-ze "agent": { "default_model": { "provider": "zed.dev", - "model": "claude-sonnet-4" + "model": "claude-sonnet-4-5" }, "inline_alternatives": [ { @@ -71,14 +71,14 @@ When multiple models are configured, you'll see in the Inline Assistant UI butto The models you specify here are always used in _addition_ to your [default model](#default-model). For example, the following configuration will generate three outputs for every assist. -One with Claude Sonnet 4 (the default model), another with GPT-5-mini, and another one with Gemini 2.5 Flash. +One with Claude Sonnet 4.5 (the default model), another with GPT-5-mini, and another one with Gemini 3 Flash. ```json [settings] { "agent": { "default_model": { "provider": "zed.dev", - "model": "claude-sonnet-4" + "model": "claude-sonnet-4-5" }, "inline_alternatives": [ { @@ -87,7 +87,7 @@ One with Claude Sonnet 4 (the default model), another with GPT-5-mini, and anoth }, { "provider": "zed.dev", - "model": "gemini-2.5-flash" + "model": "gemini-3-flash" } ] } diff --git a/docs/src/ai/llm-providers.md b/docs/src/ai/llm-providers.md index 2c01d1a8ca5a4d9e53077d5600b100c3a43e145a..7048ffdf9c5d4e974342842b09915888d2e5307b 100644 --- a/docs/src/ai/llm-providers.md +++ b/docs/src/ai/llm-providers.md @@ -304,8 +304,8 @@ Here is an example of a custom Google AI model you could add to your Zed setting "google": { "available_models": [ { - "name": "gemini-2.5-flash-preview-05-20", - "display_name": "Gemini 2.5 Flash (Thinking)", + "name": "gemini-3-flash-preview", + "display_name": "Gemini 3 Flash (Thinking)", "max_tokens": 1000000, "mode": { "type": "thinking", @@ -508,7 +508,7 @@ Zed will also use the `OPENAI_API_KEY` environment variable if it's defined. #### Custom Models {#openai-custom-models} -The Zed agent comes pre-configured to use the latest version for common models (GPT-5, GPT-5 mini, o4-mini, GPT-4.1, and others). +The Zed agent comes pre-configured to use the latest version for common OpenAI models (GPT-5.2, GPT-5 mini, GPT-5.2 Codex, and others). To use alternate models, perhaps a preview release, or if you wish to control the request parameters, you can do so by adding the following to your Zed settings file ([how to edit](../configuring-zed.md#settings-files)): ```json [settings] @@ -517,20 +517,20 @@ To use alternate models, perhaps a preview release, or if you wish to control th "openai": { "available_models": [ { - "name": "gpt-5", - "display_name": "gpt-5 high", + "name": "gpt-5.2", + "display_name": "gpt-5.2 high", "reasoning_effort": "high", "max_tokens": 272000, "max_completion_tokens": 20000 }, { - "name": "gpt-4o-2024-08-06", - "display_name": "GPT 4o Summer 2024", - "max_tokens": 128000 + "name": "gpt-5-nano", + "display_name": "GPT-5 Nano", + "max_tokens": 400000 }, { - "name": "gpt-5-codex", - "display_name": "GPT-5 Codex", + "name": "gpt-5.2-codex", + "display_name": "GPT-5.2 Codex", "max_tokens": 128000, "capabilities": { "chat_completions": false @@ -544,9 +544,9 @@ To use alternate models, perhaps a preview release, or if you wish to control th You must provide the model's context window in the `max_tokens` parameter; this can be found in the [OpenAI model documentation](https://platform.openai.com/docs/models). -OpenAI `o1` and `o`-class models should set `max_completion_tokens` as well to avoid incurring high reasoning token costs. +For reasoning-focused models, set `max_completion_tokens` as well to avoid incurring high reasoning token costs. -If a model does not support the `/chat/completions` endpoint (for example `gpt-5-codex`), disable it by setting `capabilities.chat_completions` to `false`. Zed will use the Responses endpoint instead. +If a model does not support the `/chat/completions` endpoint (for example `gpt-5.2-codex`), disable it by setting `capabilities.chat_completions` to `false`. Zed will use the Responses endpoint instead. Custom models will be listed in the model dropdown in the Agent Panel. diff --git a/docs/src/ai/models.md b/docs/src/ai/models.md index 22618955d36dddfbd5ffc3266af038cfd86bf5fc..4065912114cc5ce9a71c62d2a074c130ae3d1690 100644 --- a/docs/src/ai/models.md +++ b/docs/src/ai/models.md @@ -1,6 +1,6 @@ --- title: AI Models and Pricing - Zed -description: AI models available via Zed Pro including Claude, GPT-5, Gemini, and Grok. Pricing, context windows, and tool call support. +description: AI models available via Zed Pro including Claude, GPT-5.2, Gemini, and Grok. Pricing, context windows, and tool call support. --- # Models @@ -13,19 +13,15 @@ Zed's plans offer hosted versions of major LLMs with higher rate limits than dir | | Anthropic | Output | $25.00 | $27.50 | | | Anthropic | Input - Cache Write | $6.25 | $6.875 | | | Anthropic | Input - Cache Read | $0.50 | $0.55 | -| Claude Opus 4.1 | Anthropic | Input | $15.00 | $16.50 | -| | Anthropic | Output | $75.00 | $82.50 | -| | Anthropic | Input - Cache Write | $18.75 | $20.625 | -| | Anthropic | Input - Cache Read | $1.50 | $1.65 | +| Claude Opus 4.6 | Anthropic | Input | $5.00 | $5.50 | +| | Anthropic | Output | $25.00 | $27.50 | +| | Anthropic | Input - Cache Write | $6.25 | $6.875 | +| | Anthropic | Input - Cache Read | $0.50 | $0.55 | | Claude Sonnet 4.5 | Anthropic | Input | $3.00 | $3.30 | | | Anthropic | Output | $15.00 | $16.50 | | | Anthropic | Input - Cache Write | $3.75 | $4.125 | | | Anthropic | Input - Cache Read | $0.30 | $0.33 | -| Claude Sonnet 4 | Anthropic | Input | $3.00 | $3.30 | -| | Anthropic | Output | $15.00 | $16.50 | -| | Anthropic | Input - Cache Write | $3.75 | $4.125 | -| | Anthropic | Input - Cache Read | $0.30 | $0.33 | -| Claude Sonnet 3.7 | Anthropic | Input | $3.00 | $3.30 | +| Claude Sonnet 4.6 | Anthropic | Input | $3.00 | $3.30 | | | Anthropic | Output | $15.00 | $16.50 | | | Anthropic | Input - Cache Write | $3.75 | $4.125 | | | Anthropic | Input - Cache Read | $0.30 | $0.33 | @@ -33,7 +29,10 @@ Zed's plans offer hosted versions of major LLMs with higher rate limits than dir | | Anthropic | Output | $5.00 | $5.50 | | | Anthropic | Input - Cache Write | $1.25 | $1.375 | | | Anthropic | Input - Cache Read | $0.10 | $0.11 | -| GPT-5 | OpenAI | Input | $1.25 | $1.375 | +| GPT-5.2 | OpenAI | Input | $1.25 | $1.375 | +| | OpenAI | Output | $10.00 | $11.00 | +| | OpenAI | Cached Input | $0.125 | $0.1375 | +| GPT-5.2 Codex | OpenAI | Input | $1.25 | $1.375 | | | OpenAI | Output | $10.00 | $11.00 | | | OpenAI | Cached Input | $0.125 | $0.1375 | | GPT-5 mini | OpenAI | Input | $0.25 | $0.275 | @@ -42,11 +41,9 @@ Zed's plans offer hosted versions of major LLMs with higher rate limits than dir | GPT-5 nano | OpenAI | Input | $0.05 | $0.055 | | | OpenAI | Output | $0.40 | $0.44 | | | OpenAI | Cached Input | $0.005 | $0.0055 | -| Gemini 3.0 Pro | Google | Input | $2.00 | $2.20 | +| Gemini 3 Pro | Google | Input | $2.00 | $2.20 | | | Google | Output | $12.00 | $13.20 | -| Gemini 2.5 Pro | Google | Input | $1.25 | $1.375 | -| | Google | Output | $10.00 | $11.00 | -| Gemini 2.5 Flash | Google | Input | $0.30 | $0.33 | +| Gemini 3 Flash | Google | Input | $0.30 | $0.33 | | | Google | Output | $2.50 | $2.75 | | Grok 4 | X.ai | Input | $3.00 | $3.30 | | | X.ai | Output | $15.00 | $16.5 | @@ -61,6 +58,17 @@ Zed's plans offer hosted versions of major LLMs with higher rate limits than dir | | X.ai | Output | $1.50 | $1.65 | | | X.ai | Cached Input | $0.02 | $0.022 | +## Recent Model Retirements + +As of February 19, 2026, Zed Pro serves newer model versions in place of the retired models below: + +- Claude Opus 4.1 → Claude Opus 4.5 or Claude Opus 4.6 +- Claude Sonnet 4 → Claude Sonnet 4.5 or Claude Sonnet 4.6 +- Claude Sonnet 3.7 (retired Feb 19) → Claude Sonnet 4.5 or Claude Sonnet 4.6 +- GPT-5.1 and GPT-5 → GPT-5.2 or GPT-5.2 Codex +- Gemini 2.5 Pro → Gemini 3 Pro +- Gemini 2.5 Flash → Gemini 3 Flash + ## Usage {#usage} Any usage of a Zed-hosted model will be billed at the Zed Price (rightmost column above). See [Plans and Usage](./plans-and-usage.md) for details on Zed's plans and limits for use of hosted models. @@ -74,18 +82,18 @@ A context window is the maximum span of text and code an LLM can consider at onc | Model | Provider | Zed-Hosted Context Window | | ----------------- | --------- | ------------------------- | | Claude Opus 4.5 | Anthropic | 200k | -| Claude Opus 4.1 | Anthropic | 200k | -| Claude Sonnet 4 | Anthropic | 200k | -| Claude Sonnet 3.7 | Anthropic | 200k | +| Claude Opus 4.6 | Anthropic | 200k | +| Claude Sonnet 4.5 | Anthropic | 200k | +| Claude Sonnet 4.6 | Anthropic | 200k | | Claude Haiku 4.5 | Anthropic | 200k | -| GPT-5 | OpenAI | 400k | +| GPT-5.2 | OpenAI | 400k | +| GPT-5.2 Codex | OpenAI | 400k | | GPT-5 mini | OpenAI | 400k | | GPT-5 nano | OpenAI | 400k | -| Gemini 2.5 Pro | Google | 200k | -| Gemini 2.5 Flash | Google | 200k | -| Gemini 3.0 Pro | Google | 200k | +| Gemini 3 Pro | Google | 200k | +| Gemini 3 Flash | Google | 200k | -> Context window limits for hosted Sonnet 4 and Gemini 2.5 Pro/Flash may increase in future releases. +> Context window limits for hosted Sonnet 4.5/4.6 and Gemini 3 Pro/Flash may increase in future releases. Each Agent thread and text thread in Zed maintains its own context window. The more prompts, attached files, and responses included in a session, the larger the context window grows. diff --git a/script/docs-suggest-publish b/script/docs-suggest-publish index ed989d5c4d4e7110e4c02f93a95376261267e6eb..24ea1c31addf59ad4abc8ef10e4649fdead4e7bb 100755 --- a/script/docs-suggest-publish +++ b/script/docs-suggest-publish @@ -301,6 +301,13 @@ EOF echo "$MANIFEST" | jq -r '.suggestions[] | "- [PR #\(.pr)](\(.file)): \(.title)"' >> "$PR_BODY_FILE" +cat >> "$PR_BODY_FILE" << 'EOF' + +Release Notes: + +- N/A +EOF + git add docs/ git commit -m "docs: auto-apply preview release suggestions diff --git a/script/run-background-agent-mvp-local b/script/run-background-agent-mvp-local index 60434035e7d461837cf7fd5297331563d4c9fcf7..f4f7bf7b8e327031111209e531ee36fd7cac96dc 100755 --- a/script/run-background-agent-mvp-local +++ b/script/run-background-agent-mvp-local @@ -156,6 +156,7 @@ Required workflow: - Validation - Potentially Related Issues (High/Medium/Low from LINKED_ISSUES.md) - Reviewer Checklist + - Release Notes (final section, formatted as "Release Notes:", blank line, then one bullet like "- N/A" when not user-facing) Constraints: - Keep changes narrowly scoped to this crash.