Changelog ========= Version 0.1.4 (2026-01-25) -------------------------- - Enhanced ``--list-submission-status`` to show attachment details (file count, size, type, upload time). - Updated Canvas and Google Classroom sync to fetch detailed attachment info (supports Drive files, Links, Forms, YouTube videos). - Updated ``--export-all-details`` to include full attachment breakdown. - Refined default sort order for roster exports: Section > First Name > Last Name > Student ID. - Implemented Vietnamese-specific collation for correct alphabetical sorting (e.g., handles 'Â', 'Đ' correctly). Version 0.1.3 (2026-01-25) -------------------------- - Improved ``export_companies_to_vcf`` with ``raw_data`` fallback logic to extract contact person and phone numbers. - VCF exports (students and companies) now skip entries with no phone number information. - Enhanced company VCF export filename detection to use ``companies_contacts.vcf`` by default. - Improved company data import column mapping (better Vietnamese keyword support and email priority). - Fixed ``UnboundLocalError`` in ``course --import-internships`` by adding missing local import. - Fixed ``UnpicklingError`` in ``course --export-vcf`` (and other commands) when loading SQLite databases with ``companies`` table. - Added company field mappings for VCF export and student loading. - VCF export now strictly uses ``UNIVERSITY_NAME`` from config (defaults to empty if not set) instead of hardcoded default. Version 0.1.2 (2026-01-24) -------------------------- - Added ``--import-registrations`` command to support student internship registration data (skills, wishlist, notes). - Added ``INTERNSHIP_REGISTRATION_SHEET_URL`` configuration key. - Added company contact management with ``--import-companies`` and ``--export-companies``, stored in ``companies.db``. - Improved export formatting for student details (JSON unwrapping for progress reports, translated labels, hidden empty fields). - Added support for English headers in internship data and registration imports. - Updated documentation and sample data to English. Version 0.1.1 (2025-12-27) -------------------------- - Added multi-file glob support for import/update CLI commands. - Added student detail sort methods and clearer export/report formatting. - Normalized Canvas/Google Classroom sync scores to a 10-point scale when possible. - MAT*.xlsx roster imports now ignore score columns (CC, GK, CK, totals). - MAT Excel updates can infer missing student IDs from VNU University of Science, Hanoi emails. - Added resubmission grading workflow with optional keep-old-grade default. - Canvas sync stores submission comments and rubric evaluations. - Canvas grade parsing now falls back to Unposted Final Score when Final Score is empty/zero (CC/GK/CK). - Final evaluation reports omit assignment-group scores when all component scores are 0. - Final evaluation weights are configurable (``WEIGHT_CC``, ``WEIGHT_GK``, ``WEIGHT_CK``) and the TXT output includes the formula. - Added course calendar builder (TXT/Markdown/ICS) with holiday exclusions, unofficial holidays, and make-up week logic. - Course calendar titles include course code/name and canceled sessions are tagged. - Added Canvas calendar import from iCal (.ics) files with dry-run and duplicate skipping. - Improved Canvas announcement flow with short input, AI refinement, and confirmation before posting. - Added auto-generated short aliases for long-only CLI flags. - Added ``--list-cli-aliases`` to display auto-generated short aliases. - Added duplicate-name reporting (Name/Google Classroom/Canvas display names) with TXT/CSV/JSON exports. - Documentation and samples updated for new sync, calendar, and local AI tooling. Version 0.1.0 (2025-12-27) -------------------------- - Packaged the original script as a Python CLI with install helpers and standardized flags. - Added course-scoped config/credential storage with cached course codes. - Rebuilt the no-args menu with sections, arrow-key navigation, and numeric quick-jump. - Added ``--clear-config`` and ``--clear-credentials`` helpers plus Windows/Linux compatibility fixes. - Canvas/Google Classroom sync now resolves duplicates; Canvas grade sync stores final scores only. - Added override grades (flexible headers/aliases) with clearer reporting in MAT exports. - Added AI model testing/listing, rate-limit fallback, and model details in reports. - Expanded submission quality checks with configurable thresholds and richer diagnostics. - Added backup/restore commands, dry-run mode, validation reports, grade audit history, and grade diff exports. - Added import previews, anonymized exports, and per-run summaries in ``run_report.txt``. - Added weekly automation workflow generation and non-interactive Canvas checks/reminders. - Added local weekly automation with archived reports and flagged-submission evidence. - Weekly workflow now clones the toolkit, archives reports with DB backups, and tags evidence by assignment. - Weekly automation can auto-detect closed assignments not yet in weekly reports. - Added local LLM support (Ollama-compatible) for AI refinement and message generation, with CLI overrides. - Added local model detection via ``--detect-local-ai`` (Ollama or llama.cpp) and optional ``.gguf`` scan. - Updated docs and samples; added GPL-3.0-only license.