elemes/frontend
a2nr c911908316 feat(progress): sinkronisasi evaluasi & recompute progress saat publish
- Publish konten langsung menyinkronkan lesson registry dan merekomputasi
  composite/state siswa bila jenis evaluasi (latihan/kuis) berubah, tanpa
  menunggu restart server.
- TTL cache (`LESSON_LIST_CACHE_TTL`, default 30 detik) untuk daftar lesson
  agar worker gunicorn lain ikut segar tanpa invalidasi lintas proses.
- Endpoint POST /content/sync-registry (teacher-only) + tombol Sinkronisasi di
  /teacher/progress untuk menangkap perubahan konten di luar webapp.
- Notifikasi editor saat progress siswa dihitung ulang pasca-publish.
- `recompute_lesson_progress()`: skor historis tetap disimpan; state legacy
  completed/scored tidak disentuh.
- Test unit (TTL cache + signature evaluasi) dan integrasi (publish recompute,
  sync registry, endpoint auth) + dokumentasi.

Tanpa perubahan schema DB.
2026-10-27 00:50:02 +07:00
..
src feat(progress): sinkronisasi evaluasi & recompute progress saat publish 2026-10-27 00:50:02 +07:00
static feat(code-runner): implement client-side C and Python execution with offline mirror and COEP iframe embedding 2026-09-13 10:14:51 +07:00
tests/e2e feat(code-runner): implement client-side C and Python execution with offline mirror and COEP iframe embedding 2026-09-13 10:14:51 +07:00
.dockerignore
…
Dockerfile
…
node-polyfill.cjs feat(code-runner): implement client-side C and Python execution with offline mirror and COEP iframe embedding 2026-09-13 10:14:51 +07:00
package-lock.json chore: tambah fflate untuk unzip client-side 2026-10-01 12:06:24 +07:00
package.json chore: tambah fflate untuk unzip client-side 2026-10-01 12:06:24 +07:00
svelte.config.js
…
tsconfig.json
…
vite.config.ts feat(playground): implement synchronous interactive input for client-side C and Python 2026-09-14 04:13:08 +07:00
vitest.config.ts fix(review): address code review findings for dev to master merge 2026-09-06 18:08:58 +07:00