# Patch Notes — Live Camera Effects

## Bug yang diperbaiki
Pada mode **PRO EDUKATIF**, label ISO, shutter, aperture, EV, dan exposure meter berubah, tetapi live preview masih dapat menampilkan video mentah. Penyebab utamanya adalah video dan processed Canvas belum diposisikan sebagai layer overlay yang eksplisit. Video dapat tetap menjadi elemen visual pertama, sedangkan Canvas berada di bawah area yang terpotong oleh `overflow: hidden`.

## Perubahan utama
- Video dan processed Canvas sekarang memakai posisi absolut pada viewport yang sama.
- Processed Canvas berada di atas video dengan `z-index` yang jelas dan `pointer-events: none`.
- Video tidak diberi `display: none` saat PRO agar tetap aktif sebagai sumber frame `drawImage()`.
- Mode PRO otomatis mengaktifkan processed preview ketika ISO, shutter, aperture, EV, mode, atau reset berubah.
- `CameraRenderer` memiliki `setSettings()`, `updateSettings()`, dan `requestRender()` sehingga state terbaru langsung dipakai frame berikutnya.
- Hanya satu `requestAnimationFrame` dapat aktif pada satu waktu.
- AUTO kembali ke video mentah dan menyembunyikan processed Canvas tanpa me-restart stream.
- Original photo tetap diambil melalui `CameraService.capture()` tanpa efek, sedangkan simulated photo tetap melalui `CameraRenderer.captureProcessed()`.

## Efek live preview
- **EV:** menggeser brightness gelap–terang.
- **ISO:** mengubah brightness dan noise simulasi.
- **Shutter:** mengubah motion blur ringan.
- **Aperture:** mengubah blur/depth-of-field edukatif.

Live preview memakai sisi panjang maksimum 960 px demi performa. Simulated snapshot tetap memakai batas aman sisi panjang 2048 px dan maksimal 4 MP. Original photo tidak diturunkan dari resolusi stream aktual.

## Pemeriksaan
- PHP lint dan JavaScript syntax check dijalankan.
- Contract test layer Canvas, state renderer, event kontrol, original/simulated capture, cleanup, dan asset dijalankan.
- Test kamera lama yang relevan dijalankan kembali.

Kamera fisik dan perubahan visual pada Android/iPhone tetap memerlukan pengujian manual melalui `localhost` atau HTTPS.
