FSC Milestone Summary

# Changelog
Semua perubahan penting di proyek **Flight Schedules Connector** akan didokumentasikan di file ini.
Format mengikuti [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), dan versi mengikuti [Semantic Versioning](https://semver.org/).

## [1.7.10] - 2025-08-25
### Added
- Shortcode attribute `show_columns="..."` yang bisa dipilih via Generator (multi-select).
- Nilai dikirim juga ke REST `/board`.
- Shortcode builder menampilkan `show_columns="col1,col2"`.
- Dukungan builder untuk flag eksplisit `search="0"` dan `show_full_btn="0"`.
- Sekarang jika checkbox tidak dicentang, builder tetap menambahkan `search="0"` dan `show_full_btn="0"` ke shortcode.
- Frontend: `FSC_Frontend::render_board()` membaca opsi `search` dan `show_full_btn` dari shortcode/preview, bukan hanya dari Settings global.
- Toolbar fullscreen button menggunakan ikon Font Awesome ✈️ (paper-plane) warna biru, inline di board.
- Debounce render di generator (80ms) untuk mencegah spam fetch saat input berubah cepat.

### Changed
- **generator.js**:
- Payload sekarang menyertakan `show_columns` array.
- Shortcode builder output selalu menyertakan nilai eksplisit `search` / `show_full_btn` (1 atau 0).
- Preview REST `/board` juga menerima properti `show_columns`.
- Event wiring diperluas supaya Layout & Theme langsung trigger refresh.
- **frontend.css**:
- Penataan ulang untuk konsistensi tiap template (table/list/cards/compact/mobile/panel).
- Tombol fullscreen: ikon biru, tanpa background, hover lebih halus.
- Toolbar & board layout lebih rapih, responsif lebih baik.
- **class-fsc-frontend.php**:
- Render board sekarang menyembunyikan tombol fullscreen jika `show_full_btn="0"`.
- Menyembunyikan toolbar search jika `search="0"`.

### Fixed
- Bug di mana meskipun shortcode menonaktifkan `show_full_btn="0"`, tombol fullscreen tetap muncul.
- Bug di mana pilihan Layout/Theme di Generator tidak mengupdate Live Preview.
- Preview REST error karena payload `show_columns` tidak dikirim dengan format array.

---

## [1.7.9] - 2025-08-24
### Added
- **Fullscreen toggle button redesign**
- Menggunakan ikon Font Awesome `` alih-alih teks.
- Styling baru: ikon biru polos (`#2271b1`) tanpa background box.
- Hover/focus → biru lebih gelap (`#135e96`) untuk feedback visual.
- Fallback JS handler di footer: memastikan toggle fullscreen berfungsi walau `frontend.js` tidak tersedia.

### Changed
- `class-fsc-frontend.php`: refactor toolbar builder untuk menampilkan tombol fullscreen dengan ikon FA.
- `frontend.css`: override khusus `.fsc-btn--fullscreen` → hilangkan background & border, gunakan warna biru ikon.

### Notes
- Pastikan Font Awesome 6.5.2 (CDN) termuat via enqueue di plugin.
- Tombol hanya muncul bila opsi `show_full_btn=1` (shortcode) **atau** setting “Enable Fullscreen” aktif.

## [1.7.8] - 2025-08-24
### Added
- Setting "Enable Demo Data (Provider: None)" to show realistic sample flights in Generator/Shortcode when no provider is configured.
### Changed
- Mock provider only activates when provider=none AND demo setting is enabled.
### Added
- Info notice in Settings → Connector when Demo Data is enabled and Provider=None.

## [1.7.7] - 2025-08-24
### Added
- Compat layer (PHP 7.0–8.x): polyfills for starts_with/ends_with/contains/array_key_first.
### Changed
- Admin: Clear Cache now uses FSC_Compat::starts_with(), removing PHP 8 hard dependency.
### Fixed
- Data: removed arrow functions for broader PHP compatibility.

## [1.7.6] - 2025-08-24
### Added
- REST endpoints: /status, /airports, /board (HTML renderer).
- Frontend renderer & assets wiring; shortcode ["fsc"] with auto-refresh.
- Admin Generator JS (live preview) using REST /board.
### Improved
- Data layer abstraction via FSC_Data using `fsc_fetch_flights` filter (providers plug-in).
### Fixed
- English-only UI copy across admin & frontend components.

## [1.7.5] - 2025-08-24
### Added
- “Test Connection” button in Settings → Connector with AJAX handler `fsc_test_connection`.
### Improved
- Developer UX: quick validation for provider credentials directly from settings.

## [1.7.4] - 2025-08-24
### Added
- Connector Settings page (admin view + settings registration).
- AJAX “Test Connection” for AviationStack, FlightAware (AeroAPI), and Aerodatabox.
### Improved
- Admin styles integrated across Settings and Generator pages.

## [1.7.3] - 2025-08-24
### Added
- FlightAware (AeroAPI) provider adapter via `fsc_fetch_flights`.
- Aerodatabox provider adapter via `fsc_fetch_flights`.

### Notes
- Configure provider & keys in Settings → Connector.
- Basic throttling added to reduce external API pressure.

## [1.7.2] - 2025-08-24
### Added
- AviationStack provider adapter (skeleton) via filter `fsc_fetch_flights`.
- Rate limit guard + transient cache alignment.

### Notes
- Configure in Settings → Connector (provider, API key, endpoint).

---
## [1.7.1] - 2025-08-24
### Added
- i18n bootstrap (`includes/class-fsc-i18n.php`) with textdomain loader and optional force-en_US.

### Changed
- All UI strings converted to English as the source language.
- Wrapped strings with WordPress i18n functions (__/esc_html__/etc.) under `fsc` domain.

### Notes
- Use `wp i18n make-pot . languages/fsc.pot --domain=fsc` to regenerate translation template.
- Optional: provide `languages/fsc-id_ID.po/mo` for Indonesian UI later.

## [1.7.0] - 2025-08-23
### Added
- **Shortcodes & Generator (UI)**
- Airport field dengan autocomplete (`seed-airports.json`), default: CGK.
- Direction: Arrivals, Departures, Both (default: Both).
- Theme: Light / Dark (default: Light).
- Fullscreen toggle.
- Auto Refresh interval (0 / 15 / 30 / 60 detik).
- Search/Filter box (default: Yes).
- Page Size / Infinite Scroll (default: 25).
- Timezone: Site atau Airport.
- Custom CSS Class (opsional).
- **Live Preview** pada Generator
- Menggunakan REST API bila tersedia.
- Fallback ke data seed/mock bila REST tidak aktif.
- Auto refresh preview sesuai interval.
- **Display Templates**
- Table, List, Cards.
- Compact, Mobile Card, Panel (baru).
- **Seed Data Extended**
- File `data/seed-airports.json` berisi ±50 bandara populer global + Indonesia.
- **Tools Page**
- Tombol *Clear Cache* (hapus semua transient `fsc_cache_*`).
- Debug Info (dir, url, versi plugin, REST base).
- **Admin CSS (`assets/css/admin.css`)**
- Styling generator, card, preview, form table, tombol, dan Select2.
- **Status Colors**
- Warna khusus untuk Scheduled, Boarding, Departed, Arrived, Delayed, Cancelled, Diverted.

### Changed
- **Refactor Modular**
- Kelas dipisah: `FSC_Admin`, `FSC_REST`, `FSC_Frontend`, `FSC_License`.
- **Settings Tabbed**
- General, Connector, Data, Themes, Modules, Status, License.
- Semua opsi disanitasi dengan default jelas.
- **Bootstrap Kompatibel**
- `FSC_Admin::init()` ditambahkan agar sesuai dengan pemanggilan di file utama.
- **Preview**
- Status badge menampilkan sumber data: REST / Cache / Mock.

### Fixed
- **Fatal error**: pemanggilan `FSC_Admin::init()` sebelumnya tidak ada → ditambahkan back-compat method.
- Duplikasi render ketika pilih *Arrivals* / *Departures* → diperbaiki agar hanya tampil sekali.

---

## [1.6.0] - 2025-08-21
### Added
- Global airports list + geolocate.
- Infinite scroll di board.
- Shortcode dasar `["fsc board airport="CGK""]`.
- Fallback sederhana untuk preview generator.

### Changed
- Preview generator lebih stabil, dengan pesan error bila REST nonaktif.
- Frontend board bisa auto-refresh manual.

---

## [1.5.x] - 2025-08 (early releases)
### Added
- Versi awal plugin dengan konektor jadwal penerbangan.
- REST endpoints dasar (`/status`, `/board`) & integrasi frontend board.
- Basic shortcode `["fsc board"]`.

---

## [Unreleased]
### Planned
- **Themes Module** (Dark Mode + Fullscreen FIDS) → gagal build, perlu revisi.
- **Purchase Code Checker + Envato Updater** (untuk distribusi CodeCanyon).
- Optimasi cache query (transient/DB).
- Dokumentasi shortcode & hooks (developer-friendly).