Steven
Steven6 minit bacaan

Mesyuarat yang Benar-Benar Boleh Anda Temui Semula: Keluaran Timeline

GeekBye v1.7.3 menggantikan dropdown mesyuarat dengan garis masa sebenar — tarikh yang mesra manusia, carian dan breadcrumb yang memberitahu anda berada dalam mesyuarat mana. Di sebaliknya: perlumbaan auto-select, tangkapan skrin yang lebih tua daripada mesyuaratnya sendiri, dan lima pembetulan Windows dalam dua puluh lapan minit.

Kejuruteraan
UX
Desktop
GeekBye Releases
Mesyuarat yang Benar-Benar Boleh Anda Temui Semula: Keluaran Timeline

Menjelang Januari 2026, pengguna GeekBye mempunyai masalah sejarah. Aplikasi ini merakam dan menganalisis mesyuarat mereka dengan baik — kemudian memfailkannya ke dalam dropdown. Dropdown memadai untuk tiga item. Pada mesyuarat kelima belas, "temu duga Selasa lepas itu" menjadi ekspedisi cari gali arkeologi menerusi baris-baris yang kelihatan serupa. v1.7.3 — 64 commit antara pertengahan Disember dan 16 Januari — ialah keluaran di mana mesyuarat menjadi sesuatu yang benar-benar boleh anda temui semula.

(Satu nota simpan kira, kerana sejarah git jujur walaupun nombor versinya tidak: tiada tag keluaran v1.7.2. Versinya dinaikkan, tetapi tag seterusnya yang dikeluarkan ialah v1.7.3, jadi pembetulan Windows era v1.7.2 menumpang dalam keluaran ini.)

Daripada dropdown kepada garis masa

Perubahan utamanya satu pull request: 12 fail, +640 baris, kebanyakannya komponen MeetingsTimeline baharu sepanjang 381 baris. Dropdown menjadi garis masa kad mesyuarat yang boleh ditatal, dikumpulkan ke dalam empat baldi — Today, Yesterday, This Week, Older (hari ini, semalam, minggu ini, lebih lama) — dengan tarikh dipaparkan seperti manusia menyebutnya: 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 carian yang menapis mengikut tajuk. Paparan perincian mesyuarat menjadi halaman navigasi sebenar, jadi butang undur dan maju pada navbar akhirnya bermakna, dan breadcrumb berhenti berbunyi "Meetings / Meeting" dan mula berbunyi "Meetings / Interview with John" (dipotong dengan elipsis, kerana pasti ada orang yang menamakan mesyuaratnya seperti novel).

Dua bahagian kecil kualiti hidup turut serta: butang padam di dalam paparan mesyuarat (yang menavigasi anda kembali ke garis masa selepas pemadaman, bukannya membiarkan anda terkandas di halaman mati), dan navigasi automatik — apabila sesi mendengar tamat dengan kandungan transkrip sebenar, papan pemuka terbuka terus pada halaman perincian mesyuarat itu. Tamatkan panggilan, lihat mesyuarat. Sesi yang tamat kosong dipadamkan secara senyap dan tidak menyemakkan garis masa.

Perlumbaan yang anda cipta dengan menambah baik navigasi

Inilah bahagian yang tidak diceritakan oleh changelog. Senarai mesyuarat lama ada tabiat: pada setiap muatan, ia memilih sesi terbaharu secara automatik. Tidak berbahaya semasa senarai itu dropdown yang jarang anda sentuh. Membawa padah sebaik sahaja mesyuarat menjadi halaman yang anda navigasi: klik mesyuarat #5, refetch latar belakang selesai, dan senarai itu dengan penuh khidmat memilih mesyuarat terbaharu — menindih pilihan yang anda buat dua saat lalu. Pembetulannya bukan pengawal yang lebih bijak; ia memadamkan auto-select sepenuhnya. Setiap senarai yang memilih sesuatu bagi pihak pengguna akhirnya akan melawan pengguna.

Membuangnya mendedahkan perlumbaan kedua. Navigasi automatik melompat ke mesyuarat sebaik sahaja sesinya tamat — yang boleh berlaku sebelum sesi itu selesai menulis dirinya ke pangkalan data SQLite tempatan. Navigasi terlalu pantas dan anda tiba di mesyuarat yang belum wujud. Pembetulan yang dikeluarkan ialah lengah masa 500 milisaat sebelum memuatkan sesi apabila tiba di paparan perincian, dan pengendali navigasi membawa jaminannya sendiri — tunggu did-finish-load tetingkap tambah 100ms jika papan pemuka baru dicipta, 50ms jika sudah terbuka. Bacaan kami: navigasi hujung sesi melintasi tiga domain pemasaan — penulisan pangkalan data, muatan tetingkap dan mount React — dan setiap satunya mendapat lengah kecilnya sendiri. Ia berfungsi, dan kami katakan terus terang: timbunan nombor ajaib ialah hutang yang jujur, bukan kemenangan.

Tangkapan skrin yang lebih tua daripada mesyuaratnya sendiri

Satu lagi andaian mati dalam keluaran ini: "tangkapan skrin milik sesuatu sesi jika dan hanya jika ia diambil semasa sesi itu." Sungguh logik. Salah. Pengguna sebenar menekan Cmd+H pada iklan jawatan, agenda, kod yang bakal mereka bincangkan — sebelum menekan Start. Tab Report memadankan tangkapan skrin dengan julat masa sesi secara ketat, jadi tangkapan skrin persediaan itu lenyap daripada laporan yang menjadi tujuan ia diambil. Pembetulannya melebarkan tetingkap padanan sebanyak 60 saat sebelum sesi bermula. (Jentera julat masa itu sendiri lebih tua — ia dikeluarkan secara senyap dalam v1.6.15; sumbangan v1.7.3 ialah mengajarnya bahawa mesyuarat bermula sedikit sebelum ia bermula.)

Lima pembetulan dalam dua puluh lapan minit

Kisah perang keluaran ini langsung bukan pada garis masa — ia pada overlay onboarding Windows, dan ia contoh buku teks rantaian "betulkan pembetulan": lima commit antara 10:50 dan 11:18 pada pagi yang sama.

Tetingkap utama GeekBye menggunakan mouse passthrough — hook yang menogol setIgnoreMouseEvents Electron pada setiap gerakan tetikus supaya klikan jatuh menembusi kawasan lut sinar. Semasa onboarding di Windows, hook itu bergelut dengan overlay tutorial, dan pada langkah di mana tetingkap papan pemuka muncul, aplikasi itu membeku. Pembetulan satu: buat hook itu tidak melakukan apa-apa semasa onboarding aktif. Keamanan melalui pelucutan senjata.

Kecuali kini butang onboarding tidak bertindak balas, kerana pemajuan peristiwa menghantar klikan ke tetingkap papan pemuka di bawah overlay. Pembetulan dua dan tiga mengutak-atik forward: false bagi setiap wizard. Kemudian tiba commit yang menemui punca sebenar: apabila tetingkap papan pemuka terbuka, pengendali seret miliknya menetapkan semula tetingkap utama ke mod klik-tembus — dan pembetulan pertama telah menjadikan hook passthrough pasif, bermakna tiada apa-apa lagi yang tinggal untuk membetulkan gangguan itu. Pembetulan sebenar menterbalikkan strategi: hook kini secara aktif menegaskan semula setIgnoreMouseEvents(false) pada setiap gerakan tetikus semasa onboarding, justeru kerana kod luaran boleh menetapkannya semula pada bila-bila masa. Ia turut memadamkan 75 baris penyelesaian sementara per-wizard yang terdahulu.

Dan selepas itu pun masih ada commit kelima, kerana memenangi perang input bukan bermakna memenangi perang tertib-z: overlay dan papan pemuka sama-sama duduk pada aras always-on-top yang sama, dan Windows menaikkan tetingkap mana-mana yang mendapat fokus. Overlay berpindah ke aras tetingkap yang lebih tinggi dan menaikkan dirinya semula dengan lengah selepas papan pemuka dipaparkan. Lengkungnya patut diingati: pembetulan pasif yang melucutkan satu-satunya pembela anda lebih buruk daripada pergelutan asal.

Tiga perkara yang diajarkan keluaran ini

  1. Penambahbaikan navigasi menonjolkan pepijat keadaan. Perlumbaan auto-select wujud sebelum v1.7.3; dropdown cuma tidak pernah membiarkan anda merasainya. Sebaik sahaja mesyuarat menjadi halaman yang anda navigasi dengan sengaja, setiap cebisan kod yang memilih sesuatu untuk anda menjadi pepijat.
  2. Sempadan masa di sekeliling niat pengguna memerlukan kelonggaran. Sesi, rakaman, laporan — pengguna bertindak sedikit sebelum dan selepas tetingkap rasmi mesin. Penimbal tangkapan skrin 60 saat ialah satu baris yang mencerminkan cara orang sebenar berkelakuan.
  3. Jangan sesekali jadikan kod pembetulan anda pasif. Pembekuan Windows memerlukan lima pembetulan kerana pembetulan satu mematikan satu-satunya mekanisme yang boleh menentang gangguan luaran. Jika kod lain boleh memecahkan invarian anda pada bila-bila masa, tugas anda ialah menegaskannya semula secara berterusan, bukan berundur.

Untuk bab sebelumnya dalam kisah v1 — membina dua aplikasi berjenama daripada codebase yang sama ini — lihat satu codebase, dua aplikasi: cara white-label tanpa membuat fork (v1.7.1); dan untuk keseluruhan lengkungnya, anatomi mengeluarkan perisian hingga ke kesempurnaan.