
Rapat yang Benar-Benar Bisa Kamu Temukan Lagi: Rilis Timeline
GeekBye v1.7.3 mengganti dropdown rapat dengan timeline sungguhan — tanggal yang manusiawi, pencarian, dan breadcrumb yang memberi tahu kamu sedang di rapat mana. Di baliknya: race auto-select, screenshot yang lebih tua dari rapatnya sendiri, dan lima perbaikan Windows dalam dua puluh delapan menit.
Menjelang Januari 2026, pengguna GeekBye punya masalah riwayat. Aplikasinya merekam dan menganalisis rapat mereka dengan baik — lalu mengarsipkannya ke dalam dropdown. Dropdown oke untuk tiga item. Di rapat kelima belas, "wawancara Selasa lalu itu" jadi ekspedisi penggalian arkeologi menembus baris-baris yang tampak sama semua. v1.7.3 — 64 commit antara pertengahan Desember dan 16 Januari — adalah rilis tempat rapat menjadi sesuatu yang benar-benar bisa kamu temukan lagi.
(Satu catatan pembukuan, karena riwayat git itu jujur bahkan saat nomor versinya tidak: tidak ada tag rilis v1.7.2. Versinya sempat dinaikkan, tapi tag berikutnya yang dirilis adalah v1.7.3, jadi perbaikan Windows era v1.7.2 ikut menumpang di rilis ini.)
Dari dropdown ke timeline
Perubahan utamanya satu pull request: 12 file, +640 baris, sebagian besar berupa komponen MeetingsTimeline baru sepanjang 381 baris. Dropdown menjadi timeline kartu rapat yang bisa di-scroll, dikelompokkan ke empat ember — Today, Yesterday, This Week, Older (hari ini, kemarin, minggu ini, lebih lama) — dengan tanggal yang dirender seperti manusia mengucapkannya: Today, 2:30 PM, Yesterday, 2:30 PM, Mon, 2:30 PM untuk minggu ini, dan Jan 5, 2:30 PM untuk yang lebih jauh. Cmd/Ctrl+K memfokuskan kotak pencarian yang memfilter berdasarkan judul. Tampilan detail rapat menjadi halaman navigasi sungguhan, jadi tombol maju-mundur di navbar akhirnya berarti sesuatu, dan breadcrumb berhenti berbunyi "Meetings / Meeting" dan mulai berbunyi "Meetings / Interview with John" (dipotong dengan elipsis, karena selalu ada yang menamai rapat seperti novel).
Dua bagian kecil peningkatan kualitas hidup ikut serta: tombol hapus di dalam tampilan rapat (yang menavigasi kamu kembali ke timeline setelah menghapus, alih-alih menelantarkanmu di halaman mati), dan navigasi otomatis — saat sesi mendengarkan berakhir dengan konten transkrip sungguhan, dashboard terbuka langsung di halaman detail rapat itu. Akhiri panggilan, lihat rapatnya. Sesi yang berakhir kosong dihapus diam-diam alih-alih mengotori timeline.
Race yang kamu ciptakan dengan memperbaiki navigasi
Ini bagian yang tidak diceritakan changelog. Daftar rapat lama punya kebiasaan: di setiap pemuatan, ia meng-auto-select sesi terbaru. Tidak berbahaya saat daftarnya berupa dropdown yang jarang kamu sentuh. Fatal begitu rapat menjadi halaman yang kamu navigasikan: klik rapat #5, refetch di latar belakang selesai, dan daftar dengan sok membantu memilih rapat terbaru — menimpa pilihan yang kamu buat dua detik lalu. Perbaikannya bukan penjagaan yang lebih pintar; melainkan menghapus auto-select sepenuhnya. Setiap daftar yang memilih sesuatu atas nama user pada akhirnya akan melawan user.
Menghapusnya menyingkap race kedua. Navigasi otomatis melompat ke rapat tepat saat sesinya berakhir — yang bisa terjadi sebelum sesi itu selesai menulis dirinya ke database SQLite lokal. Navigasi terlalu cepat dan kamu tiba di rapat yang belum ada. Perbaikan yang dirilis adalah delay 500 milidetik sebelum memuat sesi saat tiba di tampilan detail, dan handler navigasinya membawa pengaman sendiri — tunggu did-finish-load jendela plus 100ms kalau dashboard baru dibuat, 50ms kalau sudah terbuka. Bacaan kami: navigasi akhir-sesi melintasi tiga domain waktu — penulisan database, pemuatan jendela, dan mount React — dan masing-masing dapat delay kecilnya sendiri. Ini berfungsi, dan kami bilang terus terang: tumpukan angka ajaib adalah utang yang jujur, bukan kemenangan.
Screenshot yang lebih tua dari rapatnya sendiri
Satu asumsi lagi mati di rilis ini: "screenshot milik sebuah sesi jika dan hanya jika diambil selama sesi itu." Sangat logis. Salah. User sungguhan menekan Cmd+H di lowongan kerja, agenda, kode yang sebentar lagi mereka diskusikan — sebelum menekan Start. Tab Report mencocokkan screenshot dengan rentang waktu sesi secara ketat, sehingga screenshot persiapan itu lenyap dari laporan yang justru jadi tujuan pengambilannya. Perbaikannya memperlebar jendela pencocokan 60 detik sebelum sesi dimulai. (Mesin rentang waktunya sendiri lebih tua — dirilis diam-diam di v1.6.15; kontribusi v1.7.3 adalah mengajarinya bahwa rapat dimulai sedikit sebelum rapat dimulai.)
Lima perbaikan dalam dua puluh delapan menit
Kisah perang rilis ini sama sekali bukan di timeline — melainkan di overlay onboarding Windows, dan ini contoh buku teks rantai "perbaiki perbaikannya": lima commit antara pukul 10:50 dan 11:18 di pagi yang sama.
Jendela utama GeekBye memakai mouse passthrough — hook yang men-toggle setIgnoreMouseEvents milik Electron di setiap gerakan mouse supaya klik jatuh menembus area transparan. Selama onboarding di Windows, hook itu bertengkar dengan overlay tutorial, dan di langkah tempat jendela dashboard muncul, aplikasinya freeze. Perbaikan satu: buat hook tidak melakukan apa-apa selama onboarding aktif. Damai lewat pelucutan senjata.
Kecuali sekarang tombol onboarding tidak merespons, karena penerusan event mengirim klik ke jendela dashboard di bawah overlay. Perbaikan dua dan tiga mengutak-atik forward: false per wizard. Lalu datang commit yang menemukan akar masalah sebenarnya: saat jendela dashboard terbuka, drag handler miliknya me-reset jendela utama ke mode klik-tembus — dan perbaikan pertama telah membuat hook passthrough pasif, artinya tidak ada lagi yang tersisa untuk mengoreksi gangguan itu. Perbaikan sesungguhnya membalik strategi: hook kini secara aktif menegaskan ulang setIgnoreMouseEvents(false) di setiap gerakan mouse selama onboarding, justru karena kode eksternal bisa me-resetnya kapan saja. Ia juga menghapus 75 baris workaround per-wizard sebelumnya.
Dan bahkan setelah itu masih ada commit kelima, karena memenangkan perang input bukan berarti memenangkan perang z-order: overlay dan dashboard sama-sama duduk di level always-on-top yang sama, dan Windows mengangkat jendela mana pun yang mendapat fokus. Overlay pindah ke level jendela yang lebih tinggi dan mengangkat dirinya lagi dengan delay setelah dashboard tampil. Alurnya layak diingat: perbaikan pasif yang melucuti satu-satunya pembelamu lebih buruk daripada pertarungan aslinya.
Tiga hal yang diajarkan rilis ini
- Peningkatan navigasi memunculkan bug state. Race auto-select sudah ada sebelum v1.7.3; dropdown hanya tidak pernah membuatmu merasakannya. Begitu rapat menjadi halaman yang kamu navigasikan dengan sengaja, setiap potongan kode yang memilih sesuatu untukmu menjadi bug.
- Batas waktu di sekitar niat user butuh kelonggaran. Sesi, rekaman, laporan — user bertindak sedikit sebelum dan sesudah jendela resmi mesin. Buffer screenshot 60 detik adalah satu baris yang mencerminkan cara orang sungguhan berperilaku.
- Jangan pernah membuat kode korektifmu pasif. Freeze Windows butuh lima perbaikan karena perbaikan satu mematikan satu-satunya mekanisme yang bisa melawan gangguan eksternal. Kalau kode lain bisa merusak invarianmu kapan saja, tugasmu menegaskannya ulang terus-menerus, bukan mundur.
Untuk bab sebelumnya dalam kisah v1 — membangun dua aplikasi ber-brand dari codebase yang sama ini — lihat satu codebase, dua aplikasi: cara white-label tanpa fork (v1.7.1); dan untuk keseluruhan alurnya, anatomi merilis software sampai sempurna.