# Patch Praktikum Kamera & Digital Project

## Praktikum Kamera

- Memperbaiki error JavaScript ketika elemen petunjuk perangkat/capability belum tersedia.
- Menambahkan fallback constraint kamera untuk perangkat yang menolak preferensi kamera belakang atau resolusi ideal.
- Mencegah race condition ketika kamera dihentikan, diganti, atau diaktifkan ulang.
- Kegagalan pembacaan capability/preview simulasi tidak lagi mematikan live view kamera asli.
- Pesan izin, HTTPS/localhost, kamera sibuk, dan troubleshooting diperjelas.

## Digital Project

- UI Guru dan Siswa dirancang ulang dengan hero, statistik, card project, galeri, workspace, review, dan tampilan mobile.
- Upload mendukung beberapa foto, progress, validasi format/ukuran di browser dan server, foto utama, serta hapus foto.
- Judul, konsep, dan refleksi dapat disimpan sebagai draft atau dikumpulkan dari form yang sama.
- Checklist pengumpulan diperbarui langsung saat siswa mengisi narasi.
- Tenggat divalidasi backend; revisi dari Guru tetap dapat dikerjakan setelah tenggat.
- Submission berstatus revisi harus dikumpulkan ulang sebelum Guru dapat menilai kembali.
- Instruksi HTML lama dirender melalui whitelist aman.
- Seed Digital Project diperbaiki agar jumlah minimal foto dan teks ketentuan konsisten.

## Batas Pengujian

Lint PHP, sintaks JavaScript, contract test, dan regression test statis telah dijalankan. Aktivasi kamera asli, permission browser, upload HTTP, dan transaksi MariaDB tetap perlu diuji pada XAMPP/HTTPS karena lingkungan patch tidak memiliki perangkat kamera serta `pdo_mysql`.
