Compare commits

...

2 Commits

Author SHA1 Message Date
Saoud Rizwan a0a392d636 v3.38.2 Release Notes 2025-11-24 11:40:26 -08:00
Saoud Rizwan 5fe80172ed Add Opus 4.5 2025-11-24 11:37:49 -08:00
16 changed files with 71 additions and 22 deletions
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## [3.38.2]
- Add Claude Opus 4.5
## [3.38.1]
### Fixed
+1
View File
@@ -17,6 +17,7 @@ description: "Learn how to configure and use Anthropic Claude models with Cline.
Cline supports the following Anthropic Claude models:
- `claude-haiku-4-5-20251001`
- `claude-opus-4-5-20251101`
- `claude-opus-4-1-20250805`
- `claude-opus-4-20250514`
- `anthropic/claude-sonnet-4.5` (Recommended)
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "claude-dev",
"version": "3.38.1",
"version": "3.38.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "claude-dev",
"version": "3.38.1",
"version": "3.38.2",
"license": "Apache-2.0",
"dependencies": {
"@anthropic-ai/sdk": "^0.37.0",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "claude-dev",
"displayName": "Cline",
"description": "Autonomous coding agent right in your IDE, capable of creating/editing files, running commands, using the browser, and more with your permission every step of the way.",
"version": "3.38.1",
"version": "3.38.2",
"icon": "assets/icons/icon.png",
"engines": {
"vscode": "^1.84.0"
+1
View File
@@ -71,6 +71,7 @@ export class AnthropicHandler implements ApiHandler {
case "claude-3-7-sonnet-20250219":
case "claude-3-5-sonnet-20241022":
case "claude-3-5-haiku-20241022":
case "claude-opus-4-5-20251101":
case "claude-opus-4-20250514":
case "claude-opus-4-1-20250805":
case "claude-3-opus-20240229":
+1
View File
@@ -95,6 +95,7 @@ export class VertexHandler implements ApiHandler {
case "claude-haiku-4-5@20251001":
case "claude-sonnet-4-5@20250929":
case "claude-sonnet-4@20250514":
case "claude-opus-4-5@20251101":
case "claude-opus-4-1@20250805":
case "claude-opus-4@20250514":
case "claude-3-7-sonnet@20250219":
@@ -43,6 +43,7 @@ export async function createOpenRouterStream(
case "anthropic/claude-sonnet-4.5":
case "anthropic/claude-4.5-sonnet": // OpenRouter accidentally included this in model list for a brief moment, and users may be using this model id. And to support prompt caching, we need to add it here.
case "anthropic/claude-sonnet-4":
case "anthropic/claude-opus-4.5":
case "anthropic/claude-opus-4.1":
case "anthropic/claude-opus-4":
case "anthropic/claude-3.7-sonnet":
@@ -106,6 +107,7 @@ export async function createOpenRouterStream(
case "anthropic/claude-sonnet-4.5":
case "anthropic/claude-4.5-sonnet":
case "anthropic/claude-sonnet-4":
case "anthropic/claude-opus-4.5":
case "anthropic/claude-opus-4.1":
case "anthropic/claude-opus-4":
case "anthropic/claude-3.7-sonnet":
@@ -150,6 +152,7 @@ export async function createOpenRouterStream(
case "anthropic/claude-sonnet-4.5":
case "anthropic/claude-4.5-sonnet":
case "anthropic/claude-sonnet-4":
case "anthropic/claude-opus-4.5":
case "anthropic/claude-opus-4.1":
case "anthropic/claude-opus-4":
case "anthropic/claude-3.7-sonnet":
@@ -133,6 +133,11 @@ export async function refreshOpenRouterModels(controller: Controller): Promise<R
modelInfo.cacheWritesPrice = 3.75
modelInfo.cacheReadsPrice = 0.3
break
case "anthropic/claude-opus-4.5":
modelInfo.supportsPromptCache = true
modelInfo.cacheWritesPrice = 6.25
modelInfo.cacheReadsPrice = 0.5
break
case "anthropic/claude-opus-4.1":
case "anthropic/claude-opus-4":
modelInfo.supportsPromptCache = true
@@ -1,8 +1,8 @@
import { EmptyRequest } from "@shared/proto/cline/common"
import { OpenRouterCompatibleModelInfo, OpenRouterModelInfo } from "@shared/proto/cline/models"
import axios from "axios"
import { getAxiosSettings } from "@/shared/net"
import { toRequestyServiceUrl } from "@/shared/clients/requesty"
import { getAxiosSettings } from "@/shared/net"
import { Controller } from ".."
/**
@@ -59,4 +59,4 @@ export async function refreshRequestyModels(controller: Controller, _: EmptyRequ
}
return OpenRouterCompatibleModelInfo.create({ models })
}
}
+35
View File
@@ -359,6 +359,16 @@ export const anthropicModels = {
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"claude-opus-4-5-20251101": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-1-20250805": {
maxTokens: 8192,
contextWindow: 200_000,
@@ -462,6 +472,11 @@ export const claudeCodeModels = {
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-5-20251101": {
...anthropicModels["claude-opus-4-5-20251101"],
supportsImages: false,
supportsPromptCache: false,
},
"claude-opus-4-1-20250805": {
...anthropicModels["claude-opus-4-1-20250805"],
supportsImages: false,
@@ -545,6 +560,16 @@ export const bedrockModels = {
cacheReadsPrice: 0.3,
tiers: CLAUDE_SONNET_1M_TIERS,
},
"anthropic.claude-opus-4-5-20251101-v1:0": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"anthropic.claude-opus-4-20250514-v1:0": {
maxTokens: 8192,
contextWindow: 200_000,
@@ -872,6 +897,16 @@ export const vertexModels = {
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
},
"claude-opus-4-5@20251101": {
maxTokens: 8192,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5.0,
outputPrice: 25.0,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
},
"claude-opus-4-1@20250805": {
maxTokens: 8192,
contextWindow: 200_000,
@@ -2,6 +2,7 @@ import React from "react"
import Announcement from "@/components/chat/Announcement"
import CliInstallBanner, { CURRENT_CLI_BANNER_VERSION } from "@/components/common/CliInstallBanner"
import InfoBanner, { CURRENT_INFO_BANNER_VERSION } from "@/components/common/InfoBanner"
import NewModelBanner, { CURRENT_MODEL_BANNER_VERSION } from "@/components/common/NewModelBanner"
import HistoryPreview from "@/components/history/HistoryPreview"
import HomeHeader from "@/components/welcome/HomeHeader"
import { SuggestedTasks } from "@/components/welcome/SuggestedTasks"
@@ -22,10 +23,10 @@ export const WelcomeSection: React.FC<WelcomeSectionProps> = ({
taskHistory,
shouldShowQuickWins,
}) => {
const { lastDismissedInfoBannerVersion, lastDismissedCliBannerVersion } = useExtensionState()
const { lastDismissedInfoBannerVersion, lastDismissedCliBannerVersion, lastDismissedModelBannerVersion } = useExtensionState()
const shouldShowInfoBanner = lastDismissedInfoBannerVersion < CURRENT_INFO_BANNER_VERSION
// const shouldShowNewModelBanner = lastDismissedModelBannerVersion < CURRENT_MODEL_BANNER_VERSION
const shouldShowNewModelBanner = lastDismissedModelBannerVersion < CURRENT_MODEL_BANNER_VERSION
// Show CLI banner if not dismissed and platform is VSCode (not JetBrains/standalone)
const shouldShowCliBanner =
@@ -38,7 +39,7 @@ export const WelcomeSection: React.FC<WelcomeSectionProps> = ({
<div className="overflow-y-auto flex flex-col pb-2.5">
{shouldShowInfoBanner && <InfoBanner />}
{showAnnouncement && <Announcement hideAnnouncement={hideAnnouncement} version={version} />}
{/* {shouldShowNewModelBanner && <NewModelBanner />} */}
{shouldShowNewModelBanner && <NewModelBanner />}
{shouldShowCliBanner && <CliInstallBanner />}
<HomeHeader shouldShowQuickWins={shouldShowQuickWins} />
{!shouldShowQuickWins && taskHistory.length > 0 && <HistoryPreview showHistoryView={showHistoryView} />}
@@ -9,7 +9,7 @@ import { AccountServiceClient, StateServiceClient } from "@/services/grpc-client
import { getAsVar, VSC_INACTIVE_SELECTION_BACKGROUND } from "@/utils/vscStyles"
import { useApiConfigurationHandlers } from "../settings/utils/useApiConfigurationHandlers"
export const CURRENT_MODEL_BANNER_VERSION = 2
export const CURRENT_MODEL_BANNER_VERSION = 3
export const NewModelBanner: React.FC = () => {
const { clineUser } = useClineAuth()
@@ -31,7 +31,7 @@ export const NewModelBanner: React.FC = () => {
}, [])
const setNewModel = () => {
const modelId = "anthropic/claude-haiku-4.5"
const modelId = "anthropic/claude-opus-4.5"
// set both plan and act modes to use new model
handleFieldsChange({
planModeOpenRouterModelId: modelId,
@@ -74,10 +74,10 @@ export const NewModelBanner: React.FC = () => {
}}>
<h4 className="m-0 flex items-center gap-2">
<Megaphone className="w-4 h-4" />
Claude Haiku 4.5
Claude Opus 4.5
</h4>
<p className="m-0">
Anthropic's fastest model with frontier-level coding intelligence at a fraction of the cost.{" "}
Anthropic's latest model with SOTA performance at 3x lower cost than Opus 4.1.{" "}
<span className="text-link cursor-pointer">{user ? "Try new model" : "Try with Cline account"} </span>
</p>
@@ -51,21 +51,15 @@ const featuredModels = [
label: "Best",
},
{
id: "google/gemini-3-pro-preview",
description: "Google's latest reasoning model with 1M context window",
id: "anthropic/claude-opus-4.5",
description: "SOTA performance on coding at 3x lower cost than Opus 4.1",
label: "New",
},
{
id: "openai/gpt-5.1",
description: "Latest flagship model from OpenAI with enhanced coding capabilities",
id: "google/gemini-3-pro-preview",
description: "Google's latest reasoning model with 1M context window",
label: "Trending",
},
{
id: "minimax/minimax-m2",
description: "Compact, high-efficiency model optimized for coding and agentic workflows",
label: "Free",
isFree: true,
},
{
id: "x-ai/grok-code-fast-1",
description: "Advanced model with 262K context for complex coding",
@@ -268,6 +262,7 @@ const OpenRouterModelPicker: React.FC<OpenRouterModelPickerProps> = ({ isPopup,
selectedModelId?.toLowerCase().includes("claude-sonnet-4") ||
selectedModelId?.toLowerCase().includes("claude-opus-4.1") ||
selectedModelId?.toLowerCase().includes("claude-opus-4") ||
selectedModelId?.toLowerCase().includes("claude-opus-4.5") ||
selectedModelId?.toLowerCase().includes("claude-3-7-sonnet") ||
selectedModelId?.toLowerCase().includes("claude-3.7-sonnet") ||
selectedModelId?.toLowerCase().includes("claude-3.7-sonnet:thinking")
@@ -15,6 +15,7 @@ export const SUPPORTED_ANTHROPIC_THINKING_MODELS = [
"claude-3-7-sonnet-20250219",
"claude-sonnet-4-20250514",
`claude-sonnet-4-20250514${CLAUDE_SONNET_1M_SUFFIX}`,
"claude-opus-4-5-20251101",
"claude-opus-4-20250514",
"claude-opus-4-1-20250805",
"claude-sonnet-4-5-20250929",
@@ -18,6 +18,7 @@ const CLAUDE_MODELS = [
"anthropic.claude-sonnet-4-5-20250929-v1:0",
`anthropic.claude-sonnet-4-20250514-v1:0${CLAUDE_SONNET_1M_SUFFIX}`,
`anthropic.claude-sonnet-4-5-20250929-v1:0${CLAUDE_SONNET_1M_SUFFIX}`,
"anthropic.claude-opus-4-5-20251101-v1:0",
"anthropic.claude-opus-4-1-20250805-v1:0",
"anthropic.claude-opus-4-20250514-v1:0",
"anthropic.claude-haiku-4-5-20251001-v1:0",
@@ -26,6 +26,7 @@ const SUPPORTED_THINKING_MODELS = [
"claude-sonnet-4-5@20250929",
"claude-3-7-sonnet@20250219",
"claude-sonnet-4@20250514",
"claude-opus-4-5@20251101",
"claude-opus-4@20250514",
"claude-opus-4-1@20250805",
"gemini-2.5-flash",