v2.10.0Email terima kasih saat buku dikembalikanCurrent version11 Oktober 20261 fitur baru
- Peminjam yang mengisi alamat email di formulir pinjam kini menerima ucapan terima kasih otomatis saat bukunya dikembalikan.
- Peminjam yang tidak mengisi email tidak terpengaruh. Email ini dikirim otomatis dan tidak perlu dibalas.
Rincian teknis
- src/loans/thank-you.ts: email HTML dikirim lewat API pengirim email setelah transaksi returnLoan selesai. Kegagalan kirim tidak membatalkan pengembalian.
- Kode aksi baru di log aktivitas: LOAN_THANKYOU_SENT dan LOAN_THANKYOU_FAILED, lengkap dengan label.
3 commit di rilis ini
- 6f20053 docs: tulis ulang README (versioning dan alur rilis); chore: entri changelog v2.9.0
- 957592b feat: email terima kasih ke peminjam saat buku dikembalikan (opsional, tanpa balasan)
- 43f13a8 style: email terima kasih berbentuk HTML (seragam dengan template auth)
v2.9.0Halaman Changelog11 Oktober 20261 fitur baru
- Ada halaman Changelog yang memuat riwayat perubahan, dikelompokkan per versi dan dapat dibuka satu per satu.
- Setiap versi menampilkan tanggal, ringkasan, dan penanda Fitur baru. Rincian teknis dan daftar commit dapat dibuka dari tiap versi.
- Tautan Changelog tersedia di kolom Menu pada footer.
Rincian teknis
- Rute /changelog (noindex, tidak masuk sitemap). Data ringkasan ditulis tangan di src/data/changelog.ts; tanggal dan daftar commit dihasilkan dari tag git lewat scripts/changelog-git.mjs.
- Penomoran versi kini mengikuti deploy produksi: tiap deploy mendapat tag, 45 tag lama diganti dan riwayat dari v2.0.0 sampai v2.8.6 dinomori ulang.
2 commit di rilis ini
- 76d1131 feat: halaman /changelog (pohon versi, noindex)
- 84eab09 chore: changelog per deploy produksi (48 rilis), penanda fitur baru dan current version
v2.8.0Skema feedback publik10 Oktober 20262 fitur baru
- Fondasi data untuk fitur feedback publik. Belum ada perubahan tampilan.
Rincian teknis
- Migrasi 0016: tabel feedback dan feedback_votes (RLS aktif). RLS tabel feature_requests kini tercatat di skema.
1 commit di rilis ini
- 288cd67 feat: skema feedback publik (feedback, feedback_votes), RLS feature_requests dicatat di skema
v2.8.6Data changelog dan perapian11 Oktober 2026
- Persiapan halaman changelog dan perapian kode. Tidak ada perubahan tampilan.
Rincian teknis
- Data changelog (ringkasan dan daftar commit per rilis) beserta skrip generator dari tag git.
- Komentar berlebih di schema.ts dipangkas.
3 commit di rilis ini
- 403f00f feat: data changelog (ringkasan awam + catatan teknis) dan skrip generator daftar commit dari tag
- 65f25a8 chore: changelog mengikuti skema versi v2
- 488a727 chore: pangkas komentar schema.ts
v2.8.5Halaman admin Feedback PublikFitur baru10 Oktober 2026
- Admin membaca kiriman di halaman Feedback Publik, lengkap dengan status berwarna.
- Saran yang didukung dua admin naik menjadi perlu perhatian, lalu superadmin dapat meneruskannya sebagai request fitur.
Rincian teknis
- Halaman /admin/feedback: daftar, vote, ubah status, dan teruskan menjadi request fitur. Menu Kelola mendapat tautan Feedback Publik.
- Kode aksi log: FEEDBACK_VOTE, FEEDBACK_STATUS, FEEDBACK_PROMOTE. Log IP yang tidak terbaca disederhanakan.
2 commit di rilis ini
- c9fda55 chore: sederhanakan log IP tak terbaca di submitFeedback
- d6da3ce feat: halaman admin /admin/feedback (daftar, vote, status, teruskan jadi request), warna status
v2.8.4Pembatas feedback tetap bekerja saat alamat tidak terbaca10 Oktober 2026
- Pembatas kiriman feedback tidak lagi terlewati ketika alamat pengunjung tidak dapat dibaca.
Rincian teknis
- Pembatas gagal-tertutup: alamat yang tidak terbaca masuk satu bucket bersama dengan batas tersendiri, bukan dilewati.
1 commit di rilis ini
- 7f647a4 fix: pembatas feedback gagal-tertutup saat IP tidak terbaca (bucket unknown 20/jam), log nama header untuk diagnosis
v2.8.3Halaman Kirim FeedbackFitur baru10 Oktober 2026
- Pengunjung dapat mengirim saran, koreksi data buku, atau usul buku lewat halaman Kirim Feedback, tanpa perlu masuk.
- Dari halaman sebuah buku, tautan Laporkan koreksi membuka formulir dengan buku itu sudah terisi.
Rincian teknis
- Halaman publik /feedback (parameter book dan jenis), tautan dari modal buku dan kolom Menu footer. Kontak pengirim opsional dan tidak ada balasan email otomatis.
1 commit di rilis ini
- 61c1bd6 feat: halaman publik /feedback, tautan dari modal buku dan footer
v2.8.2Fungsi admin feedback10 Oktober 2026
- Bagian belakang pengelolaan feedback untuk admin. Belum ada perubahan tampilan.
Rincian teknis
- Fungsi server untuk daftar, vote, ubah status, dan meneruskan saran menjadi request fitur; semuanya tercatat di log aktivitas.
1 commit di rilis ini
- b5161f5 feat: fungsi admin feedback (daftar, vote, status, teruskan jadi request fitur)
v2.8.1Pengiriman feedback dengan perlindungan spam10 Oktober 2026
- Bagian belakang pengiriman feedback beserta perlindungan dari spam. Belum ada perubahan tampilan.
Rincian teknis
- submitFeedback (publik): kolom jebakan tersembunyi, pembatas kiriman per IP (IP hanya disimpan sebagai hash), dan validasi panjang input.
1 commit di rilis ini
- 4713e3f feat: submitFeedback (publik; honeypot, pembatas 3/jam per ip_hash, validasi zod)
v2.7.0Ganti email di profil10 Oktober 20263 fitur baru
- Admin dapat mengganti email dari halaman profil. Tautan konfirmasi dikirim ke alamat yang baru.
Rincian teknis
- Password saat ini diverifikasi, lalu halaman /admin/confirm-email menukar token; admin_profiles.email ikut disinkronkan.
- Kode aksi log: EMAIL_CHANGE_REQUEST dan EMAIL_CHANGE.
1 commit di rilis ini
- 8311a4c feat: ganti email di profil (konfirmasi ke alamat baru, password wajib, sinkron admin_profiles)
v2.7.3Request fitur untuk adminFitur baru10 Oktober 2026
- Ada halaman Request Fitur untuk mengirim usulan fitur atau perbaikan langsung ke developer.
Rincian teknis
- Migrasi 0015: tabel feature_requests. Pengirim selalu dari sesi; hanya developer yang dapat menanggapi.
- Kode aksi log: REQUEST_CREATE, REQUEST_UPDATE, REQUEST_DELETE, REQUEST_RESPOND.
1 commit di rilis ini
- 2c5ae71 feat: request fitur admin (tiket ke developer, role developer)
v2.7.2Peran developerFitur baru10 Oktober 2026
- Ada peran developer di samping admin dan superadmin.
Rincian teknis
- Migrasi 0014: kolom is_developer dan guard requireDeveloper.
- Komentar di guards dan blok request di skema dipangkas.
2 commit di rilis ini
- 064d5c2 docs: pangkas komentar guards dan loan/maintenance requests
- 9379cd2 feat: role developer (kolom is_developer, requireDeveloper)
v2.7.1Perbaikan tautan konfirmasi ganti email10 Oktober 2026
- Tautan konfirmasi ganti email kini dapat dipakai dengan benar, juga dari perangkat lain.
Rincian teknis
- Permintaan ganti email lewat client Supabase terisolasi, sehingga token tidak berawalan pkce dan dapat ditukar di server.
1 commit di rilis ini
- 49ed75d fix: ganti email lewat client terisolasi (token tanpa pkce, bisa ditukar di server)
v2.6.0Penyeragaman nama Biblioteka10 Oktober 2026
- Nama Biblioteka Filsafat UI diseragamkan di seluruh tampilan, dan judul serta deskripsi di mesin pencari diperpendek.
Rincian teknis
- Heading, footer, dan judul serta deskripsi SEO beranda dan halaman Informasi diperbarui.
1 commit di rilis ini
- d952f28 chore: seragamkan nama Biblioteka (Filsafat UI) di UI dan perpendek judul/deskripsi SEO beranda dan informasi
v2.6.5Pembaruan keamanan pustaka10 Oktober 2026
- Pembaruan keamanan pada pustaka pendukung.
Rincian teknis
- npm audit fix tanpa --force.
v2.6.4Statistik kunjungan10 Oktober 2026
- Statistik kunjungan situs mulai dicatat.
Rincian teknis
- Vercel Web Analytics dipasang di root aplikasi.
v2.6.3Label aksi Bahasa Indonesia di halaman Activity10 Oktober 2026
- Halaman Activity menampilkan nama aksi dalam Bahasa Indonesia.
Rincian teknis
- Peta label di action-labels.ts; nilai filter tetap kode aksi asli.
1 commit di rilis ini
- 8753666 feat: label bahasa Indonesia untuk kode aksi di halaman activity
v2.6.2Perbaikan skema pengajuan10 Oktober 2026
- Akun admin yang pernah mengajukan permintaan kini dapat dihapus tanpa masalah.
Rincian teknis
- Migrasi 0013: requested_by pada category_requests dan delete_requests menjadi nullable, selaras dengan FK set null.
- Komentar keliru pada deleteBook diperbaiki.
2 commit di rilis ini
- 3d13661 docs: hapus komentar deleteBook yang keliru (loans.book_id set null, bukan cascade)
- fda4309 fix: requested_by di category_requests dan delete_requests nullable (selaras FK set null)
v2.6.1Logo dan gambar pratinjau10 Oktober 2026
- Logo dan ikon baru. Tautan yang dibagikan, misalnya lewat WhatsApp, menampilkan gambar pratinjau.
Rincian teknis
- favicon-32, icon-192, apple-touch-icon, dan og-image 1200x630. favicon.svg lama (gambar JPEG yang dibungkus tag SVG) dan drizzle.svg dihapus.
1 commit di rilis ini
- fa12647 feat: logo png (favicon, apple-touch-icon, og:image 1200x630), hapus favicon.svg jpeg-berbungkus-svg dan drizzle.svg
v2.5.0SEO dasar10 Oktober 20262 fitur baru
- Perpustakaan lebih mudah ditemukan di mesin pencari.
Rincian teknis
- Bahasa halaman id, canonical, Open Graph, dan nosnippet pada footer.
1 commit di rilis ini
- cb29f1b feat: seo dasar (lang id, canonical, og, nosnippet footer)
v2.5.4Prosedur darurat lupa password10 Oktober 2026
- Dokumentasi prosedur darurat lupa password disesuaikan dengan fitur reset mandiri. Tidak ada perubahan tampilan.
Rincian teknis
- README memuat reset mandiri sebagai jalur utama dan dashboard Supabase sebagai jalur cadangan.
1 commit di rilis ini
- cafd254 docs: prosedur darurat lupa password mengikuti alur reset mandiri
v2.5.3Tautan reset password yang tidak berlaku ditolak sejak awal10 Oktober 2026
- Tautan reset password yang sudah dipakai atau kedaluwarsa langsung menampilkan pesan tidak valid, tanpa form.
Rincian teknis
- Loader halaman reset memeriksa tabel token sebelum menampilkan form; penentu akhir tetap verifikasi token saat password dikirim.
1 commit di rilis ini
- 28753d4 feat: tautan reset password yang sudah dipakai atau kedaluwarsa langsung ditolak saat halaman dibuka
v2.5.2Reset password mandiriFitur baru10 Oktober 2026
- Admin yang lupa password dapat mengaturnya ulang sendiri lewat email, tanpa menunggu bantuan.
Rincian teknis
- Halaman lupa dan reset password; admin dipilih dari daftar nama, bukan mengetik email. Token ditukar di server saat form dikirim, dan semua sesi admin itu dicabut setelah sukses.
- Alias rute /signin, /signup, dan /forgot-password. Kode aksi log baru: RESET_PASSWORD_REQUEST dan RESET_PASSWORD.
1 commit di rilis ini
- 9fa859a feat: reset password mandiri, halaman lupa/reset password, alias /signin /signup /forgot-password
v2.5.1Halaman InformasiFitur baru10 Oktober 2026
- Halaman Informasi memuat lokasi, jam buka, cara pinjam, tata tertib, dan petugas yang bertugas hari ini.
Rincian teknis
- Data petugas dibaca dari src/data/petugas.ts. Nama alternatif perpustakaan ditambahkan untuk SEO.
1 commit di rilis ini
- 017be84 feat: halaman informasi biblioteka + seo nama alternatif
v2.4.0Pohon kategori dan kategorisasi massal10 Oktober 20261 fitur baru
- Kategori buku kini berbentuk pohon: kategori utama dengan subkategori, maksimal tiga tingkat.
- Superadmin dapat mengelola kategori dan mengkategorikan banyak buku sekaligus. Buku boleh disimpan tanpa kategori.
- Di katalog, daftar kategori tampil sebagai pohon yang dapat dibuka dan ditutup.
Rincian teknis
- Migrasi 0012: categories mendapat kind, parent_id, dan urutan; unique (kind, parent_id, nama). Kategori utama buku di books.kategori_id dan dicerminkan di book_categories; tag memakai baris dengan kind tag.
- Filter kategori ikut memuat turunan lewat recursive CTE. Kontrak form buku berubah dari categoryIds menjadi kategoriId dan tagIds.
- Kategorisasi massal maksimal 200 buku per proses. Log baru: CATEGORY_* dan BOOK_BULK_CATEGORIZE.
2 commit di rilis ini
- 1c0a157 feat: pohon kategori, kelola kategori, kategorisasi massal, form buku
- 9fdbdf6 feat: filter kategori publik berbentuk pohon, sembunyikan tag
v2.4.2Daftar kategori diciutkan di HP10 Oktober 2026
- Di HP, daftar kategori diciutkan supaya hasil buku tidak terdorong ke bawah.
Rincian teknis
- Daftar kategori katalog publik berbentuk tombol yang menutup otomatis setelah memilih; tampilan desktop tidak berubah.
1 commit di rilis ini
- b5b6103 feat: daftar kategori katalog publik diciutkan di mobile
v2.4.1Jalur kategori di kartu dan daftar10 Oktober 2026
- Kartu dan daftar buku menampilkan jalur kategori lengkap.
Rincian teknis
- Chip kategori menampilkan jalur dari induk ke anak; komentar berlebih dihapus.
1 commit di rilis ini
- ff4059a refactor: jalur kategori di kartu dan daftar, hapus komentar berlebih
v2.3.0Pembaruan keamanan5 Oktober 20262 fitur baru
- Pembaruan keamanan pada kerangka aplikasi.
Rincian teknis
- TanStack Start dinaikkan ke versi yang sudah ditambal dan router-core diselaraskan.
1 commit di rilis ini
- f990f40 chore: upgrade TanStack Start to patched version (CVE-2026-102989), align router-core
v2.3.3Maintenance katalog-sajaFitur baru6 Oktober 2026
- Admin dapat mengajukan maintenance yang hanya menutup katalog publik; setelah disetujui superadmin, halaman admin tetap dapat dipakai.
Rincian teknis
- Migrasi 0011: tabel maintenance_requests. Penutupan penuh lewat pengaturan server tetap berlaku dan mengalahkan pengaturan di database.
1 commit di rilis ini
- de18d07 feat: maintenance katalog-saja dengan persetujuan superadmin
v2.3.2Urutan judul alami dan urutan rak fisikFitur baru5 Oktober 2026
- Judul buku diurutkan secara alami (Jilid 2 sebelum Jilid 10), dan Inventory Check dapat diurutkan menurut rak fisik atau jumlah.
Rincian teknis
- Migrasi 0010: collation natural_sort (ICU). Tombol urutan di Inventory Check.
1 commit di rilis ini
- fa57ed4 fix: natural sort judul, urutan fisik rak, toggle urutan di inventory check
v2.3.1Teks halaman maintenance5 Oktober 2026
- Pesan di halaman maintenance diperbarui.
Rincian teknis
- Teks halaman /maintenance diubah.
v2.2.0Mode maintenance22 September 20262 fitur baru
- Situs dapat ditutup sementara untuk perawatan; pengunjung melihat halaman pemberitahuan.
Rincian teknis
- Semua rute dialihkan ke /maintenance selama mode maintenance aktif.
1 commit di rilis ini
- ad7c9bf Maintenance mode: redirect semua route ke /maintenance via env var MAINTENANCE_MODE
v2.2.8Dokumentasi dan perapian repo1 Oktober 2026
- Dokumentasi proyek ditulis ulang. Tidak ada perubahan tampilan.
Rincian teknis
- README diganti dengan dokumentasi proyek V2, file dump database diabaikan git, dan routeTree diregenerasi untuk rute sitemap.xml.
3 commit di rilis ini
- 52d2481 chore: regenerate routeTree untuk route sitemap.xml
- f235076 chore: abaikan file *.dump (backup database)
- 153cb00 docs: ganti README scaffold dengan dokumentasi proyek V2
v2.2.7Perbaikan form edit buku23 September 2026
- Form edit buku kini selalu menampilkan data buku yang benar setelah data selesai dimuat.
Rincian teknis
- BookForm dipasang ulang saat data edit selesai di-refetch.
1 commit di rilis ini
- c4dea1b fix(books): remount BookForm saat data edit selesai di-refetch
v2.2.6Perbaikan pengajuan hapus buku ganda23 September 2026
- Buku yang sudah punya pengajuan hapus yang menunggu kini dikenali dengan benar.
Rincian teknis
- Kode error unique_violation dibaca dari DrizzleQueryError.cause saat memeriksa pengajuan hapus yang masih pending.
1 commit di rilis ini
- e14f3df fix(books): unwrap DrizzleQueryError.cause.code saat cek unique_violation pending delete-request
v2.2.5Pencarian lintas rak di Inventory CheckFitur baru22 September 2026
- Inventory Check dapat mencari buku di semua rak sekaligus.
Rincian teknis
- Pencarian buku lintas rak ditambahkan di halaman inventory check.
1 commit di rilis ini
- 7388ddd feat(inventory): search buku lintas rak di halaman inventory check
v2.2.4robots.txt dan sitemap22 September 2026
- Mesin pencari kini mendapat petunjuk halaman mana yang boleh dibaca, beserta daftar halaman setiap buku.
Rincian teknis
- robots.txt statis dan sitemap.xml dinamis yang memuat tiap buku.
1 commit di rilis ini
- 935776e feat(seo): robots.txt statis + sitemap.xml dinamis per-buku
v2.2.3Alamat lama dialihkan ke domain baru22 September 2026
- Alamat lama vercel.app kini otomatis diarahkan ke biblioteka.filsafatui.app.
Rincian teknis
- Redirect 301 dari domain bawaan Vercel ke domain utama.
1 commit di rilis ini
- f1f9645 feat: 301 redirect domain default vercel.app ke biblioteka.filsafatui.app
v2.2.2Judul dan pratinjau per buku untuk mesin pencari22 September 2026
- Setiap buku punya judul dan pratinjau sendiri saat muncul di mesin pencari atau dibagikan.
Rincian teknis
- SSR title dan meta per buku lewat loader dan head pada halaman katalog.
1 commit di rilis ini
- eb17aab feat(catalog): SSR title/meta per buku via loader+head untuk SEO
v2.2.1Perbaikan keluar dari mode maintenance22 September 2026
- Pengunjung tidak lagi tertahan di halaman pemberitahuan setelah perawatan selesai.
Rincian teknis
- Redirect keluar dari /maintenance saat mode maintenance dimatikan.
1 commit di rilis ini
- d7e5455 Fix: redirect keluar dari /maintenance saat MAINTENANCE_MODE dimatikan
v2.1.0Rebrand Perpustakaan Departemen Filsafat21 September 20261 fitur baru
- Nama dan tampilan diperbarui, dengan logo ikon di header admin.
Rincian teknis
- Judul katalog, subtitle, dan title tab diganti; favicon dan logo ikon di AdminHeader.
1 commit di rilis ini
- fcbf2f6 Rebrand: Perpustakaan Departemen Filsafat (judul katalog, subtitle, title tab), favicon, logo ikon di AdminHeader
v2.1.4Nama Biblioteka Departemen Filsafat UI21 September 2026
- Nama di judul halaman, tab browser, halaman login, dan header admin diganti menjadi Biblioteka Departemen Filsafat UI.
Rincian teknis
- Heading, title tab, halaman login, dan AdminHeader diperbarui.
1 commit di rilis ini
- 1c777e9 Rebrand: Biblioteka Departemen Filsafat UI (heading, title tab, login, AdminHeader), hapus link admin di bawah katalog, footer: Koleksi Buku
v2.1.3FooterFitur baru21 September 2026
- Ada footer di semua halaman dengan menu, tautan masuk admin, dan kredit pembuat. Tautan masuk admin dipindahkan dari bawah katalog ke footer.
Rincian teknis
- Komponen Footer dengan kolom Menu, tautan admin, dan kredit.
1 commit di rilis ini
- 4a36af2 Alias /login, halaman 404, footer (menu, link admin, kredit Hexadev Technologies)
v2.1.2Alamat pendek /login dan halaman 40421 September 2026
- Alamat /login membuka halaman masuk admin. Alamat yang tidak ada kini menampilkan halaman 404.
Rincian teknis
- Alias /login ke /admin/login dan notFoundComponent di root.
1 commit di rilis ini
- d9cabeb Alias /login ke /admin/login, halaman 404 (notFoundComponent di root)
v2.1.1Pesan login yang lebih jelas21 September 2026
- Email yang belum dikonfirmasi atau terlalu banyak percobaan tidak lagi dikira salah password.
Rincian teknis
- loginErrorMessage memetakan kode error Supabase (email_not_confirmed, over_request_rate_limit) ke pesan yang jelas; kode aslinya tetap dicatat pada log LOGIN_FAILED.
1 commit di rilis ini
- 79a543a Login: pesan jelas untuk email belum dikonfirmasi dan rate limit, bukan selalu 'Password salah'
v2.0.0Deploy pertama: log aktivitas, sesi admin, profil, halaman Activity21 September 20261 fitur baru
- Rilis pertama yang tayang di produksi. Seluruh pekerjaan pra-rilis (katalog, kelola buku, peminjaman, cek inventaris) ikut tayang bersama versi ini.
- Setiap tindakan admin tercatat di log aktivitas: siapa, kapan, dan apa. Superadmin dapat membacanya di halaman Activity.
- Sesi admin dibatasi 8 jam. Ada halaman profil untuk mengubah nama, nomor WhatsApp, dan password.
Rincian teknis
- logActivity(tx, actor, entry) dipasang di 14 mutation dan ditulis dalam transaksi yang sama dengan aksinya. Aktor selalu dari sesi tervalidasi, bukan dari request body.
- Log autentikasi: LOGIN, LOGOUT, LOGIN_FAILED, SIGNUP_ADMIN. Batas sesi 8 jam diperiksa server lewat auth.sessions, dan rute /admin dijaga di sisi route.
- Migrasi 0009: kolom no_whatsapp. Halaman /admin/activity khusus superadmin dengan filter aksi dan paginasi.
8 commit di rilis ini
- 4138c8e Fase 3: activity-log baru (aktor dari sesi tervalidasi, ditulis dalam transaksi) di 14 mutation
- efe470f Rapikan activity-log: cabut fallback posisi dari tabel stok (buku tanpa rak memang belum punya posisi)
- e4077e9 Fase 3: batas sesi admin 8 jam (dicek server lewat auth.sessions) + guard route /admin + redirect login + pesan error daftar admin
- a135c17 Fase 3: log LOGIN/LOGOUT/LOGIN_FAILED (maks 3/menit) + SIGNUP_ADMIN, logout scope local
- 11d0b7f Fase 3: kolom no_whatsapp di admin_profiles (migrasi 0009)
- a96e717 Fase 3: halaman profil admin (nama, WhatsApp, ganti password), id dari sesi
- adbbf3c Signup: tampilkan pesan validasi sebagai kalimat biasa
- 664207c Fase 3: halaman /admin/activity (baca activity log, superadmin-only, filter aksi + pagination)
v2.0.1Perbaikan cookie sesi21 September 2026
- Perbaikan keamanan pada pengaturan cookie sesi login.
Rincian teknis
- Pengaturan cookie sesi login diperkuat pada client Supabase di sisi server.
1 commit di rilis ini
- f521fc6 Fix: teruskan cookie options (httpOnly, secure) ke setCookie sesi Supabase
Pra-rilis3 versi
v2.0.0-pre.3Peminjaman, cek inventaris, pengajuan kategoriFitur baru19 September 2026
- Peminjaman: mahasiswa dan dosen mengajukan dari halaman buku, lalu petugas menyetujui dan mencatat pengembalian.
- Cek inventaris untuk mencocokkan jumlah buku di sistem dengan yang ada di rak.
- Admin dapat mengajukan kategori baru untuk disetujui superadmin.
- Menu admin dikelompokkan, menyesuaikan peran, dan nyaman dipakai di HP.
Rincian teknis
- Tabel loan_requests dan category_requests, alur persetujuan peminjaman, dan alokasi stok per posisi rak.
- Inventory check dengan koreksi jumlah yang langsung tersimpan.
- Navbar admin berupa dropdown berkelompok dan kondisional per peran. Perbaikan: referensi db tidak lagi berada di level atas modul books/admin.
5 commit di rilis ini
- 392f088 Fase 2: category_requests approval workflow
- b5e3d2c Fase 2: fitur peminjaman (loan_requests) end-to-end
- 659abfb Fix: hindari referensi 'db' di top-level type books/admin.ts
- 361e82a Fase 2: fitur inventory check
- 097e01d Fase 2: navbar admin (grouped dropdown, conditional per role) + fix responsive mobile
v2.0.0-pre.2Katalog publik dan kelola bukuFitur baru17 September 2026
- Katalog publik dibuka: cari buku, saring kategori, dan buka detail buku lewat tautan yang dapat dibagikan.
- Admin dapat menambah dan mengubah buku; penghapusan diajukan lalu disetujui superadmin.
- Tampilan katalog dirancang ulang: warna aksen, header, kartu, dan jendela detail buku.
- Nama peminjam sengaja tidak pernah ditampilkan di katalog publik.
Rincian teknis
- Server function katalog read-only, dan detail buku sebagai modal dengan parameter ?book=id.
- Kolom legacy pada posisi dan books serta tabel activity_logs untuk migrasi data V1.
- CRUD buku dan alur persetujuan hapus (delete_requests).
- Keputusan privasi: katalog publik hanya mengekspos boolean isDipinjam.
9 commit di rilis ini
- 16596d7 Add read-only katalog buku server functions (Fase 1)
- c0c80bc add catalog for public, still needs to be fix and repaired
- cf2b490 Fase 1: add posisi/books legacy columns and activity_logs table for V1 data migration
- a7356f9 docs: document deliberate privacy decision — nama_peminjam not exposed in public catalog API
- cea0759 Fase 1: implement catalog UI design decisions (accent color, masthead header, sidebar search, page size dropdown)
- 4a7bcd7 Fase 1: convert book detail to shareable modal (?book=id), fix category sidebar (top-N + search, drop unused grouping)
- 0397519 Fase 2: CRUD buku (create/update/delete) + delete-request approval workflow
- 652e8ed Fase 1: batasi tinggi sidebar kategori dengan scroll biar tidak melebihi grid buku
- bedcf7a Fase 1: redesign card & modal buku
v2.0.0-pre.1Fondasi: login admin dan persetujuan akunFitur baru15 September 2026
- Fondasi sistem V2: admin dapat mendaftar dan masuk, dan akun baru aktif setelah disetujui superadmin.
- Dashboard admin dengan statistik sederhana.
Rincian teknis
- Repo V2 dimulai dengan TanStack Start, Drizzle, dan Supabase. Skema awal: books, loans, members, admin_profiles.
- Guard otorisasi terpusat di server: requireSuperadmin dan requireApprovedAdmin.
- Tes karakterisasi untuk logika alokasi stok V1 (allocateFromLargestStock, canCreateLoan). Bug approve-loan-request V1 didokumentasikan sebagai catatan desain Fase 2.
8 commit di rilis ini
- 8fa7b11 chore: initialize V2 repository
- a6c1fdf feat: initial drizzle schema (books, loans, members, admin_profiles)
- 736ddb8 Phase 0: Supabase wiring, admin auth server functions, login flow working end-to-end
- cc9641d Add centralized authorization guards (requireSuperadmin, requireApprovedAdmin)
- 2fca997 Add admin signup + superadmin approval flow, plus shared AdminHeader with logout
- 9f68a7e Add characterization tests for V1 stock allocation logic (allocateFromLargestStock, canCreateLoan)
- 1e4385f Document V1 approve-loan-request bug (bypass allocation, no transaction) as Fase 2 design note
- 985bc44 Fix missing getCurrentAdmin import in approval.ts; wire real dashboard with admin stats