
Mengapa Perekaman Layar Menangkap Monitor yang Salah (dan Cara Kami Memperbaikinya)
Pada pengaturan dua monitor, GeekBye merekam dan mengambil screenshot layar utama tak peduli di layar mana Anda bekerja. Perbaikannya hanya satu fungsi kecil — tapi versi pertamanya salah, dan code review menemukan alasannya.
Ini bug yang hanya ada kalau Anda punya dua monitor — makanya ia hidup diam-diam untuk sementara waktu. Anda bekerja di layar samping, memulai perekaman GeekBye, dan ia merekam monitor utama Anda. Yang ada menu bar-nya. Yang tidak sedang Anda lihat.
Cacat yang sama, lebih senyap dan lebih buruk, menimpa screenshot yang GeekBye kirim ke AI sebagai konteks: tekan shortcut screenshot di monitor kedua Anda, dan AI mendapat gambar monitor pertama Anda. Tak ada tanda visual — asistennya hanya menjawab tentang layar yang salah dan Anda bingung kenapa ia kebingungan. GeekBye v2.0.10 memperbaiki keduanya.
Dua pipeline, satu default yang malas
Screen capture di desktop adalah dua jalur kode terpisah, dan keduanya secara independen memilih layar utama:
- Perekaman video menyusun daftar sumber layar yang tersedia dan mengambil yang pertama —
sources[0]. Di macOS itu praktis selalu layar utama. Tak ada pemilih, tak ada logika soal di mana Anda sebenarnya berada. Komentar di kode kami sendiri benar-benar tertulis "auto-select first screen source." - Screenshot memakai perintah
screencapturemacOS dengan flag-m. Flag itu punya persis satu arti: main display only (hanya layar utama). Ditulis mati.
Tak ada satu pun dari kedua jalur itu yang pernah menanyakan pertanyaan yang penting: pengguna ada di layar mana?
Satu hal yang tak pernah rusak, layak diluruskan karena orang mengira begitu: berpindah antar Spaces macOS di monitor yang sama selalu berfungsi. Capture terjadi di level display — ia mengambil Space mana pun yang terlihat di display yang dipilih. Bug ini tak pernah soal Spaces. Ia selalu soal memilih display fisik yang salah.
Perbaikan yang tampak jelas — dan ternyata salah
Sinyal yang benar tampak mudah: capture layar tempat pengguna berada. Implementasi pertama kami berpatokan pada jendela overlay GeekBye — capture display mana pun tempat overlay berada.
Code review membunuhnya, dengan benar. Overlay GeekBye dibuat sebagai jendela full-workarea di layar utama, pada posisi (0,0). Ia hanya berpindah ke monitor lain kalau Anda secara fisik menyeret pil-nya ke sana — dan shortcut keyboard yang menggesernya dijepit ke dimensi layar utama, jadi mereka tidak bisa memindahkannya ke monitor kedua sama sekali. Berpatokan capture pada overlay berarti: bagi setiap pengguna yang kebetulan tidak menyeret overlay ke layar kerjanya, "perbaikan" itu kembali lagi ke layar utama. Ia nyaris tak memperbaiki siapa pun — sambil tampak, dalam pengujian cepat di mesin dev bermonitor tunggal, seolah berhasil.
Patokan yang benar adalah kursor. Di mana pun mouse Anda berada, itulah layar tempat Anda bekerja — dan itu benar untuk setiap cara sebuah capture dimulai: shortcut keyboard memicu di tempat Anda menunjuk, dan mengklik tombol Record menempatkan kursor Anda di layar itu menurut definisinya. Perbaikan finalnya adalah fungsi dua baris: layar terdekat dengan kursor. Video mencocokkan sumber capture-nya dengan id layar itu; screenshot meneruskan batas layar itu ke screencapture -R (sebuah persegi tertentu) alih-alih flag layar-utama -m.
Kami sengaja memilih -R (persegi eksplisit dalam koordinat layar global) ketimbang -D (sebuah indeks display): indeks display OS tak punya korespondensi yang terjamin dengan urutan display framework, jadi indeks bakal jadi tebak-tebakan kedua. Persegi dari batas display yang sebenarnya tidaklah ambigu — dan kami memverifikasi perilaku flag itu, termasuk koordinat negatif untuk display yang diposisikan di kiri layar utama, di rig multi-monitor sungguhan sebelum merilis.
Mengapa ini bug yang bagus untuk belajar
- "Capture layar" menyembunyikan sebuah keputusan. Di satu display tak ada keputusan, jadi keputusan itu tak pernah dirancang — ia di-default. Multi-monitor adalah tempat setiap default implisit muncul ke permukaan.
- Salah secara senyap lebih buruk daripada salah secara terlihat. Bug video mengganggu orang. Bug screenshot menyesatkan AI, secara tak kelihatan. Ketika Anda membangun fitur yang menyuapi konteks ke sebuah model, input yang salah menghasilkan output yang salah dengan penuh percaya diri tanpa error di mana pun. Itulah kegagalan yang paling layak diburu keras.
- Perbaikan yang lolos di mesin Anda bisa gagal di mesin orang lain. Versi yang berpatokan pada overlay berfungsi dalam pengujian monitor tunggal. Inti dari bug ini justru multi-monitor — dan si reviewer bernalar tentang posisi jendela yang sebenarnya alih-alih memercayai tes yang hijau. Review bukan stempel karet pada kode yang berfungsi; ia model kedua tentang mengapa kode itu berfungsi.
GeekBye v2.0.10 merilis perbaikan berbasis kursor untuk perekaman maupun screenshot. Kalau Anda menjalankan banyak display, capture sekarang mengikuti Anda.
Untuk rilis-rilis tetangga di seri ini, lihat mengapa AI notetaker Anda berhenti merekam di tengah meeting (v2.0.9) dan mengapa transkripsi AI salah mendengar istilah teknis (v2.0.11). Untuk bagaimana overlay berperilaku selama panggilan, lihat cara tetap tak terlihat saat berbagi layar.