# 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.