v3.7.2: Fix status field key generation for parenthetical names & scroll preservation
- Fix: Status fields with parenthetical descriptions (e.g., 'Conditions (up to 5 traits)') now use the base name for the JSON key ('conditions' instead of 'conditions_up_to_5_traits')
- Fix: Status field value templates no longer repeat the field name with numbered suffixes
- Fix: Editing fields in Present Characters no longer scrolls the panel to the top
- Updated jsonPromptHelpers.js, parser.js, and userStats.js to use new toFieldKey() helper
- Added scroll position preservation to renderThoughts() when re-rendering after field edits
This commit is contained in:
@@ -153,11 +153,20 @@ function namesMatch(cardName, aiName) {
|
||||
* Displays character cards with avatars, relationship badges, and traits.
|
||||
* Includes event listeners for editable character fields.
|
||||
*/
|
||||
export function renderThoughts() {
|
||||
export function renderThoughts({ preserveScroll = false } = {}) {
|
||||
if (!extensionSettings.showCharacterThoughts || !$thoughtsContainer) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Save scroll position before re-render if requested
|
||||
let savedContentScroll = 0;
|
||||
if (preserveScroll) {
|
||||
const $content = $thoughtsContainer.find('.rpg-thoughts-content');
|
||||
if ($content.length) {
|
||||
savedContentScroll = $content[0].scrollTop;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't render if no data exists (e.g., after cache clear)
|
||||
const thoughtsData = lastGeneratedData.characterThoughts || committedTrackerData.characterThoughts;
|
||||
if (!thoughtsData) {
|
||||
@@ -714,6 +723,14 @@ export function renderThoughts() {
|
||||
setTimeout(() => $thoughtsContainer.removeClass('rpg-content-updating'), 600);
|
||||
}
|
||||
|
||||
// Restore scroll position after re-render
|
||||
if (preserveScroll) {
|
||||
const $content = $thoughtsContainer.find('.rpg-thoughts-content');
|
||||
if ($content.length) {
|
||||
$content[0].scrollTop = savedContentScroll;
|
||||
}
|
||||
}
|
||||
|
||||
// Update chat overlay if enabled
|
||||
if (extensionSettings.showThoughtsInChat) {
|
||||
updateChatThoughts();
|
||||
@@ -1147,8 +1164,8 @@ export function updateCharacterField(characterName, field, value) {
|
||||
// console.log('[RPG Companion] JSON format updated successfully');
|
||||
// console.log('[RPG Companion] Updated data:', lastGeneratedData.characterThoughts);
|
||||
|
||||
// Re-render the thoughts panel to show updated value
|
||||
renderThoughts();
|
||||
// Re-render the thoughts panel to show updated value (preserve scroll position)
|
||||
renderThoughts({ preserveScroll: true });
|
||||
|
||||
// Update chat thought overlays if editing thoughts
|
||||
const thoughtsFieldName = presentCharsConfig?.thoughts?.name || 'Thoughts';
|
||||
|
||||
Reference in New Issue
Block a user