fix: preserve user's scaffolding settings when changing skills

Fix issue where changing skills in mastery mode would overwrite the user's custom scaffolding settings with the new skill's recommendations.

**Problem:**
When user:
1. Sets custom scaffolding (e.g., "auto" or "never")
2. Switches to a different skill in mastery progression
3. Returns to scaffolding tab

The scaffolding controls would show the new skill's recommendations instead of the user's original settings.

**Root Cause:**
MasteryModePanel.tsx was calling `onChange({ displayRules: currentSkill.recommendedScaffolding })` every time the skill changed, overwriting the user's custom settings.

**Fix:**
- Remove `displayRules` from onChange call when skill changes
- Skill's recommendedScaffolding is only used at render time when resolving "auto" values
- User's explicit scaffolding choices now persist across skill changes

**How it works now:**
- User's displayRules remain unchanged when switching skills
- "Auto" values resolve to new skill's recommendations (visual feedback shows this)
- Manual overrides persist regardless of skill changes

**Example:**
```
User settings: { answerBoxes: 'auto', carryBoxes: 'never' }
Switch from Skill A to Skill B:
- answerBoxes: 'auto' → Resolves to Skill B's recommendation (green highlight updates)
- carryBoxes: 'never' → Stays 'never' (manual override persists)
```

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Thomas Hallock 2025-11-18 06:59:35 -06:00
parent fbe776ac09
commit 1eb04ce0c4
1 changed files with 3 additions and 2 deletions

View File

@ -128,16 +128,17 @@ export function MasteryModePanel({ formState, onChange, isDark = false }: Master
digitRange: currentSkill.digitRange,
pAnyStart: currentSkill.regroupingConfig.pAnyStart,
pAllStart: currentSkill.regroupingConfig.pAllStart,
displayRules: currentSkill.recommendedScaffolding,
operator: currentSkill.operator,
})
// Apply skill's configuration to form state
// NOTE: We do NOT set displayRules here - the skill's recommendedScaffolding
// is only used at render time when resolving "auto" values.
// Setting displayRules here would overwrite the user's custom scaffolding settings.
onChange({
digitRange: currentSkill.digitRange,
pAnyStart: currentSkill.regroupingConfig.pAnyStart,
pAllStart: currentSkill.regroupingConfig.pAllStart,
displayRules: currentSkill.recommendedScaffolding,
operator: currentSkill.operator,
// Do NOT force interpolate - let user control it via the toggle
} as Partial<WorksheetFormState>)