Skip to content

Commit cd49171

Browse files
TeigenTeigen
authored andcommitted
feat: support "Default (CLI default)" option for model selection
Allow users to leave the default model unset, so sessions use whatever the Claude CLI defaults to rather than forcing a specific model. - Add empty-value "Default (CLI default)" option to the model dropdown - Treat empty string as undefined when passing model to Session - Apply consistently across session creation, quick-start, and Ralph
1 parent 0f57342 commit cd49171

4 files changed

Lines changed: 14 additions & 5 deletions

File tree

src/web/public/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,7 @@ <h3>App Settings</h3>
10851085
<div class="form-row">
10861086
<label>Default Model</label>
10871087
<select id="appSettingsDefaultModel" class="form-select">
1088+
<option value="">Default (CLI default)</option>
10881089
<option value="opus">Opus (Most capable)</option>
10891090
<option value="sonnet">Sonnet (Balanced)</option>
10901091
<option value="haiku">Haiku (Fast & cheap)</option>

src/web/public/settings-ui.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,7 +1278,7 @@ Object.assign(CodemanApp.prototype, {
12781278
// Default model
12791279
const defaultModelEl = document.getElementById('appSettingsDefaultModel');
12801280
if (defaultModelEl) {
1281-
defaultModelEl.value = config.defaultModel || 'opus';
1281+
defaultModelEl.value = config.defaultModel || '';
12821282
}
12831283
// Show recommendations
12841284
const showRecsEl = document.getElementById('appSettingsShowModelRecommendations');
@@ -1317,7 +1317,7 @@ Object.assign(CodemanApp.prototype, {
13171317
if (reviewEl?.value) agentTypeOverrides.review = reviewEl.value;
13181318

13191319
const config = {
1320-
defaultModel: defaultModelEl?.value || 'opus',
1320+
defaultModel: defaultModelEl?.value || '',
13211321
showRecommendations: showRecsEl?.checked ?? true,
13221322
agentTypeOverrides,
13231323
};

src/web/routes/ralph-routes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ export function registerRalphRoutes(
308308
useMux: true,
309309
mode: 'claude',
310310
niceConfig,
311-
model: rlModelConfig?.defaultModel,
311+
model: rlModelConfig?.defaultModel || undefined,
312312
claudeMode: rlClaudeModeConfig.claudeMode,
313313
allowedTools: rlClaudeModeConfig.allowedTools,
314314
});

src/web/routes/session-routes.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,11 @@ export function registerSessionRoutes(
186186
const modelConfig = await ctx.getModelConfig();
187187
const mode = body.mode || 'claude';
188188
const model =
189-
mode === 'opencode' ? body.openCodeConfig?.model : mode !== 'shell' ? modelConfig?.defaultModel : undefined;
189+
mode === 'opencode'
190+
? body.openCodeConfig?.model
191+
: mode !== 'shell'
192+
? modelConfig?.defaultModel || undefined
193+
: undefined;
190194
const claudeModeConfig = await ctx.getClaudeModeConfig();
191195
const session = new Session({
192196
workingDir,
@@ -766,7 +770,11 @@ export function registerSessionRoutes(
766770
const niceConfig = await ctx.getGlobalNiceConfig();
767771
const qsModelConfig = await ctx.getModelConfig();
768772
const qsModel =
769-
mode === 'opencode' ? openCodeConfig?.model : mode !== 'shell' ? qsModelConfig?.defaultModel : undefined;
773+
mode === 'opencode'
774+
? openCodeConfig?.model
775+
: mode !== 'shell'
776+
? qsModelConfig?.defaultModel || undefined
777+
: undefined;
770778
const qsClaudeModeConfig = await ctx.getClaudeModeConfig();
771779
const session = new Session({
772780
workingDir: casePath,

0 commit comments

Comments
 (0)