A complete overhaul of the exam results system — letter grades & GPA on every result card, a downloadable PNG of the card, new Final Result & Teacher's Comment sections, and a rebuilt Academic Transcript with per-exam GPA, class & section positions and a Grand Final averaged across every exam.
When an exam's grade system is enabled, result cards now show a letter grade and grade point for every subject, plus an overall grade from the grand total and a GPA averaged across all subjects. Grades are resolved from each exam's own configured grade table, so the card always reflects the correct scheme.
A new Download button captures the result card as a high-resolution PNG image right in the browser. The export renders at a high scale with a resolved background and CORS-enabled images, shows a spinner while it works, and saves under a clean filename built from the exam and student names — ideal for sharing or archiving without printing.
The result card gains a dedicated Final Result summary and a Teacher's Comment section, with a blank space left for a hand-written remark after the card is printed — giving every card a proper, report-card finish.
The Academic Transcript now computes a per-exam GPA and letter grade, and ranks each student with class and section positions for every exam. A new Grand Final averages a student's marks across all exams, re-grades each subject, and produces a combined GPA and overall position — a full academic picture on one page.
Publishing an exam result no longer depends on the Result in Public setting. That toggle now governs only the public frontend — when it is off, public results pages return 404 while the backend result system and result publishing keep working as normal. The setting description has been updated to make this clear.
Print styles for the result card were reworked to preserve its visual integrity and layout on paper, so what you see on screen carries cleanly through to the printout.
Paginated teacher lists are now sorted by their configured list order and then by name, keeping the roster in a predictable, intentional sequence across pages.
The transcript controller and view were refactored for readability and maintainability — the same output from clearer, more compact code, making future report enhancements easier to build.
The AdminUserSeeder is now registered in the database seeder list so admin data is created on db:seed, and the admin contact mobile number was corrected.
The About-section portrait placeholder now fills its container fully, fixing an undersized image box on the homepage.
Looking for an earlier release? Browse the release archive.