Lewati ke konten utama

Catatan Perubahan

Apa yang telah dirilis, dan apa yang berubah di baliknya

Roda itu sendiri

pre-1.0 · 2026-08-29

Dua belas halaman, roda yang bisa digeser, efek suara, tautan bagikan, dan perender yang tidak perlu menggambar ulang secara berlebihan.

Pengundian

  • Diundi sebelum bergerak. Setiap putaran memilih pemenangnya menggunakan crypto.getRandomValues dengan metode rejection sampling, dan animasi kemudian diarahkan ke entri tersebut. Kibasan roda yang kuat hanya memperpanjang durasi putaran, tidak pernah mengubah hasil undian.
  • Halaman keadilan. Algoritma pengundian menjadi konten utama di halaman tersebut — kode yang tertulis di halaman adalah kode persis yang dijalankan.
  • Bobot dan pengulangan. Bobot entri adalah bagian peluang undiannya, ditampilkan sebagai persentase peluang sebenarnya. Dua entri dengan teks yang sama tetap menjadi dua entri terpisah, dan daftar mencantumkan berapa kali pengulangan ditemukan alih-alih menggabungkannya secara diam-diam.

Roda

  • Dua belas halaman. Masing-masing terbuka dengan roda yang sudah terisi, dan masing-masing memiliki satu kontrol khusus yang unik — rentang angka, alfabet, pembagi tim, daftar kelas, dan riwayat undian.
  • Geser dan lepaskan. Kecepatan saat melepas geseran diterjemahkan menjadi putaran tambahan. Menekan roda saat sedang berputar akan menghentikannya lebih awal; tombol spasi dan enter memutar roda tanpa perlu mencari tombol.
  • Efek suara. Detak yang disinkronkan dengan garis pembatas yang dilewati jarum, nada pendaratan, hitung mundur yang dapat dibatalkan, dan getaran di ponsel — masing-masing dapat diaktifkan/dinonaktifkan secara terpisah, dan masing-masing menampilkan status aktifnya saat ini.
  • Mode presentasi. Kontrol sekunder disembunyikan, ukuran roda membesar hingga lebih dari 70% sisi pendek layar, dan hasilnya muncul di panel kontras tinggi dengan ukuran teks yang mudah dibaca oleh seisi ruangan.
  • Dua cara lain menampilkan undian. Format strip gulir mesin slot dan strip kartu, untuk situasi saat bentuk lingkaran dirasa kurang pas.

Penyimpanan dan Berbagi

  • Tautan berbagi adalah cuplikan instan (snapshot). Data roda dikodekan langsung ke dalam URL, sehingga tautan tidak akan pernah kedaluwarsa dan pengeditan roda setelahnya tidak akan mengubah apa yang dibuka oleh rekan Anda.
  • Roda tersimpan, riwayat putaran, dan preset bobot, semuanya tersimpan di peramban ini, dan semuanya dapat diekspor ke file untuk dipindahkan ke perangkat lain. Tidak ada sistem akun, sehingga file tersebut adalah satu-satunya cara memindahkan data antar perangkat.

Di balik layar

  • Perender beralih ke canvas. Permukaan roda hanya digambar sekali saat gambar berubah dan rotasi dilakukan menggunakan transformasi elemen, sehingga putaran roda tidak membebani proses per frame sama sekali. Teks entri tetap disimpan sebagai daftar asli yang tersembunyi di sampingnya — canvas hanyalah susunan piksel, dan pembaca layar (screen reader) memerlukan teks nyata untuk dibaca.
  • Pengurangan gerakan (reduced motion) didukung penuh. Dengan prefers-reduced-motion: reduce, animasi putaran dilewati dan hasilnya langsung diumumkan seketika. Ketiga kompetitor yang diuji tercatat sama sekali tidak mendukung preferensi ini.
  • Hasil diumumkan dengan aksesibilitas. Hasil mendarat di area live region sebagai teks yang dapat dipilih, bukan sekadar piksel yang digambar di atas roda.

Sederhana murni sebagai situs alat

pre-1.0 · 2026-08-27

Kerangka kerja SaaS awal dari repositori ini dihapus sepenuhnya, bukan sekadar dinonaktifkan.

TossWheel berawal dari templat pembuka SaaS, dan sebagian besar pekerjaan hari ini adalah proses pemangkasan.

Dihapus

  • Akun, dasbor, admin, dan pengaturan. Tidak ada yang perlu dimasuki dengan login dan tidak ada apa pun di balik sistem login, jadi antarmuka tersebut dihapus sepenuhnya alih-alih dinonaktifkan — tombol fitur (feature flag) yang dimatikan tetap saja menyertakan kode di baliknya.
  • Basis data, penyimpanan objek, dan tembolok nilai-kunci (key-value cache). Worker sekarang tidak membawa dependensi atau binding sama sekali. Daftar entri disimpan di peramban Anda dan roda yang dibagikan tersimpan langsung di dalam tautan.
  • Sistem pembayaran, buletin, dan antarmuka AI. Semuanya tidak diperlukan di sini.

Diputuskan

  • Arah Desain A, "instrumen". Tiga prototipe dengan fidelitas tinggi dibuat dan satu dipilih: roda di sebelah kiri, daftar di sampingnya, tombol aksi di bawah roda, dan roda sebagai satu-satunya objek berwarna di halaman.
  • Peralihan pra-peluncuran. Setiap respons menyertakan tag noindex hingga daftar periksa peluncuran selesai, sehingga tidak ada halaman setengah jadi yang terindeks dan kemudian harus dihapus dari indeks.

Alasan hal ini dicatat

Menghadirkan kembali basis data atau sistem login di kemudian hari akan menjadi perubahan konsep produk, bukan sekadar detail implementasi. Batasan ini adalah alasan mengapa roda di sini tidak memerlukan akun dan tidak menyimpan salinan daftar Anda di server.