elemes/frontend
a2nr 24502380aa feat(quiz): strict focus-loss anti-cheat + audit attempt
Kebijakan strict: kehilangan fokus saat kuis aktif langsung mengakhiri kuis
dengan penalti, satu attempt per kuis tercatat audit, pembahasan disembunyikan
saat focus_lost, badge pelanggaran muncul di laporan guru.

Backend:
- tabel quiz_attempts (migration 0002) + endpoint POST /quiz-attempts/submit
  idempotent dengan unique constraint (satu attempt per token+lesson, 409
  untuk duplikat), bounded termination_reason
- models/repositories/storage: QuizAttempt + record/query pelanggaran untuk
  laporan guru (progress)

Frontend:
- quiz-integrity.ts: policy hub (isFocusLossEvent, terminateQuiz,
  shouldShowQuizReview) + attempt_id via crypto.randomUUID()
- lesson.svelte.ts: finalisasi idempotent; sendBeacon untuk exit path yang
  bisa suspend (focus_lost/page_unload), fetch keepalive untuk reason lain
- QuizTab.svelte: summary menyembunyikan pembahasan saat focus_lost
- progress/+page.svelte: badge pelanggaran focus_lost di laporan guru
- APP_VERSION 26 -> 27

Tests & docs:
- 204 backend test pass (unit host + integrasi container, DB elemes_test)
- 107 frontend test pass, svelte-check 0 error
- docs/12-quiz-integrity.md (baru), docs/07-quiz-authoring.md + README FAQ
  anti-cheat diperbarui
2026-08-11 20:55:39 +07:00
..
src feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
static feat(frontend): Velxio iframe fullscreen + playground route + SvelteKit service worker 2026-07-18 17:26:59 +07:00
.dockerignore
Dockerfile feat(elemes): v3.1 checkpoint — BLE deployer enhancements before port to Velxio 2026-07-04 20:21:46 +07:00
package-lock.json fix(frontend): resolve 26 svelte-check type errors 2026-08-09 12:28:17 +07:00
package.json fix(frontend): resolve 26 svelte-check type errors 2026-08-09 12:28:17 +07:00
svelte.config.js
tsconfig.json
vite.config.ts refactor(compose): adaptasi pola network tailscale ala firefly-iii 2026-08-01 12:56:51 +00:00
vitest.config.ts feat(frontend): add vitest + ByteStreamBuffer FIFO for orphan-read fix 2026-07-19 19:03:40 +07:00