@@ -268,11 +268,6 @@ async function show_presets_in_group_quick_pick(params: {
268268 }
269269 }
270270
271- if ( presets_in_group . length === 0 ) {
272- vscode . window . showWarningMessage ( 'This group contains no presets.' )
273- return null
274- }
275-
276271 const quick_pick = vscode . window . createQuickPick <
277272 vscode . QuickPickItem & { preset_name : string }
278273 > ( )
@@ -424,23 +419,44 @@ async function show_preset_quick_pick(params: {
424419 }
425420 }
426421
427- const preset_name_from_group = await show_presets_in_group_quick_pick ( {
428- ...params ,
429- group_name : group_name
430- } )
422+ const presets_in_group : ConfigPresetFormat [ ] = [ ]
423+ if ( group_name == 'Ungrouped' ) {
424+ const first_group_index = presets . findIndex ( ( p ) => ! p . chatbot )
425+ const ungrouped_presets =
426+ first_group_index == - 1
427+ ? presets
428+ : presets . slice ( 0 , first_group_index )
429+ presets_in_group . push ( ...ungrouped_presets . filter ( ( p ) => p . chatbot ) )
430+ } else {
431+ const group_index = presets . findIndex ( ( p ) => p . name === group_name )
432+ if ( group_index != - 1 ) {
433+ for ( let i = group_index + 1 ; i < presets . length ; i ++ ) {
434+ const preset = presets [ i ]
435+ if ( ! preset . chatbot ) break
436+ presets_in_group . push ( preset )
437+ }
438+ }
439+ }
431440
432- if ( preset_name_from_group === BACK_ACTION ) {
433- // Fall through to show the main quick pick
434- group_to_highlight_on_back = group_name
435- } else if ( preset_name_from_group ) {
436- update_last_used_preset_or_group ( {
437- panel_provider,
438- preset_name : preset_name_from_group ,
441+ if ( presets_in_group . length > 0 ) {
442+ const preset_name_from_group = await show_presets_in_group_quick_pick ( {
443+ ...params ,
439444 group_name : group_name
440445 } )
441- return [ preset_name_from_group ]
442- } else {
443- return [ ] // User dismissed quick pick
446+
447+ if ( preset_name_from_group === BACK_ACTION ) {
448+ // Fall through to show the main quick pick
449+ group_to_highlight_on_back = group_name
450+ } else if ( preset_name_from_group ) {
451+ update_last_used_preset_or_group ( {
452+ panel_provider,
453+ preset_name : preset_name_from_group ,
454+ group_name : group_name
455+ } )
456+ return [ preset_name_from_group ]
457+ } else {
458+ return [ ] // User dismissed quick pick
459+ }
444460 }
445461 }
446462 }
@@ -481,7 +497,7 @@ async function show_preset_quick_pick(params: {
481497 label : 'Ungrouped' ,
482498 group_name : 'Ungrouped' ,
483499 description,
484- buttons : [ run_group_button ]
500+ buttons : selected_presets_count > 0 ? [ run_group_button ] : undefined
485501 } )
486502 }
487503
@@ -497,13 +513,16 @@ async function show_preset_quick_pick(params: {
497513 if ( p_in_group . isSelected ) selected_presets_count ++
498514 }
499515
500- const description = `${ group_presets_count } ${
501- group_presets_count == 1 ? 'preset' : 'presets'
502- } ${
503- selected_presets_count > 0
504- ? ` · ${ selected_presets_count } selected`
505- : ''
506- } `
516+ let description = ''
517+ if ( group_presets_count > 0 ) {
518+ description = `${ group_presets_count } ${
519+ group_presets_count == 1 ? 'preset' : 'presets'
520+ } `
521+ if ( selected_presets_count > 0 ) {
522+ description += ` · ${ selected_presets_count } selected`
523+ }
524+ }
525+
507526 const is_unnamed_group =
508527 ! preset . name || / ^ \( \d + \) $ / . test ( preset . name . trim ( ) )
509528 items . push ( {
@@ -512,7 +531,7 @@ async function show_preset_quick_pick(params: {
512531 : preset . name . replace ( / \( \d + \) $ / , '' ) ,
513532 group_name : preset . name ,
514533 description,
515- buttons : [ run_group_button ]
534+ buttons : selected_presets_count > 0 ? [ run_group_button ] : undefined
516535 } )
517536 }
518537 }
@@ -789,9 +808,10 @@ async function resolve_presets(params: {
789808 const last_preset_name =
790809 params . context . workspaceState . get < string > ( last_selected_preset_key ) ??
791810 params . context . globalState . get < string > ( last_selected_preset_key )
811+
792812 if ( last_preset_name !== undefined ) {
793813 const preset = all_presets . find ( ( p ) => p . name === last_preset_name )
794- if ( preset ) {
814+ if ( preset && preset . chatbot ) {
795815 if ( get_is_preset_disabled ( preset ) ) {
796816 if (
797817 ! is_in_code_completions_mode &&
0 commit comments