Simplify profile change

This commit is contained in:
Webifi 2023-05-27 13:43:18 -05:00
parent 8ce869c717
commit 6ce0355eec
2 changed files with 28 additions and 23 deletions

View File

@ -122,7 +122,7 @@
} }
if (!chat.settings.profile) { if (!chat.settings.profile) {
const profile = getProfile('') // get default profile const profile = getProfile('') // get default profile
applyProfile(chatId, profile.profile as any, true) applyProfile(chatId, profile.profile as any)
if (getChatSettingValueByKey(chatId, 'startSession')) { if (getChatSettingValueByKey(chatId, 'startSession')) {
setChatSettingValueByKey(chatId, 'startSession', false) setChatSettingValueByKey(chatId, 'startSession', false)
setTimeout(() => { submitForm(false, true) }, 0) setTimeout(() => { submitForm(false, true) }, 0)
@ -536,21 +536,23 @@
default: default:
setChatSettingValue(chatId, setting, el.value) setChatSettingValue(chatId, setting, el.value)
} }
(typeof setting.afterChange === 'function') && setting.afterChange(chatId, setting) && showSettingsModal++ (typeof setting.afterChange === 'function') && setting.afterChange(chatId, setting)
&& showSettingsModal && showSettingsModal++
} }
if (setting.key === 'profile' && checkSessionActivity(chatId)) { if (setting.key === 'profile' && checkSessionActivity(chatId)
if (window.confirm('Switching profiles will clear your current chat session. Are you sure you want to continue?')) { && (getProfile(el.value).characterName !== getChatSettingValueByKey(chatId,'characterName'))) {
// Switch profiles const val = getChatSettingValue(chatId, setting)
() => { doSet() } if (window.confirm('Personality change will not correctly apply to existing chat session.\n Continue?')) {
doSet()
} else { } else {
// Roll-back // roll-back
() => { el.value = getChatSettingValue(chatId, setting) } setChatSettingValue(chatId, setting, val)
// refresh setting modal, if open
showSettingsModal && showSettingsModal++
}
} }
} else {
debounce[setting.key] = setTimeout(doSet, 250) debounce[setting.key] = setTimeout(doSet, 250)
} }
}
const autoGrowInputOnEvent = (event: Event) => { const autoGrowInputOnEvent = (event: Event) => {
// Resize the textarea to fit the content - auto is important to reset the height after deleting content // Resize the textarea to fit the content - auto is important to reset the height after deleting content
if (event.target === null) return if (event.target === null) return
@ -567,7 +569,7 @@
try { try {
saveCustomProfile(chat.settings) saveCustomProfile(chat.settings)
} catch (e) { } catch (e) {
alert('Error saving profile: ' + e.message) alert('Error saving profile: \n' + e.message)
} }
} }
@ -597,7 +599,7 @@
updateProfileSelectOptions() updateProfileSelectOptions()
showSettingsModal && showSettingsModal++ showSettingsModal && showSettingsModal++
} catch (e) { } catch (e) {
alert('Error cloning profile: ' + e.message) alert('Error cloning profile: \n' + e.message)
} }
} }
@ -608,11 +610,11 @@
chat.settings.profile = globalStore.defaultProfile chat.settings.profile = globalStore.defaultProfile
saveChatStore() saveChatStore()
setGlobalSettingValueByKey('lastProfile', chat.settings.profile) setGlobalSettingValueByKey('lastProfile', chat.settings.profile)
applyProfile(chatId, chat.settings.profile as any, true) applyProfile(chatId, chat.settings.profile as any)
updateProfileSelectOptions() updateProfileSelectOptions()
showSettings() showSettings()
} catch (e) { } catch (e) {
alert('Error deleting profile: ' + e.message) alert('Error deleting profile: \n' + e.message)
} }
} }
@ -635,7 +637,7 @@
updateProfileSelectOptions() updateProfileSelectOptions()
showSettingsModal && showSettingsModal++ showSettingsModal && showSettingsModal++
} catch (e) { } catch (e) {
alert('Unable to import profile: ' + e.message) alert('Unable to import profile: \n' + e.message)
} }
} }
} }
@ -656,6 +658,9 @@
<div class="level-right"> <div class="level-right">
<p class="level-item"> <p class="level-item">
{#if chat.settings.autoStartSession && chat.settings.systemPrompt && chat.settings.useSystemPrompt}
{/if}
<button class="button is-warning" on:click={() => { clearMessages(chatId); window.location.reload() }}><span class="greyscale mr-2"><Fa icon={faTrash} /></span> Clear messages</button> <button class="button is-warning" on:click={() => { clearMessages(chatId); window.location.reload() }}><span class="greyscale mr-2"><Fa icon={faTrash} /></span> Clear messages</button>
</p> </p>
</div> </div>

View File

@ -80,20 +80,20 @@ export const checkSessionActivity = (chatId:number):boolean => {
return false return false
} }
export const applyProfile = (chatId:number, key:string, keepMessages?:boolean) => { export const applyProfile = (chatId:number, key:string, resetChat:boolean = false) => {
const profile = getProfile(key) const profile = getProfile(key)
Object.entries(profile).forEach(([k, v]) => { Object.entries(profile).forEach(([k, v]) => {
const setting = getChatSettingByKey(k as any) const setting = getChatSettingByKey(k as any)
if (setting) setChatSettingValue(chatId, setting as any, v) if (setting) setChatSettingValue(chatId, setting as any, v)
}) })
const messages = getMessages(chatId) if (!resetChat && getMessages(chatId).length) {
if (keepMessages && messages.length) { // If there are any messages, just apply settings, don't apply chat messages
setChatSettingValueByKey(chatId, 'startSession', false) setChatSettingValueByKey(chatId, 'startSession', false)
setGlobalSettingValueByKey('lastProfile', key) setGlobalSettingValueByKey('lastProfile', key)
return return
} }
// Clear current messages
clearMessages(chatId) clearMessages(chatId)
// Add the system prompt // Add the system prompt
const systemPromptMessage:Message = { const systemPromptMessage:Message = {
role: 'system', role: 'system',