From 1eb04ce0c46e7ec745b8cc8c8580b3ff731916a1 Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Tue, 18 Nov 2025 06:59:35 -0600 Subject: [PATCH] fix: preserve user's scaffolding settings when changing skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../worksheets/components/config-panel/MasteryModePanel.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/create/worksheets/components/config-panel/MasteryModePanel.tsx b/apps/web/src/app/create/worksheets/components/config-panel/MasteryModePanel.tsx index a4f4d5cc..22dd9118 100644 --- a/apps/web/src/app/create/worksheets/components/config-panel/MasteryModePanel.tsx +++ b/apps/web/src/app/create/worksheets/components/config-panel/MasteryModePanel.tsx @@ -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)