Releases: tsukiforge/BoneFish
Release list
BoneFish v7.7.0
v7.7.0 — Storage Detection Rewrite (3-State), Game Session Verification & Crosshair Roblox-Center Lock
Release date: 2026-09-18
Storage / HDD-SSD Detection (P0)
- Engine baru 3-state: SSD / HDD / Unknown. Tidak ada lagi fallback-tebakan
Unknown → HDDmaupunUnknown → SSD. Bukti tidak cukup atau kontradiktif → Unknown (hard requirement). - Root cause salah klasifikasi dua arah ditemukan & diperbaiki:
- SSD → HDD (pra-v7.6.3): volume handle dibuka
GENERIC_READ→ selalu AccessDenied non-admin → fallback "Assuming HDD". - HDD → SSD (v7.6.3): driver tanpa dukungan seek-penalty (IDE/RAID/virtual/USB bridge) mengembalikan descriptor kosong dengan status sukses; kode memperlakukan
IncursSeekPenalty==0sebagai "SSD" tanpa validasiVersion/Size/rentang nilai.
- SSD → HDD (pra-v7.6.3): volume handle dibuka
- Deteksi kini mengarah ke physical disk tempat Windows berada (
Win32_LogicalDiskToPartition→\\.\PhysicalDriveN), bukan handle volumeC:dan bukan disk pertama. - Multi-source + consistency check: S1 seek-penalty IOCTL (validasi descriptor ketat;
=1→ HDD kuat,=0hanya hint lemah), S2 TRIM descriptor (hint lemah), S3MSFT_PhysicalDisk.MediaType(3=SSD/4=HDD kuat; sumber data Task Manager), S4 BusType NVMe (hint lemah). Bukti kuat berlawanan → Unknown dengan alasan tercatat. - Cache v4: simpan detector version, disk identity (index/model/bus), confidence & sources; Unknown tidak pernah di-cache; versi beda otomatis invalid; "Deteksi Ulang Hardware" menghapus cache & deteksi penuh.
- Diagnostik lengkap di log (mapping, tiap sumber, decision + reason); panel System Info menampilkan
SSD/HDD/Unknown. Detail & test matrix:docs/STORAGE-DETECTION.md. - Optimasi HDD Balanced kini hanya jalan pada HDD terkonfirmasi; memory trim SSD hanya pada SSD terkonfirmasi. Unknown = tanpa tuning (aman).
Game Session Manager (P0)
- Root cause "suspend tidak pernah jalan" diperbaiki:
Classify()memanggilIsCritical()yang hard-fail untuk proses elevated (path/start-time tak terbaca dari proses non-admin) SEBELUM rule user dipertimbangkan — aplikasi pilihan user yang jalan as-admin tidak pernah sampai ke suspend. Kini proteksi memakaiIsAlwaysProtected()langsung (nama critical, service SCM, session 0, Windows path, security software tetap terlindungi penuh). - Verifikasi pasca-suspend: 0 thread tersuspend = FAILED — proses tidak masuk record sesi (tidak ada "sukses palsu") dan log memuat
Suspend FAILED ... Reason:; sukses tercatatStatus: SUSPENDEDdengan hitungan thread. - Lifecycle logging:
Game Session Started,Rule matched ... target PID=, hasil suspend per proses.
Crosshair (P1)
- Lock ke tengah Roblox: pusat crosshair kini mengikuti pusat client-area jendela Roblox (
GetClientRect+ClientToScreen, konversi DPI per-monitor) — bukan tengah monitor utama. Menangani windowed/maximized, pindah monitor, DPI 100/125/150%. - Drag manual mematikan lock otomatis (posisi custom dihormati & tidak ditimpa); toggle "Kunci ke Tengah Roblox" di halaman Experimental untuk mengunci lagi (default ON).
- Resize tetap center-anchored: ukuran 20–200px tidak pernah menggeser titik tengah.
Files
Bloxstrap/Integrations/AutoOptimizeService.cs— engine deteksi v4 + cache v4 + diagnostics.Bloxstrap/GameSession/ProcessClassifier.cs,Bloxstrap/GameSession/GameSessionService.cs— fix klasifikasi + verifikasi suspend.Bloxstrap/UI/Elements/CrosshairOverlay.xaml.cs,Bloxstrap/UI/Elements/Settings/Pages/ExperimentalPage.xaml,Bloxstrap/UI/ViewModels/Settings/ExperimentalViewModel.cs,Bloxstrap/Models/Persistable/Settings.cs— Roblox-center lock.docs/STORAGE-DETECTION.md— decision tree, cache, test matrix.
BoneFish v7.6.8
v7.6.8 - Fix Deteksi Storage, Game Session Suspend & Crosshair Center
Release date: 2026-09-18
💾 Fix: Deteksi storage selalu salah "HDD" di PC non-admin
- Akar masalah: handle volume (
\\.\C:) dibuka denganGENERIC_READ. Akses
tersebut selalu ditolak untuk proses non-admin, sehingga query
IOCTL_STORAGE_QUERY_PROPERTYgagal dan kode fallback "Assuming HDD" jalan di
SEMUA PC biasa — termasuk PC yang 100% SSD. - IOCTL seek-penalty tetap dipakai tapi dengan
dwDesiredAccess = 0(akses nol),
yang cukup untuk query properti dan bekerja tanpa hak admin. - Fallback baru: WMI
MSFT_PhysicalDisk(namespace Storage, Win8+) — sumber data
yang sama dipakai Task Manager kolom tipe disk.Assume HDDkini hanya terjadi
jika SEMUA metode gagal. - Persistent cache
HardwareCache.jsondinaikkan ke versi 2 → cache lama yang
berisi nilai salah otomatis di-invalidasi dan deteksi dijalankan ulang. - Tombol "Deteksi Ulang Hardware" tetap tersedia untuk refresh paksa.
🎮 Fix: Suspend Game Session tidak pernah bekerja
- Akar masalah utama: detektor keamanan fail-closed. Jika Windows Security
Center mati/disable atau WMI diblokir (umum pada Windows debloat / group
policy), state detector menjadiUnavailabledan SEMUA proses di-skip —
suspend tidak pernah terjadi walau aplikasi sudah dicentang. - Kegagalan infrastruktur deteksi kini menghasilkan
Degraded(bukan
Unavailable): daftar proses keamanan yang diketahui tetap dilindungi penuh. - Toggle baru di halaman Game Session — "Lanjutkan suspend saat deteksi
keamanan gagal" (GameSessionAllowSuspensionOnDetectorFailure, default
OFF): saat aktif, proses yang Anda setujui tetap di-suspend walau detektor
gagal. Proses Windows, service SCM, session 0, dan antivirus tetap dilindungi
oleh guardIsAlwaysProtected. - Proses yang berjalan elevated (path/start-time tidak terbaca dari proses
non-admin) tidak lagi otomatis dianggap "critical": kini tampil di daftar dan
bisa dicentang.Skip PID=...saat suspend gagal (0 thread) kini tercatat di
log dengan penyebabnya.
🎯 Fix: Crosshair bergeser dari tengah layar saat ukuran diperbesar
- Akar masalah: posisi overlay disimpan sebagai pojok kiri atas dan urutan
constructor menghitung centering dari ukuran window default 80px sebelum
ukuran asli diterapkan. - Posisi kini disimpan sebagai titik tengah overlay: mengubah ukuran
(20–200px) membuat window membesar/mengecil simetris di sekitar titik tengah,
jadi crosshair selalu jatuh tepat di tengah layar pada ukuran APA PUN. - Posisi drag tetap bisa disesuaikan manual; nilai (0,0) berarti default ke
tengah layar.
✅ Verifikasi
- Build berhasil (0 error, 0 warning).
BoneFish v7.6.2
v7.6.2 - Bug Fix Update Check Transparency
Release date: 2026-09-17
🐛 Bug Fix — Update Checker Terlihat Tidak Bekerja
- Update checker sekarang mencatat versi aplikasi lokal dan hasil pemeriksaan
dari setiap repository ke log BoneFish. - Jika
CheckForUpdatesdimatikan, log menjelaskan bahwa pemeriksaan memang
dilewati. - Jika tidak ada update, log mencatat bahwa versi lokal sudah sama atau lebih
baru daripada release GitHub yang ditemukan. - Jika salah satu repository tidak tersedia, jalur lainnya tetap digunakan dan
repository yang gagal ditandai sebagaiunavailabledi log. - Badge merah hanya ditampilkan jika versi release GitHub benar-benar lebih baru
daripada versi aplikasi. Versi yang sama tidak dianggap sebagai update. - Tidak ada balloon notification otomatis; hasil update tetap ditampilkan secara
senyap melalui icon tray.
🔎 Contoh Diagnostik
Jika aplikasi 7.6.2 memeriksa release v7.6.2, log akan mencatat bahwa tidak
ada update yang diperlukan. Badge merah baru muncul ketika release publik lebih
baru, misalnya v7.6.3.
✅ Verifikasi
- Build Release berhasil.
git diff --checkberhasil.- Perbandingan versi menggunakan
System.Versiondan menghapus prefixvdari
tag GitHub sebelum dibandingkan.
BoneFish v7.6.1
v7.6.1 - Bug Fix Update Tray
Release date: 2026-09-16
🐛 Bug Fix — Update Tray Terlalu Mengganggu
- Menghapus balloon notification otomatis saat update GitHub ditemukan.
- Update kini hanya ditandai dengan badge merah pada icon system tray.
- Tooltip icon menampilkan bahwa update tersedia.
- Klik kiri icon membuka halaman release GitHub yang sesuai.
- Pengecekan update yang gagal tetap bersifat non-fatal dan tidak mengganggu
penggunaan BoneFish.
✅ Verifikasi
- Build Release berhasil.
git diff --checkberhasil.
BoneFish v7.6.0
v7.6.0 - Dual-Repository Update Indicator, Game Session Tray Reliability & FPS Unlocker
Release date: 2026-09-11
🎮 Game Session dari Roblox System Tray
- Monitor external Roblox dimulai lebih awal saat BoneFish berjalan di system
tray, sehingga Roblox yang dibuka dari official Roblox tray atau website tetap
dapat terdeteksi sebelum sesi Roblox sebelumnya berakhir. - Retry pencarian log Roblox setiap 5 detik jika proses sudah muncul tetapi
file log belum dibuat. Startup race tidak lagi membuat PID Roblox diabaikan
sampai prosesnya mati. - Notifikasi suspend tetap muncul hanya jika ada proses yang benar-benar berhasil
disuspend. Proses yang diproteksi atau tidak memiliki rule tidak dilaporkan
sebagai suspend palsu.
🔴 Indikator Update di System Tray
- System tray kini memeriksa dua jalur release resmi:
https://github.com/tsukiforge/BoneFish/releaseshttps://github.com/BoneFishStudio/BoneFish/releases
- Release dengan versi tertinggi dari kedua repository dipilih sebagai sumber
update. - Jika versi tersebut lebih baru daripada versi aplikasi, icon BoneFish mendapat
badge merah dan tooltip update. - Klik kiri icon atau notifikasi update membuka halaman release yang benar.
- Jika salah satu repository gagal diakses, repository lainnya tetap diperiksa.
🚀 FPS Unlocker hingga 240 FPS
FramerateCapRoblox kini ditetapkan ke 240 FPS, bukan dibatasi sama dengan
refresh rate monitor.- FPS aktual tetap bergantung pada CPU, GPU, suhu, kualitas grafis, dan batas
client Roblox. Nilai 240 FPS adalah batas software, bukan jaminan FPS nyata. - Status UI dan dokumentasi diperbarui agar menjelaskan batasan ini dengan jelas.
🧰 PowerShell CLI Installer
- Installer resmi baru tersedia di
Scripts/Install-BoneFish.ps1. - Selalu mengambil
BoneFish.exedari GitHub Release terbaru. - Memvalidasi sistem Windows 64-bit dan signature executable sebelum dijalankan.
- Menampilkan banner ASCII, status berwarna, pesan error yang jelas, serta opsi
-SkipLaunchdan-KeepDownload. - README diperbarui dengan instruksi instalasi CLI dan instalasi manual.
📦 Dua Paket Release
BoneFish-Setup.exeuntuk instalasi normal dengan setup wizard dan shortcut.BoneFish-Portable.zipuntuk menjalankan BoneFish langsung dari folder tanpa
wizard installer atau registrasi install Windows. Data portable disimpan di
folder yang sama dengan executable.
✅ Verifikasi
Watcher.cstidak memiliki error dari analyzer editor.- Resource XML valid.
git diff --checkberhasil dengan konfigurasi line ending CRLF repository.- Build penuh memerlukan restore dependency NuGet pada environment Windows/.NET
yang lengkap.
BoneFish v7.5.6
No changelog entry found for v7.5.6. See CHANGELOG.md for details.
BoneFish v7.5.4
No changelog entry found for v7.5.4. See CHANGELOG.md for details.
BoneFish v7.5.3
No changelog entry found for v7.5.3. See CHANGELOG.md for details.
BoneFish v7.5.0
No changelog entry found for v7.5.0. See CHANGELOG.md for details.
BoneFish v7.4.0
v7.4.0 - Fix Crash TaskDialog "Invalid Cursor Handle" + Migrasi BootstrapperTitle Lama
Release date: 2026-09-04
🛡️ FIX 1 — Crash saat buka Roblox: COMException "Invalid cursor handle" (0x8007057A)
Bug OS-level Windows/.NET yang sudah lama dikenal (terjadi juga di aplikasi yang
tidak terkait seperti LaunchBox, bahkan fitur System Restore bawaan Windows) —
bukan logic error di kode BoneFish. TaskDialog.ShowDialog() di
VistaDialog_Load() bisa gagal dengan COMException "Invalid cursor handle" (0x8007057A) dan meng-crash seluruh launch sebelum bootstrapper tampil.
- Try-catch spesifik — hanya
COMExceptiondengan HRESULT0x8007057A/
0x80070579(ERROR_INVALID_CURSOR_HANDLE) atau pesan "Invalid cursor handle"
yang ditangkap. Error lain tetap lewat crash path normal, tidak disembunyikan. - Log + retry sekali — kejadian dicatat ke log (
App.Logger), lalu
TaskDialog.ShowDialog()dicoba ulang sekali setelah delay singkat (500 ms)
karena sifatnya transient/sporadik. - Fallback aman — jika retry juga gagal, bootstrapper beralih ke
ProgressDialog(dialog WinForms murni, tanpa Vista TaskDialog) dan progress /
cancel diteruskan untuk sisa launch — user tidak pernah melihat unhandled
exception dialog. - Pola try-catch yang sama diterapkan di
ShowSuccess()(navigasi
_dialogPage.Navigate) — fallback ke plain message box via
BaseFunctions.ShowSuccess.
🔄 FIX 2 — BootstrapperTitle lama ("Fishstrap"/"Bloxstrap") dimigrasikan
User dengan Settings.json dari sebelum rename ke BoneFish masih menyimpan nilai
lama yang tidak pernah dimigrasikan, sehingga title menampilkan "Fishstrap"
alih-alih "BoneFish".
- Migrasi satu kali di
App.OnStartup()setelahSettings.Load(): jika
BootstrapperTitleSAMA PERSIS dengan nama historis project (Bloxstrap,
Fishstrap,BoneFish-QA) → di-reset keApp.ProjectNamedan disimpan ulang. - Custom title user TIDAK pernah disentuh — hanya exact match nama historis
yang direset (mis. user sengaja set "Roblox" tidak akan diubah). - Self-limiting: setelah Save pertama, nilai sudah "BoneFish", jadi tidak pernah
menimpa preferensi lagi di startup berikutnya. - Audit BootstrapperIcon — ditemukan kondisi serupa:
IconFishstrapadalah
enum mati (dikomentari dariSelectionsdan switchGetIcon(), render
fallback ke icon Bloxstrap). Nilai lama yang tersimpan dinormalisasi sekali ke
IconBloxstrapagar tidak ada kejutan mapping icon di masa depan.
✅ Verifikasi
- Build 0 error, 0 warning.
- Test baru: 7 unit test
SettingsMigrationTests— semua hijau, termasuk
konfirmasi title tampil "BoneFish" setelah migrasi berjalan sekali. - Reproduksi crash TaskDialog: tidak bisa direproduksi konsisten — sifatnya
sporadis/transient tergantung state OS (dilaporkan juga di aplikasi lain yang
tidak terkait). Fix bersifat defensif: log + retry + fallback.