Mobile touch fix: - Added touch-action: manipulation and -webkit-tap-highlight-color: transparent to .question-card .option CSS — prevents mobile browsers from interfering with tap events (double-tap zoom, highlight flash, delayed clicks) Documents hidden for regular users: - Dashboard: stats card hides Documents count for non-moderators - Dashboard: document list section completely hidden for non-moderators - Documents API not called for non-moderators (saves a request) Timer improvements: - Custom timer input on ModeSelectScreen — set any number of minutes for exam mode (overrides the quiz default, or add time to untimed quizzes) - timeLeft saved to Redis progress every 1.5s (alongside answers, mode, voice) - On resume: timer restarts from the saved remaining time - Timer auto-submits when it reaches 0 (already worked, now also works on resume) - Progress bar shows remaining time relative to what was left at resume Nextcloud settings — server-side storage: - GET /auth/me/settings — load user settings from Redis - PUT /auth/me/settings — save settings to Redis (linked to user_id) - SettingsPage loads Nextcloud config from server on mount - Saves to BOTH server (cross-browser persistent) and localStorage (for UploadPage) - Clear function wipes both server and localStorage - Switching browsers and logging in restores Nextcloud settings Also fixed: saved.attemptId → saved.attempt_id in ModeSelectScreen resume check Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| admin.py | ||
| attempts.py | ||
| auth.py | ||
| categories.py | ||
| documents.py | ||
| nextcloud.py | ||
| question_categories.py | ||
| questions.py | ||
| quizzes.py | ||
| tts.py | ||