diff --git a/app/javascript/dashboard/i18n/locale/en/settings.json b/app/javascript/dashboard/i18n/locale/en/settings.json
index aee2644e6..9e61af545 100644
--- a/app/javascript/dashboard/i18n/locale/en/settings.json
+++ b/app/javascript/dashboard/i18n/locale/en/settings.json
@@ -392,6 +392,7 @@
"DESCRIPTION": "Select AI models for different features.",
"SELECT_MODEL": "Select model",
"CREDITS_PER_MESSAGE": "{credits} credit/message",
+ "COMING_SOON": "Coming Soon",
"EDITOR": {
"TITLE": "Editor Features",
"DESCRIPTION": "Powers smart compose, grammar corrections, tone adjustments, and content enhancement in your message editor."
diff --git a/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue b/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue
index adc8bd0b1..a871adba4 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue
@@ -26,7 +26,7 @@ const emit = defineEmits(['change']);
const PROVIDER_ICONS = {
openai: 'i-logos-openai-icon',
- anthropic: 'i-logos-claude-icon',
+ anthropic: 'i-logos-anthropic-icon',
mistral: 'i-logos-mistral-icon',
gemini: 'i-logos-gemini-icon',
};
@@ -135,7 +135,10 @@ const selectModel = model => {
:key="model.id"
:click="() => selectModel(model)"
class="rounded-lg hover:bg-n-alpha-1"
- :class="{ 'bg-n-alpha-2': selectedModelId === model.id }"
+ :class="{
+ 'bg-n-alpha-2': selectedModelId === model.id,
+ 'pointer-events-none opacity-60': model.coming_soon,
+ }"
>
{
{{ t('GENERAL.PREFERRED') }}
-
+
+ {{ t('CAPTAIN_SETTINGS.MODEL_CONFIG.COMING_SOON') }}
+
+
{{ getCreditLabel(model) }}
diff --git a/app/javascript/dashboard/store/captain/config.js b/app/javascript/dashboard/store/captain/config.js
index cb6396e9b..458925669 100644
--- a/app/javascript/dashboard/store/captain/config.js
+++ b/app/javascript/dashboard/store/captain/config.js
@@ -16,7 +16,16 @@ const getters = {
getUIFlags: $state => $state.uiFlags,
getModelsForFeature: $state => featureKey => {
const feature = $state.features[featureKey];
- return feature?.models || [];
+ const models = feature?.models || [];
+
+ return [...models].sort((a, b) => {
+ // Move coming_soon items to the end
+ if (a.coming_soon && !b.coming_soon) return 1;
+ if (!a.coming_soon && b.coming_soon) return -1;
+
+ // Sort by credit_multiplier (highest first)
+ return (b.credit_multiplier || 0) - (a.credit_multiplier || 0);
+ });
},
getDefaultModelForFeature: $state => featureKey => {
const feature = $state.features[featureKey];
diff --git a/config/llm.yml b/config/llm.yml
index 62ae955f9..47f32442d 100644
--- a/config/llm.yml
+++ b/config/llm.yml
@@ -2,6 +2,9 @@ providers:
openai:
display_name: 'OpenAI'
logo: openai.png
+ anthropic:
+ display_name: 'Anthropic'
+ logo: anthropic.png
models:
gpt-4.1:
@@ -23,7 +26,7 @@ models:
gpt-5.1:
provider: openai
display_name: 'GPT-5.1'
- credit_multiplier: 1
+ credit_multiplier: 1.2
gpt-5-mini:
provider: openai
display_name: 'GPT-5 Mini'
@@ -35,7 +38,17 @@ models:
gpt-5.2:
provider: openai
display_name: 'GPT-5.2'
+ credit_multiplier: 1.5
+ claude-haiku-4.5:
+ provider: anthropic
+ display_name: 'Claude Haiku 4.5'
+ coming_soon: true
credit_multiplier: 1
+ claude-sonnet-4:
+ provider: anthropic
+ display_name: 'Claude Sonnet 4'
+ coming_soon: true
+ credit_multiplier: 2
whisper-1:
provider: openai
display_name: 'Whisper'
@@ -48,13 +61,40 @@ models:
features:
editor:
models:
- [gpt-4.1-mini, gpt-4.1-nano, gpt-5-mini, gpt-4.1, gpt-5, gpt-5.1, gpt-5.2]
+ [
+ gpt-4.1-mini,
+ gpt-4.1-nano,
+ gpt-5-mini,
+ gpt-4.1,
+ gpt-5,
+ gpt-5.1,
+ gpt-5.2,
+ claude-haiku-4.5,
+ ]
default: gpt-4.1-mini
assistant:
- models: [gpt-5-mini, gpt-4.1, gpt-5, gpt-5.1, gpt-5.2]
+ models:
+ [
+ gpt-5-mini,
+ gpt-4.1,
+ gpt-5,
+ gpt-5.1,
+ gpt-5.2,
+ claude-haiku-4.5,
+ claude-sonnet-4,
+ ]
default: gpt-5.2
copilot:
- models: [gpt-5-mini, gpt-4.1, gpt-5, gpt-5.1, gpt-5.2]
+ models:
+ [
+ gpt-5-mini,
+ gpt-4.1,
+ gpt-5,
+ gpt-5.1,
+ gpt-5.2,
+ claude-haiku-4.5,
+ claude-sonnet-4,
+ ]
default: gpt-5.2
label_suggestion:
models: [gpt-4.1-nano, gpt-4.1-mini, gpt-5-mini]
diff --git a/lib/llm/config_service.rb b/lib/llm/config_service.rb
index 250637d61..73ee53370 100644
--- a/lib/llm/config_service.rb
+++ b/lib/llm/config_service.rb
@@ -56,6 +56,7 @@ module Llm::ConfigService
id: model_name,
display_name: model['display_name'],
provider: model['provider'],
+ coming_soon: model['coming_soon'],
credit_multiplier: model['credit_multiplier']
}
end,