Skip to content

Commit 599c8dc

Browse files
committed
Refactor preset group naming logic in the UI and Quick Pick to consistently display unnamed groups as "Group" instead of including generated IDs, and fix CSS class names in TextItem for hidden response content
1 parent e998065 commit 599c8dc

4 files changed

Lines changed: 63 additions & 30 deletions

File tree

‎packages/ui/src/components/editor/panel/Presets/Presets.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,8 +594,8 @@ export const Presets: React.FC<Presets.Props> = (props) => {
594594
} else {
595595
// Group (no chatbot)
596596
display_name = is_unnamed
597-
? `Group ${preset.name}`
598-
: preset.name
597+
? 'Group'
598+
: preset.name.replace(/ \(\d+\)$/, '')
599599
}
600600

601601
const get_subtitle = (): string => {

‎packages/ui/src/components/editor/panel/ResponsePreview/components/TextItem.module.scss‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,27 @@
4141
&:hover {
4242
color: var(--cwc-text-color);
4343

44-
& .line {
44+
& .hidden__line {
4545
background-color: var(--cwc-border-color) !important;
4646
}
4747
}
48-
}
4948

50-
.line {
51-
flex-grow: 1;
52-
height: 1px;
53-
background-color: var(--cwc-border-color-dimmed);
54-
}
49+
&__line {
50+
flex-grow: 1;
51+
height: 1px;
52+
background-color: var(--cwc-border-color-dimmed);
53+
}
5554

56-
.icon {
57-
position: absolute;
58-
left: 50%;
59-
transform: translateX(-50%);
60-
background-color: var(--vscode-sideBar-background);
61-
padding: 0 var(--padding-8px);
62-
}
55+
&__icon {
56+
position: absolute;
57+
left: 50%;
58+
transform: translateX(-50%);
59+
background-color: var(--vscode-sideBar-background);
60+
padding: 0 var(--padding-8px);
61+
}
6362

64-
.tokens {
65-
font-size: var(--font-size-12px);
66-
color: var(--cwc-text-color-dimmed);
63+
&__tokens {
64+
font-size: var(--font-size-12px);
65+
color: var(--cwc-text-color-dimmed);
66+
}
6767
}

‎packages/ui/src/components/editor/panel/ResponsePreview/components/TextItem.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ export const TextItem: FC<Props> = (props) => {
3131
onClick={() => ref.current && props.on_toggle(ref.current)}
3232
title={props.content}
3333
>
34-
<div className={styles.line} />
35-
<div className={styles.icon}>
34+
<div className={styles.hidden__line} />
35+
<div className={styles.hidden__icon}>
3636
<IconButton codicon_icon="add" />
3737
</div>
38-
<span className={styles.tokens}>
38+
<span className={styles.hidden__tokens}>
3939
{Math.floor(props.content.length * 0.25) || 1}
4040
</span>
4141
</div>

‎packages/vscode/src/views/panel/backend/message-handlers/handle-send-prompt.ts‎

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,41 @@ async function show_preset_quick_pick(params: {
278278
group_name?: string
279279
})[] = []
280280

281-
if (presets.length > 0 && presets[0].chatbot) {
282-
const first_group_index = presets.findIndex((p) => !p.chatbot)
281+
const pinned_presets = presets.filter((p) => p.isPinned && p.chatbot)
282+
const other_presets = presets.filter((p) => !(p.isPinned && p.chatbot))
283+
284+
if (pinned_presets.length > 0) {
285+
for (const preset of pinned_presets) {
286+
const is_unnamed = !preset.name || /^\(\d+\)$/.test(preset.name.trim())
287+
const chatbot_models = CHATBOTS[preset.chatbot as keyof typeof CHATBOTS]
288+
.models as any
289+
const model = preset.model
290+
? chatbot_models[preset.model]?.label || preset.model
291+
: ''
292+
293+
items.push({
294+
label: `$(pinned) ${is_unnamed ? preset.chatbot! : preset.name}`,
295+
preset_name: preset.name,
296+
description: is_unnamed
297+
? model
298+
: `${preset.chatbot}${model ? ` · ${model}` : ''}`
299+
})
300+
}
301+
302+
if (other_presets.length > 0) {
303+
items.push({
304+
label: '',
305+
kind: vscode.QuickPickItemKind.Separator
306+
})
307+
}
308+
}
309+
310+
if (other_presets.length > 0 && other_presets[0].chatbot) {
311+
const first_group_index = other_presets.findIndex((p) => !p.chatbot)
283312
const ungrouped_presets =
284-
first_group_index === -1 ? presets : presets.slice(0, first_group_index)
313+
first_group_index === -1
314+
? other_presets
315+
: other_presets.slice(0, first_group_index)
285316
if (ungrouped_presets.length > 0) {
286317
const selected_count = ungrouped_presets.filter(
287318
(p) => p.isSelected
@@ -296,20 +327,22 @@ async function show_preset_quick_pick(params: {
296327
}
297328
}
298329

299-
for (const preset of presets) {
330+
for (const preset of other_presets) {
300331
if (!preset.chatbot) {
301332
// Group
302-
const group_index = presets.indexOf(preset)
333+
const group_index = other_presets.indexOf(preset)
303334
let selected_presets_count = 0
304-
for (let i = group_index + 1; i < presets.length; i++) {
305-
const p = presets[i]
335+
for (let i = group_index + 1; i < other_presets.length; i++) {
336+
const p = other_presets[i]
306337
if (!p.chatbot) break
307338
if (p.isSelected) selected_presets_count++
308339
}
309340
const is_unnamed_group =
310341
!preset.name || /^\(\d+\)$/.test(preset.name.trim())
311342
items.push({
312-
label: is_unnamed_group ? `Group ${preset.name}` : preset.name,
343+
label: is_unnamed_group
344+
? 'Group'
345+
: preset.name.replace(/ \(\d+\)$/, ''),
313346
group_name: preset.name,
314347
description: `${selected_presets_count} selected preset${
315348
selected_presets_count != 1 ? 's' : ''

0 commit comments

Comments
 (0)