elemes/frontend/src
a2nr afa31116c3 fix(progress): sync offline-first yang benar (outbox lifecycle + server-ack)
- syncManager.start() di-wire di layout: listener online, heartbeat 30s,
  drain awal, dan requeue progress lokal yang belum ter-ack
- completeLesson: POST langsung dulu, state resmi dari server; gagal
  network -> mirror pending + outbox; guard hanya skip bila sudah ack
- payload kuis offline kini lengkap (attempt_id/status/score/occurred_at/
  answers), tidak lagi poison 400
- dead-letter 4xx permanen & retry >= 5, network error tidak menghentikan
  drain, X-Idempotency-Key diteruskan proxy, storage.persist()
- badge status sync di halaman lesson
- test sync-manager: online/heartbeat/dead-letter/recovery/requeue
2026-10-26 13:57:48 +07:00
..
lib fix(progress): sync offline-first yang benar (outbox lifecycle + server-ack) 2026-10-26 13:57:48 +07:00
routes fix(progress): sync offline-first yang benar (outbox lifecycle + server-ack) 2026-10-26 13:57:48 +07:00
app.css feat(embed): add raw HTML embed fence with bleach sanitization 2026-07-19 15:39:38 +07:00
app.html fix: register SvelteKit service-worker.js instead of static sw.js 2026-07-17 10:37:48 +07:00
hooks.server.test.ts fix(upload): review — CSP SVG, boundary 5 MiB, regression guard 502/413 2026-10-03 08:06:29 +07:00
hooks.server.ts fix(progress): sync offline-first yang benar (outbox lifecycle + server-ack) 2026-10-26 13:57:48 +07:00
service-worker.ts 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