Commit Graph
102 Commits
Author SHA1 Message Date
Novy San87 1a7c18ce07 fix: tombol Cetak PDF & Export Excel jadi submit native di dalam form (formaction) — pasti membawa semua filter 2026-08-06 22:54:50 +07:00
Novy San87 7c0f1dc02a fix: tombol Cetak PDF/Export Excel kirim filter via state Alpine (class+jenis) — bukan atribut form yang kadang tidak membawa nilai 2026-08-06 22:52:01 +07:00
Novy San87 558bb883ad fix(ui): tata ulang filter laporan — 4 kolom rapi (tanggal/kelas/jenis), tombol Terapkan+Reset+Cepat satu baris terpisah, perbaiki div tak seimbang 2026-08-06 22:45:07 +07:00
Novy San87 0013facf5f feat: filter Jenis Pelanggaran di Laporan Rekap — dropdown kategori+jenis (poin), berlaku untuk tampilan & cetak PDF 2026-08-06 22:43:27 +07:00
Novy San87 7ed2d7e1b3 fix: icon FA7 — megaphone/clipboard-user tidak ada di FontAwesome 7, ganti tower-broadcast & user-clock 2026-08-06 22:42:05 +07:00
Novy San87 8da3f6fac4 fix: icon sidebar wali — daftarkan house-user/clipboard-user/megaphone ke mapping nav-item (sebelumnya jatuh ke default circle) 2026-08-06 22:40:38 +07:00
Novy San87 940bba8a6a ui: ganti icon sidebar — Data Wali Murid (house-user), Verifikasi Wali (clipboard-user), Informasi Sekolah (megaphone) 2026-08-06 22:38:59 +07:00
Novy San87 6524cb8616 ui(premium): Verifikasi Wali — header gradien + badge SiMURID, 4 kartu statistik, kartu antrean premium (avatar gradien + badge relasi + chip NISN + HP), tombol setujui/tolak gradien, konfirmasi Swal + alasan penolakan, tabel riwayat premium 2026-08-06 22:34:54 +07:00
Novy San87 dc211f3e05 fix: status akun di Data Wali Murid ikut status verifikasi tautan — pending tampil 'Menunggu verifikasi' (bukan aktif) 2026-08-06 22:32:36 +07:00
Novy San87 505d060df2 feat: Logout jarak jauh wali — cabut semua token Sanctum dari panel admin, app langsung 401 → login ulang 2026-08-06 22:03:05 +07:00
Novy San87 c8f90866ca feat: hapus akun wali murid — tombol Hapus + konfirmasi Swal, hapus user + tautan anak + perangkat (data siswa aman) 2026-08-06 21:57:18 +07:00
Novy San87 25502b99f3 feat: Data Wali Murid diperkaya — relasi (Ayah/Ibu/Wali), email, status akun, perangkat & last active (fix $pending/$baruMingguIni) 2026-08-06 21:52:07 +07:00
Novy San87 d83689a95b ui(premium): Data Wali Murid — header gradien + badge SiMURID, 4 kartu statistik, search premium, tabel dengan avatar gradien & badge status pulsing, tombol reset gradien amber 2026-08-06 21:47:44 +07:00
Novy San87 eb6d8c4256 feat: Data Wali Murid terpisah — halaman khusus (daftar akun + anak + reset password), user internal difilter dari role parent 2026-08-06 21:44:52 +07:00
Novy San87 31643ff7dc feat: menu & API Informasi Sekolah untuk aplikasi wali
- Tabel school_informations (judul, isi, kategori, tanggal kegiatan, publish)
- Menu admin 'Informasi Sekolah' (CRUD + permission manage-school-info)
- API wali: GET /parent/school-informations (hanya yang dipublikasikan)
- 2 data contoh: Jadwal UTS & Class Meet
- Test suite tetap hijau (39 test)
2026-08-05 21:11:06 +07:00
Novy San87 3efce0f919 feat: API wali murid (Sanctum) + verifikasi admin
- Pasang laravel/sanctum, routes/api.php (prefix api/v1, 10 endpoint)
- Migrasi: parent_name di students, parent_students (pivot wali↔anak),
  parent_devices (token FCM), permission parents-verify
- Auth wali: registrasi NISN+HP (auto-verify jika HP cocok data siswa,
  pending jika tidak) + login token Sanctum
- Endpoint: me, logout, students, link anak, violations, sp-letters,
  notifications, register device
- Halaman admin Verifikasi Wali (approve/reject) + menu sidebar
- Sync kesiswaan: tarik data orang tua (student_parents) ke students
- 8 feature test baru (ParentApiTest) — total suite 39 test hijau
2026-08-05 18:58:29 +07:00
Novy San87 b06419624b Fix viewfinder hilang: aspect-[3/4] tidak di-generate Tailwind v4 → CSS manual .face-viewfinder (3:4 HP, 4:3 desktop) 2026-08-05 18:29:26 +07:00
Novy San87 28abd132c9 Face scan: viewfinder lebih lega di HP (rasio 3:4 potret) — desktop tetap 4:3 2026-08-05 18:28:16 +07:00
Novy San87 381f087a51 Face scan: ganti library deteksi MediaPipe WASM → face-api.js (tfjs + tinyFaceDetector) — kompatibilitas browser HP jauh lebih baik, model 193KB self-host 2026-08-05 18:20:02 +07:00
Novy San87 324d9d55d8 Face scan: sensitivitas deteksi dinaikkan — minDetectionConfidence 0.5→0.35, resolusi kamera 1280→960 (frame lebih cepat di HP) 2026-08-05 18:15:44 +07:00
Novy San87 586fbc3a56 Face scan: hapus UI indikator liveness (Kedip/Senyum/3D/Gerak) — mode tanpa liveness bersih 2026-08-05 18:14:39 +07:00
Novy San87 1019ac34e1 Face scan: kembali ke mode tanpa liveness — wajah cocok langsung selesai (sesuai permintaan) 2026-08-05 18:12:37 +07:00
Novy San87 1ed6fb43f1 Face scan: gerak (motion) ikut jadi sinyal penerimaan — praktis di kamera HP; foto diam tetap tertolak; auto-accept tidak lagi bergantung landmarker 2026-08-05 18:09:10 +07:00
Novy San87 63bdadcdd2 Poles halaman Pengaturan premium
- Header card gradient biru + watermark, judul extrabold
- Input/label seragam (.input, label xs bold slate)
- 5 seksi dengan icon chip: Identitas (school), Kop Surat (file-lines),
  Background Login (image), Kepala Sekolah (user-tie), Template WA
  (whatsapp brand)
- Tombol Simpan Pengaturan btn-primary full-width
- Perbaiki label Nama Kepala Sekolah yang sempat hilang + keseimbangan div
- Test 31/105 hijau
2026-08-03 18:59:10 +07:00
Novy San87 187be9676b Fix sidebar blokir scroll halaman di desktop
- Hapus overscroll-contain dari nav sidebar: kelas ini memblokir scroll
  chaining ke body, sehingga saat mouse di sidebar & menu pendek, roda
  scroll tidak menggulir halaman utama
- Sekarang scroll mengalir normal: menu sidebar habis → lanjut ke halaman
2026-08-03 18:55:17 +07:00
Novy San87 3170d7deb4 Fix tumpang tindih icon & placeholder di input pencarian
- Kelas kustom (.input/.btn-primary/.btn-outline/.card) dibungkus
  @layer components — sebelumnya unlayered sehingga menang atas utility
  Tailwind (pl-9 dll), membuat icon search menimpa placeholder
- Sekarang utility (layer utilities) bisa menimpa komponen sesuai urutan
  layer CSS (base < components < utilities)
2026-08-03 18:39:58 +07:00
Novy San87 57d618a1ad Poles halaman Input Pelanggaran premium
- Breadcrumb chevron + slate, judul extrabold
- Header form: gradient lebih dalam (blue-600→sky-400) + watermark gavel
- Section label slate seragam (5 bagian), input pakai sistem .input
- Tombol Pilih File/Ambil Foto/Batal btn-outline, Simpan btn-primary
- Logika Alpine tidak disentuh
2026-08-03 18:37:26 +07:00
Novy San87 4dce2ad1d3 Poles halaman Jenis Pelanggaran premium
- Header: tombol Download/Export/Import btn-outline, Tambah btn-primary
- Filter: input .input, tombol Filter/Reset sistem
- Tabel: thead slate, kategori jadi pill warna, poin +icon bolt, aksi
  pill Edit/Nonaktifkan/Aktifkan konsisten, badge Sistem + x-tooltip,
  empty state gradient
- Modal CRUD & Import: header gradient biru-indigo, .input seragam,
  toggle iOS + glow, tombol btn
2026-08-03 18:23:04 +07:00
Novy San87 d6fa338921 Modal kategori: overlay blur konsisten (bg-slate-900/50 backdrop-blur-sm) 2026-08-03 18:20:45 +07:00
Novy San87 eec19d9a4f Poles halaman Kategori Pelanggaran premium
- Kartu: strip gradient warna, icon chip gradient, badge 'X jenis' + urutan,
  hover lift, label Nonaktif, aksi Edit/Nonaktifkan/Aktifkan pill + icon FA
- Empty state icon gradient + tombol btn-primary
- Modal: header gradient biru-indigo, input .input seragam, color picker +
  8 preset swatch, toggle status iOS + glow, preview, tombol btn-primary/
  btn-outline
2026-08-03 18:17:55 +07:00
Novy San87 c1b8a083f7 Brand area sidebar: tinggi eksplisit h-16 (sama persis topbar) + items-center 2026-08-03 18:15:32 +07:00
Novy San87 3e0c526daf Sejajarkan tinggi brand area sidebar dengan topbar (64px) 2026-08-03 18:14:11 +07:00
Novy San87 c7d15b65ae Poles halaman Data Siswa premium
- Header: badge 'X siswa' pill + badge filter 'X ditemukan'
- Tombol Cari/Reset pakai sistem btn-primary/btn-outline
- Avatar siswa: gradient warna bervariasi per huruf awal nama (6 palet,
  konsisten utk nama yang sama)
- thead slate + tracking huruf, divide slate; jurusan jadi badge soft
- Empty state icon gradient
2026-08-03 18:10:54 +07:00
Novy San87 3169c636c5 Tooltip kustom premium via Alpine directive x-tooltip
- Directive global di app.js: satu tooltip singleton di body, posisi dari
  getBoundingClientRect (fixed, tidak terpotong overflow-hidden), animasi
  fade + slide halus, delay 120ms anti-kedip, fallback ke bawah jika di
  tepi atas viewport, clamp ke viewport
- Tooltip gelap glass: bg-slate-900/95 + ring + shadow + backdrop-blur
- Badge kalender pelanggaran ('X pelanggaran') & presensi ('X siswa, Y
  alpha') beralih dari :title native ke x-tooltip
- Sembunyi otomatis saat scroll/resize/klik
2026-08-03 18:08:57 +07:00
Novy San87 349ebb2b30 Poles halaman Presensi Siswa premium
- 4 KPI card gradient (siswa/alpha hari ini & bulan ini) + icon watermark
  membesar saat hover — konsisten dgn dashboard
- Kalender: badge 'X presensi' bulan berjalan, tombol Hari Ini, nav pill
  glass, hari ini gradient+ring+label, badge gradient emerald/merah + glow,
  indikator alpha mini per tanggal, legend pill
- JS: currentMonth() + monthTotal
2026-08-03 18:05:53 +07:00
Novy San87 0356c8b2e2 KPI cards: icon watermark membesar halus saat hover
- group + transition-all duration-500 ease-out pada icon watermark
- group-hover:scale-150 (membesar 1.5x) + opacity 10% → 25%
- Berlaku di 4 kartu KPI (hari ini, total, siswa aktif, SP draft)
2026-08-03 18:03:22 +07:00
Novy San87 d0d1dd74c2 Poles Kalender Pelanggaran di dashboard premium
- Header: icon chip gradient + badge statistik 'X pelanggaran' bulan berjalan
- Tombol 'Hari Ini' (kembali ke bulan sekarang) + navigasi prev/next di
  pill glass, hover efek
- Sel tanggal: lebih tinggi, hari ini = gradient biru + ring + label 'Hari Ini',
  hover lift; tanggal luar bulan lebih redup
- Badge jumlah: gradient + glow shadow senada (biru/oranye/merah), hover scale
- Legend jadi pill gradient + teks '1/2/3+ pelanggaran', footer interaktif
- JS: method currentMonth() + computed monthTotal
2026-08-03 17:51:41 +07:00
Novy San87 ffebf61322 Toggle Ambang SP: switch ala iOS dengan glow warna level
- Ukuran standar iOS (w-11 h-6, knob 20px) — konsisten dgn toggle halaman lain
- Knob bergeser penuh dengan transisi halus; track gradient warna level + glow
  saat aktif, slate + inset shadow saat nonaktif
- Reaktif via Alpine (x-model) — track & glow berubah langsung saat di-toggle
2026-08-03 17:44:17 +07:00
Novy San87 652422c3eb Poles UI/UX modul Ambang SP premium
- Kartu threshold: strip gradient warna di atas, icon chip gradient, badge
  poin (≥ X poin), label Nonaktif, toggle & hapus di kanan, hover lift
- Field: label uppercase tracking, suffix 'poin' di input Min Poin
- Modal tambah: header gradient biru-indigo, color picker + 8 preset swatch
  interaktif (Alpine), preview warna terpilih
- Info card jadi 'Tangga SP' dinamis mengikuti data threshold asli (bukan
  hardcoded), lengkap status nonaktif
- Empty state & tombol simpan pakai sistem btn-primary
- 2 smoke test baru render halaman (31 test total)
2026-08-03 17:38:48 +07:00
Novy San87 151a66639b Poles UI/UX premium: fondasi global
- Font Plus Jakarta Sans (Google Fonts) menggantikan font sistem default
- Sidebar: brand area gradient + nama sekolah, nav aktif jadi pill gradient
  biru-indigo + chevron, label grup lebih elegan, footer badge NOCTKJ.net
- Topbar: sticky + backdrop-blur glass
- Background utama: gradient halus slate → biru samar
- Kartu standar premium (.card) + tombol (.btn-primary/.btn-outline) + input
  seragam di CSS; kartu utama halaman diseragamkan rounded-2xl
- Border global diselaraskan ke palet slate; scrollbar & seleksi teks premium
- Verifikasi: 29 test / 99 assertion, blade cache OK, vite build OK
2026-08-03 14:27:03 +07:00
Novy San87 279ef07ae2 Sederhanakan ambang SP: hapus kolom max_points
- max_points tidak pernah dipakai logika penerbitan SP (trigger hanya baca
  min_points: level dgn ambang tertinggi <= total poin siswa)
- Migrasi drop kolom; model, MasterDataController, ResetController (seeder)
  dibersihkan; form Ambang SP & form tambah cukup satu angka (Min Poin)
- Dashboard Ambang SP: batas atas level dihitung dari min_points level
  berikutnya (level terakhir = tak terbatas), urutan dijamin orderBy min_points
- Test: 29 passed / 99 assertion
2026-08-03 14:22:44 +07:00
Sari 02a5c6d701 fix: sidebar mobile bisa di-scroll (nav flex-1 overflow-y-auto) — menu di bawah layar kini terjangkau 2026-08-03 10:52:01 +07:00
Sari 8f840996dd fix: hotfix blade @endif di users/index (tombol paksa logout) — penyebab error 500 manajemen user 2026-08-03 10:31:05 +07:00
Sari 0aa8beee83 feat: single session per akun — login kedua ditolak jika sesi aktif, middleware SingleSession menendang sesi lain, logout membersihkan token, tombol Paksa Logout di manajemen user; 5 feature test 2026-08-03 10:29:26 +07:00
Sari 64863456ee kop Surat Peringatan disamakan dengan format resmi (logo lambang Jatim bersih + 6 baris + garis tebal, nama sekolah satu baris via nowrap) + refactor schoolSettings() 2026-08-03 10:14:00 +07:00
Sari 61ea5cdc83 fix kop: logo lambang Jatim tanpa background hitam (aplikasi smask asli dari PDF + upscale 2x), ukuran logo 88px, layout tabel stabil di DomPDF 2026-08-03 10:06:26 +07:00
Sari 3bfad9cf42 hak akses konsisten: sidebar Master Data pakai permission per-menu (+directive canAnyPermission); FIX direktif canPermission pakai canPermission() model (sebelumnya hanya role kolom — multi-role & user tanpa kolom role tidak dapat menu) + test 2026-08-03 09:58:52 +07:00
Sari 465be127ec update hak akses role: view-point-audit terkunci 'Khusus Admin' (badge + kunci di UI, proteksi di backend update()) + test 2026-08-03 09:51:28 +07:00
Sari 156841a4e7 fix: kirim WA tidak menutup aplikasi — fetch AJAX + SweetAlert dengan tombol Buka WhatsApp (tab baru, aplikasi tetap terbuka) + test JSON 2026-08-03 09:46:00 +07:00
Sari 47c5cdb48f fix: hotfix blade @endif ganda di users/index (penyebab error 500) 2026-08-03 09:41:49 +07:00