Align message block baseline
| @@ -1304,10 +1304,13 @@ function updatePersonaUIStates() { | ||
| 1304 | 1304 | const { isTemporary, info } = getPersonaTemporaryLockInfo(); |
| 1305 | 1305 | if (isTemporary) { |
| 1306 | 1306 | const messageContainer = document.createElement('div'); |
| 1307 | - messageContainer.innerHTML = t`Temporary persona in use.`; | |
| 1307 | + const messageSpan = document.createElement('span'); | |
| 1308 | + messageSpan.textContent = t`Temporary persona in use.`; | |
| 1309 | + messageContainer.appendChild(messageSpan); | |
| 1310 | + messageContainer.classList.add('flex-container', 'alignItemsBaseline'); | |
| 1308 | 1311 | |
| 1309 | 1312 | const infoIcon = document.createElement('i'); |
| 1310 | 1313 | infoIcon.classList.add('fa-solid', 'fa-circle-info', 'opacity50p', 'marginLeft5'); |
| 1311 | 1314 | infoIcon.title = info; |
| 1312 | 1315 | messageContainer.appendChild(infoIcon); |
| 1313 | 1316 | |
| @@ -1610,7 +1613,22 @@ async function duplicatePersona(avatarId) { | ||
| 1610 | 1613 | saveSettingsDebounced(); |
| 1611 | 1614 | } |
| 1612 | 1615 | |
| 1616 | +/** | |
| 1617 | + * If a current user avatar is not bound to persona, bind it. | |
| 1618 | + */ | |
| 1619 | +function migrateNonPersonaUser() { | |
| 1620 | + if (user_avatar in power_user.personas) { | |
| 1621 | + return; | |
| 1622 | + } | |
| 1623 | + | |
| 1624 | + power_user.personas[user_avatar] = name1; | |
| 1625 | + void getOrCreatePersonaDescriptor(); | |
| 1626 | + setPersonaDescription(); | |
| 1627 | + saveSettingsDebounced(); | |
| 1628 | +} | |
| 1629 | + | |
| 1613 | 1630 | export function initPersonas() { |
| 1631 | + migrateNonPersonaUser(); | |
| 1614 | 1632 | $('#persona_delete_button').on('click', deleteUserAvatar); |
| 1615 | 1633 | $('#lock_persona_default').on('click', () => togglePersonaLock('default')); |
| 1616 | 1634 | $('#lock_user_name').on('click', () => togglePersonaLock('chat')); |