Changelog¶
Changelog¶
All notable changes to pyaota will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.5.0] - 2026-03-24¶
Added¶
Encrypted answer embedding in QR codes (
--encode-answers-in-qrflag onbuild) — correct answers are encrypted and stored directly in each answer sheet’s QR code. A random per-exam-set key is generated at build time and stored inanswersheet_layout.json; the grader decrypts automatically using that file, making the answer-key CSV optional for day-of grading. Old answer sheets without embedded answers continue to work unchanged via CSV lookup.Interactive grading (
--interactiveflag ongrade) — when a QR code, student-ID field, or answer bubble cannot be read automatically, pyaota pauses and prompts the operator at the terminal to supply the missing value. For unanswered questions a matplotlib window displays the bubble row so the operator can confirm or override the detected answer.
[0.4.0] - 2026-03-24¶
Added¶
Documentation and usage examples for grading workflow.
[0.3.0] - 2026-02-27¶
Added¶
Compact MCQ choice layout — choices are automatically arranged in two columns when all choice texts are short enough.
True/False question simplification — T/F questions no longer render a separate choices block; the stem is prefixed with bold True (T) / False (F).
T/F correct-answer highlighting — in
compile-dumpthe correct answer for T/F questions is visually indicated with a filled circle, consistent with MCQ behavior.Greedy topic redistribution —
get_random_selectionno longer errors when a topic has fewer questions than the uniform quota; available questions are redistributed across better-stocked topics so the total count is always met.--font-size {10pt,11pt,12pt}option onbuildandcompile-dump(default12pt).--question-spacing <LENGTH>option onbuildandcompile-dump(default24pt).--bubble-font-size <PT>option onbuildandmake-answersheet(default8.0).--odd-page-answersheetflag onbuildandmake-answersheet.--rasterizeflag onbuildandmake-answersheet.Full command line echoed at DEBUG level to the diagnostic log at startup.
Fixed¶
Excess vertical space between a code-block stem and the choices list in MCQs.
Answer sheet page always renders at 12 pt regardless of the
--font-sizesetting.
[0.2.0] - 2026-01-26¶
Added¶
Serialization of answer sheet layouts to JSON.
[0.1.0] - 2026-01-26¶
Initial release of pyaota.