# Changelog Semua perubahan penting pada proyek Aplikasi Absensi Akademik didokumentasikan dalam file ini. ## [Unreleased] - Versi Terbaru (Redesign & Backend Integration) Perubahan besar-besaran dilakukan pada arsitektur aplikasi, beralih dari aplikasi *single-screen* sederhana menjadi aplikasi manajemen akademik yang komprehensif dengan autentikasi dan validasi keamanan. ### ✨ Fitur Baru (Added) - **Sistem Autentikasi**: - Menambahkan layar **Login** dan **Register**. - Integrasi **JWT Authentication** (penyimpanan token via `SharedPreferences`). - Manajemen sesi pengguna (Auto-login jika token tersimpan). - **Manajemen Jadwal & Mata Kuliah**: - Menambahkan fitur pengambilan data **Jadwal Kuliah** hari ini dari database. - Dropdown pemilihan mata kuliah saat melakukan absensi. - **Validasi Keamanan Tingkat Lanjut**: - **Geofencing**: Validasi lokasi dalam radius 500m dari koordinat kampus. - **Anti-Fake GPS**: Logika deteksi aplikasi *Mock Location* untuk mencegah kecurangan. - **Face Detection**: Integrasi **CameraX + ML Kit** (tersirat dalam logika kamera baru) untuk mewajibkan deteksi wajah saat status "HADIR". - **Fitur Kamera Kustom**: - Mengganti intent kamera bawaan (`MediaStore`) dengan **CameraX** tertanam dalam UI. - Fitur overlay kamera untuk panduan posisi wajah/dokumen. - Dukungan kamera depan (selfie) dan belakang (dokumen). - **Riwayat & Profil**: - Menambahkan tab **Riwayat Absensi** untuk melihat log kehadiran dan bukti foto. - Menambahkan tab **Profil** yang menampilkan data mahasiswa dan fitur Logout. - **Multi-Status Absensi**: - Dukungan untuk status **HADIR**, **SAKIT**, dan **IZIN**. - Logika validasi berbeda untuk setiap status (Sakit/Izin tidak butuh radius lokasi). ### 🎨 Antarmuka & UX (Changed) - **UI Overhaul (Material3)**: - Redesign total menggunakan **Jetpack Compose Material3**. - Penerapan tema identitas kampus (**Gold & Maroon**). - Penggunaan komponen UI modern: `Card`, `NavigationBar` (Bottom Nav), `Gradient Button`. - **Navigasi**: - Implementasi **Bottom Navigation Bar** dengan 4 menu utama (Absensi, Kelas, Riwayat, Profil). - Transisi antar layar (Login <-> Main <-> Register). - **Feedback User**: - Loading indicator saat proses API berjalan. - Dialog error dan sukses yang lebih informatif dibandingkan `Toast` sederhana. ### ⚙️ Teknis & Backend (Changed) - **Migrasi API**: - **Sebelumnya**: Mengirim data hardcoded langsung ke Webhook N8N via `HttpURLConnection`. - **Sekarang**: Berkomunikasi dengan **Backend Python Flask** (`/api/auth`, `/api/absensi`, `/api/jadwal`). Backend yang kemudian meneruskan data ke N8N. - **Struktur Kode**: - Refactoring dari *Single Activity Monolith* menjadi struktur modular. - Pemisahan logic ke dalam: - `AppConstants` (Konfigurasi URL & Koordinat). - `UserPreferences` (Manajemen sesi lokal). - `Data Classes` (Mahasiswa, Jadwal, Riwayat). - Helper functions (Bitmap Converter, Distance Calculation). ### 🔥 Dihapus (Removed) - Menghapus pengiriman data hardcoded (NPM "12345") pada fungsi `kirimKeN8n`. - Menghapus penggunaan `MediaStore.ACTION_IMAGE_CAPTURE` (Intent kamera eksternal). - Menghapus tampilan *single-screen* sederhana tanpa navigasi. --- ## [Legacy] - Versi Awal (Sebelum Redesign) Versi purwarupa (prototype) untuk pengujian fungsionalitas dasar. ### Fitur - Pengambilan titik koordinat GPS sederhana (`FusedLocationProvider`). - Pengambilan foto menggunakan aplikasi kamera bawaan HP (`Intent`). - Pengiriman data dummy langsung ke Webhook N8N. - Tampilan UI dasar menggunakan `Column` dan `Button` standar.