# Changelog KabarNikah

## 1.0.0 — 13 November 2026

Rilis pertama.

### Platform
- Aplikasi PHP 8.2+ tanpa framework, basis data SQLite (WAL, transaksi `BEGIN IMMEDIATE`), migrasi otomatis saat pembaruan.
- Installer satu kali dengan kode bootstrap di folder privat; tanpa akun admin bawaan.
- Dua peran (admin, member) ditentukan server; sesi tersimpan di basis data; CSRF; pembatasan laju; Argon2id/bcrypt.
- Enkripsi nilai rahasia (libsodium), CSP ketat dengan nonce, header keamanan, folder privat di luar document root.
- Merek KabarNikah dengan logo pemilik (navy–emas), favicon lengkap, gambar OG.
- Layar pembuka animasi: amplop terbuka → dua cincin keluar dan menyatu → hati putih di atasnya (hormati `prefers-reduced-motion`, sekali per sesi).

### Penjualan
- Landing lengkap, katalog 4 desain, halaman detail (video nyata, cover, tangkapan layar), demo publik berlabel data fiktif, harga, FAQ, halaman kebijakan (draf).
- Checkout dengan snapshot harga, transfer manual + unggah bukti privat, verifikasi admin idempoten, Midtrans Snap dengan verifikasi tanda tangan & cek status API.
- Hak per pembelian (satu pembelian = satu undangan untuk template yang dibeli), masa aktif 365 hari, perpanjangan untuk undangan yang sama, kedaluwarsa yang mengunci editor & menonaktifkan tautan publik.
- Produk terkunci sampai admin mengonfirmasi hak penggunaan aset dan mengisi metode pembayaran.

### Undangan & editor
- Empat renderer dari ZIP sumber (Glass Wonder, Burgundy Vintage Hitam, Isometric Castle, Istana Kertas) dengan adaptor data, token warna, dan aset lokal.
- Editor: autosave, draft terpisah dari versi terbit, riwayat & pulihkan revisi, deteksi konflik, cadangan lokal; unggah foto dengan crop/zoom/putar per slot; editor warna dengan preset & cek kontras; pratinjau ponsel/tablet/desktop.
- Tamu dengan tautan personal & mode privat, RSVP, ucapan dengan moderasi, ekspor CSV/XLSX aman formula, kalender ICS, peta.

### Sebar WhatsApp (OpenWA)
- Kontak manual, impor XLSX/CSV (pemetaan kolom, validasi nomor, dedupe, unduh baris ditolak), daftar pengecualian.
- Pengaturan pesan per member dengan variabel daftar-putih dan 3 preset.
- Koneksi nomor per member via QR (sesi & webhook OpenWA per koneksi), kampanye dengan snapshot pesan, kirim uji ke nomor sendiri, jadwal, jeda/lanjut/batal, kirim ulang terkendali, kuota per hak, jeda acak & batas harian per nomor.
- Worker Node tanpa dependensi (HMAC + nonce + lease) dan alternatif cron PHP; webhook HMAC dengan status monoton (diterima server → sampai → dibaca; gagal; tidak pasti).

### Admin
- Ringkasan operasional, pesanan & verifikasi, produk/harga/cover/lisensi, member & hak (beri/perpanjang/tangguhkan/cabut), undangan (bantu edit, tangguhkan, alihkan), konten landing & video, pengaturan (pembayaran, Midtrans, SMTP, OpenWA, batas WA, umum), pemantauan WA, dukungan, log audit, email keluar, cadangan & pemulihan, pemeriksaan sistem.

### Perbaikan selama pengujian
- Transaksi basis data kini selalu di-*rollback* saat galat (sebelumnya kunci tulis dapat tertahan).
- Router mendukung kuantifier `{n,m}` di pola parameter (URL media sempat 404).
- Deteksi `base_path` tidak lagi salah pada URL berekstensi.
- Halaman galat bergaya penuh.
- Foto model contoh template tidak lagi tampil di undangan member (placeholder netral; diganti sebelum halaman dikirim).
- Token warna T03: aturan tambahan hanya aktif bila warna diubah; "Latar panel" kini mewarnai panel bergradasi.
- Ikon panah galeri T03 yang menunjuk CDN penyedia diganti SVG lokal.
- Overflow horizontal di ponsel pada beberapa halaman dasbor diperbaiki.

### Diketahui / belum diuji nyata
- Pembayaran Midtrans sungguhan, SMTP, pengiriman WhatsApp ke nomor nyata, shared hosting nyata, Safari iOS & perangkat fisik (lihat LAPORAN_PENGUJIAN.md §5).
