Kontribusi diterima lewat pull request. Ini basis kode Win32 FFI, jadi konvensi di bawah ini bertujuan menjaga kode tetap mudah ditinjau, bukan sekadar formalitas.
Build dari Kode Sumber
Membutuhkan Rust (stable) dan toolchain MSVC di Windows.
.\build.ps1 -Mode prod
Hasilnya: target\release\wiradesk.exe dan
target\release\wiradesk-settings.exe.
Menjalankan Pengujian
Rangkaian pengujian membutuhkan satu variabel lingkungan. Daemon menautkan manifest elevasi, yang kalau tidak dilewati akan ikut berlaku pada test harness dan membuatnya gagal sebelum satu pengujian pun berjalan:
$env:WIRADESK_SKIP_MANIFEST = '1' cargo test --workspace
Yang Perlu Dijalankan Sebelum Mengirim
cargo fmt --all cargo clippy --workspace --all-targets -- -D warnings cargo test --workspace
Empat Pemeriksaan yang Diwajibkan CI
| Pemeriksaan | Yang dilakukan |
|---|---|
| Build | fmt, clippy -D warnings, pengujian, dan build rilis, di Windows. |
| Pemindaian secret | gitleaks atas riwayat commit dan working tree, memakai .gitleaks.toml. |
| Dependensi | cargo-deny check atas advisory keamanan, lisensi, larangan, dan sumber, dengan graf dependensi dikunci ke x86_64-pc-windows-msvc. |
| Lisensi | Bagian dari pemeriksaan cargo-deny yang sama: dependensi baru dengan lisensi di luar daftar yang diizinkan akan menggagalkan build, dan itu disengaja. |
gitleaks hanya supaya sebuah temuan hilang. Periksa dan tangani temuannya.Kode Unsafe
Ini basis kode Win32 FFI, jadi unsafe tidak bisa dihindari. Yang tidak boleh adalah
unsafe tanpa dokumentasi. undocumented_unsafe_blocks dan
missing_safety_doc disetel deny di lint workspace, jadi setiap blok
unsafe harus punya komentar SAFETY:, dan build gagal jika komentarnya tidak
ada.
Tuliskan prasyarat yang benar-benar diandalkan oleh blok tersebut, bukan deskripsi pemanggilannya. Komentar yang berguna biasanya menyebut salah satu hal berikut:
- kapasitas buffer, dibandingkan dengan argumen ukuran yang dikirim ke Win32;
- komponen mana yang memiliki sebuah handle, dan di mana handle tersebut dilepas tepat satu kali;
- di thread mana pemanggilan harus berjalan;
- mengapa handle yang tidak valid masih bisa ditoleransi, karena API melaporkan kegagalan alih-alih crash.
Daemon berjalan dengan hak administrator dan memasang hook keyboard global. Karena itulah batas yang satu ini, bukan yang lain, yang dijaga dengan standar ketat.
Konvensi yang Perlu Diketahui
CLAUDE.md,AGENTS.md, dan.cursorrulesberisi instruksi yang dibaca alat bantu coding berbasis AI, dan ketiganya selalu diselaraskan. Jika Anda mengubah satu, ubah ketiganya dalam commit yang sama. Perbedaan di antara ketiganya tidak terlihat, dan alat yang membaca salinan usang itulah yang akan berperilaku keliru.CHANGELOG.mdtidak ditulis bebas.release.ymlmengambil bagian## [x.y.z]yang cocok dengan tag git dan menerbitkannya sebagai catatan rilis, dan updater di dalam aplikasi menampilkan bagian yang sama kepada orang yang sedang memutuskan apakah akan memperbarui. Tag tanpa bagian yang cocok akan menggagalkan rilis, alih-alih merilis catatan yang tidak pernah ditulis siapa pun.- Siapa yang boleh menaikkan digit versi yang mana adalah aturan, bukan kebiasaan. Pekerjaan yang membutuhkan kenaikan minor atau major tetap berada di bawah Unreleased sampai pemilik proyek memutuskan.
Melaporkan Sesuatu
Bug atau Ide
Buka issue di repositori. Informasi yang membantu: build Windows Anda, versi Wira Desk, apa yang Anda lakukan, apa yang terjadi, dan apa yang Anda harapkan.
Celah Keamanan
Jangan lewat issue. Gunakan GitHub Security Advisories agar laporan tetap tertutup sampai perbaikannya tersedia. Tidak ada bounty dan tidak ada jaminan waktu tanggapan.
Menulis Entri Changelog
Tulis untuk orang yang sedang memutuskan apakah akan memperbarui, bukan untuk log commit. Updater di dalam aplikasi menampilkan teks tersebut apa adanya; itulah hal terakhir yang dibaca seseorang sebelum mengizinkan installer berjalan dengan hak administrator.