# Changelog
Semua perubahan penting plugin **Cuaca Makkah Madinah** akan dicatat di sini.
Format mengikuti [Keep a Changelog](https://keepachangelog.com/id-ID/1.1.0/).
## [1.0.8] - 2026-05-09
### Added
- **Galeri Template** (`[cuaca_template_galeri]` / `[cuaca_galeri_template]` / natural `[cuaca makkah galeri]`) — grid kartu semua template terpasang lengkap preview warna, deskripsi, badge "Template aktif", serta tombol **Today** & **Hero** ke iframe preview.
- Mode `preview`: `[cuaca_template_galeri mode="preview" sample="hero"]` me-render iframe live untuk setiap template berurutan (sample dapat: `today`, `hero`, `compare`, `best`, `calendar`).
- Embed iframe baru: `?cmm_embed=1&mode=gallery` untuk menanam galeri di luar WordPress.
- CSS baru `.cmm-best-chart-scroll`, `.cmm-best-hint`, dan blok `.cmm-gallery-*` (`assets/cmm.css`).
### Changed
- **Mobile UX `[cuaca_waktu_terbaik]`:** Chart bar 12 bulan dibungkus container `.cmm-best-chart-scroll` dengan `overflow-x:auto`. Pada layar ≤560px grid memakai kolom tetap `52px` dan `min-width:680px` sehingga seluruh bar tetap proporsional dan dapat digeser horizontal (sebelumnya memendek hingga sulit dibaca / overflow ke kanan). Ditambahkan hint animasi "← geser untuk melihat semua bulan →".
- **Iframe template fallback (`class-cmm-embed.php`):** Resolver template diperketat — jika parameter `&template=` invalid atau file CSS-nya tidak ada di `assets/templates/`, embed otomatis fallback ke `classic` (tidak lagi memuat URL CSS yang 404). Wrapper `.cmm-tpl` mendapat style minimal anti-collapse + placeholder "Memuat template…" jika kosong.
- Whitelist mode embed diperluas: `today|month|calendar|hero|best|compare|compare-month|gallery`.
- **Halaman Info & Panduan** dirombak agar lebih rapi: daftar isi (TOC) dua kolom dengan anchor klik-untuk-loncat, setiap shortcode dibungkus kartu (`.cmm-doc-section`) dengan judul + badge versi (`v1.0.x`) dan badge hijau **"BARU"** untuk fitur v1.0.8. Seksi #9 baru: **Galeri Template**.
- `class-cmm-shortcode.php`: shortcode `[cuaca_waktu_terbaik]` & natural parser kini mengenali `galeri`/`gallery`/`template`.
- `cuaca-makkah-madinah.php`: bump versi ke **1.0.8**.
- `readme.txt`: stable tag → 1.0.8, daftar fitur menyebut Galeri Template, blok Changelog ditambah entri 1.0.8.
### Notes
- Tidak ada migrasi DB. Semua perubahan kompatibel mundur — template lama tetap bekerja, shortcode lama tidak berubah markup-nya.
- Mode preview pada `[cuaca_template_galeri mode="preview"]` membuat banyak iframe (1 per template). Pakai sparing-ly atau pada halaman demo internal saja.
## [1.0.7] - 2026-05-09
### Added
- **5 template tampilan baru** (total kini 8 skin bawaan), semua memakai wrapper `.cmm-tpl-<id>` tanpa mengubah markup inti:
- `glasssky` (Glass Sky) — Putih bersih + biru langit (`#0ea5e9`), glassmorphism halus, ikon line-art tipis dengan opacity 0.85, tipografi *Inter*. Estetika clean SaaS.
- `brutalist` (Brutalist Mono) — Hitam-putih kontras tinggi, border `2px solid #000`, hard-shadow `4px 4px 0`, font monospace (*JetBrains Mono*), aksen kuning (`#facc15`) untuk highlight suhu. Hover menggeser kartu & menebalkan shadow ala desain brutalist.
- `heritage` (Mosque Heritage) — Biru tua (`#0c2340`) + emas (`#d4af37`), pola arabesque SVG inline berulang sebagai background, double-border (solid + dashed inset) ala bingkai mushaf, tipografi serif (*Amiri/Cormorant*).
- `pilgrim` (Pilgrim Card) — Latar krem dengan garis tipis horizontal ala kertas tiket, border `2px dashed`, label "✈ TICKET" di pojok, badge kota dengan stempel merah miring (`rotate(-3deg)`), font monospace (*Courier*).
- `neumorph` (Neumorph Soft) — Latar pastel `#e8ecf3`, soft shadow extruded (`6px 6px 14px` + `-6px -6px 14px`), palet aksen pastel ungu-pink, hover beralih ke inset shadow, tipografi rounded (*Nunito*).
- Registrasi otomatis kelima template di `CMM_Template::all()` (deskripsi + warna preview), tampil di grid pemilih halaman Pengaturan dan dapat dipakai via `[shortcode template="<id>"]` atau `&template=<id>` pada iframe.
### Changed
- `cuaca-makkah-madinah.php`: bump versi ke **1.0.7**.
- `class-cmm-admin.php`: seksi #8 panduan diperbarui — daftar 8 template lengkap dengan tag "baru v1.0.7" untuk template baru.
- `readme.txt`: stable tag dinaikkan, daftar fitur menyebut 8 template, blok Changelog ditambah entri 1.0.7.
### Notes
- Tidak ada migrasi DB. Semua template baru opsional — default tetap `classic`.
- Template `brutalist` memakai `border-radius:0!important` & `text-transform:uppercase` di seluruh wrapper, jadi sebaiknya dipakai pada halaman/section khusus, bukan campur dengan tema yang sudah berkarakter kuat.
- Template `heritage` menggunakan SVG arabesque inline (data-URI) sehingga tidak ada permintaan HTTP tambahan.
## [1.0.6] - 2026-05-07
### Added
- **Sistem Template / Skin** baru: framework ringan untuk mengubah warna, ikon, dan visual semua shortcode tanpa edit kode.
- Class baru `CMM_Template` (`includes/class-cmm-template.php`) dengan registry, resolver, enqueue, dan helper `apply()` (enqueue + wrap markup).
- Opsi WP `cmm_active_template` menyimpan template default; bisa diatur di halaman **Pengaturan** plugin (kartu pilihan dengan preview warna).
- Override per-shortcode lewat atribut: `[cuaca_kalender template="aurora"]`, `[cuaca_hero template="desert"]`, `[cuaca_compare template="emerald"]`, dll.
- Embed iframe mendukung parameter `&template=<id>` (mis. `?cmm_embed=1&mode=calendar&template=aurora`).
- Filter pengembang `cmm_templates` untuk menambah template kustom — cukup daftarkan id, nama, deskripsi, dan file CSS di `assets/templates/`.
- **3 template bawaan baru** dengan warna, ikon, dan visual berbeda namun konsisten dengan struktur markup eksisting:
- `aurora` (Aurora Night) — Glassmorphism gelap, aksen neon biru-ungu (`#7c5cff` & `#22d3ee`), ikon bercahaya, tipografi *Space Grotesk*.
- `desert` (Desert Editorial) — Palet pasir/emas/cokelat (`#c08a2e`, `#8a5a17`, `#b1452b`), tipografi serif (*Playfair Display*/*Source Serif Pro*), bingkai emas tipis di sekitar wrapper.
- `emerald` (Emerald Minimal) — Hijau zamrud (`#047857`) + aksen emas (`#b78a3a`), ornamen geometris di pinggir kartu, hero berlatar emerald.
### Changed
- `cuaca-makkah-madinah.php`: bump versi ke 1.0.6, load `class-cmm-template.php`, dan inisialisasi `CMM_Template::init()` di `plugins_loaded`.
- `class-cmm-shortcode.php`: setiap shortcode publik (`render`, `render_calendar_sc`, `render_hero_sc`, `render_best_time_sc`, `render_compare_sc`) menerima atribut `template` dan membungkus output via `CMM_Template::apply()`.
- `class-cmm-embed.php`: parser parameter ditambah `template`, otomatis enqueue stylesheet template & wrap konten untuk semua mode embed.
- `class-cmm-admin.php`: panel **Template / Skin Tampilan** baru di halaman Pengaturan + handler `admin_post_cmm_save_template`. Tab Deskripsi pada Info & Panduan ditambah seksi **#8 Template / Skin Tampilan**.
### Notes
- Template bawaan ditulis dengan spesifisitas `.cmm-tpl-<id>` agar tidak konflik dengan tema WP induk. Markup tidak diubah, hanya disembelubungi `<div class="cmm-tpl cmm-tpl-<id>">` sehingga template kustom hanya perlu menulis CSS.
- Tidak ada migrasi DB yang dibutuhkan; opsi `cmm_active_template` default `classic` jika belum dipilih.
## [1.0.5] - 2026-05-06
### Added
- **Compare Mode** — shortcode baru `[cuaca_compare]` menampilkan kartu split berdampingan Makkah vs Madinah dalam satu kartu, dengan badge **VS** di tengah, gradient khas tiap kota (Makkah biru-malam, Madinah hijau-teal), dan baris insight otomatis (mis. "Makkah hari ini 2°C lebih panas dari Madinah").
- Mode hari ini (default) dan mode bulanan: `[cuaca_compare mode="month" bulan="6" tahun="2026"]`.
- Sintaks natural: `[cuaca makkah vs madinah]`, `[cuaca makkah banding]`, `[cuaca makkah compare]`.
- Embed iframe: `?cmm_embed=1&mode=compare` dan `?cmm_embed=1&mode=compare-month&bulan=...&tahun=...`.
- Hint geser horizontal pada kalender mobile ("← geser untuk melihat semua hari →") dengan animasi halus, otomatis tersembunyi di layar ≥641px.
### Changed
- **Kalender mobile (≤640px)** kini menggunakan **horizontal scroll** alih-alih menyusutkan sel (overflow ke kanan diatasi). Grid kalender mempertahankan lebar minimum 680px sehingga seluruh 7 kolom hari (SENIN–MINGGU) tetap terbaca dengan ukuran proporsional; pengguna tinggal menggeser ke samping. Scroll-snap diaktifkan agar terasa natural di sentuhan.
- Scrollbar kustom (tipis) di area kalender, plus padding & radius yang konsisten dengan kartu utama.
- `CMM_Embed::get_params()` memperluas whitelist mode menjadi `today|month|calendar|hero|best|compare|compare-month`.
- Halaman admin **Info & Panduan** ditambah seksi #7 (Compare Mode) lengkap contoh shortcode + iframe.
## [1.0.4] - 2026-05-05
### Added
- Shortcode baru **`[cuaca_hero kota="makkah|madinah"]`** — banner sinematik "Kondisi Hari Ini":
- Gradient dinamis berdasarkan mood cuaca: `sunny`, `hot`, `cloudy`, `rainy`, `foggy`.
- Animasi: orb cahaya melayang (`@keyframes cmm-orb`) + tiga partikel halus (`cmm-float`) — pure CSS, tanpa JS.
- Jam waktu lokal Arab Saudi (Asia/Riyadh) dengan dot pulse hijau.
- Suhu besar (rata-rata harian) + range min/max, kelembaban, kecepatan angin.
- Sintaks natural: `[cuaca makkah hero]`, `[cuaca madinah hero]` / `sinematik`.
- Shortcode baru **`[cuaca_waktu_terbaik]`** — visualisasi "Kapan waktu terbaik untuk umroh":
- Podium Top 3 bulan paling ideal dengan label warna (Sangat Ideal/Nyaman/Cukup/Berat/Ekstrem).
- Chart bar 12 bulan dengan tinggi proporsional skor 0–100, highlight kuning pada bulan saat ini, tooltip detail (suhu rata-rata + crowd index).
- Legenda warna + catatan disclaimer.
- Sintaks natural: `[cuaca makkah waktu terbaik]` / `[cuaca makkah kapan]`.
- Modul `CMM_Climate::umrah_score()` & `score_label()` — perhitungan skor 0-100 = 65% kenyamanan suhu + 35% indeks kepadatan jemaah (1-10).
- Mode embed iframe baru: `?cmm_embed=1&mode=hero&kota=...` dan `?cmm_embed=1&mode=best`.
- Halaman admin **Info & Panduan** ditambah seksi #5 (Hero Sinematik) dan #6 (Kapan Waktu Terbaik) dengan contoh kode + iframe.
### Changed
- `assets/cmm.css` ditambah blok style hero (≈40 selector) dan best-time (≈25 selector), responsif (breakpoint 520px / 560px) + ekstensi `.cmm-theme-dark`.
- `CMM_Embed::get_params()` memperluas whitelist mode menjadi `today|month|calendar|hero|best`.
## [1.0.3] - 2026-05-05
### Added
- Tampilan kalender modern model AccuWeather: header bertingkat (tag kota + judul periode besar), tombol navigasi ikon (‹ ›), filter (kota/bulan/tahun) dengan tombol "Tampilkan" primary, sel kalender tinggi dengan suhu max/min besar dan ikon kanan-bawah, leading/trailing days dari bulan sebelum/sesudah berwarna abu-abu, marker hari ini berbentuk lingkaran hitam.
- Nama hari **penuh** pada baris header kalender: SENIN, SELASA, RABU, KAMIS, JUMAT, SABTU, MINGGU.
- Nama hari ditampilkan di atas tanggal pada shortcode bulanan (`[cuaca makkah juni 2026]`).
- Nama hari pada kartu "hari ini" (mis. "Makkah · SELASA, Hari ini").
- Legenda kalender (penjelasan suhu tertinggi/terendah + sumber data).
- Dukungan tema gelap untuk seluruh komponen (card, kalender, deskripsi).
### Changed
- Refactor `assets/cmm.css`: token warna konsisten, hover state pada sel kalender, dropdown kustom, transisi halus.
- Filter kalender via query string (`cmm_kota`, `cmm_bulan`, `cmm_tahun`) kini juga berlaku tanpa harus melakukan navigasi internal—lebih friendly untuk caching.
## [1.0.2] - 2026-05-05
### Added
- Modul **CMM_Climate**: deskripsi otomatis musim & kisaran suhu rata-rata per bulan untuk Makkah dan Madinah, serta gambaran kondisi jemaah umroh per bulan. Data berbasis klimatologi umum (tidak realtime).
- Shortcode kalender interaktif `[cuaca_kalender kota="makkah" bulan="6" tahun="2026"]` dengan tampilan ala AccuWeather (filter kota, bulan, tahun + navigasi prev/next).
- Sintaks natural untuk kalender: `[cuaca makkah kalender juni 2026]`.
- Mode embed kalender: `?cmm_embed=1&kota=makkah&mode=calendar&bulan=6&tahun=2026`.
- Menu admin baru **Info & Panduan Plugin** dengan tab: Deskripsi, Instalasi, FAQ, Changelog.
### Changed
- Nama menu admin diubah dari "Cuaca MM" menjadi **Cuaca Makkah Madinah** (nama lengkap).
- Shortcode bulanan otomatis menyertakan deskripsi cuaca & gambaran jemaah di atas grid harian.
- Shortcode "hari ini" menampilkan info singkat musim saat ini di bawah kartu.
### Fixed
- Konsistensi enqueue CSS untuk semua mode tampilan baru.
## [1.0.1] - 2026-05-05
### Added
- Dukungan tema gelap pada embed (`&theme=dark`).
- Endpoint JSON API publik (`?cmm_api=1&kota=makkah&mode=today`).
- Parser shortcode natural untuk seluruh 12 nama bulan Indonesia.
### Changed
- CSS hanya di-enqueue ketika shortcode atau embed digunakan agar lebih ringan.
- Embed mengirim `Content-Security-Policy: frame-ancestors *` agar dapat ditanamkan di domain mana pun.
### Fixed
- Cron harian sekarang melakukan auto-purge data >30 hari.
- Penanganan record duplikat saat sinkronisasi (UPSERT berdasarkan `city + forecast_date`).
## [1.0.0] - 2026-05-01
### Added
- Rilis perdana.
- Tabel database `wp_cmm_weather` untuk menyimpan prakiraan cuaca Makkah & Madinah.
- Sumber data Open-Meteo (forecast 16 hari + climate model 1 tahun).
- Shortcode:
- `[cuaca makkah hari ini]`
- `[cuaca madinah hari ini]`
- `[cuaca makkah juni 2026]` (dukung semua nama bulan).
- Versi klasik `[cuaca_makkah]` dan `[cuaca_madinah]` dengan atribut.
- Embed iframe (`?cmm_embed=1`) untuk website pihak ketiga.
- Panel admin: status data + tombol refresh manual.
- WP-Cron harian untuk pembaruan otomatis.