elemes/frontend
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
..
src fix(progress): sync offline-first yang benar (outbox lifecycle + server-ack) 2026-10-26 13:57:48 +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 fix(markdown): sanitasi DOMPurify, perbaikan parser flashcard & kompatibilitas SSR Node 20 2026-08-28 05:24:44 +07:00
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