Skip to content

v1.6.3

Latest

Choose a tag to compare

@ChenChenyaqi ChenChenyaqi released this 21 Jul 00:05
· 2 commits to main since this release
3069f2b

Fixed

  • learn-explain template's Step 4D now caps the confidence increment at 1.0 (confidence += 0.05~0.1 (cap 1.0)), matching the practice/quiz templates and preventing validateStateV1 failures that halted render.mjs mid-session. (#129, closes #121)
  • validateQuizDeck now requires multiple_choice answer to be a string contained in options[], mirroring the existing multi_select check. Previously only options[] length was validated, so un-answerable questions (answer not in options, or wrong type like boolean/array) passed validation and could never be graded correct by the exact step. (#130, closes #122)
  • validateStateV1/validateQuizDeck now report a Must be an object error for primitive or null entries inside domains/concepts/questions. Previously such entries either passed silently (e.g. domains: ['str'], questions: [42]) or threw an uncaught TypeError (e.g. domains: [null], questions: [null]), crashing render.mjs/validate-quiz.mjs instead of returning the friendly error list. (#131, closes #123)
  • dateStr validator now rejects impossible dates that happened to match the digit shape (e.g. 2026-99-99, 2026-13-45, 2026-02-30, 2026-01-01 99:99:99). Both implementations (schema.ts Zod and utils.mts inline) now round-trip the parsed components through new Date(...) and verify every field reads back identically, catching range errors and calendar errors (Feb 30, non-leap-year Feb 29) without per-component special-casing. This prevents hallucinated timestamps written by the AI from silently producing Invalid Date downstream (e.g. review-interval math on last_practiced). (#132, closes #124)
  • learn-quiz Step 6 now splits the exact grading bullet by question type. Previously "strict equality versus answer" was ill-defined for multi_select (answer: string[]) and read literally as order-sensitive, so a learner answering Q1: B, A against answer: ["A", "B"] could be marked wrong by an AI grader following the instruction to the letter. multi_select now explicitly requires unordered set comparison (no missing, no extras; order irrelevant); multiple_choice and true_false keep strict equality. (#133, closes #125)