- Add toggle between Smart Scan (jscanify) and Manual Crop (cropper.js) modes
- Default to Manual Crop mode on touch devices for easier mobile use
- Integrate cropper.js with pinch-to-zoom, pan, and touch-friendly handles
- Increase corner point size and button sizes for better touch targets
- Add mobile help text and visual guidance
- Maintain backward compatibility with existing scanner functionality
- Improve touch event handling to prevent unwanted scrolling
- Create sidak_database_init.sql with complete table structures
- Includes primary keys, auto-increments, and foreign key constraints
- Uses utf8mb4 charset for full Unicode support
- Adds default admin user (admin/admin) and kaur user (kaur/kaur)
- Adds default village profile data
- Ready for deployment on new servers
- Replace native confirm() with SweetAlert2 for better UX
- Add custom confirmation functions for logout and delete actions
- Fix HTML syntax errors (</> to </a>) in all data tables
- Use consistent styling with cancel/confirm buttons
- All confirmations now have 'Konfirmasi Hapus'/'Konfirmasi Logout' titles
- Map 'admin' → 'Administrator', 'kaur' → 'Kaur Pemerintah' in sidebar and user list
- Fix sidebar menu comparison to use 'kaur' instead of 'Kaur Pemerintah'
- Implement bidirectional KK-KTP linkage system (address-based & NIK-based)
- Optimize scanner for mobile devices (touch slop, larger hit areas, modal locking)
- Add NIK validation (16-digit numeric) with client-side feedback
- Set default RT/RW values to '000' for both KK and KTP forms
- Change 'Kpl Keluarga' label to 'Kepala Keluarga'
- Improve scanner error messages and user feedback
- Remove redundant 'Deteksi Dokumen' button
- Add database schema updates and Docker support files
- Add compact Village Profile (Desa, Kecamatan, Kabupaten) header to Dashboard.
- Move Chart Legend to the right for better space utilization.
- Remove redundant spacing and headers around the Population Chart.
- Implemented Modern Theme (Inter font, Rounded UI, Indigo/White palette)
- Updated Login Page with gradient background and modern card
- Added Age Demographics to Dashboard (Stats count)
- Integrated Chart.js for Population Donut Chart
- Made Dashboard Info Boxes clickable with Age Category filtering
- Updated Resident Data table to support age filtering
- Added Age Classification Report (admin/laporan/laporan_klasifikasi.php)
- Updated Reports to use Dynamic Village Profile (tb_profil)
- Use 'nama_desa' column for village name
- Enhanced KK Scan to auto-link existing members by NIK
- Updated Index menu for Age Report (Admin & Kaur scope)
- Rebranded Footer to Wartana 2026
- Removed legacy 'Versi 2020' text
- Report: Added printable reports for all categories.
- Dashboard: Fixed broken links and implemented gender balance filtering.
- Logic: Auto-integration of Arrivals and Births into Resident/KK data.
- Fix: Solved deletion popup bug in Birth Data.
- Feature: Added Full KK History view.
- Feature: Implemented Dynamic Village Profile for letter templates.