Hal-hal kecil yang menentukan bagus atau tidaknya
Poles panel besarnya sesuka Anda — yang selalu menyita perhatian justru sesuatu yang kecil: satu kata terbelah dua, pendar yang terpotong, slot yang sempit. Empat hal semacam itu ditunjukkan pada 2026-09-13 lalu diperbaiki di widget dan temanya, bukan di layar demonya, sehingga setiap layar mendapat hasil yang sama.
| Apa yang terlihat | Penyebab | Perbaikan |
|---|---|---|
Done pada coach mark menjadi Don/e |
Tombol dengan pembungkusan baris menyala mengurangi lebar teksnya dari lebar minimumnya — sempitkan sedikit dan ia patah di tengah kata | GoStyle.fit_words(): satu kata tidak pernah dipenggal; beberapa kata boleh membungkus, tetapi kata terpanjang selalu muat — dinilai pada teks yang ditampilkan, bukan pada kunci terjemahannya, dan diterapkan ulang oleh formulir ketika bahasanya berganti |
| Pendar tombol selebar layar terpotong secara vertikal di sisi kiri | Kontainer gulir memotong di tepinya, tanpa kecuali. Hanya sisi kanan yang selamat, berkat celah relnya | GoScroll meminjam padding induknya untuk mendorong tepinya 12dp keluar lalu mengembalikannya di dalam — kontennya tidak bergeser |
| Waktu, ikon, dan jumlah menumpuk vertikal di dalam sebuah slot | Tiga baris di dalam 48dp | Ikon besar di tengah, pintasan di kiri atas, jumlah sebagai lencana di kanan bawah, sisa waktu sebagai lencana di atas ikonnya — panel lencananya berasal dari badge_box() milik skin |
| Dropdown datar tanpa pilihan yang terlihat | Sorotan butir memakai panel tombol; penanda radionya adalah default mesin yang samar | Panel sorotan tersendiri (rona aksen lembut), gambar radio yang sama dengan kotak centang, tinggi butir yang pas untuk sentuhan |
Berikan deskripsi pada tombol yang hanya berisi ikon lewat GoStyle.icon_button(icon, action, -1, tooltip_key) —
tooltip untuk pengguna tetikus dan nama aksesibilitas untuk pembaca layar keduanya berasal dari satu nilai itu.
gohud menggambar tooltip-nya sendiri: default mesinnya memecah teks satu karakter per baris ketika
perhitungan lebarnya meleset (terukur selebar 1dp).
Kartu coach mark menjauh dari perabot layar
Pada mode lanskap, kartunya dulu dilempar ke tepi paling atas atau paling bawah — persis tempat header dan bagian
HUD berada; di dalam demo ia mendarat di atas → × milik header. Kini ia tetap sejajar dengan sasarannya,
memutari setiap GoHudAnchor yang memesan ruang, dan menerima hal-hal lain yang harus dihindari lewat
keep_clear. Ia bergerak sependek mungkin untuk melewati penghalang tanpa menutupi
sasarannya, dan tetap diam bila layarnya terlalu kecil untuk melewati semuanya — bertumpuk lebih baik daripada menghilang.
Kedalamannya — agar ia terbaca di atas halaman — berasal dari kenop skin
(float_shadow_size, float_shadow_lift, float_shadow_alpha; skin bersudut potong memakai float_glow_size).
tour.keep_clear = [header_bar, toolbar] # perabot layar yang bukan anchor
Layar dengan tetikus dan papan ketik
Jari tidak punya keadaan hover. Bangun hanya untuk seluler dan dua keadaan khas desktop luput dari pemeriksaan —
dan salah satunya memang rusak: cincin fokus gohud tidak terlihat pada tombol primer. Panelnya
berwarna aksen dan cincinnya pun begitu: 1,00:1, warna yang sama digambar di atas dirinya sendiri. Bergerak
dengan papan ketik, tak ada cara untuk tahu Anda sedang berada di mana.
Tombol berisi penuh (GoPrimaryButton, GoDangerSolidButton) memakai cincin yang
kontras dengan panelnya sendiri — gelap pada tema gelap, putih pada tema terang, kurung penanda sasaran
yang gelap pada sci-fi. Pemeriksa kontras mengukur cincin fokus terhadap panel tempatnya berada, sehingga
aturannya bertahan saat paletnya berubah (WCAG 2.4.11 meminta 3:1 pada penanda fokus).
Widget HUD
GoHudAnchor — sembilan titik
Menghormati area aman dan margin tepi. Berikan landscape_spot dan ia berpindah saat
lanskap — kontrol yang duduk di tengah bawah pada mode potret bisa pindah ke kanan bawah.
Menjaga konten tidak masuk ke bawah HUD
Ketika layar yang bergulir berbagi tampilan dengan HUD, kontennya menyelinap ke bawahnya dan kedua kumpulan teksnya bertumpuk sampai tak satu pun terbaca. Itu terjadi dua kali di add-on ini: teks contoh sebuah kolom masukan terjepit di antara slot cepat, dan kenop sakelar pada setelan mendarat di atas bar darah.
form.avoid_hud = true # menjauh dari setiap GoHudAnchor yang terlihat
joystick_anchor.reserve_space = false # …kecuali yang hanya muncul di bawah jari
Setiap persegi dihindari ke arah yang paling sedikit memakan luas. Bar di kanan atas diputari ke bawah pada ponsel potret (13% dari tingginya) dan ke samping pada lanskap (21% dari lebarnya) — menghindarinya secara vertikal pada lanskap akan memakan 27% dari layar. Ruang yang sudah direlakan dikurangkan lebih dulu sebelum persegi berikutnya diukur.
Bagian-bagian HUD juga bertabrakan satu sama lain
Kesembilan titik itu membagi layar; mereka tidak menjamin bagian-bagiannya saling luput. Sebuah snackbar lebar di tengah atas mendarat tepat di atas bar darah di kanan atas, menyembunyikan nilainya — Anda tidak bisa membaca berapa sisa darahnya.
notice_anchor.avoid_peers = true # turun ke bawah HUD tetap
notice_anchor.reserve_space = false # dan tidak mendorong halamannya selagi ia muncul
Ia menyingkir secara vertikal saja — menyingkir ke samping juga akan membuat toast yang terpusat muncul di tempat yang berbeda-beda setiap kali. Dan ia hanya menghindari bagian yang tidak ikut menyingkir sendiri: kalau keduanya mengalah, keduanya akan bertukar tempat selamanya.
GoBar — darah, mana, pengalaman
var hp := GoBar.new()
hp.label_text = "HP"
hp.ink = GoUi.color(GoTheme.DANGER_FILL) # token khusus isian
hp.set_values(320, 500) # "320 / 500"
Perubahannya dilandaikan selama 0,18 detik — bar darah yang melompat tidak memberi tahu Anda seberapa keras Anda terpukul.
reduce_motion membuatnya seketika. Angka besar disingkat menjadi 12.3k supaya
lebar bar-nya tidak bergetar saat jumlah digitnya berubah.
GoSlot — satu slot cepat
Ikon, jumlah, waktu jeda, dan pintasan pada satu muka. Menggantung lencana pada lingkaran kecil membuat tiap slot punya lebar berbeda dan barisannya goyah.
touch_peers.
keyboard_focus mati secara default, supaya barisan delapan slot tidak menghalangi pengguna papan ketik dari
setiap kontrol setelan dalam urutan Tab. Nyalakan bila papan ketik atau gamepad adalah satu-satunya input.
GoJoystick — stik virtual
| Mode | Perilaku |
|---|---|
FIXED | Selalu di tempat yang sama — mudah ditemukan tanpa melihat |
FOLLOW | Muncul di tempat ibu jari mendarat |
RELATIVE | Terus mengikuti ibu jari setelah muncul — nyaman untuk gerakan panjang |
Vector2 dari moved panjangnya 0–1, jadi Anda bisa langsung mengalikannya dengan
sebuah kecepatan; nilainya tidak berubah mengikuti ukuran layar atau DPI.
GoIconButton — terlihat kecil, ditekan besar
touch_peers.