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:
@@ -21,6 +21,19 @@ function toSnakeCase(name) {
|
||||
.replace(/^_+|_+$/g, '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the base name (before parentheses) and converts to snake_case for use as JSON key.
|
||||
* Parenthetical content is treated as a description/hint, not part of the key.
|
||||
* Example: "Conditions (up to 5 traits)" -> "conditions"
|
||||
* Example: "Status Effects" -> "status_effects"
|
||||
* @param {string} name - Field name, possibly with parenthetical description
|
||||
* @returns {string} snake_case key from the base name only
|
||||
*/
|
||||
function toFieldKey(name) {
|
||||
const baseName = name.replace(/\s*\(.*\)\s*$/, '').trim();
|
||||
return toSnakeCase(baseName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds User Stats JSON format instruction
|
||||
* @returns {string} JSON format instruction for user stats
|
||||
@@ -60,12 +73,12 @@ export function buildUserStatsJSONInstruction() {
|
||||
if (customFields.length > 0) {
|
||||
for (let i = 0; i < customFields.length; i++) {
|
||||
const fieldName = customFields[i].toLowerCase();
|
||||
const fieldKey = toSnakeCase(fieldName);
|
||||
const fieldKey = toFieldKey(fieldName);
|
||||
const comma = (i === customFields.length - 1 && !userStatsConfig.statusSection.showMoodEmoji) ? '' : (userStatsConfig.statusSection.showMoodEmoji || i < customFields.length - 1 ? ',\n' : '\n');
|
||||
if (i === 0 && userStatsConfig.statusSection.showMoodEmoji) {
|
||||
instruction += ',\n';
|
||||
}
|
||||
instruction += ` "${fieldKey}": "[${fieldName}1, ${fieldName}2]"${comma}`;
|
||||
instruction += ` "${fieldKey}": "[${fieldName}]"${comma}`;
|
||||
}
|
||||
}
|
||||
if (!userStatsConfig.statusSection.showMoodEmoji && customFields.length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user