# Final Release Notes — Fase 7

## Ringkasan

- **Fase 7A:** kualitas Otomatis/HD/Full HD/Maksimal, fallback constraint, resolusi aktual, snapshot resolusi tinggi, fullscreen native, dan immersive fallback.
- **Fase 7B:** AUTO/PRO, ISO, shutter, aperture, EV, exposure meter, grid, bottom sheet, shutter, serta review Original–Simulated.
- **Fase 7C:** sidebar kontras, bottom navigation mobile, menu aktif, toast, loading nyata, pencegahan double submit, form/tabel/modal, dan microinteraction ringan.
- **Fase 7D:** regression, lifecycle cleanup, optimasi memori Canvas, pembatalan metadata kamera, pembersihan listener/timer, hardening base-path router, security regression, dokumentasi, dan paket final.

## Optimasi dan Perbaikan Utama

- Capture simulasi yang masih menjalankan `toBlob()` tidak dapat menghidupkan kembali render loop setelah kamera dihentikan atau halaman ditinggalkan.
- Canvas original dan seluruh buffer simulasi beresolusi tinggi dilepas setelah tidak digunakan.
- Penantian metadata kamera dapat dibatalkan sehingga timeout dan listener tidak tertinggal saat stop/switch/navigasi.
- Navigasi melalui browser back-forward cache menghentikan stream dengan aman dan meminta pengguna mengaktifkan kamera kembali.
- Listener tombol fullscreen dilepas ketika komponen dihancurkan; body scroll lock dan state fullscreen dikembalikan.
- Kegagalan kontrol hardware tidak meninggalkan input dalam keadaan disabled; simulasi tetap tersedia.
- Router hanya menghapus base path pada batas segmen URL yang benar.

## File Utama yang Diubah

- `public/assets/js/camera-service.js`
- `public/assets/js/camera-renderer.js`
- `public/assets/js/camera-ui.js`
- `public/assets/js/camera-fullscreen.js`
- `public/assets/js/pro-controls.js`
- `app/Core/Router.php`
- dokumentasi dan contract test Fase 7 final.

## Mobile dan Accessibility

Safe-area, portrait/landscape, touch target, focus-visible, keyboard Escape, `aria-live`, indikator aktif nonwarna, dan `prefers-reduced-motion` tetap dipertahankan. Kamera fullscreen berada di atas sidebar, top bar, bottom navigation, modal umum, dan toast.

## Security Regression

Role Guru/Siswa, CSRF, prepared statement, upload MIME/dimensi/ukuran, nama file acak, storage di luar public, ownership file, path traversal guard, output escaping, CSP, session cookie, dan file streaming terproteksi diperiksa secara statis. Database, migration, seed, dan schema tidak diubah pada Fase 7D.

## Hasil Pemeriksaan Otomatis

- 168 file PHP lolos `php -l`; 23 file JavaScript/MJS lolos `node --check`; 6 stylesheet lolos parse CSS.
- 17 rangkaian contract/runtime test lulus tanpa kegagalan, termasuk Fase 7A, 7B, 7C, lifecycle Fase 7D, Photography Engine, CameraService, materi, Praktikum, Digital Project, dan evaluasi.
- Contract final Fase 7D lulus 24/24; lifecycle kamera lulus 7/7.
- 117 referensi asset lokal diperiksa dan seluruh file tersedia.
- 20 file migration/seed identik dengan paket Fase 7C; schema database tidak berubah.
- Paket bersih dari ZIP lama, dump backup SQL, screenshot historis, log kosong, dan file sementara.

## Keterbatasan

Environment pengerjaan tidak menyediakan kamera fisik, browser grafis, perangkat mobile nyata, HTTPS hosting, koneksi MariaDB target, driver PDO MySQL, atau ekstensi PHP cURL. Permission, resolusi aktual, kamera depan/belakang, fullscreen perangkat, portrait/landscape, upload HTTP, session, dan grading database harus diverifikasi melalui `MANUAL_REGRESSION_PHASE7.md`.

## Deployment

Gunakan XAMPP melalui `http://localhost/final_virtuallab/public/`. Pada hosting, arahkan document root ke `public/`, aktifkan HTTPS, PDO MySQL, dan permission storage, lalu nonaktifkan debug produksi.
