Changelog
All notable changes to this project will be documented here.
[1.0.0] - 2025-12-14
Added
- Canvas synchronization for both courses and exams.
- ID checks can now be registered during an exam.
- Students can now finish an exam by themselves.
- Details display added to AuditLog viewer.
- Ability to copy courses and exams.
Changed
- Submission worker is now token-based, so labs with mixed data types are easier to design.
- Submission worker now initializes memory, to avoid inconsistent behavior with non-terminated C strings and uninitialized variables.
- Archival of exams and courses now remove them from teacher view.
Fixed
- UI alerts are now consistent in heading size.
- Delete lab view crashing with error 400.
[0.4.1] - 2025-12-11
Fixed
- Wrong link for students in lab view.
- Broken student lab list in course view.
[0.4.0] - 2025-12-11
Added
- Ability to regrade submissions.
- Syntax highlighting for submission code viewer.
Changed
- Layout modernized, more information shown in every view.
- Submission worker now uses a more resilient database transaction method.
Fixed
- Bug with date queries in AuditLog viewer.
- Glyphicons upgraded to bootstrap icons.
- Manual labs are now properly marked as manual by worker.
- Grading date is now set by the worker.
[0.3.1] - 2025-12-09
Added
- Flags were added to bank/course list to indicate translation status.
- Button on bank/course pages for quick access to editing labs.
- Basic backup script with daily backups rotating 30 days.
Changed
- All textboxes that edit text (not code) now auto-resize.
Removed
- JQuery library import (no longer used).
Fixed
- Windows-style line endings in test input data no longer cause compilation failure result.
- Users no longer get logged out on server restart.
- Dark mode showing light mode colors on some UI elements.
[0.3.0] - 2025-12-08
Complete migration from MongoDB to PostgreSQL/SQLAlchemy, with comprehensive testing, improved security and a Docker-based deployment model.
Added
- PostgreSQL database - Complete migration from MongoDB to SQLAlchemy 2.0 ORM
- Alembic migrations - Database schema version control with 18 performance indexes
- CSRF protection - WTForms integration across all forms
- Audit logging - Database-backed audit trail with web viewer at
/admin/log - Test coverage - 90%+ coverage on critical exam/submission flows (pytest, pytest-flask)
- CI/CD pipeline - GitLab runner with automated testing and JUnit reports
- Type annotations - Full mypy type checking across codebase
- Dark mode - Light/dark theme toggle in UI
- Docker deployment - Production-ready containerization with user isolation
- Timezone handling - UTC storage with Europe/Stockholm display conversion
Changed
- Session management - Redis-backed sessions with Flask-Login
- Code formatting - Applied Black, Ruff, isort consistently
- Error handling - Custom error pages with better logging
- Security hardening - Fixed open redirect, timeout enforcement, login guards
Fixed
- Exam timeout enforcement
- Timezone conversion overflow issues
- Pagination across all views
Removed
- All MongoDB code and dependencies
- Lab import/export functionality (unused)
- Old manual deployment scripts
[0.2.0] - 2025-11-21
Final upgrades before migration work from MongoDB to PostgreSQL/SQLAlchemy.
Added
- Unit and integration tests (pytest)
- Exam generation tests and safety improvements
- Language switching (English/Swedish)
Changed
- Soft deletes - Labs now use soft deletion for data preservation
- Database call optimizations across models
- Improved logging throughout application
Fixed
- Exam time calculations
- Lab deletion crash on orphaned testcases
- Exam generation edge cases
[0.1.3] - 2022-05-26
Changed
- Flask 2.0 upgrade - Updated from Flask 1.2
- Queue indicators on submission status
- Dashboard improvements for students and teachers
- Lab ordering in course lists
[0.1.2] - 2021-11-05
Added
- Python support - Initial Python 3 grading capability for the submission server
- User CRUD operations
- Aggregate results API
- Recent submissions on teacher dashboard
Changed
- User management improvements
- Better error messages for teachers and students
Fixed
- Display name handling with Swedish characters
- Submission code view formatting
[0.1] - 2019-08-27
Introduces exam system with randomized selection from question banks.
Added
- Exam system - Timed exams with randomized question selection
- Question banks - Lab banks for exam generation
- User authentication levels (student/teacher/admin)
- Exam restrictions (on-campus IP, password protection)
- Exam results export for offline sync with Canvas LMS
Changed
- Updated to Python 3
- MongoDB context manager implementation
Security
- Regex injection prevention on searches
- Hidden exam enforcement
[0.0.1] - 2016-02-08
Initial release
Added
- Core grading system
- CAS authentication
- Course management
- Lab submissions
- Testcase system
- MongoDB backend
- User levels
- Bootstrap UI