<div align="center">

<img src="images/antigravity-tc.jpg" alt="Antigravity Token Collector" width="860" />

# Antigravity Token Collector

**Kumpulkan donasi token Antigravity dari siapa saja — langsung masuk ke database [9Router](https://github.com/decolua/9router) Anda.**

[English](README.md) | Bahasa Indonesia (Tersedia dalam 2 Bahasa / Available in 2 Languages)

[![npm version](https://img.shields.io/npm/v/antigravity-tc.svg)](https://www.npmjs.com/package/antigravity-tc)
[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e.svg)](LICENSE)
[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-14b8a6.svg)](#-dukungan-platform)
[![Node](https://img.shields.io/badge/node-%3E%3D20-fdba74.svg)]()

Tray app + dashboard untuk mengelola donasi token: halaman donasi publik, portal yang bisa dikustom, multi bahasa, tunnel gratis tanpa expose IP, auto-start saat login, dan sync massal dua arah dengan 9Router.

</div>

---

## ⚡ Quick Start

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

Dashboard terbuka di `http://localhost:3456/dashboard` — tray icon muncul di menubar.

> Password default: `1234567890`. Segera ganti di **Pengaturan → Keamanan**.
>
> Lupa password? Jalankan `antigravity-tc-reset-password`.

## ⬆️ Update Aplikasi

Mulai versi **1.1.5**, dashboard admin dan CLI menampilkan rekomendasi ketika
ada versi lebih baru di npm. Update bersifat opsional; aplikasi tetap dapat
digunakan. Dashboard menyediakan tombol **Periksa update**, perintah yang
bisa disalin, dan tautan [changelog](CHANGELOG.md). CLI menyediakan menu
**Check for Updates**.

Keluar dari aplikasi melalui **Exit** pada tray/CLI, lalu jalankan:

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

Pengaturan dan data donasi tetap tersimpan. Pengguna **1.1.4 atau sebelumnya**
perlu update manual sekali untuk mendapatkan fitur notifikasi. Bila pengecekan
gagal karena jaringan, aplikasi tetap berjalan dan pengecekan bisa dicoba lagi.

## 🔄 Cara Kerja

1. Jalankan `antigravity-tc`.
2. Buat link donasi personal dari dashboard, atau aktifkan tunnel publik.
3. Donatur login Google + tempel kode.
4. Token dicek eligibility, di-refresh bila expired, lalu bisa disinkronkan ke 9Router.
5. Halaman depan bisa disesuaikan dari **Pengaturan → Portal Settings**.

## 🖼️ Tampilan

| Dashboard | Sync Massal | Pengaturan |
| :---: | :---: | :---: |
| ![Dashboard](images/Dashboard.jpg) | ![Sync](images/Sync.jpg) | ![Pengaturan](images/Pengaturan.jpg) |

## 📋 Fitur

| Fitur | Keterangan |
| --- | --- |
| Halaman donasi publik | Login Google + tempel kode, token dicek eligibility lalu disimpan |
| Portal Settings | Atur layout dan kata-kata halaman depan; data disimpan di aplikasi, bukan DB 9Router |
| Multi bahasa | UI dashboard dan portal multibahasa (Bahasa Indonesia & English) |
| Generate link personal | `?for=Nama` untuk sapaan otomatis |
| Dashboard admin | Statistik, tabel live, search, filter status, sumber, dan tier, export/import CSV |
| Deteksi & Filter Tier | Menampilkan tier donasi (**Free**, **Plus**, **Pro**, **Ultra**) serta filter cepat di tabel |
| Export Go Keyring | Salin token donatur format `go-keyring-base64` untuk login paksa ke Antigravity / `antigravity-cli` |
| Sync ke 9Router | Upsert semua donation logs ke providerConnections 9Router |
| Sync dari 9Router | Ambil providerConnections 9Router ke donation logs lokal |
| Check ALL Eligibility | Cek semua row bertoken dengan jeda aman dan rekap status |
| Auto refresh token | Token expired dicoba refresh sebelum check eligibility |
| Tunnel publik gratis | Cloudflare Quick Tunnel untuk URL publik |
| Restart Services | Restart dari tray atau tombol Settings setelah perubahan config |
| Auto start | Berjalan otomatis mode tray saat OS login |
| Keamanan | Login JWT, secret unik per instalasi, tunnel terkunci selama password default |

## 🚀 Login ke Official Apps (Antigravity & antigravity-cli)

Anda dapat menggunakan token donatur untuk langsung login ke aplikasi resmi **Antigravity** atau **antigravity-cli** tanpa perlu autentikasi ulang via browser:

1. Di tabel donasi admin, klik tombol aksi (**...**) pada baris donatur &rarr; pilih **Go Keyring**.
2. Salin string `go-keyring-base64:...` atau langsung gunakan perintah terminal yang disediakan:
   - **macOS (Keychain)**:
     ```bash
     security add-generic-password -s gemini -a antigravity -w "<STRING_KEYRING>" -U
     ```
   - **Windows (CMD / PowerShell)**:
     ```powershell
     cmdkey /generic:"gemini:antigravity" /user:"antigravity" /pass:"<STRING_KEYRING>"
     ```
     *(Atau isi manual via **Windows Credential Manager** &rarr; Generic Credentials).*
3. Buka Antigravity atau jalankan `antigravity-cli` — sesi login donatur langsung aktif.

## 📁 Lokasi Data

### Database 9Router

| OS | Lokasi Default |
| --- | --- |
| macOS / Linux | `~/.9router/db/data.sqlite` |
| Windows | `%APPDATA%/9router/db/data.sqlite` |
| Docker | `/app/data/db/data.sqlite` |

Path bisa diganti via **Dashboard → Pengaturan → Database 9Router** atau env `DB_PATH`. Perubahan path perlu restart aplikasi.

### Data ATC

| OS | Lokasi |
| --- | --- |
| macOS / Linux | `~/.antigravity-tc/` |
| Windows | `%USERPROFILE%\.antigravity-tc\` |
| Docker | `/root/.antigravity-tc/` |

| Isi | Keterangan |
| --- | --- |
| `.env` | Konfigurasi lokal |
| `logs/donation-logs.sqlite` | Log donasi |
| `bin/cloudflared` | Binary tunnel |
| Config aplikasi | Password admin, portal settings, bahasa, auto-start, path DB |

## 🖥️ Dukungan Platform

| Kemampuan | macOS | Linux | Windows | Docker |
| --- | :---: | :---: | :---: | :---: |
| Server + Dashboard + halaman donasi | ✅ | ✅ | ✅ | ✅ |
| Tray icon | ✅ | ✅ | ✅ | — |
| Auto-start saat login | ✅ | ✅ | ✅ | — |
| Cloudflare Tunnel | ✅ | ✅ | ✅ | ✅ |
| Path DB 9Router otomatis per OS | ✅ | ✅ | ✅ | ✅ |

## 🔑 Password & `.env`

- Password default: `1234567890`.
- Prioritas password: dashboard > `APP_PASSWORD` > default.
- Kredensial OAuth publik Antigravity CLI sudah tertanam bawaan.
- Override `OAUTH_CLIENT_ID` / `OAUTH_CLIENT_SECRET` tersedia bila perlu.

## ❓ Troubleshooting

| Masalah | Solusi |
| --- | --- |
| Lupa password admin | Jalankan `antigravity-tc-reset-password` |
| Tunnel tidak bisa diaktifkan | Ganti password default dulu |
| Tray icon tidak muncul | Pastikan binary `systray2/traybin/` executable |
| DB 9Router tidak ketemu | Cek path di Pengaturan → Database 9Router, lalu restart services |
| Refresh token gagal | Donatur perlu login ulang bila Google menolak refresh token |

## 🛠️ Development

Lihat [dev.md](dev.md) dan [build.md](build.md).

## 📄 License

[MIT](LICENSE) © decolua and contributors
