# Changelog

## 1.1.5 — 7 Oktober 2026

### Ringkasan

Release ini memperbaiki aplikasi yang gagal dijalankan pada Mac Apple Silicon
dan menambahkan pemberitahuan update opsional pada dashboard serta CLI.

### Perbaikan: aplikasi gagal berjalan pada Mac Apple Silicon

- Sebelumnya, menjalankan `antigravity-tc` pada Mac ARM64 tanpa Rosetta dapat
  menghasilkan `Failed to start: Error: spawn Unknown system error -86`.
- Penyebabnya adalah binary tray bawaan `systray2` untuk macOS hanya tersedia
  dalam arsitektur Intel (`x86_64`). Karena startup menunggu tray siap, error
  tersebut ikut menghentikan server dan dashboard.
- Paket sekarang menyertakan binary tray native ARM64 dan otomatis memilihnya
  pada macOS ARM64. Pengguna tidak perlu memasang Rosetta maupun Go compiler.
- Binary dibangun dari sumber upstream yang dipakai systray2. Source, lock
  dependency Go, petunjuk build, serta lisensi disertakan dalam paket.
- Versi systray2 dikunci ke `2.1.4` agar sesuai dengan binary native dan
  protokol menu yang sudah diverifikasi. Menu tray dan alur restart tetap sama.

### Fitur baru: pemberitahuan versi terbaru

**Dashboard:** setelah login, kartu update tampil di bawah header pada semua
tab admin. Kartu menampilkan versi terpasang, status pengecekan, dan waktu
pengecekan terakhir yang berhasil. Jika ada versi lebih baru, kartu menampilkan:

- Versi terbaru dan rekomendasi update yang bersifat opsional.
- Perintah update npm yang bisa disalin.
- Petunjuk keluar dari aplikasi dan menjalankannya kembali setelah update.
- Tautan changelog untuk membaca rincian perubahan.

Tombol **Periksa update / Check for updates** tersedia untuk pengecekan manual.
Teks dashboard tersedia dalam Bahasa Indonesia dan English, mengikuti bahasa
admin yang dipilih. Dashboard memeriksa ulang setiap 30 menit ketika tab terlihat.

**CLI:** menu terminal memeriksa versi saat dibuka. Jika ada update, CLI
menampilkan versi terpasang → versi terbaru, rekomendasi, perintah update, dan
tautan changelog. Menu **Check for Updates** memungkinkan pengecekan manual.
Mode `--hidden` tetap berjalan tanpa menu terminal; status update bisa dilihat
dari dashboard.

**Update tidak wajib.** Tidak ada instalasi otomatis, blokir login, atau
penghentian layanan karena pengguna belum update. Perbandingan memakai Semantic
Versioning sehingga `1.10.0` dikenali lebih baru dari `1.9.0`, dan versi yang
sama atau lebih lama tidak menghasilkan rekomendasi update.

### Perilaku jaringan

- Sumber versi adalah kanal `latest` pada registry npm resmi.
- Request memiliki batas waktu 3 detik. Server dan tray sudah dimulai sebelum
  pengecekan CLI; kegagalan pengecekan tidak menghentikan aplikasi.
- Hasil berhasil disimpan dalam cache proses selama 6 jam. Hasil gagal dicoba
  kembali setelah 15 menit. Pengecekan manual melewati cache dengan jeda minimum
  1 menit antarpanggilan jaringan.
- Request bersamaan dari CLI dan dashboard memakai satu pengecekan yang sama.
- Saat offline, timeout, atau respons registry tidak valid, dashboard/CLI
  menampilkan status pengecekan tidak tersedia, bukan mengklaim versi terkini.
- Request hanya mengambil metadata paket. Token donatur, password, data donasi,
  dan pengaturan aplikasi tidak dikirim ke npm. Endpoint dashboard memerlukan
  sesi admin yang valid.

### Cara update

1. Keluar dari aplikasi menggunakan **Exit** pada tray atau menu CLI.
2. Jalankan:

   ```bash
   npm install -g antigravity-tc@latest
   ```

3. Jalankan kembali:

   ```bash
   antigravity-tc
   ```

4. Cek versi paket bila diperlukan:

   ```bash
   npm list -g antigravity-tc --depth=0
   ```

Untuk memasang release ini secara spesifik, gunakan
`npm install -g antigravity-tc@1.1.5`. Pengaturan, password admin, dan data donasi
yang tersimpan di lokasi data aplikasi tetap digunakan; tidak perlu menghapus
atau meresetnya.

**Pengguna 1.1.4 dan sebelumnya perlu melakukan satu update manual untuk
mendapatkan fitur pemberitahuan ini.** Release lama belum memiliki kode
pengecekan versi, sehingga tidak dapat tiba-tiba menampilkan notifikasi setelah
1.1.5 dipublikasikan. Setelah memasang 1.1.5, pemberitahuan berlaku untuk
release berikutnya.

### Verifikasi

- Uji tray native di macOS ARM64: binary berjalan dan menerima protokol menu.
- Uji perbandingan versi, cache, pembatasan refresh, request bersamaan,
  kegagalan registry, pemulihan, serta timeout.
- Uji endpoint update: akses tanpa sesi admin ditolak; kegagalan registry
  tetap menghasilkan status aplikasi yang bisa ditangani dashboard.
- Pemeriksaan ESLint, build web produksi, dan isi paket npm.

### English

This release fixes `spawn Unknown system error -86` on Apple Silicon Macs
without Rosetta by shipping a native ARM64 tray executable. The upstream
source, locked Go dependencies, build instructions, and license notices are
included. systray2 is pinned to 2.1.4 to match the validated executable.

The authenticated dashboard and interactive CLI now check the official npm
registry's `latest` version. When a newer version exists, they recommend an
optional update and show the npm command and changelog link. The dashboard
supports Indonesian and English, a copy-command button, manual checking, and
visible-tab polling every 30 minutes. The CLI adds a **Check for Updates** menu
item. Hidden mode exposes the status through the dashboard.

Checks time out after three seconds, cache successful results for six hours,
and retry failures after fifteen minutes. Manual checks bypass the cache at
most once per minute. Concurrent requests share one lookup. Failed checks are
reported as unavailable; they never claim the installed version is current.
No application credentials or donation data are sent to npm. Updates are
manual and never block application use.

Exit the app, run `npm install -g antigravity-tc@latest`, then run
`antigravity-tc` again. Existing settings and donation data are preserved.
Users on 1.1.4 or earlier must update manually once to receive this feature;
1.1.5 will notify them about subsequent releases.
