- Grading scripts are now fetched from tests repo at runtime
- Students cannot modify grading scripts to cheat
- Workflow fetches scripts from private tests repo
- Prompt now explicitly requires integer scores (0/1/2/3/4)
- Code rounds any decimal scores to nearest integer
- Prevents LLM from giving 2.5, 3.5 etc.
- Auto-fill student name/class from .student_info.json
- Add anti-cheating watermark with student ID and unique hash
- Pass commit SHA for watermark generation
- Read student info from workflow environment
- Cover page with course title, student info fields
- Proper A4 layout with margins for printing
- Chinese fonts support (Noto CJK, WenQuanYi)
- Structured sections: Reports → Grade details
- Professional styling suitable for archival
- Add GRADE_TYPE=final support for final_grade.json
- Fix assignment_id extraction for non-hw format (e.g. final-vibevault)
- Fix student_id extraction for xxx-stu_yyy format
- Change default language from python to java