
sparkmentis-fork
Created Jul 2025
The dot-grid decoration in the EmptyState component was incorrectly bleeding over the text due to improper sizing and absolute positioning. I constrained the element within a fixed 128px overflow-hidden container and updated the mask to prevent overlaps. This ensures the component text remains readable and correctly aligned. 
We have refactored the EmptyState component to improve visual hierarchy and readability. The icon is now visually separated from the background dot-grid by sitting on a raised white chip, preventing visual blending. Additionally, we increased the padding, icon size, and heading text size for a cleaner, more prominent design. 
Refactored the EmptyState component to improve visual clarity by removing unnecessary animations and complex decorations like floating icons, scale/fade effects, and gradient medallions. The new design features a clean, static look with a monochrome icon over a subtle dot-grid, significantly reducing visual noise while maintaining clear call-to-actions. This shift towards a quieter, more functional aesthetic ensures the UI feels less intrusive during empty states. 
The user anonymization dialog was failing to open due to an incorrect API route path. The component was attempting to fetch from a non-existent /anonymize/preview endpoint, which resulted in a 404 error. This fix corrects the route path to point directly to the existing anonymize handler, restoring functionality for administrators. 
This update introduces a comprehensive suite of administrative improvements, including GDPR-compliant user anonymization, a unified profile approval queue, and a new onboarding checklist across all user dashboards. Access control logic was refactored into a centralized policy layer to consistently hide non-active users across search, messaging, and roster surfaces. These changes significantly improve system maintenance and user data privacy practices. 
Addressed a critical issue where students could not resume unfinished or re-granted exam attempts due to visibility constraints in the UI. Added a new isResumable helper to identify active attempts regardless of the exam window status and introduced a dedicated 'Continue where you left off' section on the student dashboard. This ensures students can access their exams even after the initial exam window has closed, and added clear 'In progress' indicators to provide better state visibility. 
Resolved an issue where the proctoring equipment pre-check would erroneously fail when the video element wasn't mounted, causing students to get stuck. The fix now utilizes a persistent stream reference and ensures a live preview is available during the check. Additionally, added safety measures like FPS measurement timeouts and re-entrancy guards to ensure a smooth check-in experience. 
This massive update introduces v3 of the proctoring engine, significantly tightening assessment integrity. New features include a robust presence heartbeat system, mandatory equipment pre-checks (including virtual camera detection), second-voice analysis, and collusion detection. Finally, these signals are consolidated into an automated integrity report, providing teachers and admins with clear, actionable insights into student behavior. 
This update introduces a sophisticated AI-driven proctoring engine featuring real-time object detection, identity re-verification, and a risk adjudication layer powered by Gemini to reduce false positives. Additionally, a comprehensive user engagement tracking system has been implemented, providing telemetry ingestion, weighted scoring, and new admin dashboards for monitoring student activity. These changes significantly enhance assessment integrity and provide deeper insights into platform usage patterns. 
We've completely overhauled the AI question-generation interface to move away from the previous vertical stack toward a more efficient two-column layout. This update consolidates redundant controls into a cleaner, structured format, introducing a segmented source toggle and a merged plan table to reduce clutter. No underlying API or generation logic was changed, so this is strictly a UI/UX improvement to streamline the authoring experience. 
We've added functionality to include institution-specific branding, such as logos, taglines, and watermarks, in the paginated exam paper printouts. This release introduces a new Branding interface and API integration, allowing users to toggle these branding elements on or off directly through the UI. It provides a more professional and customizable experience for exam administration. 
This update introduces browser violation tracking to the proctoring system, allowing for better monitoring of student behavior alongside traditional camera-based events. Additionally, we fixed issues with AI question generation where large batches would fail due to token limit exhaustion; the generation process is now chunked based on estimated cost, and requests are more resilient to partial failures. 
We completely overhauled the question generation system to fix critical issues with bank usage, mark mismatches, and question duplication. The new question-generation-plan module ensures strict adherence to exam patterns, properly apportions demand between AI and bank sources, and enforces global deduplication. The UI now includes a unified generator with better visibility into mark availability, while the backend logic ensures that questions match requested marks exactly. 
This update introduces significant improvements to the exam management suite, including an ApprovalChangeSummary component for tracking submission changes and better proctoring settings management via ProctoringSettingsDialog. We've also enhanced question-paper import robust validation and added support for automatic rubric generation in the ExamQuestionEditor to streamline grading. These changes significantly improve both the administrative approval process and teacher-side exam authoring experience. 
This update introduces significant improvements to unit testing and assignment workflows, including a new offline testing mode, unified exam/unit-test editors, and enhanced assignment lifecycle management. The unit-test question editor has been refactored to share robust, tree-aware components with the exam system, replacing a problematic flat editor and fixing data-loss issues. Additionally, assignment-related APIs have been streamlined for better security and error handling, complemented by improved teacher-guidance flows. 
We have updated @opentelemetry/sdk-metrics and @opentelemetry/sdk-trace to 1.30.1, while also cleaning up the package-lock.json for better consistency. This update includes necessary adjustments to peer dependencies and engines for improved compatibility across the project. 
Replaced the ambiguous exam scheduling model with a structured approach using scheduleMode and latePolicy to eliminate silent duration clipping and configuration conflicts. All scheduling logic is now centralized in lib/exam-schedule.ts, ensuring consistent behavior across APIs and UI surfaces. This release also includes an upgrade to Next.js 16, transitioning to the new flat ESLint configuration and introducing a proxy-based approach for middleware. 
This release introduces a robust course backlog system to manage student pass/fail lifecycles, replaces manual evaluation with a new offline OMR scanning workflow, and adds background AI-grading for exam submissions. We also significantly tightened teacher access controls, ensuring attendance and course management are correctly scoped to assigned batches. These changes replace several fragmented manual processes with automated, durable, and granular systems to improve overall platform stability and usability. 
This update fixes a sidebar issue where nested routes caused multiple navigation items to highlight simultaneously by shifting to a longest-match path resolution strategy. Additionally, search performance across admin, teacher, and student portals has been drastically improved by introducing client-side searchable pickers and fixing debouncing race conditions. Users will now experience a snappier interface with clearer navigation state. 
Previously, teacher selection dropdowns were defaulting to a limit of 20 results, causing veteran teachers to be missing from lists in course and exam management. I increased the fetch limit to 200 and integrated the SearchableSelect component into multiple teacher-picking interfaces, allowing for quick client-side filtering without extra network requests. This ensures all teachers are accessible for assignments. 
