From a8636ca6a2d06d31780d71ec67e35176b3dd3259 Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Tue, 18 Nov 2025 07:24:04 -0600 Subject: [PATCH] fix: add 'auto' to RuleMode type to prevent undefined display values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 'auto' display rule value was added to config schemas but not to the RuleMode type definition, causing evaluateRule to return undefined when encountering 'auto' values that weren't properly resolved. Changes: - Add 'auto' to RuleMode type definition - Add 'auto' case in evaluateRule that logs error and defaults to 'always' - Prevents 'undefined' from reaching Typst generator This is a defensive fix - 'auto' should be resolved in validation.ts before reaching the display rule evaluator, but this prevents crashes if resolution fails for any reason. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/web/src/app/create/worksheets/displayRules.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/web/src/app/create/worksheets/displayRules.ts b/apps/web/src/app/create/worksheets/displayRules.ts index fcc7cc0b..f05cd0dd 100644 --- a/apps/web/src/app/create/worksheets/displayRules.ts +++ b/apps/web/src/app/create/worksheets/displayRules.ts @@ -5,6 +5,7 @@ import type { ProblemMeta, SubtractionProblemMeta } from './problemAnalysis' export type AnyProblemMeta = ProblemMeta | SubtractionProblemMeta export type RuleMode = + | 'auto' // Defer to mastery progression (should be resolved before rendering) | 'always' // Always show this display option | 'never' // Never show this display option | 'whenRegrouping' // Show when problem requires any regrouping @@ -39,6 +40,14 @@ export interface ResolvedDisplayOptions { */ export function evaluateRule(mode: RuleMode, problem: AnyProblemMeta): boolean { switch (mode) { + case 'auto': + // 'auto' should have been resolved to a concrete value in validation + // If it reaches here, something went wrong - default to 'always' to avoid breaking + console.error( + '[evaluateRule] BUG: "auto" mode should have been resolved before rendering. Defaulting to "always".' + ) + return true + case 'always': return true