Prevent similarily-ish preset renames Adds validation to prevent renaming presets to names that are identical when ignoring case and accents Avoids accidental duplicates by ensuring meaningful name changes during preset renames

55ed5b325c9bf9fdf1c3c40faa5b4fc8f7500711

Wolfsblvt <wolfsblvt@gmail.com>

1 files changed, +8 -1Showing whitespace changes
public/scripts/preset-manager.js+8 -1
@@ -36,7 +36,7 @@ import {
3636 textgenerationwebui_presets,
3737 textgenerationwebui_settings as textgen_settings,
3838} from './textgen-settings.js';
3939import { download, equalsIgnoreCaseAndAccents, parseJsonFile, waitUntilCondition } from './utils.js';
4040import { t } from './i18n.js';
4141import { reasoning_templates } from './reasoning.js';
4242
@@ -454,6 +454,9 @@ class PresetManager {
454454
455455 async renamePreset(newName) {
456456 const oldName = this.getSelectedPresetName();
457+ if (equalsIgnoreCaseAndAccents(oldName, newName)) {
458+ throw new Error('New name must be different from old name');
459+ }
457460 try {
458461 await this.savePreset(newName);
459462 await this.deletePreset(oldName);
@@ -892,6 +895,10 @@ export async function initPresetManager() {
892895 console.debug(!presetManager.isAdvancedFormatting() ? 'Preset rename cancelled' : 'Template rename cancelled');
893896 return;
894897 }
898+ if (equalsIgnoreCaseAndAccents(oldName, newName)) {
899+ console.warn('Preset name is the same (ignoring case and accents)');
900+ return;
901+ }
895902
896903 await presetManager.renamePreset(newName);
897904