@d-healey So I might have found the culprit
I have CONFIRM_PRESET_OVERWRITE=1 and the confirmation message doesn't seem to handle the CANCEL case so this would better be either removed from the message box or handled
void UserPresetHelpers::saveUserPreset(ModulatorSynthChain *chain, const String& targetFile/*=String()*/, NotificationType notify/*=sendNotification*/)
{
#if USE_BACKEND
	const String version = dynamic_cast<GlobalSettingManager*>(chain->getMainController())->getSettingsObject().getSetting(HiseSettings::Project::Version);
	SemanticVersionChecker versionChecker(version, version);
	if (!versionChecker.newVersionNumberIsValid())
	{
		PresetHandler::showMessageWindow("Invalid version number", "You need semantic versioning (something like 1.0.0) in order to support user presets", PresetHandler::IconType::Error);
		return;
	}
	if (!GET_PROJECT_HANDLER(chain).isActive()) return;
#endif
    
	File presetFile = File(targetFile);
	
    String existingNote;
	StringArray existingTags;
    
#if CONFIRM_PRESET_OVERWRITE
	if (presetFile.existsAsFile() && (!MessageManager::getInstance()->isThisTheMessageThread() || PresetHandler::showYesNoWindow("Confirm overwrite", "Do you want to overwrite the preset (Press cancel to create a new user preset?")))
	{
        existingNote = PresetBrowser::DataBaseHelpers::getNoteFromXml(presetFile);
        existingTags = PresetBrowser::DataBaseHelpers::getTagsFromXml(presetFile);
		presetFile.deleteFile();
	}
#else
	if (presetFile.existsAsFile())
	{
        existingNote = PresetBrowser::DataBaseHelpers::getNoteFromXml(presetFile);
        existingTags = PresetBrowser::DataBaseHelpers::getTagsFromXml(presetFile);
		presetFile.deleteFile();
	}
#endif
	
	if (!presetFile.existsAsFile())
	{
		auto preset = createUserPreset(chain);
		if (preset.isValid())
		{
			auto xml = preset.createXml();
			presetFile.replaceWithText(xml->createDocument(""));
			if (existingNote.isNotEmpty())
				PresetBrowser::DataBaseHelpers::writeNoteInXml(presetFile, existingNote);
			if (!existingTags.isEmpty())
				PresetBrowser::DataBaseHelpers::writeTagsInXml(presetFile, existingTags);
			if (notify)
			{
				chain->getMainController()->getUserPresetHandler().currentlyLoadedFile = presetFile;
				chain->getMainController()->getUserPresetHandler().sendRebuildMessage();
			}
		}
	}
	chain->getMainController()->getUserPresetHandler().postPresetSave();
}