Changelog

Riwayat perubahan

Daftar fitur baru, perubahan, dan perbaikan yang dirilis di litup. Versi terbaru muncul di paling atas.

Versi terbaru: v0.7.1 · 28 Mei 2026
  1. v0.7.1 · Statistik per tautan + tema microsite kontras

    Halaman 'Tautan Saya' kini menampilkan sparkline 30 hari dan modal statistik per tautan. Tema microsite di-rework dengan CSS variable agar warna latar dan font selalu konsisten dan terbaca.

    Ditambahkan
    • Stats 30 hari per shortlink di `/dashboard/urls`: badge 'klik 30 hari', sparkline mini per row, dan tombol 'Stats' yang membuka modal berisi 3 KPI (klik 30 hari, total klik, sumber teratas), grafik garis klik harian, dan grafik bar top 5 sumber rujukan.
    • Helper `themeWrapperStyle(theme)` di `lib/templates.ts` yang mengeluarkan inline style berisi seluruh CSS variable tema microsite agar bisa dipakai langsung di wrapper page.
    Diubah
    • Tema microsite (light, dark, sunset, forest, mono, ocean, rose) sekarang memakai CSS variables `--ms-bg`, `--ms-text`, `--ms-muted`, `--ms-surface`, `--ms-border`, dan trio variable per varian tombol (primary/secondary/ghost). BlockRender memakai `var(--ms-...)` lewat inline style alih-alih kelas `text-slate-*`/`bg-white`/`indigo-*` yang konflik dengan dark/light mode aplikasi.
    • Tombol microsite di-render lewat class `ms-btn-primary` / `ms-btn-secondary` / `ms-btn-ghost` yang memetakan ke variable tema, sehingga setiap tema punya kontras teks/latar yang dijamin terbaca.
    • Halaman publik `/m/<slug>` dan preview owner-only memuat blok CSS global ringkas yang menerapkan style `.ms-btn-*`, `.ms-section-header`, dan `.ms-prose` dari variable tema.
    Diperbaiki
    • Tema 'forest' yang sebelumnya menampilkan teks abu-abu di atas latar hijau gelap (sulit terbaca) dan tombol indigo yang menabrak palet hijau. Sekarang teks pakai `#ecfdf5`, surface kartu/section memakai overlay hijau lebih gelap dengan border tipis hijau muda.
    • Tema 'sunset', 'ocean', dan 'rose' yang sebelumnya tetap menampilkan tombol primer indigo, tidak menyatu dengan palet. Sekarang tombol mengikuti warna tema (rose untuk sunset, sky untuk ocean, pink untuk rose).
    • Tema 'dark' yang teks rich-text-nya `slate-700` (kontras rendah). Sekarang ikut variable `--ms-text` (`#f1f5f9`).
  2. v0.7.0 · Statistik dashboard dengan Chart.js

    Halaman dashboard utama sekarang menampilkan grafik klik harian, top tautan, sumber rujukan, dan distribusi negara dengan Chart.js.

    Ditambahkan
    • Komponen reusable `Chart.astro` yang menerima konfigurasi Chart.js berbentuk JSON dan merender canvas yang di-bootstrap dari client script.
    • Statistik 30 hari di `/dashboard`: kartu 'Klik 30 hari', grafik garis klik harian (full window 30 hari, hari kosong tetap muncul sebagai 0).
    • Grafik bar horizontal 'Top tautan' (10 tautan dengan klik terbanyak) dan grafik bar 'Negara pengunjung' (top 6 negara dalam 30 hari).
    • Grafik doughnut 'Sumber rujukan' (top 5 referer dinormalisasi ke domain, fallback 'Direct' untuk klik tanpa referer).
    Diubah
    • `pnpm add chart.js` ditambahkan sebagai dependency. Bundle Chart.js hanya di-load di halaman yang punya canvas chart (dynamic import).
    • Layout ringkasan dashboard sekarang punya 4 stat card (sebelumnya 3) dan 2 baris chart sebelum daftar tautan terbaru.
  3. v0.6.0 · Layout kolom + countdown date/time picker

    Editor microsite kini bisa membagi row jadi 2/3/4 kolom dan tiap kolom bisa diisi blok lain. Countdown sekarang punya selector tanggal dan waktu yang ramah.

    Ditambahkan
    • Tipe blok baru `columns` yang membagi row jadi 2, 3, atau 4 kolom. Tiap kolom adalah container yang bisa menerima drag-and-drop blok lain (termasuk section).
    • Picker tipe blok di dialog 'Tambah blok' sekarang punya seksi 'Bagi row jadi kolom' dengan preview visual jumlah kolom (2 / 3 / 4).
    • Selector date dan time pada blok countdown menggantikan input ISO mentah. Dua input terpisah (tanggal dan waktu) yang otomatis digabung jadi ISO-8601 berdasarkan zona waktu browser.
    • Aturan struktur diizinkan: section boleh menjadi child column, sehingga layout 2 kolom + section di kiri/kanan dimungkinkan.
    Diubah
    • Helper `canBeChildOf` di `lib/microsite.ts` dipakai untuk memvalidasi semua perpindahan dan penambahan blok server-side, bukan hanya cek `isContainerType`.
    • Builder pohon blok di halaman publik `/m/<slug>`, preview dashboard, dan editor sekarang rekursif sehingga columns -> column -> section -> blok dapat dirender dengan benar.
    • Drop-on-block 'wrap into section' sekarang menolak target bertipe columns/column (struktur tetap sehat).
  4. v0.5.1 · Topbar dashboard + dropdown user

    Layout dashboard sekarang punya topbar yang konsisten: logo + nama aplikasi di kiri, toggle theme dan dropdown user (Pengaturan, Changelog, Keluar) di kanan.

    Ditambahkan
    • Topbar di seluruh halaman dashboard. Kiri: tombol menu mobile, logo, dan nama aplikasi (link ke /dashboard). Kanan: tombol toggle terang/gelap dan dropdown profil pengguna.
    • Dropdown profil dengan info user (username, email, badge admin), shortcut ke Pengaturan dan Changelog, plus tombol Keluar berwarna rose.
    Diubah
    • Sidebar dashboard sekarang tampil di bawah topbar, sticky setinggi viewport dikurangi tinggi topbar. Header brand di sidebar dihapus karena sudah ada di topbar.
    • Tombol toggle theme sekarang menjadi 1 ikon berbentuk lingkaran di topbar (sebelumnya tombol panjang di footer sidebar).
    Dihapus
    • Footer sidebar dashboard yang berisi avatar, profil singkat, tombol Keluar, dan tombol theme. Semua dipindah ke topbar.
  5. v0.5.0 · Editor microsite gaya grid + auto-save

    Editor microsite di-rombak total: setiap blok jadi 1-line + tombol expand, drag-and-drop dengan auto-wrap section, dan tombol + antar baris untuk insert cepat.

    Ditambahkan
    • Tombol + antar baris pada list blok top-level untuk menyisipkan blok di posisi tepat (bukan hanya append).
    • Modal picker tipe blok yang konsisten antara tombol + antar baris dan tombol Tambah blok di bawah list.
    • Aksi server `wrap` (POST `_action=wrap`) yang membungkus dua blok top-level menjadi satu section baru saat blok di-drag dan di-drop di tengah body blok lain.
    • Aksi server `add` sekarang menerima parameter `position` untuk menyisipkan blok pada index tertentu sambil menggeser sibling.
    • Auto-save: tiap perubahan field di panel expand di-debounce 500ms dan disimpan otomatis tanpa tombol Simpan blok. Indikator kecil 'Tersimpan' muncul setiap kali sukses.
    • Inline primary input pada header blok (judul/label/url/title) auto-save independen dari panel expand.
    • Halaman Changelog publik di `/changelog` dengan data terstruktur dari `src/lib/changelog.ts`.
    Diubah
    • Header tiap kartu blok jadi 1 baris ringkas: drag handle, badge tipe, primary input inline, tombol expand (chevron), tombol hapus.
    • Panel expand berisi seluruh field detail tipe blok (align, ikon, font family, variant button, target countdown, embed url, dll).
    • Aksi server `add`/`update`/`delete` mengembalikan JSON `200` saat dipanggil dengan header `Accept: application/json`, sehingga kompatibel dengan auto-save lewat fetch. Form non-JS tetap memakai pola Post/Redirect/Get.
    • Drag dari section ke top-level dan sebaliknya tetap berfungsi seperti sebelumnya, sekarang dengan visual ring saat drop akan men-trigger wrap.
    • Section dalam section tetap diblokir di server (struktur tetap dangkal: top-level + 1 level child).
    Dihapus
    • Tombol panah naik/turun di header blok (digantikan oleh drag-and-drop).
    • Mode bulk-select dengan checkbox + tombol Group manual di toolbar list.
    • Sidebar 'Tambah blok' di kanan editor (digantikan oleh tombol + antar baris dan tombol Tambah blok full-width di paling bawah).
    • Aksi server `move` (naik/turun manual) dan `group` (bulk wrap).
  6. v0.4.0 · Microsite builder + tema aplikasi

    Builder microsite berbasis blok dengan editor visual, tema microsite untuk halaman publik, dan accent palette global.

    Ditambahkan
    • Microsite builder di `/dashboard/microsites` dengan tipe blok title, subtitle, text, button, countdown, embed, dan section.
    • Halaman publik microsite di `/m/<slug>` dengan tema light, dark, sunset, forest, mono, ocean, dan rose.
    • Live preview owner-only di `/dashboard/microsites/<id>/preview` yang mengabaikan publish dan password.
    • QR code SVG untuk microsite di `/api/qr/microsite/<slug>` dengan modal unduh.
    • Template starter saat membuat microsite: blank, linktree, event, profile, dan promo.
    • Tema aplikasi: mode terang/gelap dan accent palette global (Indigo, Emerald, Rose, Amber, Sky, Violet) yang dapat diatur di Pengaturan.
  7. v0.3.0 · Password lock + dasbor admin

    Password gate per resource, dasbor admin untuk persetujuan akun, dan manajemen tautan global.

    Ditambahkan
    • Password lock per shortlink dan microsite. Setelah unlock, sistem mengeluarkan token HMAC-SHA256 (TTL 6 jam) yang terikat ke `(kind, id)`.
    • Dasbor admin di `/dashboard/admin/*` untuk approve/reject pending, suspend/reactivate, promote/demote role, dan menghapus akun.
    • Daftar global tautan: 200 tautan terbaru di seluruh sistem dengan kolom pemilik dan tombol delete (sinkron juga ke KV).
    • Pendaftaran baru otomatis berstatus `pending` (kecuali user pertama). User pending diarahkan ke halaman `/pending`.
  8. v0.2.0 · Halaman interstitial + statistik klik

    Halaman transisi sebelum redirect, opsi `skip_interstitial` per tautan, dan pencatatan klik ke D1.

    Ditambahkan
    • Halaman interstitial dengan countdown 3 detik dan tombol 'Lanjut sekarang' sebelum redirect.
    • Opsi `skip_interstitial` per tautan agar tautan tertentu langsung redirect tanpa transisi.
    • Override `?go=1` untuk melewati interstitial saat pengujian atau link checker.
    • Pencatatan klik (referer, user agent, country, IP) ke tabel `clicks` melalui `ctx.waitUntil` agar tidak memblokir redirect.
  9. v0.1.0 · Rilis pertama litup

    Pemendek tautan berbasis Cloudflare Workers + D1 + KV, dengan autentikasi user dan dasbor sederhana.

    Ditambahkan
    • Pemendek tautan dengan custom slug, redirect lewat rute `/:id`, dan caching slug -> URL di Cloudflare KV.
    • Autentikasi user (login dengan username atau email) dengan PBKDF2 via Web Crypto.
    • Dasbor pengguna di `/dashboard` dengan ringkasan tautan dan total klik.
    • Halaman pengaturan profil dan ubah password.
    • Custom domain produksi di `s.litup.my.id` lewat Custom Domain Worker.

Saran perubahan? Kembali ke halaman utama atau buka dasbor.