Skip to content

Commit 7789eca

Browse files
committed
Rename the preset property to and include a migration for existing configurations
1 parent 873cace commit 7789eca

11 files changed

Lines changed: 116 additions & 34 deletions

File tree

packages/shared/src/types/preset.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ export type Preset = {
1212
system_instructions?: string
1313
options?: string[]
1414
port?: number
15-
is_default?: boolean
15+
is_selected?: boolean
1616
is_collapsed?: boolean
1717
}

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export namespace Presets {
3333
chatbot?: keyof typeof CHATBOTS
3434
prompt_prefix?: string
3535
prompt_suffix?: string
36-
is_default?: boolean
36+
is_selected?: boolean
3737
is_collapsed?: boolean
3838
}
3939

@@ -52,7 +52,7 @@ export namespace Presets {
5252
on_preset_edit: (name: string) => void
5353
on_preset_duplicate: (name: string) => void
5454
on_preset_delete: (name: string) => void
55-
on_toggle_default_preset: (name: string) => void
55+
on_toggle_selected_preset: (name: string) => void
5656
on_toggle_group_collapsed: (name: string) => void
5757
selected_preset_name?: string
5858
translations: {
@@ -61,8 +61,8 @@ export namespace Presets {
6161
duplicate: string
6262
edit: string
6363
delete: string
64-
set_as_default: string
65-
unset_as_default: string
64+
set_as_selected: string
65+
unset_as_selected: string
6666
collapse_group: string
6767
expand_group: string
6868
}
@@ -235,15 +235,15 @@ export const Presets: React.FC<Presets.Props> = (props) => {
235235
</div>
236236
{preset.chatbot && (
237237
<Checkbox
238-
checked={!!preset.is_default}
238+
checked={!!preset.is_selected}
239239
on_change={() =>
240-
props.on_toggle_default_preset(preset.name)
240+
props.on_toggle_selected_preset(preset.name)
241241
}
242242
on_click={(e) => e.stopPropagation()}
243243
title={
244-
preset.is_default
245-
? props.translations.unset_as_default
246-
: props.translations.set_as_default
244+
preset.is_selected
245+
? props.translations.unset_as_selected
246+
: props.translations.set_as_selected
247247
}
248248
/>
249249
)}

packages/vscode/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -720,9 +720,9 @@
720720
"type": "number",
721721
"description": "Open WebUI only. Port for 'localhost', if your instance is networked, remove this param and proxy it to `http://openwebui/` with nginx."
722722
},
723-
"isDefault": {
723+
"isSelected": {
724724
"type": "boolean",
725-
"description": "Whether this preset is used when initializing a new chat."
725+
"description": "Whether this preset is selected when initializing a new chat."
726726
},
727727
"isCollapsed": {
728728
"type": "boolean",
@@ -885,9 +885,9 @@
885885
"type": "number",
886886
"description": "Open WebUI only. Port for 'localhost', if your instance is networked, remove this param and proxy it to `http://openwebui/` with nginx."
887887
},
888-
"isDefault": {
888+
"isSelected": {
889889
"type": "boolean",
890-
"description": "Whether this preset is used when initializing a new chat."
890+
"description": "Whether this preset is selected when initializing a new chat."
891891
},
892892
"isCollapsed": {
893893
"type": "boolean",
@@ -1020,9 +1020,9 @@
10201020
"type": "number",
10211021
"description": "Open WebUI only. Port for 'localhost', if your instance is networked, remove this param and proxy it to `http://openwebui/` with nginx."
10221022
},
1023-
"isDefault": {
1023+
"isSelected": {
10241024
"type": "boolean",
1025-
"description": "Whether this preset is used when initializing a new chat."
1025+
"description": "Whether this preset is selected when initializing a new chat."
10261026
},
10271027
"isCollapsed": {
10281028
"type": "boolean",
@@ -1185,9 +1185,9 @@
11851185
"type": "number",
11861186
"description": "Open WebUI only. Port for 'localhost', if your instance is networked, remove this param and proxy it to `http://openwebui/` with nginx."
11871187
},
1188-
"isDefault": {
1188+
"isSelected": {
11891189
"type": "boolean",
1190-
"description": "Whether this preset is used when initializing a new chat."
1190+
"description": "Whether this preset is selected when initializing a new chat."
11911191
},
11921192
"isCollapsed": {
11931193
"type": "boolean",

packages/vscode/src/extension.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import {
1111
migrate_refactoring_to_intelligent_update,
1212
migrate_presets_to_chat_presets_for_edit_context,
1313
migrate_edit_to_edit_context,
14-
migrate_clear_history
14+
migrate_clear_history,
15+
migrate_preset_is_default_to_is_selected
1516
} from './migrations'
1617
import {
1718
apply_chat_response_command,
@@ -68,6 +69,8 @@ export async function activate(context: vscode.ExtensionContext) {
6869
await migrate_edit_to_edit_context(context)
6970
// 25 July 2025
7071
await migrate_clear_history(context)
72+
// 1 August 2025
73+
await migrate_preset_is_default_to_is_selected(context)
7174
}
7275

7376
await migrations()

packages/vscode/src/migrations/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ export * from './migrate-refactoring-to-intelligent-update'
77
export * from './migrate-presets-to-chat-presets-for-edit-context'
88
export * from './migrate-edit-to-edit-context'
99
export * from './migrate-clear-history'
10+
export * from './migrate-preset-is-default-to-is-selected'
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import * as vscode from 'vscode'
2+
import { Logger } from '../utils/logger'
3+
4+
const MIGRATION_ID = 'preset-is-default-to-is-selected-migration-20250903'
5+
6+
const PRESET_CONFIG_KEYS = [
7+
'codeWebChat.chatPresetsForAskAboutContext',
8+
'codeWebChat.chatPresetsForEditContext',
9+
'codeWebChat.chatPresetsForCodeAtCursor',
10+
'codeWebChat.chatPresetsForNoContext'
11+
]
12+
13+
type PresetInConfig = {
14+
name: string
15+
isDefault?: boolean
16+
isSelected?: boolean
17+
[key: string]: any
18+
}
19+
20+
export async function migrate_preset_is_default_to_is_selected(
21+
context: vscode.ExtensionContext
22+
): Promise<void> {
23+
try {
24+
if (context.globalState.get(MIGRATION_ID)) {
25+
return
26+
}
27+
28+
const config = vscode.workspace.getConfiguration()
29+
let migration_performed = false
30+
31+
for (const key of PRESET_CONFIG_KEYS) {
32+
const inspect = config.inspect<PresetInConfig[]>(key)
33+
34+
const migrate_presets = (
35+
presets: PresetInConfig[]
36+
): { presets: PresetInConfig[]; changed: boolean } => {
37+
let changed = false
38+
const new_presets = presets.map((preset) => {
39+
if (preset.isDefault !== undefined) {
40+
const { isDefault, ...rest } = preset
41+
changed = true
42+
return { ...rest, isSelected: isDefault }
43+
}
44+
return preset
45+
})
46+
return { presets: new_presets, changed }
47+
}
48+
49+
if (inspect?.globalValue !== undefined) {
50+
const { presets: migrated_presets, changed } = migrate_presets(
51+
inspect.globalValue
52+
)
53+
if (changed) {
54+
await config.update(
55+
key,
56+
migrated_presets,
57+
vscode.ConfigurationTarget.Global
58+
)
59+
migration_performed = true
60+
}
61+
}
62+
}
63+
64+
if (migration_performed) {
65+
Logger.log({
66+
function_name: 'migrate_preset_is_default_to_is_selected',
67+
message: 'Migration for preset isDefault to isSelected completed.'
68+
})
69+
}
70+
await context.globalState.update(MIGRATION_ID, true)
71+
} catch (error) {
72+
Logger.error({
73+
function_name: 'migrate_preset_is_default_to_is_selected',
74+
message: 'Error migrating preset isDefault to isSelected',
75+
data: error instanceof Error ? error.message : String(error)
76+
})
77+
}
78+
}

packages/vscode/src/view/backend/message-handlers/handle-update-preset.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export const handle_update_preset = async (
4646
a.system_instructions == b.system_instructions &&
4747
JSON.stringify(a.options) == JSON.stringify(b.options) &&
4848
a.port == b.port &&
49-
a.is_default == b.is_default
49+
a.is_selected == b.is_selected
5050
)
5151
}
5252

packages/vscode/src/view/backend/utils/preset-format-converters.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export type ConfigPresetFormat = {
1313
systemInstructions?: string
1414
options?: string[]
1515
port?: number
16-
isDefault?: boolean
16+
isSelected?: boolean
1717
isCollapsed?: boolean
1818
}
1919

@@ -32,7 +32,7 @@ export function config_preset_to_ui_format(
3232
system_instructions: config_preset.systemInstructions,
3333
options: config_preset.options,
3434
port: config_preset.port,
35-
is_default: config_preset.isDefault,
35+
is_selected: config_preset.isSelected,
3636
is_collapsed: config_preset.isCollapsed
3737
}
3838
}
@@ -50,7 +50,7 @@ export function ui_preset_to_config_format(preset: Preset): ConfigPresetFormat {
5050
systemInstructions: preset.system_instructions,
5151
options: preset.options,
5252
port: preset.port,
53-
isDefault: preset.is_default,
53+
isSelected: preset.is_selected,
5454
isCollapsed: preset.is_collapsed
5555
}
5656
}

packages/vscode/src/view/frontend/EditPresetForm/EditPresetForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export const EditPresetForm: React.FC<Props> = (props) => {
8989
...(system_instructions ? { system_instructions } : {}),
9090
...(port !== undefined ? { port } : {}),
9191
...(options.length ? { options } : {}),
92-
is_default: props.preset.is_default
92+
is_selected: props.preset.is_selected
9393
})
9494
} else {
9595
props.on_update({

packages/vscode/src/view/frontend/home/Home.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,11 @@ export const Home: React.FC<Props> = (props) => {
216216
}
217217
}
218218

219-
const handle_toggle_default_preset = (name: string) => {
219+
const handle_toggle_selected_preset = (name: string) => {
220220
if (all_presets) {
221221
const presets_for_current_mode = all_presets[props.web_mode]
222222
const updated_presets = presets_for_current_mode.map((p) =>
223-
p.name == name ? { ...p, is_default: !p.is_default } : p
223+
p.name == name ? { ...p, is_selected: !p.is_selected } : p
224224
)
225225

226226
set_all_presets({ ...all_presets, [props.web_mode]: updated_presets })
@@ -239,7 +239,7 @@ export const Home: React.FC<Props> = (props) => {
239239
system_instructions: preset.system_instructions,
240240
options: preset.options,
241241
port: preset.port,
242-
is_default: preset.is_default || undefined,
242+
is_selected: preset.is_selected || undefined,
243243
is_collapsed: preset.is_collapsed || undefined
244244
}))
245245
})
@@ -269,7 +269,7 @@ export const Home: React.FC<Props> = (props) => {
269269
system_instructions: preset.system_instructions,
270270
options: preset.options,
271271
port: preset.port,
272-
is_default: preset.is_default || undefined,
272+
is_selected: preset.is_selected || undefined,
273273
is_collapsed: preset.is_collapsed || undefined
274274
}))
275275
})
@@ -322,7 +322,7 @@ export const Home: React.FC<Props> = (props) => {
322322
system_instructions: preset.system_instructions,
323323
options: preset.options,
324324
port: preset.port,
325-
is_default: preset.is_default,
325+
is_selected: preset.is_selected,
326326
is_collapsed: preset.is_collapsed
327327
}))
328328
})
@@ -585,7 +585,7 @@ export const Home: React.FC<Props> = (props) => {
585585
on_preset_edit={handle_preset_edit}
586586
on_preset_duplicate={handle_preset_duplicate}
587587
on_preset_delete={handle_preset_delete}
588-
on_toggle_default_preset={handle_toggle_default_preset}
588+
on_toggle_selected_preset={handle_toggle_selected_preset}
589589
on_toggle_group_collapsed={handle_toggle_group_collapsed}
590590
selected_preset_or_group_name={selected_preset_or_group_name}
591591
selected_configuration_index={

0 commit comments

Comments
 (0)