# 📦 Release Notes — LINTAS-QR

> Riwayat rilis resmi portal **LINTAS-QR (Layanan Informasi Terpadu dan Akses Cepat dengan QR-Code)** — Pengadilan Agama Atambua.
>
> **Skema versi:**
> - **v1.x** — era situs lama (Google Sites): [https://sites.google.com/view/lintas-qr-pa-atambua/](https://sites.google.com/view/lintas-qr-pa-atambua/)
> - **v2.x** — era situs baru berbasis repo git ini. **v2.0.0 = commit pertama (git init)**. Perubahan kecil → **v2.0.1, v2.0.2, …** dan seterusnya.
>
> Sumber: riwayat commit `git log` (71 commit, dimulai 10 Juli 2026).

---

## v2.26.0 — 2026-08-27 · Fix Halaman Error Styled di Production
- **Akar masalah**: `404.html`, `500.html`, dan `offline.html` berada di `public/` sehingga disalin mentah ke `dist/` tanpa diproses Vite. Akibatnya rujukan `<link href="/styles-v2/app.css">` dan `<script src="/scripts/src/main.js">` tetap menunjuk ke path source yang **tidak ada** di production (Vite sudah me-bundle keduanya jadi file ber-hash di `dist/assets/`), sehingga ketiga halaman tampil polos tanpa CSS/JS.
- **Perbaikan**: pindahkan ketiga file dari `public/` ke root repo (`404.html`, `500.html`, `offline.html`) agar diproses Vite; daftarkan sebagai entry `rollupOptions.input` (`error404`, `error500`, `offline`). Sekarang output `dist/` merujuk asset ber-hash yang benar (`/assets/error404-*.js`, `/assets/error500-*.js`, `/assets/offline-*.js`).
- `npm test`, `npm run test:dist`, dan `npm run build` lulus.

## v2.25.0 — 2026-08-27 · Pencarian, SEO, Halaman 500 & Print Stylesheet
- **Pencarian**: Fuse.js + `scripts/src/search.js` + index statis `public/data/lintasqr-search.json`; trigger dari navbar search.
- **SEO**: `sitemap.xml` + `robots.txt`; OpenGraph/Twitter Cards via `pwa-head.html`.
- **Halaman 500 kustom** (`500.html`): hero ber-CTA, kartu status, auto-retry countdown, akses alternatif, WhatsApp CTA.
- **Print stylesheet** (`styles-v2/print.css`) untuk jadwal sidang & syarat.
- Fix `test:dist` agar portable lintas platform (pakai flag `--dist`, bukan `CHECK_DIST=1`).

## v2.24.0 — 2026-08-27 · Peninjauan Kontras Warna (Readability WCAG AA)
- Token aksen dasar digelapkan ke varian teks AA-safe: `--color-accent`/`--color-info` `#2585A6`→`#1D6B85`, `--color-secondary`/`--color-warning` `#C85A17`→`#A44810`, `--color-success` `#558833`→`#3E6425`, `--color-danger` `#C73E6B`→`#A02E53`.
- `.btn--danger` memakai token raspberry gelap (kontras naik 4.28→6.15); badge varian diselaraskan ke token; hapus navy legacy dari chart dashboard & SweetAlert.
- Rincian: `docs/DESIGN.md` §2.2, §6, §10.

## v2.23.0 — 2026-08-18 · Modul PPID (Fase 3 — Statistik, Laporan & Navigasi)
- **Halaman baru `statistik.html`** (`pages/informasi-publik/statistik.html`): 4 KPI ringkas (Total Permohonan, Dikabulkan, Ditolak/Dikecualikan, Rata-rata Hari) + **chart bar permohonan per bulan** & **doughnut hasil permohonan** (Chart.js, `applyChartDefaults`/`chartColors` dari `main.js`, tema sinkron) + tabel detail bulanan; data statis **`public/data/layanan-informasi.json`** (placeholder 0 — menunggu register permohonan nyata Lampiran IV SK KMA 2-144/2022, dengan catatan data).
- **Slot Laporan Tahunan Layanan Informasi (PPID)** ditambahkan di katalog `download.html` kategori **Laporan** (wajib SK Poin XV) — tombol "Belum Tersedia" sampai dokumen resmi ada.
- **Navigasi**: sub-halaman PPID ditautkan di **navbar dropdown Tentang** (label "Layanan PPID" + 4 link: Prosedur Permohonan, Keberatan & Sengketa, Regulasi, Statistik Layanan) dan **mobile-drawer** (sub-label + 4 link); hub + kartu **Statistik Layanan** (6 kartu `soft-grid--3`); `active_page="informasi-publik"` menjaga navbar/drawer aktif.
- **Halaman changelog** + 3 entri (v2.21.0–v2.23.0); terdaftar di `vite.config.ts`.

## v2.22.0 — 2026-08-18 · Modul PPID (Fase 2 — Keberatan, Formulir & Kontak)
- **Halaman baru `keberatan-sengketa.html`**: alur-list keberatan ke Atasan PPID (diajukan maks. **30 hari kerja** sejak ditemukannya alasan — Pasal 36, tanggapan Atasan PPID **30 hari kerja** — Pasal 37), **7 alasan keberatan** Pasal 35 ayat (1) UU 14/2008 (a–g), dan alur sengketa ke **Komisi Informasi** (diajukan **14 hari kerja**, mediasi → ajudikasi maks. 100 hari kerja) — dengan tombol share-WA/copy-url per langkah.
- **Katalog `download.html`**: kategori baru **"Informasi Publik"** — Formulir Permohonan Informasi (Lampiran III), Formulir Pernyataan Keberatan, Maklumat Pelayanan (Lampiran XVII), dan DIP; tombol "Belum Tersedia" sampai file resmi/SK PPID terbit + catatan di info unduhan.
- **Footer**: blok kontak **PPID** (link e-LID `informasi-publik.html` + jam layanan SK KMA 2-144/2022 Poin XIV: Senin–Kamis 08.00–16.00, Jumat 08.00–16.30 WITA).
- **Hub**: kartu akses Keberatan & Sengketa ditambahkan (grid `soft-grid--3`); terdaftar di `vite.config.ts`.

## v2.21.0 — 2026-08-18 · Modul PPID / Informasi Publik (Fase 1 — Fondasi Konten)
- **Hub PPID/e-LID** (`pages/informasi-publik.html` di-upgrade): kanal e-LID milik PA Atambua — hero ber-CTA (Ajukan Permohonan + Dasar Hukum), section Tentang PPID & e-LID, **Maklumat Pelayanan** (Lampiran XVII) + **Waktu Layanan** sesuai SK KMA 2-144/2022 Poin XIV (Senin–Kamis 08.00–16.00, Jumat 08.00–16.30 WITA), **Struktur Tim PPID** (Dewan Pertimbangan → Atasan PPID → PPID → PPID Pelaksana → Petugas Layanan Informasi), **DIP accordion** (4 kategori dari data statis `public/data/dip.json` via Alpine `dipStore()`), kartu akses layanan PPID, dan profil kelembagaan.
- **Halaman baru `prosedur-permohonan.html`**: alur-list 6 langkah (formulir 10 unsur Lampiran III, kanal e-LID/nonelektronik, pemeriksaan kelengkapan 3 hari, uji konsekuensi Pasal 17 UU 14/2008, jawaban 10 hari + perpanjangan 7 hari, pemberian informasi) dengan tombol share-WA/copy-url per langkah (pola `layanan/prosedur.html`); tabel biaya (elektronik gratis, cetak biaya riil, tanpa PNBP — salinan putusan PNBP dipisah sebagai layanan perkara); hak pemohon informasi.
- **Halaman baru `regulasi.html`**: 6 kartu dasar hukum (UU 14/2008, PP 61/2010, PERKI 1/2021, SK KMA 2-144/2022, KMA 1-144/2011 [digantikan], UU 25/2009) dengan tautan eksternal + catatan e-LID milik satker.
- Terdaftar di `vite.config.ts`; `active_page="informasi-publik"` membuat navbar Tentang & bottom-nav Publik tetap aktif; konten placeholder `[ ... ]` menandai data yang menunggu SK PPID & DIP final dari satker. Detail rencana & kepatuhan: `docs/EVALUASI_PPID.md`.

## v2.20.2 — 2026-08-12 · Fix Data MONEV Tidak Terbaca di Production (CSP)
- **Akar masalah**: URL CSV Google Sheets (published) me-**redirect 302** ke `doc-XX-1g-sheets.googleusercontent.com`, sedangkan header CSP di `vercel.json` hanya mengizinkan `connect-src` `docs.google.com`/`script.googleusercontent.com` → browser **memblokir redirect** → semua fetch data monev gagal di production. Localhost berjalan normal karena tidak ada CSP.
- **Fix**: `connect-src` ditambah **`https://*.googleusercontent.com`** (mencakup semua host redirect). Catatan penting: `https://*.sheets.googleusercontent.com` **tidak cocok** dengan `doc-XX-1g-sheets.googleusercontent.com` karena label host-nya adalah `doc-XX-1g-sheets` (bukan `sheets`).
- **Verifikasi**: header CSP dicek langsung; halaman monev diuji **headless browser** (`msedge --headless --dump-dom --virtual-time-budget`): badge **"Periode Juli 2026"**, statper (KPI 66.7%, 9 baris), PSP (16 baris), keuangan (filter "Juli 2026"), survei — semua render.
- **Tooling deploy**: `vercel link`, `vercel ls`, `vercel inspect`; `.vercel/` & `.env*` masuk `.gitignore`.
- **Dokumentasi proses lengkap**: `docs/DEPLOYMENT.md`.

## v2.20.1 — 2026-08-12 · Perbaikan & Otomasi Modul MONEV KEPAN
- **Badge Periode otomatis** (`pages/monev.html`): badge `Periode Juni 2026` kini dihitung otomatis dari data **Keuangan Perkara** (kolom `BULAN` pada CSV Google Sheets) — selalu menampilkan **bulan closing terakhir** tanpa edit manual; bila fetch gagal, teks statis dipertahankan.
- **Fix navigasi periode/tab Survei** (`pages/monev/survei.html`): `changePeriod` & `switchTab` dideklarasikan di module scope sehingga tidak bisa diakses tombol inline `onclick` — kini diekspos ke `window` (ganti triwulan/tab kembali berfungsi).
- **Fix data MONEV tidak tuntas di admin** (`pages/admin.html`): `modMonev.load()` memanggil API tanpa `size` sehingga hanya 20 baris pertama yang tampil — kini mengirim `{ size: 100 }` agar seluruh riwayat (statper, DIPA 04, keuangan, PSP, masalah, survei) terbaca.
- **Fix status PSP** (`pages/monev/psp.html`): baris dengan `Keterangan` kosong tapi `Jumlah Sisa Panjar` > 0 sebelumnya dihitung "Sudah Diambil" sehingga grafik/angka **Belum Diambil selalu kosong** — kini sisa panjar positif + keterangan kosong dianggap **belum diambil** (dan jumlahnya diakumulasi).
- **Fix parse Statistik Perkara** (`pages/monev/statper.html`): baris sisa kosong dari spreadsheet (mis. `,,,,,,0,0`) ikut ter-render sebagai baris kosong di tabel — kini disaring saat `parseCSV`.

## v2.20.0 — 2026-08-10 · LINTAS-AI (Asisten Virtual)
- **Fitur baru LINTAS-AI** — asisten virtual PA Atambua (halaman `pages/layanan/lintas-ai.html`): chat real-time dengan bubble user/bot (Markdown via `marked`), indikator mengetik, pesan sambutan, tombol reset obrolan, dan disclaimer verifikasi informasi.
- **Backend proxy** `api/chat.js` (Vercel serverless): permintaan diteruskan ke **Google Gemini model `gemini-3-flash-preview`** — kunci dibaca dari file lokal **`api/_keys/gemini.js`** (folder di-.gitignore, tidak ikut repo publik) sebagai **array `GEMINI_API_KEYS`**: **rotasi round-robin** + **fallback otomatis** saat satu kunci kena quota/rate limit (429 / 403 RESOURCE_EXHAUSTED); model opsional `GEMINI_MODEL`, default `gemini-3-flash-preview`. System prompt berbahasa Indonesia khusus layanan pengadilan agama, riwayat 10 pesan terakhir, rate-limit per sesi (15 permintaan/menit), timeout 30 dtk, serta penanganan 400/405/429/500/502 selaras kontrak PHP asli yang diadaptasi.
- **Riwayat chat di localStorage** (`lintasqr_chat_history_<session_id>`) — site statis tanpa database server; sesi baru dibuat saat reset.
- **Integrasi navigasi**: navbar mega menu & drawer mobile grup **Aplikasi Digital** (count 2→3), kartu di direktori `layanan.html` (count 13→14), kartu ketiga di seksi **Aplikasi Unggulan** beranda (`soft-grid--2` → `--3`).
- **CSS chat** theme-aware (light/dark) di `styles-v2/components.css` (`.chat-card`, `.chat-row`, `.chat-bubble`, `.typing-dot`, `.msg-enter`, markdown styling) — mengikuti aesthetic Warm TUI (sudut 2px, bayangan flat offset).
- **Konfigurasi sebelum aktif** (pilih salah satu): (a) **env var Vercel** — isi `GEMINI_API_KEYS` (JSON array `["AIza...", ...]` atau dipisah koma) di dashboard Vercel → Settings → Environment Variables, opsional `GEMINI_MODEL` & `ALLOWED_ORIGINS`; atau (b) isi `GEMINI_API_KEYS` di file **`api/_keys/gemini.js`** (folder `api/_keys/` di-.gitignore sehingga tidak ikut repo publik) lalu deploy via **`vercel deploy` CLI** (deploy via push GitHub tidak menyertakan file yang di-gitignore). Env var lebih utama dari file kunci.
- **Hardening keamanan** (audit): (1) **XSS** di render markdown chat diperbaiki — `marked` + sanitasi `DOMPurify` (versi dipin: `marked@18.0.9`, `dompurify@3.4.13`) + fallback escape HTML; (2) **`/api/chat` kini hanya menerima browser same-origin** (validasi Origin, allowlist `ALLOWED_ORIGINS` opsional di file kunci) + **rate limit dua lapis** (per-IP 60/menit dari `x-forwarded-for` Vercel + per-sesi 15/menit); (3) **header keamanan di `vercel.json`** untuk semua halaman: Content-Security-Policy (allowlist eksplisit sumber eksternal, `frame-ancestors 'none'`, `object-src 'none'`), X-Frame-Options DENY, nosniff, Referrer-Policy, HSTS, Permissions-Policy, Cross-Origin-Resource-Policy; (4) **CDN dipin penuh** — `chart.js@3.9.1` di 4 halaman monev (dulu melayang); (5) guard privasi di system prompt (tidak meminta NIK/data pribadi, arahkan ke PTSP/Posbakum) + **disclaimer privasi** di bawah kolom chat (riwayat tersimpan di perangkat & terkirim ke penyedia AI).

## v2.19.0 — 2026-08-08 · Tombol Salin & Bagikan Tautan per Bagian
- **Komponen generik `copy-url`** (baru `scripts/src/copy-url.js`, di-bootstrap `main.js`): binding **ter-delegasi** untuk `[data-copy-url]` (salin URL absolut + `#hash` ke clipboard, umpan balik ikon link → centang 2 dtk) dan `[data-share-wa]` (bagikan bagian via WhatsApp `wa.me/?text=` dengan label `data-share-text`) — halaman lain cukup pasang markup + class, tanpa duplikasi logika. Guard idempoten + delegasi membuat tombol dinamis (Alpine/fetch) ikut berfungsi.
- **Deep-link `#hash`**: membuka URL bagian → scroll halus ke kartu target (offset navbar, via Lenis bila tersedia) + highlight sekilas (`.url-state-target`) untuk elemen ber-id apa pun.
- **Terpasang di 7 halaman layanan (47 kartu/langkah)**: syarat (9), prosedur (7 alur), sekata (6 fitur), e-siap (6 fitur + 3 langkah), e-court (4 fitur + 4 langkah), gugatan-mandiri (4 langkah), produk-pengadilan (4 produk).
- CSS generik `.copy-url-btn` / `.copy-url-actions` (+ varian pojok `.copy-url-actions--corner` untuk kartu grid tanpa header flex), `scroll-margin-top` pada kartu ber-id agar lompatan anchor tidak tertutup navbar.
- Demo & dokumentasi komponen ditambahkan di `docs/components.html`.

## v2.18.1 — 2026-08-08 · Keterangan Fotokopi & Nazegelen
- `syarat.html`: catatan pada tiap jenis perkara bahwa bukti dokumen wajib difotokopi dan **dinazegelen** (dicap/disahkan) di kantor pos; keterangan fotokopi bermeterai + softcopy pada dokumen umum.

## v2.18.0 — 2026-08-05 · Halaman 404 & Redirect
- **Halaman 404 kustom** (`public/404.html`): self-contained (navbar & footer inline — file `public/` disalin mentah tanpa partial), hero 404 ber-CTA, 6 pintasan layanan, info bantuan + WhatsApp.
- **Redirect permanen** di `vercel.json` untuk halaman yang dihapus: `galeri(.html)` → `berita.html`, `tracking(.html)` & `daftar-perkara(.html)` → `perkara-terdaftar.html`.
- **Guard klien** inline di 404 (jaring pengaman bila redirect server tidak sempat).

## v2.17.0 — 2026-08-05 · AOS Fallback: Konten Tak Pernah Tertahan
- Penambahan fallback animasi (AOS) agar konten tidak pernah tertahan `opacity: 0` bila library animasi gagal dimuat.

## v2.16.0 — 2026-08-05 · Perbaikan Bug Hero Tidak Tampil
- Audit hero di seluruh halaman: ditemukan konflik **GSAP + AOS** pada `.dashboard__hero` (dua sistem berebut `opacity`/`transform` → hero bisa tertahan `opacity: 0`).
- `data-aos="fade-up"` dihapus dari hero di 9 file (bantuan, changelog, download, informasi-publik, monev, pengaturan, tentang, offline, docs/components) — entrance hero kini murni milik GSAP.
- Aturan baku dituliskan di `docs/DESIGN.md` §7.1 item 6: **hero tidak boleh memakai `data-aos`**.

## v2.15.0 — 2026-08-05 · Automasi Update Dataset Putusan
- GitHub Actions baru `.github/workflows/update-putusan-data.yml`: crawl dataset putusan **otomatis mingguan** (cron Senin 02:30 UTC) + trigger manual (`workflow_dispatch`).
- Workflow menjalankan `npm run crawl:putusan`, memvalidasi dataset, lalu commit & push otomatis bila ada putusan baru.
- Dokumentasi automasi di `docs/PUTUSAN_DATA.md` §2.2.

## v2.14.0 — 2026-08-05 · Penyimpanan Permanen Data Putusan
- Crawler `scripts/crawl-putusan.cjs`: crawl **semua halaman pagination** Direktori Putusan MA (`page/N.html` via Jina Reader, stop otomatis saat kosong/duplikat, retries + rate-limit, dedupe per `detailUrl`).
- Dataset statis **`public/data/putusan.json`** — 341 putusan PA Atambua (2015–2026) di-commit ke git (~152 KB).
- Halaman `putusan.html` kini membaca file statis (tanpa request runtime ke Jina); fallback `/api/putusan` bila file gagal.
- Script `npm run crawl:putusan` + dokumentasi `docs/PUTUSAN_DATA.md`.

## v2.13.0 — 2026-08-05 · Pengembangan Halaman Putusan
- Fix bug parser: `formatTanggal(putus[1])` → `formatTanggal(putus)` (tanggal putus fallback salah).
- Kolom **Para Pihak** ditampilkan (sebelumnya di-parse tapi tidak tampil).
- Section **Ringkasan Direktori**: 4 kartu statistik (Total, Gugatan, Permohonan, Tahun Terbaru).
- Cache client localStorage (`lintasqr-putusan-v1`, TTL 10 menit).
- Test parser baru `scripts/test-putusan-parser.cjs` di-wire ke `npm test`.

## v2.12.0 — 2026-08-05 · Halaman Changelog
- Halaman baru `pages/changelog.html`: hero ber-CTA, timeline versi, filter v1.x/v2.x.
- Penyeragaman hero beberapa halaman ke pola ber-CTA.

## v2.11.0 — 2026-08-05 · Halaman Direktori Putusan
- Halaman baru `pages/layanan/putusan.html`: direktori putusan PA Atambua dari Direktori Putusan Mahkamah Agung (via `/api/putusan` → Jina Reader).
- Parser markdown ke JSON: nomor, jenis, pihak, kategori, tanggal putus/register, link detail.

## v2.10.0 — 2026-08-05 · Penyeragaman Hero Ber-CTA
- Audit hero seluruh halaman: 19 halaman sudah ber-CTA; 4 halaman diselaraskan (bantuan, download, monev, pengaturan).
- Pola baku hero: `btn--hero-primary`/`btn--hero-outline` + tooltip + ikon lucide.

## v2.9.0 — 2026-08-05 · Halaman Tentang & Informasi Publik Dipisah
- `tentang.html` ditulis ulang (About LINTAS-QR + ekosistem inovasi: LINTAS-AI, E-SIAP, RESLOKA, PANDA-AI, LANTIP).
- Halaman baru `informasi-publik.html` (transparansi & keterbukaan informasi).
- Menu dropdown "Lainnya" dipisah: Tentang dan Informasi Publik masing-masing punya halaman sendiri.

## v2.8.0 — 2026-08-05 · Kategorisasi Menu Navbar & Drawer
- Mega menu **Layanan** dikategorikan (Perkara & Data, Pendaftaran & Panduan, Bantuan Hukum, Aplikasi Digital) + count per kategori.
- Dropdown **Lainnya** (Profil, Informasi Publik, Download, Bantuan) diberi kategori serupa.

## v2.7.0 — 2026-08-05 · Pembersihan Infrastruktur GAS
- Import `api.js` dihapus dari `main.js`; ENDPOINTS mati di `config.js` dibersihkan.
- Sisa infrastruktur GAS frontend dihapus; seluruh data publik kini statis/parsing.

## v2.6.0 — 2026-08-05 · Halaman Berita & Artikel/Pengumuman
- Parser berita PA Atambua **tanpa GAS** (`/api/berita`), pagination `?start=`.
- Halaman baru `artikel-pengumuman.html` (artikel & pengumuman resmi, tanpa thumbnail, sumber `artikel-dan-pengumuman`).

## v2.5.0 — 2026-08-05 · Direktori Halaman Layanan
- `layanan.html` ditulis ulang: hero ber-CTA, grid Layanan Utama, **direktori Semua Layanan berkategori** (mencakup seluruh 12 sub-halaman), accordion informasi, tanpa hydration GAS.
- Halaman `perkara-terdaftar.html` & `jadwal-sidang.html` diselaraskan dengan pola Warm TUI.

## v2.4.0 — 2026-08-05 · Pengayaan Halaman Layanan
- `produk-pengadilan.html`, `prosedur.html`, `syarat.html` diperkaya dengan riset kewenangan absolut Pengadilan Agama (UU No. 7/1989 jo UU No. 3/2006 jo UU No. 50/2009).

## v2.3.0 — 2026-08-05 · Statistik Perkara SIPP
- Halaman baru `layanan/statistik-perkara.html`: parsing tabel laporan statistik perkara dari SIPP (`/statistik_perkara`), pilih periode bulan/tahun, chart dataset Warm TUI (pie klasifikasi + chart di atas tabel).

## v2.2.0 — 2026-08-05 · Halaman Perkara & Jadwal
- Halaman baru `perkara-terdaftar.html` (daftar perkara dari SIPP, search + filter + pagination) — menggantikan fitur tracking.
- Halaman `jadwal-sidang.html` + section Jadwal Sidang Hari Ini di beranda (parsing SIPP tanpa GAS).

## v2.1.0 — 2026-08-04 · Berita & Artikel Parsing Tanpa GAS
- Sistem berita parsing dari `pa-atambua.go.id` (pagination `?start=`), halaman `berita.html` + `artikel-pengumuman.html`.

## v2.0.9 — 2026-08-04 · Footer Konsisten
- Footer partial dipindah ke luar `</main>` di 22 halaman (sticky footer benar); pola baku didokumentasikan.
- Icon sosmed footer diperbaiki; link eksternal E-Court & Gugatan Mandiri langsung ke sumber.

## v2.0.8 — 2026-08-04 · Warm TUI Komponen Lengkap
- Dropdown navbar diseragamkan; status bar, pagination, skeleton, tabs, tabel MONEV Warm TUI; sticky footer.

## v2.0.7 — 2026-08-04 · Warm TUI Form & Komponen
- Form/select/modal/toast di-remap ke Warm TUI; dropdown navbar + footer di-restyle.

## v2.0.6 — 2026-08-04 · Warm TUI Konversi Awal
- Remap token global (tokens.css/theme.css), top bar + mega menu + drawer, hero/kartu/tabel/tombol bracket, badge, logo favicon.

## v2.0.5 — 2026-08-04 · Migrasi Navigasi: Sidebar → Top Bar
- Sidebar dihapus; navigasi pindah ke **top bar** (navbar + mega menu) + drawer mobile.
- `NAV_MIGRATION_PLAN.md` + pembersihan localStorage usang (`sidebar`).

## v2.0.4 — 2026-07-13 · Persiapan Backend GAS
- Persiapan backend Google Apps Script (Auth, Main, Config, Validator, Services, SCHEMA) — nantinya dihapus setelah semua data menjadi statis/parsing.

## v2.0.3 — 2026-07-12 · Perbaikan UI/UX
- 7 seri perbaikan UI/UX (12–14 Juli), termasuk perbaikan ikon Search di navbar.

## v2.0.2 — 2026-07-11 · PWA & Restrukturisasi Dashboard
- **PWA**: manifest, service worker, offline page.
- Restrukturisasi + pengembangan dashboard (hero, kartu layanan, quick actions).

## v2.0.1 — 2026-07-11 · Modul MONEV
- Modul **MONEV KEPAN** (Monitoring & Evaluasi Kinerja Kepaniteraan): PSP, Statper, Survei, DIPA 04, Masalah, Keuangan + glass UI.

## v2.0.0 — 2026-07-10 · Git Init — Awal Situs Baru
- **Commit pertama** — fondasi situs LINTAS-QR baru (repo git ini).
- 3 `Initial commit` (10–11 Juli 2026) + setup struktur proyek (Vite, Tailwind, PWA).
- Menggantikan situs lama v1.x (Google Sites).

---

## v1.0.0 — Situs Lama (Google Sites)

Rilis awal LINTAS-QR sebagai situs statis Google Sites:
[https://sites.google.com/view/lintas-qr-pa-atambua/](https://sites.google.com/view/lintas-qr-pa-atambua/)

Portal informasi layanan PTSP Pengadilan Agama Atambua dengan akses via QR-Code. Era ini tidak dikelola di repo git ini; seluruh pengembangan aktif dilanjutkan pada **v2.x** (repo ini).

---

## Panduan Penomoran Versi

| Kenaikan | Kapan | Contoh |
|---|---|---|
| **Patch (v2.x.y → v2.x.y+1)** | Perubahan kecil / perbaikan bug / penyempurnaan kecil | v2.0.1 → v2.0.2 |
| **Minor (v2.x → v2.x+1)** | Kelompok pembaruan/fitur yang lebih besar (milestone) | v2.0.0 → v2.1.0 |
| **Mayor (v2 → v3)** | Pergantian arsitektur/fondasi besar | — |

> Catatan: halaman **Changelog** (`pages/changelog.html`) menampilkan timeline konversi design system (v1.x–v2.x Warm TUI). Dokumen ini adalah **sumber resmi riwayat rilis** lengkap situs sejak git init.
