- Fix jwt_required decorator to set request.env user context via
update_env() instead of passing user as kwarg (fixes null student_id
on attempt creation for auth='none' API routes)
- Build standalone exam session page with timer, question navigator,
auto-save, and instant score display (no dependency on web.frontend_layout)
- Add exam_delivery.js for client-side exam interaction (MCQ selection,
section navigation, countdown, autosave, submit & results)
- Generate per-session JWT in controller for API calls from the exam page
Made-with: Cursor